Chapter 9. Windows Platforms

CXFS supports a client-only node running the Windows operating system. The information in this chapter applies to all of these versions of Windows unless otherwise noted.

This chapter contains the following sections:


Note: Your Start menu may differ from the examples shown in this guide, depending upon your start menu preferences. For example, this guide describes selecting the control panel as follows:
Start -> Settings -> Control Panel


However, on your system this menu could be as follows:

Start -> Control Panel


CXFS on Windows

This section contains the following information about CXFS on Windows:

Requirements for Windows

In addition to the items listed in “Requirements” in Chapter 1, CXFS requires at least the following:

  • Windows versions:

    • Windows XP SP2

    • Windows XP x64

    • Windows Server 2003 R2

    • Windows Server 2003 R2 x64

    • Windows Server 2003 SP2

    • Windows Server 2003 SP2 x64

    • Windows Vista

    • Windows Vista x64

  • One of the following:

    • An Intel Pentium or compatible processor

    • Xeon family with Intel Extended Memory 64 Technology (EM64T) processor architecture, or AMD Opteron family, AMD Athlon family, or compatible processor

  • Minimum RAM requirements (more will improve performance): at least 1 GB of physical RAM

  • A minimum of 10 MB of free disk space

  • Host bus adapter (HBA):

    • LSI Logic LSI 2Gb/4Gb, single/dual/quad-port , PCI-X/PCI-E HBAs

    • QLogic QLA2200, QLA2310, QLA2342, or QLA2344 HBAs

  • The following LSI Logic software from the http://www.lsilogic.com website:

    • Windows 2003: 1.26.01

    • Windows XP: 1.26.01

    • Windows Vista: 1.26.01

  • The following QLogic software from the http://www.qlogic.com website:

    • QLA2200:

      • Windows Server 2003: v8.1.5.15

      • Windows XP: v8.1.5.12


      Note: Windows Vista does not support the QLA2200.


    • QLA2310, QLA2342 and QLA2344:

      • Windows XP, Windows Server 2003: v9.1.4.10 SCSI Miniport Driver

      • Windows XP, Windows Server 2003: v9.1.4.15 STOR Miniport Driver

      • Windows Vista: Business, Enterprise and Ultimate Editions v9.1.7.15 STOR Miniport for both 32- and 6 4-bit

    • SANsurfer FC HBA Manager 5.0.0 build 17

    You should install the documentation associated with the software. See the SANsurfer README for the default password. Follow the QLogic instructions to install the driver, the SANsurfer NT Agent, and the SANsurfer Manager software. See the SANsurfer help for information on target persistent binding.

  • If two QLogic HBAs are installed for Windows Server 2003, you should also install the QLDirect Filter (8.01.12) in order to facilitate HBA failover and load balancing. If two different model HBAs are installed, you must install drivers for both models.


    Note: If the primary HBA path is at fault during the Windows boot up (for example, if the Fibre Channel cable is disconnected), no failover to the secondary HBA path will occur. This is a limitation of the QLogic driver.


For the latest information, see the CXFS Windows release notes.

CXFS Commands on Windows

The following commands are shipped as part of the CXFS Windows package:

%windir%\system32\cxfs_client.exe
%ProgramFiles%\CXFS\cxfs_info.exe
%ProgramFiles%\CXFS\cxfscp.exe
%ProgramFiles%\CXFS\cxfsdump.exe
%ProgramFiles%\CXFS\grioadmin.exe
%ProgramFiles%\CXFS\griomon.exe
%ProgramFiles%\CXFS\grioqos.exe
%ProgramFiles%\CXFS\xvm.exe

A single CXFS client service and a single CXFS filesystem driver are installed as part of the Windows installation. The service and the CXFS filesystem driver can be configured to run automatically when the first user logs into the node.

The command %ProgramFiles%\CXFS\cxfs_info.exe displays the current state of the node in the cluster in a graphical user interface. See “Log Files and Cluster Status for Windows” and “Verifying the Cluster Status” in Chapter 10.

For information about the GRIO commands, see “Guaranteed-Rate I/O (GRIO) and CXFS” in Chapter 1 and “GRIO on Windows”.

Log Files and Cluster Status for Windows

The Windows node will log important events in the system event log. You can view these events by selecting the following:

Start -> Settings -> Control Panel -> Administrative Tools -> Event Viewer

For information about the log files created on server-capable administration nodes, see the CXFS Administration Guide for SGI InfiniteStorage. The CXFS Client service will also log important information to the following file:

%ProgramFiles%\CXFS\log\cxfs_client.log

When CXFS is first installed, the log file is automatically rotated when it grows to 10 MB. This is set by the -z option in the CXFS Client service Additional arguments window during installation (see Figure 9-6) and may be adjusted by following the steps described in “Modifying the CXFS Software for Windows”.

You may also wish to keep the CXFS Info window open to check the cluster status and view the log file. To open this informational window on any Windows system, select the following:

Start -> Programs  -> CXFS  -> CXFS Info

The top of CXFS Info window displays the overall state of the cluster environment:

  • Number of stable nodes

  • Status of the cms cluster membership daemon

  • Status of XVM

  • Status of filesystems

  • Status of the cluster

  • Status of the local node

Figure 9-1 shows an example of the CXFS Info window.

Figure 9-1. CXFS Info Window -- Nodes Tab Display

CXFS Info Window -- Nodes Tab Display

The CXFS Info window also provides the following tabs to access further information:

  • Nodes displays each node in the cluster, its state, and its cell ID number. For more information, see “Verifying the Cluster Status” in Chapter 10.

  • Filesystems displays each CXFS filesystem, its state, size, and other statistics. Figure 9-2 shows an example.

    Figure 9-2. CXFS Info Window -- Filesystems Tab

    CXFS Info Window -- Filesystems Tab

  • User Map displays the usernames that are mapped to UNIX user identifiers.

  • Group Map displays the groups that are mapped to UNIX group identifiers.

  • GRIOv2 Status displays each guaranteed-rate I/O (GRIO) stream, its reservation size, and other statistics. See “GRIO on Windows”.

  • CXFS Client log displays the log since the CXFS Client service last rebooted. It highlights the text in different colors based on the severity of the output:

    • Red indicates an error, which is a situation that will cause a problem and must be fixed

    • Orange indicates a warning, which is a situation that might cause a problem and should be examined

    • Black indicates general log information that can provide a frame of reference

    • Green indicates good progress in joining membership and mounting filesystems

    Figure 9-3 shows an example.

    Figure 9-3. CXFS Info Window -- CXFS Client Log Tab

    CXFS Info Window -- CXFS Client Log Tab

The CXFS Info icon in the task bar will change from green to yellow or red depending on the state of the client in the cluster:

  • Green indicates that the client is in the membership, everything is fully functional, and all enabled filesystems are mounted

  • Yellow indicates an in-between state (neither inactive nor stable state)

  • Red indicates that CXFS is not running (inactive state)

Also see Figure 9-14.

Functional Limitations and Considerations for Windows

There are a number of limitations in the CXFS software that are unique to the Windows platform:

See also Appendix B, “Filesystem and Logical Unit Specifications”.

Use of TPSSM

When installing TPSSM on a Windows client, you must choose Custom install and uncheck the TPSSM RDAC option. This will prevent the RDAC pseudo/virtual LUNs from being installed onto the system (installing these LUNs would have a detrimental affect on XVM failover V2 for the Windows client).

UNIX Perspective of CXFS for Windows

This section describes the differences and limitations of a CXFS filesystem on a Windows node from a UNIX perspective:

  • Windows nodes can support multiple CXFS filesystems mounted under a single drive letter. Only one CXFS drive letter may be configured on a Windows node.

    The top-level file structure under the CXFS drive letter consists of an in-memory directory structure that mimics the mount points on the server-capable administration node. The CXFS software creates these directories before mounting the CXFS filesystems. For example, a CXFS filesystem with a mount point of /mnt/cxfs on a CXFS Windows node configured to use drive letter X, will create X:\mnt\cxfs during filesystem mount process.

    This file structure supports only creating and deleting directories; there is no support for creating and deleting regular files, renaming directories, and so on. Attempts to perform unsupported actions will generally result in an invalid parameter error. You can perform normal filesystem operations on files and directories beneath the mount points, but an application that must write to the directory directly under the CXFS drive letter will fail.


    Note: A CXFS mount point or directory beneath a mount point can be mapped to another drive letter by using the subst command from a command shell to which the application can write. See “Application Cannot Create File Under CXFS Drive Letter”.


  • A Windows node can support regular files, directories, and links. However, it does not support other XFS file types.

  • Symbolic links cannot be distinguished from normal files or directories on a Windows node. Opening a symbolic link will open the target of the link, or will report file not found if it is a dangling link.

  • You can move, rename, or delete a symbolic link; however, you cannot copy a symbolic link. Copying a valid symbolic link will result in copying the file or directory that the link refers to, rather than the normal UNIX behavior that copies the link itself.

Windows Perspective of CXFS for Windows

This section describes the differences and limitations of a CXFS filesystem on a Windows node in comparison to other Windows filesystems from a Windows perspective:

  • Avoid using duplicate filenames in the same directory that vary only in case. CXFS is case-sensitive, but some Windows applications may not maintain the case of all filenames, which may result in unexpected behavior.

  • CXFS software does not export 8.3 alternative filenames. Older Windows applications that only support 8.3 filenames may be unable to open files with longer filenames and mail fail with file not found errors.

  • Avoid using completely uppercase 8.3 filenames. If you use completely uppercase 8.3 filenames, some applications (including Windows Explorer) may incorrectly assume that only 8.3 filenames are supported by the filesystem and will not preserve case.

  • Install the CXFS software components onto a NTFS partition rather than a FAT partition. The security of the following files cannot be guaranteed if these files are installed onto a FAT filesystem:

    %ProgramFiles%\CXFS\passwd
    %ProgramFiles%\CXFS\group

  • There is no recycle bin; deleted files are permanently deleted.

  • There is no automatic notification of directory changes performed by other nodes in the cluster. Applications (such as Windows Explorer) will not automatically update their display if another node adds or removes files from the directory currently displayed.

  • A CXFS filesystem cannot be used as the boot partition of a Windows node.

  • The volume properties window in Windows Explorer for the CXFS drive letter will display the total capacity of all mounted filesystems and the largest free space on any one of those filesystems.

Forced Unmount on Windows

SGI recommends that you enable the forced unmount feature on CXFS filesystems. See “Enable Forced Unmount” in Chapter 2 and “Forced Unmount of CXFS Filesystems” in Chapter 10.

A forced unmount causes all processes that have open files on the specified filesystem to be unconditionally killed and therefore permit the filesystem to be unmounted without delay.

