This post provides my interpretation of what happens at a low level when a user on a workstation tries to access a file on a server - in this case a Windows server 2003 x64 MSCS cluster. I was trying to demonstrate the complexity of what seems like such a simple action, and in particular trying to incorporate the cluster network/disk elements and highlighting the WOW64 side of things when you are running x64 with x86 third-party software (such as archiving, quotas etc).
Note that I'm reasonably confident this isn't correct because my understanding if lacking, combined with lack of time/information, but even if it were accurate in content, the step-by-step / flowchart views aren't the best way to represent these multi-layered processes. But anyway, somebody else might also think it interesting (nerds!)
- Workstation redirector file access to a virtual node in the cluster. Includes DNS/NetBIOS calls to determine the cluster virtual server IP address
- LanManServer service. User-mode LAN Manager 2.x server service, providing file and print sharing, and with 2003 SP1, Access Based Enumeration
- NDIS layer. Network Driver Interface Specification, Hardware interrupts passing frames to the NIC driver, then passed to the bound transport driver. send and receive raw packets, includes LLC
- TDI Layer. Single interface for upper-level clients to access transport providers, such as TCP/IP
- ClusNet.sys Driver. Cluster specific driver interpreting and routing intracluster traffic and determining communication failure
- Srv.sys Server Service. SMB file server driver, kernel-mode companion to the LanManServer service
- I/O Manager. I/O support routines, I/O Request Packets (IRPs) and Fast I/O interfaces
- FSD Manager. File System Driver Manager, loads FSDs and legacy file system filters, interacts with the file system cache manager.
- Filter Manager. A file system filter that provides a standard interface for minifilters, managing altitudes and connectivity to the file system stack. Interacts with the file system cache manager, and in the case of x86 filters, an instance of WOW64 controls the runspace for the filters (on an x64 platform)
- File System Cache Manager. A file system filter, working with kernel memory-mapped and paging routines to provide file level caching
- ntfs.sys File System FSD. Windows NT File System driver, creates a Control Device Object (CDO) and Volume Device Object (VDO)
- ClusDisk.sys upper-level storage filter driver. Cluster specific storage filter driver maintaining exclusive access to cluster disks using SCSI reserve commands
- Volume Snapshot Volsnap.sys. Manages software snapshots through a standard storage filter
- Volume Manager ftDisk.sys. Presents volumes and manages I/O for basic and dynamic disk configurations
- Partition Manager Partmgr.sys. Filter driver that sits on top of the disk driver, creates partition devices, notifies volume manager and exposes IOCTLs
- Class Driver disk.sys. Presents a standard disk interface to the storage stack, creating a Function Device Object (FDO)
- Storage Port Driver - Storport. Assists with PnP and power functionality, providing a Physical Device Object (PDO) for the device->bus connection
- Miniport Driver. Interface to the storage adapter’s hardware, combining with the storport driver to create the storage stack
- SMB response to the client. SMB response to the redirector on the workstation requesting the file
Wayne's World of IT (WWoIT), Copyright 2008 Wayne Martin.