You typically perform the following tasks when configuring Citrix Provisioning servers in your farm.
After changing a provisioning server’s properties, restart the Stream Service to implement those changes. Use caution when restarting services. If target devices are connected to the server, changes can prevent the device from reconnecting. The IP address field on the Network tab must reflect the real static IP address of the server.
A single provisioning server supports up to 4,095 target devices.
Provisioning server properties
On the Citrix Provisioning console, the Server Properties dialog allows you to modify provisioning server configuration settings. To view existing properties, choose one of the following methods:
- Highlight a provisioning server, then select Properties from the Action menu.
- Right-click a provisioning server, then select Properties.
- If the details pane is open, highlight a provisioning server, then select the Properties menu item from the list of actions.
The Server Properties dialog includes the following tabs:
Citrix Provisioning displays a message when a change made on a Server Properties dialog requires a server reboot.
|Name and description||Displays the name of the provisioning server and a brief description. The maximum length for the server name is 15 characters. Do not enter FQDN for the server name.|
|Power rating||A power rating is assigned to each server, which is then used when determining which server is least busy. The administrator defines the scale to use. For example, an administrator rates all servers on a scale of 1–10, or on a scale of 100–1000. On a scale of 1–10, a server with a rating of 2 is considered twice as powerful as a server with a rating of 1. Therefore it would be assigned twice as many target devices. When using a scale of 100–1000, a server with a power rating of 200 is considered twice as powerful as a server with the rating of 100. Therefore it would also be assigned twice as many target devices. Using the default setting of 1.0 for all servers results in even device loading across servers. In this case, the load balancing algorithm does not account for individual server power. Ratings can range between 0.1-1000.0. 1.0 is the default.|
|Log events to the server’s event log||Select this option if you want this provisioning server’s events captured in the Windows Event log.|
The following options are assessable in the Advanced Server Properties window.
|Threads per port||Number of threads in the thread pool that service UDP packets received on a given UDP port. Between four and eight are reasonable settings. Larger numbers of threads allow more target device requests to be processed simultaneously, but consumes more system resources.|
|Buffers per thread||Number of packet buffers allocated for every thread in a thread pool. Make the number of buffers per thread large enough to enable a single thread to read one I/O transaction from a target device. Buffers per thread are ideally be set to
|Server cache timeout||Every server writes status information periodically to the Citrix Provisioning database. This status information is time-stamped on every write. A server is accessible by other servers in the farm if the status information in the database is newer than the server cache timeout seconds. Every server in the farm attempts to write its status information every 2 seconds, at twice the timeout rate. A shorter server cache timeout value allows servers to detect offline servers more quickly, at the cost of extra database processing. A longer Server cache timeout period reduces database load at the cost of a longer period to detect lost servers.|
|Local and concurrent I/O limits||Controls the number of concurrent outstanding I/O transactions that can be sent to a given storage device. A storage device is defined as either a local drive letter (C: or D: for example) or as the base of a UNC path, for example \ServerName. Since Citrix Provisioning is a highly multi-threaded service, it is possible for it to send hundreds of simultaneous I/O requests to a given storage device. Requests are generated by the device and processed when time permits. Some storage devices, Windows Network Shares most notably, do not deal with this large number of concurrent requests well. They can drop connections, or take unrealistically long to process transactions in certain circumstances. You achieve better performance with these types of devices when you throttle the concurrent I/O transactions. A local device is defined as any device starting with a drive letter. A remote device is defined as any device starting with a UNC server name. Defining a device is a simple way to achieve separate limits for network shares and for local drives. If a slow machine provides a network share, or slow drives exist on the machine, a count of 1–3 for the remote limit is necessary. This configuration achieves the best performance with the share. If you are using fast local drives, you might be able to set the local count fairly high. Only empirical testing would provide you with the optimum setting for a given hardware environment. Setting either count to 0 disables the feature and allows Citrix Provisioning to run without limits. This configuration might be desirable on fast local drives. If a network share is overloaded, more device retries and reconnections during boot storms occurs. Boot storms occur when read/write and open file times are greater than 60 seconds. Throttling the concurrent I/O transactions on the share reduces these types of problems considerably.|
|Maximum transmission unit||Number of bytes that fit in a single UDP packet. For standard Ethernet, the default value is correct. If you are attempting to operate over a WAN, then a smaller value is needed to prevent IP fragmentation. Citrix Provisioning does not currently support IP fragmentation and reassembly. If you are using a device or software layer that adds bytes to every packet for security reasons, a smaller value is needed. If your entire infrastructure supports jumbo packets you can set the MTU to 50 bytes less than your jumbo packet max size to achieve much higher network throughput.|
|I/O burst size||The number of bytes transmitted in a single read/write transaction before an ACK is sent from the server or device. The larger the I/O burst, the faster the throughput to an individual device, but the more stress placed on the server and network infrastructure. Also, larger I/O Bursts increase the likelihood of lost packets and costly retries. Smaller I/O bursts reduce single client network throughput, but also reduce server load. Smaller I/O bursts also reduce the likelihood of retries. I/O Burst Size / MTU size must be <= 32, that is, only 32 packets can be in a single I/O burst before an ACK is needed.|
|Socket communications||Enable non-blocking I/O for network communications.|
|Boot pause records||The amount of time that the device pauses if the Maximum devices booting limit has been reached. The device displays a message to the user and then waits before attempting to continue to boot. The device continues to check with the server every Boot pause seconds until the server allows the device to boot.|
|Maximum boot time||The amount of time a device is considered in the booting state. Once a device starts to boot, the device is considered booting until the Maximum boot time has elapsed for that device. After this period, it will no longer be considered booting even if the device has not finished booting. Maximum boot time is the time limit per device for the booting state for boot pacing.|
|Maximum devices booting||The maximum number of devices a server boots at one time before pausing new booting devices. The number of booting devices must drop below this limit before the server allows more devices to boot.|
|Virtual disk creation pacing||Amount of pacing delay to introduce when creating a virtual disk on this provisioning server. Larger values increase the virtual disk creation time, but reduce provisioning server overhead to allow target devices that are running, to continue to run efficiently.|
|License timeout||Amount of time since last hearing from a target device to hold a license before releasing it for use by another target device. If a target device shuts down abnormally (loses power for example) its license is held for the specified timeout period.|
|IP address||The IP addresses that the stream service uses for a target device to communicate with this provisioning server. When you add a new server, enter the valid IP address for the new server. The following fields are including when viewing IP address information: Add — Add an IP address for the selected server. Edit — Opens the IP address dialog so that the IP address for the selected server can be changed. Remove — Removes the selected IP address from the list of available IP addresses for the selected provisioning server.|
|Ports||Enter the First and Last UDP port numbers to indicate a range of ports to be used by the Stream Service for target device communications. Note: The minimum is five ports in a range. The default first port number is 6910 and the last port number is 6930.|
|Stores||Lists all stores (logical names representing physical paths to vDisks that are available to this provisioning server. This field includes the following options: Add — Opens the Store Properties dialog. A new store and that store’s properties are included in the list of stores, overriding the default path. Edit — Opens the Store Properties dialog so that the store’s properties can be changed. Select an existing store, then click Edit to change that store’s properties. Remove — Removes the selected store from the list of available stores for this provisioning server.|
|Store properties||Includes the following fields: Store — The name of the store. This field displays when editing an existing store. For a new store, select the store from the menu. Path used to access the store — The store path is only required if you need to override the ‘default path’ configured in the store properties. If the default path in the store properties is valid for this server, leave the path for the store blank in the server store properties. Note: If you are setting an override store path in the Server’s Properties dialog, set the path before creating a version of the virtual disk. Because this path information is stored and referenced in
|Active directory||Automate computer account password updates — If target devices are domain members, and require renegotiation of machine passwords between Windows Active Directory and the target devices, select the Automate computer account password updates. Use the slider to set the number of days between renegotiation.|
|Enable automatic virtual disk updates||Check to enable vDisks to update automatically, then set the time of day to check for updates.|
|Logging level||Select from the following logging level options: TRACE — TRACE logs all valid operations. DEBUG — The DEBUG level logs details related to a specific operation and is the highest level of logging. If logging is set to DEBUG, all other levels of logging information are displayed in the log file; INFO — Default logging level. The INFO level logs information about workflow, which generally explains how operations occur. WARN — The WARNING level logs information about an operation that completes successfully, but there are issues with the operation. ERROR — The ERROR level logs information about an operation that produces an error condition. FATAL — The FATAL level logs information about an operation that the system cannot recover from.|
|File size maximum||Enter the maximum size that a log file can reach before a new file is created.|
|Backup files maximum||Enter the maximum number of backup log files to retain. When this number is reached, the oldest log file is automatically deleted.|
Copying and pasting properties
To copy the properties of one provisioning server to another provisioning server:
- Right-click on the provisioning server to copy properties from, then select Copy server properties. The Copy Server Properties dialog appears.
- Enable the check box next to each property to copy, or click the Select all button to copy all properties.
- Click Copy. Right-click on the provisioning server that you want to copy properties to, then select Paste.
Configuring Citrix Provisioning servers manually
If you are setting up a remote provisioning server, or have special requirements, configure, and start your stream services manually. Run the Configuration Wizard on remote provisioning servers to insure that all settings are configured properly. Failure to run the Configuration Wizard makes it impossible for you to map a virtual disk.
Rerunning the configuration wizard
The Configuration Wizard can be used when updating the Stream Service of the IP address of your provisioning server changes. If you change your provisioning server’s IP address for any reason, rerun the configuration wizard and choose the new IP address when prompted. Completing the Configuration Wizard resets the appropriate IP addresses in the configuration and restarts the Stream Service.
Starting and configuring the stream service manually
After configuring the Stream Service, you must start the service for the change to take effect. Citrix recommends setting the service to start automatically each time a provisioning server starts.
The Configuration Wizard starts and configures the necessary services to start automatically. Use the instructions in this section. If you need to start and configure the services manually.
Start the Stream Service for the provisioning server to operate. Start the following boot services if they have not yet been started:
- BOOTP Service or PXE Service
- TFTP Service
To manually start services:
- From the Windows Start menu, select Settings, and then click Control Panel.
- From the Control Panel, double-click the Administrative Tools icon.
- From the Administrative Tools window double-click on the Services icon. The Services window appears.
- From the Services window, right-click on the service you want to start, then select Start.
To manually configure services to start automatically upon booting the provisioning server:
From the Windows Start menu, select Settings, then click Control Panel.
From the Control Panel, double-click the Administrative Tools icon.
From the Administrative Tools window double-click on the Services icon. The Services window appears.
Right-click the service you want to configure, then select Properties.
Change the Startup Type to Automatic to configure the service to start automatically each time the system boots.
Deleting a provisioning server
Occasionally, you have to delete a provisioning server from the list of available servers in a farm.
Before you can delete a provisioning server, first mark the server as down or take the server off line, otherwise the Delete menu option fails to appear. The stream service cannot be deleted.
When you delete a provisioning server, you do not affect virtual disk image files or the contents of the server drives. However, you do lose all paths to the virtual disk image files on that server.
After you delete a server, target devices are no longer assigned to any virtual disk image files on that server. The target device records remain stored in the Virtual LAN Drive database, but the device cannot access any virtual disk that was associated with the deleted server.
If there are vDisks associated with the provisioning server being deleted, Citrix recommends that you create backup copies and store them in the virtual disk directory before deleting.
To delete a provisioning server:
- In the Citrix Provisioning console, highlight the provisioning server that you want to delete, then select Show connected devices from the Action menu, right-click menu, or Action pane. The Connected Target Devices dialog appears.
- In the Target Device table, highlight all devices in the list, then click Shutdown. The Target Device Control dialog appears.
- Type a message to notify target devices that the provisioning server is being shut down.
- Scroll to select the number of seconds to delay after the message is received.
- If the Stream Service is running on the provisioning server, stop the Stream Service. For more information, see Starting, Restarting, or Stopping the Stream Service.
- Unassign all target devices from the provisioning server.
- Highlight the server you want to delete, then choose Delete from the Action menu, right-click menu, or Action pane. A delete confirmation message appears.
- Click Yes to confirm the deletion. The provisioning server is deleted and no longer displays in the console.
To decommission a provisioning server:
- Verify if any provisioned clients are owned by the provisioning server you want to remove. If a provisioned client exists, shut it down.
- If provisioned clients are owned by multiple servers, stop the stream service.
- In the Citrix Provisioning console on the remaining provisioned server, the server appears as down, or, offline. Select the server, right click, and select Delete in the contextual menu.
- Shut down the system or uninstall the provisioning server.
Starting, stopping, or restarting a server
Starting, stopping, or restarting Citrix Provisioning can possibly result in unexpected behavior. For more information, see Servers.
To start, stop, or restart Citrix Provisioning Services on a provisioning server:
- Highlight the provisioning server in the Console, then select the Stream Services menu option from the Actions menu, right-click menu, or Actions pane. The Server dialog appears.
- Select from the following menu options:
- Highlight the provisioning servers that you want to configure, then click that action’s button.
- Click Close to exit the dialog.
|Start||Starts the Stream Service|
|Stop||Places the provisioning server in off-line mode|
|Restart||After modifying provisioning server settings, such as adding or removing IPs, restart the stream service.|
To start or stop SOAP or stream services on a provisioning server, you must have Windows permissions. This limitation is due to a Window’s security issue.
To resolve this issue, use
icacls to set the permissions on the Stream Service. See icacls for more information on
Citrix Provisioning console fails to restart or stop
Sometimes, the console fails to restart or stop services when running a stream service with a network service account. When the console fails, the service appears in the started state, however, the console prevents you from restarting or stopping the Stream Service.
By default, a network service account does not have permissions to start/stop services.
For example, if services are configured with a network services account, running the configuration wizard results in an error condition. The status appears as running and streaming the virtual disk, however, the service cannot be restarted or stopped:
You can resolve this issue by associating the stream service with a specific account which has the required permissions to access the database. If the services are configured with a specific account, like
anuj.com\administrator, the status appears as started. You can restart or stop the services from the provisioning console:
Open all default provisioning server’s Windows firewall ports
The Citrix Provisioning server installation includes the option to open all the default server’s Windows firewall ports. This configuration is useful for administrators who want to facilitate the installation process by automatically opening all Citrix Provisioning ports, without manually specifying which ports to open.
During installation, use one of the following options in the Default Firewall Ports installation screen:
- Automatically open all Citrix Provisioning ports
- I will open the CPV ports manually
The Default Firewall Ports screen is available only if the Windows firewall is active.
Important considerations when setting up a provisioning server
When you initially set up a provisioning server, the following message might appear: Windows Firewall is on. It will interfere with the operation of services. Either turn it off or open the necessary ports. For more information, see Communication Ports Used by Citrix Technologies and Open Windows firewall ports.
Provisioning server performance updates
This release of Citrix Provisioning introduces updates to provisioning server performance statistics. These statistics allow other Citrix applications to determine the state of provisioned servers by introducing a performance counter provider that generates dynamic information about the provisioning server.
Citrix Provisioning version 1909 introduced functionality related to this enhancement for provisioned target devices. See What’s new for more information.
How it works
This version adds a performance counter provider that captures dynamic information about the provisioning server by using an external application running on a server or a remote machine. This application queries the performance data of the server using Windows Performance Counter. The provider does not duplicate information obtained from the system using standard Windows objects, such as CPU, memory, disk, or network configuration information.
- New Windows events containing database and stream services restart events are written to the Windows event log.
- The state of provisioned servers is obtained from the Citrix Provisioning object oriented PowerShell API.
- The Citrix Provisioning server installer registers the newly installed performance counter provider.
Updated performance counters
Installing this version adds and registers an updated performance counter on each provisioned server as part of the standard installation and upgrade process. The following image illustrates the counter as part of the StreamProcess:
The updated StreamProcess includes the following extra performance counters:
CounterSet: Citrix Provisioning StreamProcess
The provider creates the
PVS_VDisk WMI objects in the
root/Citrix/PVS namespace. Each provisioned target device has a single instance of the
PVS_Target object. The
PVS_Target object provides information about the installed Citrix Provisioning version, and statistics for the latest boot operation.
|Total Target Login Attempts||perf_counter_large_rawcount||The total number of target device login attempts.|
|Total Target Reconnect Count||perf_counter_large_rawcount||The total number of target device reconnects.|
|Rejected Login Count - Device Not Found||perf_counter_large_rawcount||The number of target device logins that were rejected because the device was not found in the database.|
|Rejected Login Count - virtual disk Not Available||perf_counter_large_rawcount||The number of target device logins that were rejected because the virtual disk was not available for the device.|
|Rejected Login Count - Server Busy||perf_counter_large_rawcount||The number of target device logins that were paused because the maximum number of devices a server allows to boot was reached.|
|Rejected Login Count - Server Not Available For virtual disk||perf_counter_large_rawcount||The number of target device logins that were rejected because no servers were available for the virtual disk.|
|Vdisk WRITE failed||perf_counter_large_rawcount||Total count of failed attempts to write to a vDisk file.|
|Vdisk READ failed||perf_counter_large_rawcount||Total count of failed attempts to read from a vDisk file.|
|IO-Reply Send failed||perf_counter_large_rawcount||Total count of failed attempts to send vDisk IO replies.|
|Device Count Active||perf_counter_large_rawcount||Count of devices that this provisioning server is currently streaming.|
|Device Count Timeout||perf_counter_large_rawcount||Total count of devices that have no heartbeat or IO activity for 90 seconds (default) and are timed out by the Citrix Provisioning server.|
|Device Count Cache Failover||perf_counter_large_rawcount||Count of devices configured to use a local disk for write cache, but unexpectedly fail over to use the write cache on the server.|
|Device Count Forced Reconnect||perf_counter_large_rawcount||Total count of devices that are forced by the provisioning server to reconnect.|
The StreamProcess writes the following new events to the Windows Event log:
- DB online to offline with offline database support enabled
- DB online to offline with offline database support disabled
- Offline database support enabled event
- Offline database support disabled event
The StreamService writes the following new events to the Windows Event log:
- Stream process restart event
- Management daemon restart event
- Notifier restart event
- Inventory restart event
Event IDs logged by the stream process
|Event ID||Event Message|
|200||Exception in %1!s! called from %2!s!:%3!d!.|
|201||DbAccess error: <%1!s!> <%2!i!> (in %3!s! called from %4!s!:%5!d!).|
|202||There was an error reading the configuration file. The default values will be used.|
|203||There was an error saving the bios configuration file.|
|204||CSSInitialContact::DispatchPacket received invalid opcode %X.|
|205||Login failed for device %1!s! – %2!s!.|
|206||Login failed for unknown device – %s.|
|207||Device %1!s! moved to %2!s! for IO.|
|208||Secure user authorization for %s FAILED: Account Disabled.|
|209||Secure user authorization for %s FAILED: No matching user.|
|210||Switching to server side caching for device %s.|
|211||AcquireLock failed for vdisk id = %1!i!, device id = %2!i!, status = %3!i! <%4!s!>.|
|212||ReleaseLock failed for locker id = %1!i!, status = %2!i! <%3!s!>.|
|213||Encountered unexpected exception in DispatchDebugRequest. LogLevel=%d.|
|214||Database is back ONLINE. Last offline mode lasted for %1!d! days, %2!d! hours, %3!d! minutes, %4!d! seconds.|
|215||StreamProcess is terminating because no IP addresses is active for server %s.|
|216||DB is OFFLINE and Offline database support is enabled.|
|217||DB is OFFLINE and Offline database support is disabled.|
|218||Offline database support enabled.|
|219||Offline database support disabled.|
|220||CSSServerCache recv failed. Thread is down. WSAEnabled_ = %1!d!, WSA-LastError = %2!X!, LastError = %3!X!.|
|221||CSSInitialContact recv failed. Thread is down. WSAEnabled_ = %1!d!, WSA-LastError = %2!X!, LastError = %3!X!|
|222||CSSProtocol recv failed. Thread is down. WSAEnabled_ = %1!d!, WSA-LastError = %2!X!, LastError = %3!X!.|
|223||Unsupported license SKU is read from database. Use default on-premises license with trade-up enabled.|
|224||Cannot read server preshared key.|
|225||Cannot allocate read buffer in CSSProtocol thread.|
|226||Cannot allocate buffers in CSSProtocol thread.|
|227||CSSProtocol::DispatchLoginMsg received invalid opcode %X.|
|228||CSSProtocol::DispatchAdminMsg received invalid opcode %X.|
|229||CSSProtocol::DispatchDiskIOMsg received invalid opcode %X.|
|230||Device %1!s! boot time: %2!d! minutes %3!d! seconds.|
|231||Login initiated for device %1!s!, LoginType: %2!d!.|
|232||Login complete for device %s.|
|233||HandleSpecialClientBoot: Invalid Special Boot Code %X.|
|234||Detected one or more hung threads. Please send a problem report to support.|
|235||Device %s has powered down.|
|236||Service granted for device %1!s!, IP:%2!s!, Reconnect: %3!d!, ContextReuse: %4!d!.|
|237||Login failed (error code: %1!X!) for device %2!s!: %3!s!.|
|238||Login failed (error code: %1!X!) for unknown device at %2!s!: %3!s!.|
|239||found empty service tag – will result in a blank device name!.|
|240||Device %1!s!, MAC=%2!s!, id=%3!d! cloned from template.|
|241||Stream Service server cache invalid opcode received %X.|
|242||StreamProcess is terminating because it cannot find the installation path.|
|243||StreamProcess is terminating because of a management interface initialization error.|
|244||StreamProcess is terminating because it failed to create a db access interface for locating the server record for %s.|
|245||StreamProcess is terminating because it cannot locate server record for %s.|
|246||StreamProcess is terminating because no IP addresses were found in database for server %s.|
|247||StreamProcess is terminating because no valid IP addresses are configured for server %s. Please check your server IP assignments and network cables.|
|248||StreamProcess is terminating because it cannot retrieve IP address information.|
|249||StreamProcess is terminating because of a helper module initialization error.|
|250||StreamProcess is terminating because it cannot open initial contact port %d.|
|251||StreamProcess is terminating because it failed to initialize the management interface with the following exception: %s.|
|252||IP address unavailable.|
|253||StreamProcess is terminating because it cannot open protocol object port %d.|
|254||StreamProcess is terminating because it cannot open secondary protocol object port %d.|
|255||StreamProcess is terminating because it failed to load manager library.|
|256||StreamProcess is terminating because it failed to link manager function.|
|257||StreamProcess is terminating because it failed to create a management interface.|
|258||StreamProcess is terminating because it can’t get a valid dbAccess object from the management interface.|
|259||StreamProcess is terminating because it failed to initialize the database interface.|
|260||Received signal to shutdown while waiting for database.|
|261||Unexpected exit of idle routine WaitForSingleObject.|
|262||Database file not found. Please check your database path configuration. If you are using a network share please make sure your StreamService is running from an account with permission to access the network share|
|263||Database design mismatch. You appear to be using a database from an incompatible software version. Please upgrade your database and restart your StreamService.|
|264||Database file access denied. Please check your database write permissions. If you are using a network share please make sure your StreamService is running from an account with permission to access the network share.|
|265||Database connection string. Please check your database connection settings in the registry.|
|266||Database closed. This is an internal error. Please contact technical support.|
|267||Cannot establish a connection to the database. Server may be down or it may be a configuration error.|
|268||Cannot establish a connection to the database because the server cannot be found. Please check your database connection settings in the registry and the network path to your server.|
|269||Cannot establish a connection to the database because an attempt to log in failed. Please check your database connection settings in the registry and your permissions on your database server.|
|270||Unmapped database error. This is an internal error. Please contact technical support.|
|271||Undefined database error. This is an internal error. Please contact technical support.|
|272||Exception in %s().|
|273||Stream Process Started.|
|274||Stream Process Stopped.|
|275||CSSProtocolModule::TimerThread() cannot create db access.|
|276||StreamProcess IP %s is disconnected or non-functional.|
|277||StreamProcess IP %s is disconnected or non-functional, or paired IPSec address is non-functional.|
|279||Exception in thread %1!s! near %2!s!:%3!d!.|
|280||StreamProcess cannot find server record for %s in ServerConfigChangedNotification.|
|281||Exception generated by streamprocess.exe. Please send streamprocess.dmp to support.|
|282||Cannot update the VHD timestamp.|
In this article
- Provisioning server properties
- General tab
- Server tab
- Network tab
- Pacing tab
- Device tab
- Network tab
- Stores tab
- Options tab
- Logging tab
- Copying and pasting properties
- Configuring Citrix Provisioning servers manually
- Rerunning the configuration wizard
- Starting and configuring the stream service manually
- Deleting a provisioning server
- Starting, stopping, or restarting a server
- Important considerations
- Open all default provisioning server’s Windows firewall ports
- Provisioning server performance updates
- Event IDs logged by the stream process