Define LUN 0 on All Storage Devices for Windows

Windows, and therefore CXFS, may not detect any LUNs on a storage device if LUN 0 is not defined on the storage device. This problem may occur when CXFS Info reports that XVM is up, but one or more filesystems are not mounted and CXFS therefore retries the mount continuously. This problem has occurred on Windows XP CXFS clients. For more information about this issue, see the following (the problem exists for all supported Windows platforms):

http://support.microsoft.com/kb/821666/en-us

Memory-Mapping Large Files for Windows

You can memory-map a file much larger than 2 GB under Windows, but only up to 2 GB of that file in one or more parts can be mapped into a process at any one time on a 32-bit platform. See the Windows Platform Software Development Kit for more details.

CXFS Mount Scripts for Windows

Windows does not support the CXFS mount scripts.

Norton Ghost Prevents Mounting Filesystems

If Norton Ghost is installed on a node, CXFS cannot mount filesystems on the mount-point driver letter. You must uninstall Norton Ghost in order to use CXFS.

Mapping Network and CXFS Drives

Under Windows XP, users may define their own local set of drive letter mappings that can override the global settings for the host. When identifying the filesystem mapped to a drive letter, Windows XP will check the local mappings and may hide CXFS from the user. Users and administrators of CXFS Windows nodes must avoid mapping network and CXFS drives to the same drive letter.

Windows Filesystem Limitations

A Windows node running CXFS has the following filesystem limitations:

  • Does not support shutdown of the CXFS driver via the device manager. If restarting the CXFS Client service fails to achieve membership, you must restart the Windows node.

  • Does not support for opportunistic locking, also known as oplocks. Hosts that are using a CXFS Windows node as an SMB server will not be able to cache data locally. The workaround is to use NFS or Samba to export the filesystem on one of the server-capable administration nodes.

  • Enforces the Windows file sharing options when opening a file on the same node, but does not enforce it on other nodes in the cluster.

XFS Filesystem Limitations

Support for unwritten extents is limited on Windows nodes. However, reading and writing unwritten extents will work correctly in the absence of concurrent reading and writing of the same file extent elsewhere in the cluster.

User Account Control for Windows Vista

By default, User Account Control is enabled for Windows Vista, but it is not appropriate for use with CXFS. You must therefore disable user account control. See step 4 in “Client Software Installation for Windows”.

Performance Considerations for Windows

The following are performance considerations on a CXFS Windows node, in addition to the limitations described in “Use CXFS when Appropriate” in Chapter 2:

  • Using CIFS to share a CXFS filesystem from a CXFS Windows node to another Windows host is not recommended for the following reasons:

    • Metadata operations sent to the Windows node must also be sent to the CXFS metadata server causing additional latency

    • CXFS Windows does not support opportunistic locking, which CIFS uses to improve performance (see “Windows Filesystem Limitations”)

    SGI recommends that you use Samba on the CXFS metadata server to export CXFS filesystems to other nodes that are not running CXFS.

  • Windows supplies autonotification APIs for informing applications when files or directories have changed on the local client. With each notification, Windows Explorer will do a full directory lookup. Under CXFS, directory lookups can require multiple RPCs to the server (about 1 per 30 files in the directory), resulting in a linear increase in network traffic. This can grow to megabytes per second for directories with large numbers of files.

    For better performance, do one of the following:

    • Select the destination folder itself

    • Close the drive tree or mount point folder by clicking on the |+| on the drive icon or mount point folder

  • If you open the Windows Explorer Properties window on a directory, it will attempt to traverse the filesystem in order to count the number and size of all subdirectories and files; this action is the equivalent of running the UNIX du command. This can be an expensive operation, especially if performed on directories between the drive letter and the mount points, because it will traverse all mounted filesystems.

  • Virus scanners, Microsoft Find Fast, and similar tools that traverse a filesystem are very expensive on a CXFS filesystem. Such tools should be configured so that they do not automatically traverse the CXFS drive letter.

  • The mapping from Windows user and group names to UNIX identifiers occurs as the CXFS software starts up. In a Windows domain environment, this process can take a number of seconds per user for usernames that do not have accounts within the domain. If you are using a passwd file for user identification and the file contains a number of unknown users on the Windows node, you should remove users who do not have accounts on the Windows nodes from the passwd file that is installed on the Windows nodes.

    This issue has less impact on Windows nodes in a workgroup than on those in a domain because the usernames can be quickly resolved on the node itself, rather than across the network to the domain controller.

  • With 1-GB fabric to a single RAID controller, it is possible for one 32-bit 33-MHz QLogic card to reach the bandwidth limitations of the fabric, and therefore there will be no benefit from load balancing two HBAs in the same PCI bus. This can be avoided by using 2-GB fabric and/or multiple RAID controllers.

  • For load balancing of two HBAs to be truly beneficial, the host must have at least one of the following three attributes:

    • A 64-bit PCI bus

    • A 66-MHz PCI bus

    • Multiple PCI buses

  • Applications running on a CXFS Windows client should perform well when their I/O access patterns are similar to those described in “When to Use CXFS” in Chapter 1.

  • The maximum I/O size issued by the QLogic HBA to a storage target and the command tag queue length the HBA maintains to each target can be configured in the registry. See “System Tunables for Windows”.

Access Controls for Windows

The XFS filesystem used by CXFS implements and enforces UNIX mode bits and POSIX access control lists (ACLs), which are quite different from Windows file attributes and access control lists. The CXFS software attempts to map Windows access controls to the UNIX access controls for display and manipulation, but there are a number of features that are not supported (or may result in unexpected behavior) that are described here. This section contains the following:

User Identification for Windows

The CXFS software supports several user identification mechanisms, which are described in “User Identification Mapping Methods for Windows”. Windows user and group names that match entries in the configured user list will be mapped to those user IDs (UIDs) and group IDs (GIDs).

The following additional mappings are automatically applied:

  • User Administrator is mapped to root (UID = 0)

  • Group Administrators is mapped to sys (GID = 0)

A user's default UNIX GID is the default GID in the passwd listing for the user and is not based on a Windows group mapped to a UNIX group name.

You can display the users and groups that have been successfully mapped by looking at the tables for the User Map and Group Map tabs in the CXFS Info window.

The following sections assume that a CXFS Windows node was configured with the following passwd and group files:

C:\> type %ProgramFiles%\CXFS\passwd
root::0:0:Super-User:/root:/bin/tcsh
guest::998:998:Guest Account:/usr/people/guest:/bin/csh
fred::1040:402:Fred Costello:/users/fred:/bin/tcsh
diane::1052:402:Diane Green:/users/diane:/bin/tcsh

C:\> type %ProgramFiles%\CXFS\group
sys::0:root,bin,sys,adm
root::0:root
guest:*:998:
video::402:fred,diane
audio::403:fred

User Identification Mapping Methods for Windows

User identification can be performed by one choosing one of the following methods for the User ID mapping lookup sequence item of the Enter CXFS Details window:

  • files: /etc/passwd and /etc/group files from the metadata server copied onto the clients. If you select this method, you must install the /etc/passwd and /etc/group files immediately after installing the CXFS software, as described in “Performing User Configuration for Windows”.

  • ldap_activedir: Windows Active Directory server with Services for UNIX (SFU) installed, which uses lightweight directory access protocol (LDAP).

    The ldap_activedir method configures the CXFS Windows software to communicate with the Active Directory for the CXFS node's domain. With the Windows Services for UNIX (SFU) extensions, the Active Directory User Manager lets you define UNIX identifiers for each user and export these identifiers as an LDAP database.

    Permissions on the Active Directory server must allow Authenticated Users to read the SFU attributes from the server. Depending on the installation and configuration of the server, LDAP clients may or may not be able to access the SFU attributes. For more information, see“CXFS Client Service Cannot Map Users other than Administrator for Windows”.

    This configuration requires a domain controller that is installed with the following:

    • Windows 2003 Server with Active Directory.

    • Windows Services for UNIX (SFU) version 2 or later with the NFS server component installed. SGI recommends SFU version 3.5.


    Note: The domain controller does not have to be a CXFS node.


  • ldap_generic: Generic LDAP lookup for UNIX users and groups from another LDAP server.

    The ldap_generic method configures the CXFS software to communicate with an LDAP database that maps user names and group names to UNIX identifiers.

For an example of the window, see Figure 9-6.

You must select one of these as the primary mapping method during installation, but you can change the method at a later time, as described in “Modifying the CXFS Software for Windows”.

Optionally, you can select a secondary mapping method that will be applied to users that are not covered by the first method. If you choose a primary and a secondary mapping method, one of them must be files.

For example, suppose the user has selected ldap_generic as the primary method and files as the secondary method. A user mapping will be created for all suitable ldap_generic users and this mapping will be extended with any additional users found in the secondary method (files). The primary method will be used to resolve any duplicate entries.

Suppose the primary method (ldap_generic) has users for UIDs 1, 2 and 3, and the secondary method (files ) has users for UIDs 2 and 4. The username for UIDs 1, 2 and 3 will be determined by the ldap_generic method and the username for UID 4 will be determined by the files method. If the LDAP lookup failed (such as if the LDAP server was down), a user mapping for UIDs 2 and 4 would be generated using the files method.

The default behavior is to use the files method to map Windows usernames to UNIX UIDs and GIDs, with no secondary method selected.

Regardless of the method used, the consistent mapping of usernames is a requirement to ensure consistent behavior on all CXFS nodes. Most platforms can be configured to use an LDAP database for user identification.

Enforcing Access to Files and Directories for Windows

Access controls are enforced on the CXFS metadata server by using the mapped UID and GID of the user attempting to access the file. Therefore, a user can expect the same access on a Windows node as any other node in the cluster when mounting a given filesystem. Access is determined using the file's ACL, if one is defined, otherwise by using the file's mode bits.

ACLs that are set on any files or directories are also enforced as they would be on any Linux node. The presentation of ACLs is customized to the interfaces of Windows Explorer, so the enforcement of the ACL may vary from an NTFS ACL that is presented in the same way. A new file will inherit the parent directory default ACL, if one is defined.

The user Administrator has read and write access to all files on a CXFS filesystem, in the same way that root has superuser privileges on a UNIX node.

The following example is a directory listing on the metadata server:

MDS# ls -l
drwxr-x---    2 fred   video           6 Nov 20 13:33 dir1
-rw-r-----    1 fred   audio           0 Nov 20 12:59 file1
-rw-rw-r--    1 fred   video           0 Nov 20 12:59 file2

Users will have the following access to the contents of this directory:

  • file1 will be readable and writable to user fred and Administrator on a CXFS Windows node. It can also be read by other users in group audio. No other users, including diane and guest, will be able to access this file.

  • file2 will be readable by all users, and writable by user fred, diane (because she is in group video), and Administrator .

  • dir1 will be readable, writable, and searchable by user fred and Administrator . It will be readable and searchable by other users in group video, and not accessible by all other users.

Viewing and Changing File Attributes with Windows Explorer

File permissions may be viewed and manipulated in two different ways when using Windows Explorer:

  • By displaying the list of attributes in a detailed directory listing; this is the most limited approach

  • By selecting properties on a file

The only file attribute that is supported by CXFS is the read-only attribute, other attributes will not be set by CXFS and changes to those attributes will be ignored.

If the user is not permitted to write to the file, the read-only attribute will be set. The owner of the file may change this attribute and modify the mode bits. Other users, including the user Administrator , will receive an error message if they attempt to change this attribute.

Marking a file read-only will remove the write bit from the user, group, and other mode bits on the file. Unsetting the read-only attribute will make the file writable by the owner only.

For example, selecting file properties on file1 using Windows Explorer on a CXFS Windows node will display the read-only attribute unset if logged in as Administrator or fred, and it will be set for diane and guest.

Only user fred will be able to change the attribute on these files, which will change the files under UNIX to the following:

-r--r-----    1 fred   audio           0 Nov 20 12:59 file1
-r--r--r--    1 fred   video           0 Nov 20 12:59 file2

If fred then unset these flags, only he could write to both files:

-rw-r-----    1 fred   audio           0 Nov 20 12:59 file1
-rw-r--r--    1 fred   video           0 Nov 20 12:59 file2

Viewing and Changing File Permissions with Windows Explorer

By selecting the Security tab in the File Properties window of a file, a user may view and change a file's permissions with a high level of granularity.

Windows Explorer will list the permissions of the file's owner and the file's group. The Everyone group, which represents the mode bits for other users, will also be displayed if other users have any access to the file. Not all Windows permission flags are supported.

The permissions on file1 are displayed as follows:

audio (cxfs1\audio)           Allow: Read
Fred Costello (cxfs1\fred)    Allow: Read, Write

Using the Advanced button, file1 is displayed as follows:

Allow    Fred Costello (cxfs1\fred)    Special
Allow    audio (cxfs1\audio)           Read

User fred is listed as having Special access because the permission flags in the next example do not exactly match the standard Windows permissions for read and write access to a file. Select Fred Costello and then click View/Edit to display the permission flags listed in Table 9-1. (The table displays the permissions in the order in which they appear in the View/Edit window). You can choose to allow or deny each flag, but some flags will be ignored as described in Table 9-1.

Table 9-1. Permission Flags that May Be Edited

Permission

Description

Traverse Folder / Execute File

Used to display and change the execute mode bit on the file or directory

List Folder / Read Data

Used to display and change the read mode bit on the file or directory

Read Attributes

Set if the read mode bit is set; changing this flag has no effect

Read Extended Attributes

Set if the read mode bit is set; changing this flag has no effect

Create Files / Write Data

Used to display and change the write mode bit on the file or directory

Create Folders / Append Data

Set if the write mode bit is set; changing this flag has no effect

Write Attributes

Set if the write mode bit is set; changing this flag has no effect

Write Extended Attributes

Set if the write mode bit is set; changing this flag has no effect

Delete Subfolders and Files

Set for directories if you have write and execute permission on the directory; changing this flag has no effect

Delete

Never set (because delete depends on the parent directory permissions); changing the flag has no effect

Read Permissions

Always set; changing the flag has no effect

Change Permissions

Always set for the owner of the file and the user Administrator; changing this flag has no effect

Take Ownership

Always set for the owner of the file and the user Administrator; changing this flag has no effect

The permissions for file2 are displayed as follows:

Everyone                      Allow: Read
video (cxfs1\video)           Allow: Read, Write
Fred Costello (cxfs1\fred)    Allow: Read, Write

The permissions for dir1 are displayed as follows:

Fred Costello (cxfs1\fred)    Allow:
Video (cxfs1\video)           Allow:


Note: In this example, the permission flags for directories do not match any of the standard permission sets, therefore no Allow flags are set.

In general, you must click the Advanced button to see the actual permissions of directories. For example:

Allow   Fred Costello   Special                 This folder only
Allow   video           Read & Execute          This folder only

The dir1 directory does not have a default ACL, so none of these permissions are inherited, as indicated by the This folder only tag, when a new subdirectory or file is created.

Viewing and Changing File Access Control Lists (ACLs) for Windows

If the file or directory has an ACL, the list may include other users and groups, and the CXFS ACL Mask group that represents the Linux ACL mask. See the chacl(1) man page for an explanation of Linux ACLs and the mask bits. The effective permissions of all entries except for the owner will be the intersection of the listed permissions for that user or group and the mask permissions. Therefore, changing the CXFS ACL Mask permissions will set the maximum permissions that other listed users and groups may have. Their access may be further constrained in the specific entries for those users and groups.

By default, files and directories do not have an ACL, only mode bits, but an ACL will be created if changes to the permissions require an ACL to be defined. For example, granting or denying permissions to another user or group will force an ACL to be created. Once an ACL has been created for a file, the file will continue to have an ACL even if the permissions are reduced back to only the owner or group of the file. The chacl(1) command under Linux can be used to remove an ACL from a file.

For example, fred grants diane read access to file1 by adding user diane using the file properties dialogs, and then deselecting Read & Execute so that only Read is selected. The access list now appears as follows:

audio (cxfs1\audio)           Allow: Read
Diane Green (cxfs1\diane)     Allow: Read
Fred Costello (cxfs1\fred)    Allow: Read, Write

After clicking OK, the properties for file1 will also include the CXFS ACL Mask displayed as follows:

audio (cxfs1\audio)           Allow: Read
CXFS ACL Mask (cxfs1\CXFS...) Allow: Read
Diane Green (cxfs1\diane)     Allow: Read
Fred Costello (cxfs1\fred)    Allow: Read, Write


Note: You should select and deselect entries in the Allow column only, because UNIX ACLs do not have the concept of Deny. Using the Deny column will result in an ACL that allows everything that is not denied, even if it is not specifically selected in the Allow column, which is usually not what the user intended.


Effective Access for Windows

The effective access of user diane and group audio is read-only. Granting write access to user diane as in the following example does not give diane write access because the mask remains read-only. However, because user fred is the owner of the file, the mask does not apply to his access to file1.

For example:

audio (cxfs1\audio)                   Allow: Read
CXFS ACL Mask (cxfs1\CXFS...)         Allow: Read
Diane Green (cxfs1\diane)             Allow: Read, Write
Fred Costello (cxfs1\fred)            Allow: Read, Write

Restrictions with file ACLs for Windows

If the users and groups listed in a file's permissions (whether mode bits and/or ACL entries) cannot be mapped to users and groups on the Windows node, attempts to display the file permissions in a file properties window will fail with an unknown user or group error. This prevents the display of an incomplete view, which could be misleading.

Both the owner of the file and the user Administrator may change the permissions of a file or directory using Windows Explorer. All other users will get a permission denied error message.


Note: A user must use a node that is not running Windows to change the ownership of a file because a Windows user takes ownership of a file with Windows Explorer, rather than the owner giving ownership to another user (which is supported by the UNIX access controls).


Inheritance and Default ACLs for Windows

When a new file or directory is created, normally the mode bits are set using a mask of 022. Therefore, a new file has a mode of 644 and a new directory of 755, which means that only the user has write access to the file or directory.

You can change this mask during CXFS installation or later by modifying the installation. For more information, see “Client Software Installation for Windows” and “Inheritance and Default ACLs for Windows”.

The four umask options available during installation or modification correspond to the following umask values:

000

Everyone can write

002

User and group can write

022

User only can write (default)

222

Read only (no one can write)

Therefore, creating a file on a UNIX CXFS client results in a mode of 644 for a mask of 022:

admin% ls -lda .
drwxr-xr-x    3 fred     video           41 Nov 21 18:01 ./

admin% umask
0022

admin% touch file3
admin% ls -l file3
-rw-r--r--    1 fred     video            0 Nov 21 18:23 file3

For more information, see the umask man page.

Creating a file in Windows Explorer on a Windows node will have the same result.

A Linux directory ACL may include a default ACL that is inherited by new files and directories, instead of applying the umask. Default ACLs are displayed in the Windows Explorer file permission window if they have been set on a directory. Unlike a Windows inheritable ACL on an NTFS filesystem, a Linux default ACL applies to both new files and subdirectories, there is no support for an inheritable ACL for new files and another ACL for new subdirectories.

The following example applies an ACL and a default ACL to dir1 and then creates a file and a directory in dir1 :

admin% chacl -b "u::rwx,g::r-x,u:diane:r-x,o::---,m::r-x" \
           "u::rwx,g::r-x,u:diane:rwx,o::---,m::rwx" dir1
admin% touch dir1/newfile
admin% mkdir dir1/newdir
admin% ls -D dir1
newdir [u::rwx,g::r-x,u:diane:rwx,o::---,m::r-x/
        u::rwx,g::r-x,u:diane:rwx,o::---,m::rwx]
newfile [u::rw-,g::r-x,u:diane:rwx,o::---,m::r--]

The permissions for dir1 will be as follows:

CXFS ACL Mask (cxfs1\CXFS...)  Allow:                     
Diane Green (cxfs1\diane)      Allow:                
Fred Costello (cxfs1\fred)     Allow: Read & Exec, List, Read, Write
Video (cxfs1\video)            Allow: Read & Exec, List, Read

After clicking on Advanced, the permissions displayed are as follows:,

Allow  Fred Costello   Special                 This folder, subfolders and files
Allow  video           Read & Execute          This folder, subfolders and files
Allow  Diane Green     Read, Write & Exec      Subfolders and files
Allow  CXFS ACL Mask   Read, Write & Exec      Subfolders and files
Allow  Diane Green     Read & Exec             This folder only
Allow  CXFS ACL Mask   Read & Exec             This folder only

If an ACL entry is the same in the default ACL, a single entry is generated for the This folder, subfolders and files entry. Any entries that are different will have both Subfolders and files and This folder only entries.

Adding the first inheritable entry to a directory will cause CXFS to generate any missing ACL entries like the owner, group, and other users. The mode bits for these entries will be generated from the umask.

Adding different Subfolders Only and Files Only entries will result in only the first entry being used because a Linux ACL cannot differentiate between the two.

System Tunables for Windows

This section discusses the following topics:


Note: These system tunables are removed when the software is removed. They may need to be reset when downgrading the CXFS for Windows software.


Registry Modification

In order to configure system tuning settings, you must to modify the registry. Do the following:

  1. Back up the registry before making any changes.

  2. Click Start, select Run, and open the adit.exe program.

  3. Select HKEY_LOCAL_MACHINE and follow the tree structure down to the parameter you wish to change.

  4. After making the change, reboot the system so that the change takes affect.


Caution: Only the parameters documented here may be changed to modify the behavior of CXFS. All other registry entries for CXFS must not be modified or else the software may no longer function.


Default Umask for Windows

The default umask that is set up during installation can be configured to a value not supported by the installer. For more information on the umask, see “Inheritance and Default ACLs for Windows”.

In the Registry Editor (regedit), navigate and edit the following value:

HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> CXFS -> Parameters -> DefaultUMask

This value specifies the umask in hexadecimal (and decimal), not its normal octal representation used on UNIX platforms.

Maximum DMA Size for Windows

CXFS for Windows prior to CXFS 3.2 broke down large direct I/O requests into requests no larger than 4 MB, which would result in additional network traffic to the metadata server and potentially multiple extents on disk when it could allocate a single extent. This limit has been increased to 16 MB and can be configured by modifying a new registry key in CXFS 3.2 and later.

In regedit, navigate and edit the following value:

HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> CXFS -> Parameters

Create a new DWORD key called MaxDMASize and specify the maximum I/O request size in bytes. If this parameter is not defined, it defaults to 0x1000000, which is 16 MB. The upper bound for Windows is just under 64 MB.

Memory-Mapping Coherency for Windows

By default, a CXFS Windows client enforces memory-mapping coherency by preventing other clients and the CXFS metadata server access to the file while it is mapped. This can cause problems for some applications that do not expect this behavior.

Microsoft Office applications and Notepad.exe use memory-mapped I/O to read and write files, but use byte-range locks to prevent two people from accessing the same file at the same time. The CXFS behavior causes the second Office application to hang until the file is closed by the first application, without displaying a dialog that the file is in use.

Backup applications that search the filesystem for modified files will stall when they attempt to back up a file that has been memory-mapped on a CXFS Windows node.

In regedit, navigate and edit the following value:

HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> CXFS -> Parameters

You can disable this behavior in CXFS by changing the DisableMemMapCoherency parameter from 0 to 1 to avoid these problems. However, CXFS can no longer ensure data coherency if two applications memory-map the same file at the same time on different nodes in the cluster.


Caution: Use this option with extreme caution with multiple clients concurrently accessing the same files.


DNLC Size for Windows

The Directory Name Lookup Cache (DNLC) in a CXFS Windows client allows repetitive lookups to be performed without going to the metadata server for each component in a file path. This can provide a significant performance boost for applications that perform several opens in a deep directory structure.

In regedit, navigate and edit the following value:

HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> CXFS -> Parameters

The DnlcSize parameter is set to 4096 by default. You can change it to a value from 0 (which disables the DNLC) to 100000. Values outside this range will be reset to 4096.


Note: Increasing the DNLC size can have a significant memory impact on the Windows node and the metadata server because they maintain data structures for every actively opened file on the CXFS clients. You should monitor the memory usage on these nodes before and after changing this parameter because placing nodes under memory pressure is counter-productive to increasing the DNLC size.


Mandatory Locks for Windows

By default, byte-range locks across the cluster are advisory locks, which do not prevent a rogue application from reading and writing to locked regions of a file.


Note: Windows filesystems (NTFS and FAT) implement a mandatory locking system that prevents applications from reading and writing to locked regions of a file. Mandatory locks are enabled within a Windows client.

In regedit, navigate and edit the following value:

HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> CXFS -> Parameters

To enable mandatory byte-range locks across the cluster, set the ForceMandatoryLocks parameter to 1. Setting this parameter will adversely affect performance of applications using these locks.

User Identification Map Updates for Windows

User identification maps are updated automatically by the following triggers:

  • An unmapped user logs into the system

  • The passwd and/or group file is modified when the primary mapping method is files

  • An LDAP database change is detected when the primary mapping method is ldap_activedir or ldap_generic

The most common trigger in a typical environment is when an unmapped user logs into the system; the other two triggers are generally static in nature.

Updating the map can be a resource-intensive operation in a domain environment. Therefore, by default, an update is triggered only when an unmapped user logs in and not more often than every 5 minutes.

To configure the minimum update interval, select the following:

HKEY_LOCAL_MACHINE ->  SYSTEM  -> CurrentControlSet ->  Services -> CXFS_Client ->  Parameters

In the regedit menu:

Edit -> New  -> DWORD Value

Enter MinMapGenTime for the name. Press Enter to edit the value, which is the minimum time between updates in minutes. The minimum time is 1 minute.

I/O Size Issues Within the QLogic HBA

The maximum size of I/O issued by the QLogic HBA defaults to only 256 KB. Many applications are capable of generating much larger requests, so you may want to increase this I/O size to the HBA's maximum of 1 MB.

To increase the size of the I/O, do the following:

  1. Run regedit as follows:

    Start -> Run -> regedit

  2. In regedit, select HKEY_LOCAL_MACHINE and follow the tree structure down to the QLogic driver as follows:

    HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> ql2xxx  -> Parameters -> Device

  3. Double-click on MaximumSGList:REG_DWORD:0x21

  4. Enter a value from 16 to 255 (0x10 hex to 0xFF). A value of 255 (0xFF) enables the maximum 1-MByte transfer size. Setting a value higher than 255 results in 64-KB transfers. The default value is 33 (0x21).

  5. Enter a value from 16 to 255 (0x10 hex to 0xFF). A value of > 255 (0xFF) enables the maximum 1 MByte transfer size. Setting > a value higher than 255 results with the default of 64K > transfers. The default value is 33 (0x21).

  6. Exit the Registry Editor.

  7. Shutdown and reboot the system.

Command Tag Queueing (CTQ) Used by the QLogic HBA

Command Tag Queueing (CTQ) is used by HBAs to manage the number of outstanding requests each adapter port has to each target. Adjusting this value (up or down) can improve the performance of applications, depending on the number of clients in the cluster and the number of I/O requests they require to meet the required quality of service.

You should only modify this setting for HBA ports that are to be used by CXFS. Do not modify ports used for local storage.

While it is possible to change this value with the volume mounted, I/O will halt momentarily and there may be problems if the node is under a heavy load.


Note: The Windows QLogic HBA will not recognize the CTQ setting placed on the disk by Linux nodes.

To configure the CTQ for the QLogic HBA, do the following:

  1. Start the SANsurfer Manager program and connect.

  2. Click the first adapter, for example Adapter QLA2342.

  3. Click the Settings tab.

  4. Click the Select Settings section drop down list and select Advanced Adapter Settings .

  5. Enter a value in the range 1 through 256 in the Execution Throttle up-down edit control (the default is 16 ). The value describes how many commands will be queued by the HBA.

  6. Repeat step 5 for each HBA port used for CXFS.

  7. Click Save, enter the password (config by default), and click OK.

  8. Close the SANsurfer Manager program.

  9. Reboot the system.

If you do not have SANsurfer Manager installed, you can also set the execution throttle in the QLogic BIOS during boot-up. To do this, press ctrl-q when you see the QLogic BIOS message. See the QLogic HBA card and driver documentation.


Note: Unlike CTQ, you cannot have separate depths per LUN. Execution throttle limits the number of simultaneous requests for all targets in the specified port.


Memory-Mapped Files Flush Time for Windows

The MmapFlushTimeSeconds tunable allows the CXFS memory manager to periodically relinquish references to files that are currently memory-mapped but are not in use. This enables other clients in the cluster to access the files.

The MmapFlushTimeSeconds registry value specifies the length of time in seconds that a CXFS flushing thread periodically awakens to flush the memory-mapped files that are not in use. The larger the value the longer the client will hold onto the tokens for that file. The default is 30 seconds. Setting the value to 0 disables the flushing of memory-mapped files. (A negative value is invalid and will cause the setting to return to the default 30 seconds.)


Caution: Change the value for this parameter with caution. Increasing the MmapFlushTimeSeconds time can cause other clients to increase their access wait time if memory-mapping coherency is enabled. Decreasing the value might cause unnecessary flushing and invalidation operations, which will hurt the system performance.

In regedit, navigate and edit the following value:

HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> CXFS -> Parameters -> MmapFlushTimeSeconds

HBA Installation for Windows

The QLogic Fibre Channel host bus adapter (HBA) should be installed according to the QLogic hardware and driver installation instructions.

Information regarding large logical unit (LUN) support under Windows can be found in the QLogic documentation and also in Microsoft's support database:

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q310072
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q245637

This section discusses the following:

Confirming the QLogic HBA Installation for Windows

To confirm that the QLogic HBA and driver are correctly installed, select the following to display all of the logical units (LUNs) visible to the HBA and listed within the Device Manager :

Start -> Settings -> Control Panel -> Administrative Tools -> Computer Management -> Device Manager -> View -> Devices by connection

The Windows Device Manager hardware tree will differ from one configuration to another, so the actual location of the QLogic HBA within the Device Manager may differ. After it is located, any LUNS attached will be listed beneath it.

Configuring Multiple HBAs for Load Balancing on Windows

The QLogic HBA can be configured to mask particular targets so that I/O to one target will always use one HBA port, while I/O to another target will use another HBA port. This procedure assumes that the CXFS driver is already installed and working properly with one HBA.


Note: QLogic only supports load balancing of two or more HBAs when all the HBAs have Fibre Channel connections to the LUNs on startup. If the connection to one of the HBAs is not present upon boot, this feature may not function correctly.

To configure two HBAs for static load balancing, do the following:

  1. Disable fencing for this node.

  2. Determine the worldwide port name (WWPN) of the current adapter:

    1. Install SANsurfer QLogic Agent and Manager

    2. Run SANsurfer to determine the WWPN

    3. Record the WWPN on paper

  3. Shut down Windows.

  4. Install the second HBA and start Windows.

  5. If the second HBA is a different model from the original one, install its mini port driver (for example, ql2300.sys).

  6. Start the QLogic SANsurfer Manager and verify that two HBAs are detected. Verify that both of them mirror the same devices and logical units (LUNs). Notice that both HBAs have the same worldwide node name (WWNN) but different WWPNs. The original HBA can be recognized by its WWPN recorded in step 2.

  7. If you are using SanSurfer, set the persistent binding to bind the target to the target ID. For more information, see “Mapping XVM Volumes to Storage Targets on Windows”“ Otherwise, verify the driver parameters for the QLogic HBAs. Run regedit and go to the following key:

    HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> ql2xxx -> Parameters -> Device

    There should be a value named DriverParameters. This must contain at least the following semicolon-separated parameters:

    Buschange=0;FixupInquriry=1

    It will typically include UseSameNN=1 as well. If the Buschange and FixupInquiry values are not there or are incorrect, edit the parameter list to correct them. Do not delete any other parameters.

  8. Configure the HBA port (click Configure ).


    Note: Ignore the following message, which appears when HBA/LAN configuration is done for the first time (line breaks added here for readability):
    An invalid device and LUN configuration has been detected. Auto
    configure run automatically. click OK to continue.


    The HBA0 devices are automatically set to be visible for Windows applications (notice the open eye) and HBA1 devices are set to be invisible (notice the closed eye).

  9. Select the first device in the table, right click, and then select Configure LUN(s) .

    In the new window, select the following:

    Tools -> Load Balance -> All LUNs

    This will statically distribute the LAN's traffic load that is associated with this device between the two HBAs.

    Repeat step 9 for each of the other HBA devices.

  10. Click Apply to save the new configuration.

  11. Update the switch port information. Reenable fencing.

  12. Reboot Windows.

For more information about using the CXFS GUI or cxfs_admin to perform these tasks, see CXFS Administration Guide for SGI InfiniteStorage.

Configuring HBA Failover for Windows 2003

The QLogic HBA on Windows 2003 also supports a mechanism to configure the automatic failover to another HBA port if the configured port is no longer able to see the target.


Note: QLogic only supports failover of two or more HBAs when all the HBAs have Fibre Channel connections to the LUNs on startup. If the connection to one of the HBAs is not present upon boot, this feature may not function correctly.

To configure two HBAs for failover, do the following:

  1. Install the QLdirect driver v8.01.12 by following all the default settings for the installation and verify that the CXFS client still operates normally.

  2. Perform the procedure in “Configuring Multiple HBAs for Load Balancing on Windows”. With QLdirect installed, the targets can be masked but will also failover to another port if a connection is lost.

Preinstallation Steps for Windows

This section provides an overview of the steps that you or a qualified Windows service representative will perform on your Windows nodes prior to installing the CXFS software. It contains the following:

Adding a Private Network for Windows

A private network is required for use with CXFS. See “Use a Private Network” in Chapter 2.

Procedure to Add a Private Network for Windows

The following procedure provides an overview of the steps required to add a private network to the Windows node. You may skip some steps, depending upon the starting conditions at your site.

Do the following:

  1. Install the second network adapter in the Windows node as per the network adapter vendor instructions. In some cases you must remove all network setups, restart, and then add network services to each network adapter from scratch.

  2. Ensure that the node recognizes two network adapters in the system. Select the following:

    Start -> Settings -> Network and Dial-up Connections

  3. Specify the private network settings (IP address, subnet mask, default gateway) on one of the network adapters. Select the following:

    Start -> Settings -> Network and Dial-up Connections

    Then right-mouse click the private network adapter and click Properties. Uncheck all check boxes except Internet Protocol (TCP/IP), thereby enabling only Internet Protocol (TCP/IP), as shown in Figure 9-4.

    Figure 9-4. Private Properties: Selecting only TCP/IP

    Private Properties: Selecting only TCP/IP

  4. Select Internet Protocol (TCP/IP) and then click Properties. Specify the static IP address and DNS server. The private network IP address must be a fixed address and cannot be configured by DHCP.

The location of the host information is:

%SystemRoot%\system32\drivers\etc\hosts

Ensuring Proper Hostname Configuration for Windows

It is very important, especially in the presence of private network failover, to ensure that the hostnames and IP addresses for the various network interfaces are properly configured on both the Windows node and the CXFS metadata servers. (For more information about configuring private network failover, see the CXFS Administration Guide for SGI InfiniteStorage.)

For example, problems may occur if the cluster is configured using hostnames and the primary network interface on the Windows node is used for the CXFS private network. In this situation, the Windows node may associate the computer name to the primary network interface rather than the private network name configured in DNS.

To avoid such problems, SGI recommends that you specify the private network addresses for the Windows node using IP addresses rather than hostnames.

Verifying the Private and Public Networks for Windows

You can confirm that the previous procedures to add private networks were performed correctly by using the ipconfig command in a DOS command shell.

Create a DOS command shell with the following sequence:

Start -> Programs -> Accessories -> Command Prompt

In the following example, the 10 network is the private network and the 192.168.0 network is the public network on a Windows system:

C:\> ipconfig /all
Windows IP Configuration

        Host Name . . . . . . . . . . . . : cxfs1
        Primary Dns Suffix  . . . . . . . : cxfs-domain.sgi.com
        Node Type . . . . . . . . . . . . : Unknown
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No
        DNS Suffix Search List. . . . . . : cxfs-domain.sgi.com
                                            sgi.com

Ethernet adapter Public:

        Connection-specific DNS Suffix  . : cxfs-domain.sgi.com
        Description . . . . . . . . . . . : 3Com EtherLink PCI
        Physical Address. . . . . . . . . : 00-01-03-46-2E-09
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 192.168.0.101
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.0.1
        DNS Servers . . . . . . . . . . . : 192.168.0.x

Ethernet adapter Private:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : 3Com EtherLink PCI
        Physical Address. . . . . . . . . : 00-B0-D0-31-22-7C
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 10.0.0.101
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . :

Configuring the Windows XP SP2 Firewall for Windows

The Windows XP firewall will prevent a CXFS Windows node from achieving membership unless several ports are opened using the following applet:

Start -> Settings -> Control Panel -> Windows Firewall

In the Exceptions tab, add the following Ports:

UDP on port 5449
TCP on port 5450
TCP on port 5451
UDP on port 5453

Client Software Installation for Windows

The CXFS software will be initially installed and configured by SGI personnel. This section provides an overview of those procedures. You can use the information in this section to verify the installation.


Note: This procedure assumes that the CXFS software is installed under the default path %ProgramFiles%\CXFS. If a different path is selected, then that path should be used in its place in the following instructions.

To install the CXFS client software on a Windows node, do the following:

  1. Read the SGI InfiniteStorage Software Platform release notes CXFS general release notes in the /docs directory on the ISSP DVD and any late-breaking caveats on Supportfolio.

  2. Log onto the Windows node as Administrator or as an account with administrative privileges.

  3. Verify that the node has been updated to the correct service pack:

    Start -> Programs -> Accessories -> System Tools -> System Information


    Note: If you must reinstall the OS, disconnect the system from the fabric first.


  4. (Windows Vista Only) Disable User Account Control (requires administrator privileges). By default, User Account Control is enabled for Windows Vista, but it is not appropriate for use with CXFS; you should disable it before you install CXFS on a Windows Vista node. Do the following:

    1. Using the User Accounts control panel, click the Turn User Account Control on or off link.

    2. Uncheck the Use User Account Control (UAC) to help protect your computer check box. Press the OK button to confirm your selection.

    3. Press the Restart Now button in the dialog box that says you must restart your computer to apply these changes. This will reboot your system.

  5. Transfer the client software that was downloaded onto a server-capable administration node during its installation procedure using ftp, rcp, or scp . The location of the Windows installation program on the server will be as follows:

    /usr/cluster/client-dist/CXFS_VERSION/windows/all/noarch/setup.exe

  6. Double-click on the setup.exe installation program to execute it.

  7. Acknowledge the software license agreement when prompted and read the Windows release notes, which may contain corrections to this guide.

  8. Install the CXFS software, as shown in Figure 9-5. If the software is to be installed in a nondefault directory, click Browse to select another directory. Click Next when finished.

    Figure 9-5. Choose Destination Location

    Choose Destination Location

  9. Enter details for the following fields as shown in Figure 9-6 and click Next when finished:

    • Drive letter for CXFS: specify the drive letter under which all CXFS filesystems will be mounted. You cannot select a drive letter that is currently in use.

    • Default Umask: choose the default umask. For more information on the umask, see “Inheritance and Default ACLs for Windows”.

    • User ID mapping lookup sequence: choose the appropriate primary and (optionally) secondary method. See “User Identification Mapping Methods for Windows”.

    • Location of fencing, UNIX /etc/passwd and /etc/group files: specify the path where the configuration files will be installed and accessed by the CXFS software if required. The default is the same location as the software under %ProgramFiles%\CXFS .

    • IP address of the heartbeat network adapter: specify the IP address of the private network adapter on the Windows node.

    • Additional arguments: contains parameters that are used by the CXFS Client service when it starts up. For most configurations, this should be left alone. To get a list of options, from the command line type cxfs_client -h.

    Figure 9-6. Enter CXFS Details

    Enter CXFS Details

  10. If you select ldap_activedir as the user ID mapping method, the dialog in Figure 9-7 is displayed after you click Next.

    Figure 9-7. Active Directory Details

    Active Directory Details

    If you have a standard Active Directory configuration with Windows Services for UNIX (SFU), you need only to select the version of SFU and Auth (authenticated) for Bind details; doing so will then define the correct Active Directory defaults. The other server details can normally remain blank.

  11. If you select ldap_generic as the user ID mapping method, the dialog in Figure 9-8 is displayed after you click Next . You must provide entries for the Host name and the Base DN to search from fields. For a standard OpenLDAP server, you can select a simple anonymous bind (default settings with the User name and Password fields left blank) and select the standard search settings by clicking Posix.

    Figure 9-8. Generic LDAP Details

    Generic LDAP Details

  12. Review the settings, as shown in Figure 9-9. If they appear as you intended, click Next. If you need to make corrections, click Back.

    Figure 9-9. Review the Settings

    Review the Settings

    After you click Next, the CXFS software will be installed.

  13. You will be given the option to start the driver at system start-up, as shown in Figure 9-10. By checking the boxes, you will start the driver automatically when the system starts up and invoke the CXFS Info window minimized to an icon.

    Figure 9-10. Start CXFS Driver

    Start CXFS Driver

  14. Choose to restart your computer later if you need to install /etc/passwd and /etc/group files or set up fencing; otherwise, choose to restart your computer now. The default is to restart later, as shown in Figure 9-11. (CXFS will not run until a restart has occurred.)

    Figure 9-11. Restart the System

    Restart the System

Postinstallation Steps for Windows

This section discusses the configuration steps that you should perform after installing CXFS software but before restarting a Windows node.

The following postinstallation steps are required to ensure the correct operation of the CXFS software:

Checking Permissions on the Password and Group Files for Windows

The permissions on the passwd and group files must restrict access so that only the system administrator can modify these files. This can be done by right-clicking on the filenames in Windows Explorer and selecting the following:

Properties -> Security

Verify that the permissions are Read for Everyone and Full Control for Administrators .


Caution: Failure to set permissions on the passwd and group files would allow users to change their UID/GID at will and even gain superuser access to the files on the CXFS filesystem.


Performing User Configuration for Windows

If the user mapping is not correctly configured, all filesystem operations will be as user nobody.

If you selected the passwd and group files user ID mapping method, you must install the passwd and group files. The default passwd and group files that are installed are invalid files containing comments; these invalid files will cause the CXFS Client service to generate warnings in its log file and users may not be correctly configured. You must remove the comments in these files when you install the passwd and group files.

After installing the CXFS software onto the Windows node but before restarting it, you must install the /etc/passwd and /etc/group files from a server-capable administration node to the location on the Windows node specified during installation.

The defaults are as follows:

  • /etc/passwd as %ProgramFiles%\CXFS\passwd

  • /etc/group as %ProgramFiles%\CXFS\group

Do the following:

  1. Verify that permissions are set as described in “Checking Permissions on the Password and Group Files for Windows ”.

  2. If you selected the Active Directory method, you must specify the UNIX identifiers for all users of the CXFS node. On the domain controller, run the following to specify the UNIX UID and GID of a given user:

    Start -> Program Files -> Administrative Tools -> Active Directory Users and Computers -> Users

  3. Select a user and then select:

    Properties -> UNIX Attributes

    The CXFS software will check for changes to the LDAP database every 5 minutes.

  4. After the CXFS software has started, you can use CXFS Info to confirm the user configuration, regardless of the user ID mapping method chosen. See “User Identification for Windows”.

If only the Administrator user is mapped, see “CXFS Client Service Cannot Map Users other than Administrator for Windows”.

I/O Fencing for Windows

I/O fencing is required on Windows nodes in order to protect data integrity of the filesystems in the cluster. The CXFS client software automatically detects the worldwide port names (WWPNs) of any supported host bus adapters (HBAs) for Windows nodes that are connected to a switch that is configured in the cluster database. These HBAs are available for fencing.

However, if no WWPNs are detected, there will be messages about loading the HBA/SNIA library logged to the %ProgramFiles%\CXFS\log\cxfs_client.log file.

If no WWPNs are detected, you can manually specify the WWPNs in the fencing file.


Note: This method does not work if the WWPNs are partially discovered.

The %ProgramFiles%\CXFS\fencing.conf file enumerates the WWPN for all of the HBAs that will be used to mount a CXFS filesystem. There must be a line for the HBA WWPN as a 64-bit hexadecimal number.


Note: The WWPN is that of the HBA itself, not any of the devices that are visible to that HBA in the fabric.

If used, %ProgramFiles%\CXFS\fencing.conf must contain a simple list of WWPNs, one per line. You must update it whenever the HBA configuration changes, including the replacement of an HBA.

Determining the WWPN for a QLogic Switch

Do the following to determine the WWPN for a QLogic switch:

  1. Set up the switch and HBA. See the release notes for supported hardware.

  2. Use the telnet command to connect to the switch and log in as user admin. (The password is password by default).

  3. Enter the show topology command to retrieve the WWPN numbers. For example:

    SANbox #> show topology
    
      Unique ID Key
      -------------
      A = ALPA,  D = Domain ID,  P = Port ID
    
      Port    Loc   Local                   Rem  Remote                  Unique
      Number  Type  PortWWN                 Type NodeWWN                 ID
      ------  ----  -------                 ---- -------                 ------
      0       F     20:00:00:c0:dd:06:ff:7f N    20:00:00:01:ff:03:05:b2 020000   P
      2       F     20:02:00:c0:dd:06:ff:7f N    20:01:00:e0:8b:32:ba:14 020200   P
      4       F     20:04:00:c0:dd:06:ff:7f N    20:00:00:01:ff:03:05:b2 020400   P
      5       F     20:05:00:c0:dd:06:ff:7f N    20:00:00:e0:8b:0b:81:24 020500   P
      6       F     20:06:00:c0:dd:06:ff:7f N    20:01:00:e0:8b:32:06:c8 020600   P
      8       F     20:08:00:c0:dd:06:ff:7f N    20:00:00:01:ff:03:05:b2 020800   P
      12      F     20:0c:00:c0:dd:06:ff:7f N    20:00:00:01:ff:03:05:b2 020c00   P
      15      F     20:0f:00:c0:dd:06:ff:7f N    20:00:00:e0:8b:10:04:13 020f00   P
      17      E     20:11:00:c0:dd:06:ff:7f E    10:00:00:c0:dd:06:fb:04 1(0x1) D
      19      E     20:13:00:c0:dd:06:ff:7f E    10:00:00:c0:dd:06:fb:04 1(0x1) D
    

    The WWPN is the hexadecimal string in the Remote Node WWN column are the numbers that you copy for the fencing.conf file. For example, the WWPN for port 0 is 20000001ff0305b2 (you must remove the colons from the WWPN reported in the show topology output in order to produce the string to be used in the fencing file).

  4. Edit or create %ProgramFiles%\CXFS\fencing.conf and add the WWPN for the port. (Comment lines begin with #.)

    For dual-ported HBAs, you must include the WWPNs of any ports that are used to access cluster disks. This may result in multiple WWPNs per HBA in the file; the numbers will probably differ by a single digit.

    For example, if you determined that port 0 is the port connected to the switch, your fencing file should contain the following:

    # WWPN of the HBA installed on this system
    #
    2000000173002c0b

  5. To enable fencing, see the CXFS Administration Guide for SGI InfiniteStorage.

Determining WWPN for a Brocade Switch

Do the following to determine the WWPN for a Brocade switch:

  1. Set up the switch and HBA. See the release notes for supported hardware.

  2. Use the telnet command to connect to the switch and log in as user admin. (The password is password by default).

  3. Execute the switchshow command to display the switches and their WWPN numbers.

    For example:

    brocade04:admin> switchshow
    switchName:     brocade04
    switchType:     2.4
    switchState:    Online   
    switchRole:     Principal
    switchDomain:   6
    switchId:       fffc06
    switchWwn:      10:00:00:60:69:12:11:9e
    switchBeacon:   OFF
    port  0: sw  Online        F-Port  20:00:00:01:73:00:2c:0b
    port  1: cu  Online        F-Port  21:00:00:e0:8b:02:36:49
    port  2: cu  Online        F-Port  21:00:00:e0:8b:02:12:49
    port  3: sw  Online        F-Port  20:00:00:01:73:00:2d:3e
    port  4: cu  Online        F-Port  21:00:00:e0:8b:02:18:96
    port  5: cu  Online        F-Port  21:00:00:e0:8b:00:90:8e
    port  6: sw  Online        F-Port  20:00:00:01:73:00:3b:5f
    port  7: sw  Online        F-Port  20:00:00:01:73:00:33:76
    port  8: sw  Online        F-Port  21:00:00:e0:8b:01:d2:57
    port  9: sw  Online        F-Port  21:00:00:e0:8b:01:0c:57
    port 10: sw  Online        F-Port  20:08:00:a0:b8:0c:13:c9
    port 11: sw  Online        F-Port  20:0a:00:a0:b8:0c:04:5a
    port 12: sw  Online        F-Port  20:0c:00:a0:b8:0c:24:76
    port 13: sw  Online        L-Port  1 public
    port 14: sw  No_Light      
    port 15: cu  Online        F-Port  21:00:00:e0:8b:00:42:d8

    The WWPN is the hexadecimal string to the right of the port number. For example, the WWPN for port 0 is 2000000173002c0b (you must remove the colons from the WWPN reported in the switchshow output in order to produce the string to be used in the fencing file).

  4. Edit or create %ProgramFiles%\CXFS\fencing.conf and add the WWPN for the port. (Comment lines begin with #.)

    For dual-ported HBAs, you must include the WWPNs of any ports that are used to access cluster disks. This may result in multiple WWPNs per HBA in the file; the numbers will probably differ by a single digit.

    For example, if you determined that port 0 is the port connected to the switch, your fencing file should contain the following:

    # WWPN of the HBA installed on this system
    #
    2000000173002c0b

  5. To enable fencing, see the CXFS Administration Guide for SGI InfiniteStorage.


Note: You could also use SANsurfer to determine the WWPN.


Start/Stop the CXFS Client Service for Windows

The CXFS Client service is automatically started when a Windows node is restarted. This behavior may be altered by changing the configuration of the CXFS filesystem driver and the CXFS Client service.

By default, the driver is configured to start manually and the Client service is configured to start automatically. Because the CXFS Client service depends on the CXFS filesystem driver, the driver will be started by the service.

SGI recommends that the CXFS driver configuration remains manual.

You can change the CXFS Client service configuration to start manually, meaning that CXFS does not automatically start, by selecting the following:

Start -> Settings -> Control Panel -> Administrative Tools -> Services

Change CXFS Client to manual rather than automatic. CXFS can then be started and stopped manually by the Administrator using the same selection sequence.

Maintenance for Windows

This section contains the following:

Modifying the CXFS Software for Windows

To change the location of the software and other configuration settings that were requested in “Client Software Installation for Windows”, perform the following steps:

  1. Select the following:

    Start -> Settings -> Control Panel -> Add/Remove Programs -> CXFS -> Add/Remove ->  Modify

    Figure 9-12 shows the screen that lets you modify the software.

    Figure 9-12. Modify CXFS for Windows

    Modify CXFS for Windows

  2. Make the necessary configuration changes.

    You can display the list of possible command line arguments supported by the CXFS Client service by running the service from a command line as follows:

    C:\> %SystemRoot%\system32\cxfs_client.exe -h

  3. Restart the Windows node, which causes the changes to take effect.

Updating the CXFS Software for Windows

To upgrade the CXFS for Windows software, perform the following steps:

  1. Obtain the CXFS update software from Supportfolio according to the directions in the CXFS Administration Guide for SGI InfiniteStorage.

  2. Transfer the client software that was downloaded onto a server-capable administration node during its installation procedure using ftp, rcp, or scp . The location of the Windows installation program will be as follows:

    /usr/cluster/client-dist/CXFS_VERSION/windows/all/noarch/setup.exe

  3. Double-click on the setup.exe installation program to execute it.

  4. A welcome screen will appear that displays the version you are upgrading from and the version you are upgrading to. Figure 9-13 shows an example of the screen that appears when you are upgrading the software (the actual versions displayed by your system will vary based upon the release that is currently installed and the release that will be installed. All the configuration options are available to update as discussed in “Client Software Installation for Windows”.

    Figure 9-13. Upgrading the Windows Software

    Upgrading the Windows Software

  5. Restart the Windows node. The upgraded software will not activate until the Windows node is restarted.

Removing the CXFS Software for Windows

To remove the CXFS for Windows software, first ensure that no applications on this node are accessing files on a CXFS filesystem. Then, select the following sequence to remove all installed files and registry entries:

Start -> Settings -> Control Panel -> Add/Remove Programs -> CXFS -> Add/Remove ->  Remove

Figure 9-12 shows the screen that lets you remove the software.


Note: By default, the passwd, group , and log files will not be removed. To remove these other files, check the following box:

Delete all config files, license file, logs, etc

Then click Next.

You should then restart the Windows node. This will cause the changes to take effect.

Downgrading the CXFS Software for Windows

To downgrade the CXFS software, follow the instructions to remove the software in “Removing the CXFS Software for Windows” and then install the older version of the software as directed in “Client Software Installation for Windows”.


Note: The removal process may remove the configuration file. You should back up the configuration file before removing the CXFS software so that you can easily restore it after installing the downgrade.


Recognizing Storage Changes for Windows

If you make changes to your storage configuration, you must rerun the HBA utilities to reprobe the storage. See “HBA Installation for Windows”.

If new storage devices are added to the cluster, you must reboot the Windows node in order to discover those devices.

GRIO on Windows

CXFS supports guaranteed-rate I/O (GRIO) version 2 on the Windows platform.

Figure 9-14 shows an example of the CXFS Info display for GRIO.

Figure 9-14. CXFS Info Display for GRIO for Windows

CXFS Info Display for GRIO for Windows

For more information, see “Guaranteed-Rate I/O (GRIO) and CXFS” in Chapter 1 and the Guaranteed-Rate I/O Version 2 Guide.

XVM Failover V2 on Windows


Note: You must not install RDAC pseudo/virtual LUNs onto the Windows client. See “Use of TPSSM”.

To configure the failover2.conf file for a Windows node, do the following:

  1. Run the HBA utility (SanSurfer for QLogic, LSIUtil for LSI HBA), and set the persistent binding to bind the target (node and port's WWN) to the target ID. For more information, see “Mapping XVM Volumes to Storage Targets on Windows”.

    When you bind a persistent target ID to a specific LUN, you can find the WWN of the corresponding port and node (controller) on the storage array. As a result, a target ID corresponds to a controller and a port on the controller. You must make sure that the failover2.conf setting is consistent across the cluster.

    In the persistent binding, there are normally the following fields:

    • Type

    • Target's node WWN (the controller's WWN)

    • Target's port WWN (the port on the controller)

    • A configurable target ID

    Note the controller and port to which the target ID corresponds.

  2. Reboot the Windows node.

  3. Run the following command:

    xvm show -v phys | grep affinity > failover2.conf

  4. Verify that the failover2.conf file has affinity=0 set for the target ID corresponding to controller A and affinity=1 set for the target ID corresponding to controller B. This is the default setting, but you must make sure that the settings are consistent across the cluster.

  5. Copy the failover2.conf file to the CXFS folder.

  6. Set the preferred path for each target depending on the storage array's setting.

  7. Run xvm commands to read in the new configuration and change to the preferred path:

    xvm foconfig -init
    xvm foswitch -preferred phys

For example, assume there are two controllers in a storage array. Controller A has a WWN of 200400a0b82925e2; it has two ports connecting to the host or the fabric. Port 1 has a WWN of 201400A0B82925E2, port 2 has a WWN of 202400A0B82925E2 . Controller B has a WWN of 200500a0b82925e2; it also has two ports with WWNs of 201500A0B82925E2 and 202500A0B82925E2, respectively. So there are four paths to LUN 0.

The metadata server in this cluster would have entries like the following in its failover2.conf file (where information within angle brackets is an embedded comment):

/dev/xscsi/pci08.03.1/node200500a0b82925e2/port2/lun0/disc affinity=1
/dev/xscsi/pci08.03.1/node200500a0b82925e2/port1/lun0/disc affinity=1
/dev/xscsi/pci08.03.1/node200400a0b82925e2/port2/lun0/disc affinity=0
/dev/xscsi/pci08.03.1/node200400a0b82925e2/port1/lun0/disc affinity=0 preferred <current path>

In this configuration, controller A (node200400a0b82925e2 ) has an affinity of 0, controller B has an affinity of 1. Controller A's port 1 is the preferred path.

To create the corresponding failover2.conf file on the Windows node, you must first define the persistent-binding targets. Use SANSurfer (for Qlogic HBA) or LSIUtil (for LSI HBA) to define four possible targets:

Binding type     World Wide Node Name   World Wide port Name   Target ID
WWN             200500a0b82925e2       202500A0B82925E2         0
WWN             200500a0b82925e2       201500A0B82925E2         1
WWN             200400a0b82925e2       202400A0B82925E2         2
WWN             200400a0b82925e2       201400A0B82925E2         3

As a result, target 0 corresponds to the first path on the SGI ProPack node. Targets 1, 2, and 3 correspond to the 2nd, 3rd, and 4th path, respectively. To be consistent, target 2 or 3 (on controller A) should be the preferred path on Windows.

Then you would run the following command:

xvm show -v phys |grep affinity >failover2.conf

Assuming that there are two HBA ports on the Windows node, you would end up with eight paths for the two HBA ports. The failover2.conf file would contain something like examples shown in the following sections (the format varies by the Windows OS version):

For more information, see “XVM Failover and CXFS” in Chapter 1, the comments in the failover2.conf file, CXFS Administration Guide for SGI InfiniteStorage, and the XVM Volume Manager Administrator's Guide.

Windows XP SP 2 and Windows 2003 Server R2 SP1 failover2 Example

Windows XP SP 2 and Windows 2003 Server R2 SP1 failover2.conf example:

SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&030 <dev 321> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&020 <dev 301> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&010 <dev 281> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000 <dev 261> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&030 <dev 236> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&020 <dev 216> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&010 <dev 196> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000 <dev 176> affinity=0
#
#  Where
#  SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&030 <dev 321> affinity=0
#                                           ^^^^^^^   ^^^
#                                              |      |||-- Lun = 0
#                                              |      ||--- Target = 1 (1-2 hex digits)
#                                              |      |---- Bus ID = 0
#                                              |----------- Host HBA port ID = 67032E4

You would set the proper affinity values and add the preferred tag to target 2 or 3:

SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&030 <dev 321> affinity=0 preferred
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&020 <dev 301> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&010 <dev 281> affinity=1
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000 <dev 261> affinity=1
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&030 <dev 236> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&020 <dev 216> affinity=0 preferred
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&010 <dev 196> affinity=1
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000 <dev 176> affinity=1

In this setting, the access to LUN 0 from one HBA (with its ID of 67032E4) goes to controller A, port 1. From another HBA (with ID of 1F095A8E), it goes to controller A, port 2. Controller A (to which targets 2 and 3 belong) has an affinity of 0; controller B has an affinity of 1.

Windows 2003 Server R2 SP2 and Windows Vista failover2 Example

Windows 2003 Server R2 SP2 and Windows Vista failover2 example

SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000300 <dev 321> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000200 <dev 301> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000100 <dev 281> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000000 <dev 261> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000300 <dev 236> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000200 <dev 216> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000100 <dev 196> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000000 <dev 176> affinity=0
#
#  Where
#  SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&00300 <dev 321> affinity=0
#                                           ^^^^^^^   ^^^^^
#                                              |      || |- Lun = 0   (2 hex digits)
#                                              |      ||--- Target = 3 (2 hex digits)
#                                              |      |---- Bus ID = 0
#                                              |----------- Host HBA port ID = 67032E4

You would set the proper affinity values and add the preferred tag to target 2 or 3:

SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000300 <dev 321> affinity=0 preferred
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000200 <dev 301> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000100 <dev 281> affinity=1
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&67032E4&0&000000 <dev 261> affinity=1
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000300 <dev 236> affinity=0
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000200 <dev 216> affinity=0 preferred
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000100 <dev 196> affinity=1
SCSI\DISK&VEN_SGI&PROD_TP9700&REV_0619\5&1F095A8E&0&000000 <dev 176> affinity=1

In this setting, the access to LUN 0 from one HBA (with its ID of 67032E4) goes to controller A, port 1. From another HBA (with ID of 1F095A8E), it goes to controller A, port 2. Controller A (to which targets 2 and 3 belong) has an affinity of 0; controller B has an affinity of 1.

Mapping XVM Volumes to Storage Targets on Windows

You must configure the host bus adapter (HBA) on each client to use persistent bindings for all ports used for CXFS filesystems. The method for configuration varies depending on your HBA vendor. For more information, see the following:

  • Information about binding target devices is in the QLogic SANsurfer help. You must select a port number and then select Bind and the appropriate Target ID for each disk. For example, see Figure 9-15.

  • Information about persistent bindings is in the LSI Logic MPT Configuration Utility (LSIUtil.exe). LSIUtil is a command line tool. It has a submenu for displaying and changing persistent mapping. Do the following:

    1. Choose the HBA port

    2. Select e to enable expert mode

    3. Select 15 to manipulate persistent binding

    4. Choose one of the following:

      • 2 to automatically add persistent mappings for all targets

      • 3 to automatically add persistent mappings for some targets

      • 6 to manually add persistent mappings.


Note: You should disable any failover functionality provided by the HBA.


Figure 9-15. QLogic SANsurfer (Copyright QLogic® Corporation, all rights reserved)

QLogic SANsurfer (Copyright QLogic® Corporation,
all rights reserved)

Troubleshooting for Windows

This section contains the following common Windows problems:

Also see:

Verifying that the CXFS Software is Running Correctly for Windows

To verify that the CXFS software is running correctly on a Windows node, do the following:

  • Verify that the CXFS driver has started by selecting the following:

    Start -> Settings -> Control Panel -> Administrative Tools -> Computer Management -> System Tools -> Device Manager

    To show non-plug-and-play devices, select the following:

    View -> Show hidden devices

    To show the CXFS driver, select the following:

    Non-Plug and Play Devices ->  CXFS -> Properties

  • Verify that the CXFS Client service has started by selecting the following:

    Start -> Settings -> Control Panel -> Administrative Tools -> Services

Unable to Mount Filesystems on Windows

If CXFS Info reports that cms is up but XVM or the filesystem is in another state, then one or more mounts is still in the process of mounting or has failed to mount.

The CXFS node might not mount filesystems for the following reasons:

  • The client may not be able to see all the LUNs. This is usually caused by misconfiguration of the HBA or the SAN fabric:

    • Check that the ports on the Fibre Channel switch connected to the HBA are active. Physically look at the switch to confirm the light next to the port is green, or remotely check by using the switchShow command.

    • Check that the HBA configuration is correct. For information specific to Windows, see “HBA Problems”.

    • Check that the HBA can see all the LUNs for the filesystems it is mounting.

    • Check that the operating system kernel can see all the LUN devices. For example:

      Start -> Settings -> Control Panel -> Administrative Tools -> ComputerManagement -> Device Manager -> View -> Devices by connection

    • Use debugview to monitor the CXFS driver when it probes the disk devices. You should see it successfully probe each of the LUN devices.

    • If the RAID device has more than one LUN mapped to different controllers, ensure the node has a Fibre Channel path to all relevant controllers.

  • The CXFS Client service may not be running. To verify that it is running, open the Task Manager by pressing the Ctrl+Shift+Esc, or right-mouse click on an empty area of the taskbar and select Task Manager from the popup menu. In the Processes tab, search for cxfs_client.exe in the Image Name column. You can sort the processes by name by clicking the heading of the column.

  • The filesystem may have an unsupported mount option. Check the cxfs_client.log for mount option errors or any other errors that are reported when attempting to mount the filesystem.

  • The cluster membership (cms), XVM, or the filesystems may not be up on the node. Use CXFS Info to determine the current state of cms, XVM, and the filesystems. Do the following:

Also, check the CXFS Client Log in CXFS Info for mount errors. They will be highlighted in red.

Access-Denied Error when Accessing Filesystem on Windows

If an application reports an access-denied error, do the following:

  • Check the list of users and groups that CXFS Info has mapped to a UNIX UID and GID. If the current user is not listed as one of those users, check that the user mapping method that was selected is configured correctly, that there is an LDAP server running (if you are using LDAP), and that the user is correctly configured.

  • Increase the verbosity of output from the CXFS Client service so that it shows each user as it is parsed and mapped.

  • Use Sysinternals Filemon to monitor the application and verify that there is no file that has been created below a mount point under the CXFS drive letter. An error may be caused by attempting to create a file below the drive letter but above the mount point. For more information about Filemon, see:

    http://www.sysinternals.com

Application Works with NTFS but not CXFS for Windows

The Windows filesystem APIs are far more extensive than the UNIX POSIX APIs and there are some limitations in mapping the native APIs to POSIX APIs (see “Functional Limitations and Considerations for Windows”). Sometimes these limitations may affect applications, other times the applications that have only ever been tested on NTFS make assumptions about the underlying filesystem without querying the filesystem first.

If an application does not behave as expected, and retrying the same actions on an NTFS filesystem causes it to behave as was expected, then third-party tools like SysInternals Filemon can be used to capture a log of the application when using both NTFS and CXFS. Look for differences in the output and try to determine the action and/or result that is different. Using the same filenames in both places will make this easier. For more information about Filemon, see:

http://www.sysinternals.com


Note: There are some problems that will not be visible in a Sysinternals Filemon log. For example, some older applications use only a 32-bit number when computing filesystem or file size. Such applications may report out of disk space errors when trying to save a file to a large (greater than 1 TB) filesystem.


Delayed-Write Error Dialog is Generated by the Windows Kernel

A delayed-write error is generated by the Windows kernel when it attempts to write file data that is in the cache and has been written to disk, but the I/O failed. The write call made by the application that wrote the data may have completed successfully some time ago (the application may have even exited by now), so there is no way for the Windows kernel to notify the application that the I/O failed.

This error can occur on a CXFS filesystem if CXFS has lost access to the disk due to the following:

  • Loss of membership resulting in the Windows client being fenced and the filesystem being unmounted. Check that the Windows client is still in membership and that there are no unmount messages in the cxfs_client.log file.

  • Loss of Fibre Channel connection to the Fibre Channel switch or RAID. Check the Fibre Channel connections and use the SanManager tool to verify that the HBA can still see all of the LUNs. Make sure the filesystems are still mounted.

  • The metadata server returned an I/O error. Check the system log on the metadata server for any I/O errors on the filesystem and take corrective action on the server if required.

CXFS Client Service Does Not Start on Windows

The following error may be seen when the CXFS Client service attempts to start:

Error 10038: An operation was attempted on something that is not a socket.

Check the CXFS Client Log in CXFS Info for information on why the CXFS client failed to start.

HBA Problems

If you have a problem with an HBA, check the following:

  • Has plug-and-play been disabled?

    Plug-and-play functionality, which would normally discover new devices, is disabled by the QLogic HBA software so that it can perform path failover without Windows attempting to manage the change in available devices. Disabling the plug-and-play feature also enables CXFS to map CXFS volumes to the same devices if a Fibre Channel path was lost and then reestablished. If HBA path failover or CXFS rediscovering XVM volumes and filesystems does not appear to work, verify that plug-and-play is disabled.

  • Are there QLogic management tool event and alarm log messages? Select the following:

    Start -> Programs -> QLogic Management Suite -> SANsurfer

Also see “Recognizing Storage Changes for Windows” and “Unable to Mount Filesystems on Windows”.

CXFS Client Service Cannot Map Users other than Administrator for Windows

If the CXFS Client service cannot map any users other than Administrator and there are no LDAP errors in the cxfs_client log file (and you are using LDAP), you must change the configuration to allow reading of the attributes.

Do the following:

  1. Select the following:

    Start -> Settings -> Control Panel -> Administrative Tools -> Active Directory Users and Computers

  2. Select the following:

    View -> Advanced Features

  3. Right-mouse click the Users folder under the domain controller you are using and select the following:

    Properties -> Security  -> Advanced -> Add

  4. Select Authenticated Users from the list and click OK.

  5. Select Child Objects Only from the Apply onto drop-down list and check Read All Properties from the list of permissions.

  6. Click OK to complete the operation.

If the above configuration is too broad security-wise, you can enable the individual attributes for each user to be mapped.

Filesystems Are Not Displayed on Windows

If the CXFS drive letter is visible in Windows Explorer but no filesystems are mounted, do the following:

Large Log Files on Windows

The CXFS Client service creates the following log file:

%ProgramFiles%\CXFS\log\cxfs_client.log

On an upgraded system, this log file may become quite large over a period of time if the verbosity level is increased. (New installations perform automatic log rotation when the file grows to 10MB.)

To verify that log rotation is enabled, check the Addition arguments by modifying the installation (see “Modifying the CXFS Software for Windows”) and append the following if the -z option is not present:

-z 10000000

You must restart the CXFS Client service for the new settings to take effect. See “Start/Stop the CXFS Client Service for Windows” for information on how to stop and start the CXFS Client service.

Windows Failure on Restart

If the CXFS Windows node fails to start and terminates in a blue screen, restart your computer and select the backup hardware profile (with CXFS disabled). Alternatively, pressing L at the Hardware Profile menu will select the last configuration that was successfully started and shut down. If the node has only one hardware profile, press the spacebar after selecting the boot partition to get to the Hardware Profile menu.

Memory Configuration for Windows

A Windows problem may affect Windows CXFS nodes performing large asynchronous I/O operations. If the Windows node crashes with a NO_MORE_SYSTEM_PTES message, the work-around described in the following link should be considered:

http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/winxppro/reskit/prmd_stp_fztl.asp

Application Cannot Create File Under CXFS Drive Letter

If an application requires that it be able to create files and/or directories in the root of the CXFS drive, you must create a virtual drive for the system that maps to a mounted filesystem directory.

This can be performed using the subst command from the command prompt. For example, to use the CXFS filesystem X:\mnt\tp9500_0 to the free drive letter V, you would enter the following:

C:\> subst V: X:\mnt\tp9500_0

To remove the mapping, run:

C:\> subst V: /D

Installation File Not Found Errors

Some installation programs are known to use old Windows APIs for file operations so that they work on older versions of Windows. These APIs use 8.3 filenames rather then the full filename, so the installation may fail with file not found or similar errors. In general, SGI recommends that you install software to a local disk and use CXFS filesystems primarily for data storage.

Windows Vista Node Loses Membership Due to Hibernation

If the Windows Vista node hibernates, it will lose membership in the CXFS cluster. Hibernation is turned on by default for Vista and must be modified.

Do the following:

  1. Select the following:

    Start -> Settings -> Control Panel -> Power Options

  2. Select the High Performance radio button.

  3. Click OK.

Alternatively, you can use the following command:

C:\> powercfg -S SCHEME_MIN

Windows Vista Node Appears to be in Membership But Is Not

If the Windows Vista node appears to be in membership when the cxfs_info command is run from the Vista node but is not in membership according to administration tools run on a server-capable administration node, it may be that User Account Control is still enabled (it is enabled by default for Windows Vista).

User Account Control is not appropriate for use with CXFS, and you must disable it. See step 4 in “Client Software Installation for Windows”.

Windows Vista Node Unable to cd to a Mounted Filesystem

If you are unable to use the cd command on a Windows Vista node for a filesystem that appears to be mounted, it may be that User Account Control is still enabled (it is enabled by default for Windows Vista). For example:

vista$ cd /cygdrive/x/mnt/stripefs
  -bash: cd: /cygdrive/x/mnt/stripefs: Input/Output error

User Account Control is not appropriate for use with CXFS, and you must disable it. See step 4 in “Client Software Installation for Windows”.

Reporting Windows Problems

To report problems about a Windows node, you should retain platform-specific information and save crash dumps.

Retain Windows Information

When reporting a problem about a CXFS Windows node to SGI, run the following:

Start  -> Program Files -> CXFS -> CXFS Dump

This will collect the following information:

  • System information

  • CXFS registry settings

  • CXFS client logs

  • CXFS version information

  • Network settings

  • Event log

  • (optionally) Windows crash dump, as described in “Save Crash Dumps for Windows”

You can obtain information about the cluster by running the cxfsdump utility on a server-capable administration node.

Save Crash Dumps for Windows

If you are experiencing crashes or if the Windows node hangs, you should configure the Windows node to save crash dumps to a filesystem that is not a CXFS filesystem. This crash dump can then be analyzed by SGI.

To do this, click the right mouse button on the My Computer icon and select the following:

Properties -> Advanced -> Startup and Recovery -> Write debugging information to

Enter a path on a filesystem other than a CXFS filesystem.You may also select a Kernel Memory Dump, which is a smaller dump that typically contains enough information regarding CXFS problems.

These changes will take affect only after the node is restarted.

Generating a Crash Dump on a Hung Windows Node

If user applications on a Windows node are no longer responsive and cannot be killed, you should attempt to generate a crash dump by forcing the node to crash.

After configuring the crash dump location (see “Save Crash Dumps for Windows”), you can modify the registry so that a combination of key strokes will cause the Windows node to crash. This will only work on machines with a PS/2 keyboard.

To do this, run the registry editor as follows:

Start -> Run -> regedit

In regedit, navigate and edit the following value:

HKEY_LOCAL_MACHINE ->  SYSTEM -> CurrentControlSet ->  Services -> i8042prt -> Parameters

Add a new entry by selecting the following:

Edit -> Add Value

Enter the following information:

  • Value Name: CrashOnCtrlScroll

  • Data Type: REG_DWORD

  • Value: l

These changes will take affect only after the node is restarted.

To generate a crash on the node after applying these changes, hold the right CTRL key and press SCROLL LOCK twice. See the following for more information:

http://support.microsoft.com/?kbid=244139