Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
6453354
Jiang , ; et al.
September 17, 2002
Title
File server system using connection-oriented protocol and sharing data sets among data movers
Abstract
A first data mover computer services data access requests from a network client, and a second data mover computer is coupled to the first data mover computer for servicing data access requests from the first data mover computer. The first data mover computer uses a connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client. Then the first data mover computer responds to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer. Then the first data mover computer maintains a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client. In a preferred embodiment, the connection-oriented protocol is the Common Internet File System (CIFS) Protocol, and multiple clients share a Transmission Control Protocol (TCP) connection between the first data mover computer and the second data mover computer by allocation of virtual channels within the shared TCP connection and multiplexing of data packets of the virtual channels over the shared TCP connection.
Inventors:
Jiang; Xiaoye
(Shrewsbury,
MA
)
, Vahalia; Uresh K.
(Waban,
MA
)
, Gupta; Uday
(Westford,
MA
)
, Tzelnic; Percy
(Concord,
MA
)
Assignee:
EMC Corporation
(Hopkinton,
MA
)
Appl. No.:
261626
Filed:
March 3, 1999
Current U.S. Class:
709/229
709/213
Current International Class:
G06F 17/30 (20060101)
Field of Search:
707/10 709/201,203,213,217,223,229,219,234 713/201
U.S. Patent Documents
5774660
June 1998
Brendel et al.
5950203
September 1999
Stakuis et al.
6085234
July 2000
Pitts et al.
6161104
December 2000
Stakutis et al.
6167446
December 2000
Lister et al.
6185601
February 2001
Wolff
6192408
February 2001
Vahalia et al.
6212640
March 2001
Abedelnur
6230190
May 2001
Edomonds et al.
6269431
July 2001
Dunham
6298386
October 2001
Vahalia et al.
Other References
CIFS: A Common Internet System, from the Microsoft Interactive Developer, issued Nov. 1996, by Paul Leach and Dan Perry..~
Primary Examiner:
Le; N.
Assistant Examiner:
Benson; Walter
Attorney, Agent or Firm:
Howrey Simon Arnold & White, LLP
Claims
What is claimed is:
1. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then the first data mover computer responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein each of the session setup request, the file system connection request, and the file access requests is a respective separate request from the client to the first data mover computer.
2. The method as claimed in claim 1, wherein the first data mover computer assigns a user identification number in response to the session setup request, and the first data mover computer assigns a tree identification number in response to the file system connection request.
3. The method as claimed in claim 2, wherein the second data mover computer assigns at least one file identifier in response to at least one of the file access requests passed by the first data mover computer from the client to the second data mover computer.
4. The method as claimed in claim 1, wherein the client context information forwarded from the first data mover computer to the second data mover computer includes a negotiated dialect, a user identification number, a client operating system, a connection identification number, and a maximum network packet size.
5. The method as claimed in claim 1, wherein the connection-oriented protocol is the Common Internet File System (CIFS) Protocol, and first data mover computer and the second data mover computer support the same set of CIFS dialects.
6. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then the first data mover computer responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the first data mover computer forwards the client context information and the file system connection request to the second data mover computer by appending the client context information to the file system connection request and forwarding the file system connection request including the appended client context information to the second data mover computer.
7. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then the first data mover computer responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein a limited number of open connections are preallocated between the first data mover computer and the second data mover computer for the forwarding of file access requests.
8. he method as claimed in claim 7, wherein the first data mover computer responds to the file system connection request from the client by assigning one of the preallocated open connections for the forwarding of data access requests from the client for access to the file system.
9. The method as claimed in claim 7, wherein servicing of certain data access requests from clients serviced by the first data mover computer uses dedicated open connections between the first data mover computer and the second data mover computer for the forwarding of the data access requests from the first data mover computer to the second data mover computer, and wherein the first data mover computer responds to receipt of one of said certain data access requests from one of the clients serviced by the first data mover computer by dynamically assigning an open connection from a pool of pre-opened connections between the first data mover computer and the second data mover computer.
10. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then the first data mover computer responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein multiple clients of the first data mover computer request access to file systems accessed through the second data mover computer and the multiple clients share at least one connection between the first data mover computer and the second data mover computer by allocation of virtual channels within the shared connection, and data packets of more than one of the virtual channels are multiplexed over the shared connection.
11. The method as claimed in claim 10, wherein a virtual connection for the client is established over an allocated virtual channel by the first data mover computer modifying a context identifier (Cid) field of the file system connection request from the client by inserting a context identifier (Fctx_id) for identifying context of the virtual connection in the first data mover computer, and the first data mover computer forwarding the file system connection request including the modified context identifier field over the shared connection to the second data mover computer, and wherein the first data mover computer receives from the second data mover computer a reply including a context identifier field (Cid) including a context identifier (Pctx_id) set by the second data mover computer for identifying context of the virtual connection in the second data mover computer.
12. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use the Common Internet File System (CIFS) Protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the Common Internet File System (CIFS) Protocol to respond to a negotiate request from the client and to respond to a session setup request from the client to authenticate the client and assign a user identification for a client session, and then the first data mover computer responding to a file system connection request from the client by assigning a tree identifier and forwarding the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein each of the session setup request, the file system connection request, and the file access requests is a respective separate request from the client to the first data mover computer.
13. The method as claimed in claim 12, wherein the second data mover computer assigns at least one file identifier in response to at least one of the file access requests passed by the first data mover computer from the client to the second data mover computer.
14. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use the Common Internet File System (CIFS) Protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the Common Internet File System (CIFS) Protocol to respond to a negotiate request from the client and to respond to a session setup request from the client to authenticate the client and assign a user identification for a client session, and then the first data mover computer responding to a file system connection request from the client by assigning a tree identifier and forwarding the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the first data mover computer forwards the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer by appending stream context information to the file system connection request and forwarding the file system connection request including the appended stream context information to the second data mover computer, the stream context information including the user identification for the client session, the tree identifier, a server message block (SMB) protocol dialect, a maximum SMB message packet size, and access credentials associated with the user identification.
15. The method as claimed in claim 12, wherein the first data mover computer and the second data mover computer support the same set of CIFS dialects.
16. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use the Common Internet File System (CIFS) Protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the Common Internet File System (CIFS) Protocol to respond to a negotiate request from the client and to respond to a session setup request from the client to authenticate the client and assign a user identification for a client session, and then the first data mover computer responding to a file system connection request from the client by assigning a tree identifier and forwarding the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein a limited number of open Transmission Control Protocol (TCP) connections are preallocated between the first data mover computer and the second data mover computer for the forwarding of file access requests.
17. The method as claimed in claim 16, wherein the first data mover computer responds to the file system connection request from the client by assigning one of the preallocated open TCP connections for the forwarding of data access requests from the client for access to the file system.
18. The method as claimed in claim 16, wherein servicing of certain data access requests from clients serviced by the first data mover computer uses dedicated open TCP connections between the first data mover computer and the second data mover computer for the forwarding of the data access requests from the first data mover computer to the second data mover computer, and wherein the first data mover computer responds to receipt of one of said certain data access requests from one of the clients serviced by the first data mover computer by dynamically assigning an open TCP connection from a pool of pre-opened TCP connections between the first data mover computer and the second data mover computer.
19. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use the Common Internet File System (CIFS) Protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the Common Internet File System (CIFS) Protocol to respond to a negotiate request from the client and to respond to a session setup request from the client to authenticate the client and assign a user identification for a client session, and then the first data mover computer responding to a file system connection request from the client by assigning a tree identifier and forwarding the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein multiple clients of the first data mover computer request access to file systems accessed through the second data mover computer and the multiple clients share at least one Transmission Control Protocol (TCP) connection between the first data mover computer and the second data mover computer by allocation of virtual channels within the shared TCP connection, and data packets of more than one of the virtual channels are multiplexed over the shared TCP connection.
20. The method as claimed in claim 19, wherein a virtual connection for the client is established over an allocated virtual channel by the first data mover computer modifying a context identifier (Cid) field of the file system connection request from the client by inserting a context identifier (Fctx_id) for identifying context of the virtual connection in the first data mover computer, and the first data mover computer forwarding the file system connection request including the modified context identifier field over the shared TCP connection to the second data mover computer, and wherein the first data mover computer receives from the second data mover computer a reply including a context identifier field (Cid) including a context identifier (Pctx_id) set by the second data mover computer for identifying context of the virtual connection in the second data mover computer.
21. In a network file server system having at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, a method of operating the first data mover computer to use the Common Internet File System (CIFS) Protocol for maintaining a connection with the client for permitting the client to access the file system, said method comprising: the first data mover computer using the Common Internet File System (CIFS) Protocol to respond to a negotiate request from the client and to respond to a session setup request from the client to authenticate the client and assign a user identification for a client session, and then the first data mover computer responding to a file system connection request from the client by assigning a tree identifier and forwarding the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer, and then the first data mover computer maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the first data mover computer forwards the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer by appending stream context information to the file system connection request and forwarding the file system connection request including the appended stream context information to the second data mover computer, the stream context information including the user identification for the client session, the tree identifier, a server message block (SMB) protocol dialect, a maximum SMB message packet size, and access credentials associated with the user identification; and wherein multiple clients of the first data mover computer request access to file systems accessed through the second data mover computer and the multiple clients share at least one Transmission Control Protocol (TCP) connection between the first data mover computer and the second data mover computer by allocation of virtual channels within the shared TCP connection, and data packets of more than one of the virtual channels are multiplexed over the shared TCP connection.
22. The method as claimed in claim 21, wherein a virtual connection for the client is established over an allocated virtual channel by the first data mover computer modifying a context identifier (Cid) field of the file system connection request from the client by inserting a context identifier (Fctx_id) for identifying context of the virtual connection in the first data mover computer, and the first data mover computer forwarding the file system connection request including the modified context identifier field over the shared TCP connection to the second data mover computer, and wherein the first data mover computer receives from the second data mover computer a reply including a context identifier field (Cid) including a context identifier (Pctx_id) set by the second data mover computer for identifying context of the virtual connection in the second data mover computer.
23. A network file server comprising a first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the first data mover computer is programmed to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the first data mover computer is programmed for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein each of the session setup request, the file system connection request, and the file access requests is a respective separate request from the client to the first data mover computer.
24. The network file server as claimed in claim 23, wherein the first data mover computer is programmed for assigning a user identification number in response to the session setup request, and for assigning a tree identification number in response to the file system connection request.
25. The network file server as claimed in claim 23, wherein the first data mover computer is programmed for forwarding to the second data mover computer client context information including a negotiated dialect, a user identification number, a client operating system, a connection identification number, and a maximum network packet size.
26. The network file server as claimed in claim 23, wherein the first data mover computer is programmed so that the connection-oriented protocol is the Common Internet File System (CIFS) Protocol, and first data mover computer and the second data mover computer support the same set of CIFS dialects.
27. A network file server comprising a first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the first data mover computer is programmed to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the first data mover computer is programmed for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the first data mover computer is programmed for forwarding the client context information and the file system connection request to the second data mover computer by appending the client context information to the file system connection request and forwarding the file system connection request including the appended client context information to the second data mover computer.
28. A network file server comprising a first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the first data mover computer is programmed to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the first data mover computer is programmed for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the first data mover computer is programmed for responding to the file system connection request from the client by assigning one of a limited number of preallocated open connections for the forwarding of data access requests from the client for access to the file system.
29. A network file server comprising a first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the first data mover computer is programmed to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the first data mover computer is programmed for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the first data mover computer is programmed for permitting multiple clients of the first data mover computer to share at least one connection between the first data mover computer and the second data mover computer by allocating virtual channels within the shared connection, and data packets of more than one of the virtual channels are multiplexed over the shared connection.
30. The network file server as claimed in claim 29, wherein the first data mover computer is programmed to establish a virtual connection for the client over an allocated virtual channel by modifying a context identifier (Cid) field of the file system connection request from the client by inserting a context identifier (Fctx_id) for identifying context of the virtual connection in the first data mover computer, and forwarding the file system connection request including the modified context identifier field over the shared connection to the second data mover computer, and receiving a reply from the second data mover computer, the reply including a context identifier field (Cid) including a context identifier (Pctx_id) set by the second data mover computer for identifying context of the virtual connection in the second data mover computer.
31. A program storage device containing a program for at least a first data mover computer in a network file server, the first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, the first data mover computer being coupled to at least a second data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the program is executable by the first data mover computer for using a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the program is executable by the first data mover computer for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein each of the session setup request, the file system connection request, and the file access requests is a respective separate request from the client to the first data mover computer.
32. The program storage device as claimed in claim 31, wherein the program is executable by the first data mover computer for assigning a user identification number in response to the session setup request, and for assigning a tree identification number in response to the file system connection request.
33. The program storage device as claimed in claim 31, wherein the program is executable by the first data mover computer for forwarding to the second data mover computer client context information including a negotiated dialect, a user identification number, a client operating system, a connection identification number, and a maximum network packet size.
34. The program storage device as claimed in claim 31, wherein the program is executable by the first data mover computer so that the connection-oriented protocol is the Common Internet File System (CIFS) Protocol.
35. A program storage device containing a program for at least a first data mover computer in a network file server, the first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, the first data mover computer being coupled to at least a second data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the program is executable by the first data mover computer for using a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the program is executable by the first data mover computer for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the program is executable by the first data mover computer for forwarding the client context information and the file system connection request to the second data mover computer by appending the client context information to the file system connection request and forwarding the file system connection request including the appended client context information to the second data mover computer.
36. A program storage device containing a program for at least a first data mover computer in a network file server, the first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, the first data mover computer being coupled to at least a second data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the program is executable by the first data mover computer for using a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the program is executable by the first data mover computer for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the program is executable by the first data mover computer for responding to the file system connection request from the client by assigning one of a limited number of preallocated open connections for the forwarding of data access requests from the client for access to the file system.
37. A program storage device containing a program for at least a first data mover computer in a network file server, the first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, the first data mover computer being coupled to at least a second data mover computer for servicing data access requests from the first data mover computer, at least one file system in data storage being accessible to the second data mover computer, wherein the program is executable by the first data mover computer for using a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system, and wherein the program is executable by the first data mover computer for: using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client; wherein the program is executable by the first data mover computer for permitting multiple clients of the first data mover computer to share at least one connection between the first data mover computer and the second data mover computer by allocating virtual channels within the shared connection, and data packets of more than one of the virtual channels are multiplexed over the shared connection.
38. The program storage device as claimed in claim 37, wherein the program is executable to establish a virtual connection for the client over an allocated virtual channel by modifying a context identifier (Cid) field of the file system connection request from the client by inserting a context identifier (Fctx_id) for identifying context of the virtual connection in the first data mover computer, and forwarding the file system connection request including the modified context identifier field over the shared connection to the second data mover computer, and receiving a reply from the second data mover computer, the reply including a context identifier field (Cid) including a context identifier (Pctx_id) set by the second data mover computer for identifying context of the virtual connection in the second data mover computer.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to data storage systems, and more particularly to network file servers.
2. Background Art
Mainframe data processing, and more recently distributed computing, have required increasingly large amounts of data storage. This data storage is most economically provided by an array of low-cost disk drives integrated with a large semiconductor cache memory. Such cached disk arrays were originally introduced for use with IBM host computers. A channel director in the cached disk array executed channel commands received over a channel from the host computer.
More recently, the cached disk array has been interfaced to a data network via at least one data mover computer. The data mover computer receives data access commands from clients in the data network in accordance with a network file access protocol such as the Network File System (NFS). (NFS is described, for example, in RFC 1094, Sun Microsystems, Inc., "NFS: Network File Systems Protocol Specification," Mar. 1, 1989.) The data mover computer performs file locking management and mapping of the network files to logical block addresses of storage in the cached disk storage subsystem, and moves data between the client and the storage in the cached disk storage subsystem.
In relatively large networks, it is desirable to have multiple data mover computers that access one or more cached disk storage subsystems. Each data mover computer provides at least one network port for servicing client requests. Each data mover computer is relatively inexpensive compared to a cached disk storage subsystem. Therefore, multiple data movers can be added easily until the cached disk storage subsystem becomes a bottleneck to data access. If additional storage capacity or performance is needed, an additional cached disk storage subsystem can be added. Such a storage system is described in Vishlitzky et al. U.S. Pat. No. 5,737,747 issued Apr. 7, 1998, entitled "Prefetching to Service Multiple Video Streams from an Integrated Cached Disk Array," incorporated herein by reference.
Unfortunately, data consistency problems may arise if concurrent client access to a read/write file is permitted through more than one data mover. These data consistency problems can be solved in a number of ways. For example, as described in Vahalia et al., U.S. Pat. No. 5,893,140 issued Apr. 6, 1999, entitled "File Server Having a File System Cache and Protocol for Truly Safe Asynchronous Writes," incorporated herein by reference, locking information can be stored in the cached disk array, or cached in the data mover computers if a cache coherency scheme is used to maintain consistent locking data in the caches of the data mover computers. However, as shown in FIG. 1, labeled "Prior Art," a more elegant solution to the data consistency problem has been implemented at EMC Corporation in a network file server system having multiple stream server computers and one or more cached disk arrays.
FIG. 1 shows a network file server system having at least two data mover computers 21 and 22. The first data mover 21 has exclusive access to read/write files in a first file system 23, and the second data mover 22 has exclusive access to read/write files in a second file system 24. As shown, the file systems 23, 24 are respective volumes of data contained in the same cached disk array 25, although alternatively each file system 23, 24 could be contained in a respective one of two separate cached disk arrays. For example, each of the data mover computers 21, 22 has a respective high-speed data link to a respective port of the cached disk array 25. The cached disk array 25 is configured so that the file system 23 is accessible only through the data port connected to the first data mover 21 and so that the file system 24 is accessible only through the data port connected to second data mover 22. Each of the data movers 21, 22 maintains a directory of the data mover ownership of all of the files in the first and second file systems 23, 24. In other words, each of the data movers maintains a copy of the file system configuration information in order to recognize which data mover in the system has exclusive access to a specified read/write file.
Each of the data movers 21, 22 may receive file access requests from at least one network client. For example, the first data mover 21 has a network port 28 for receiving file access requests from a first client 26, and the second data mover 22
has a network port 29 for receiving file access requests from a second client 27. The clients 26, 27 communicate with the data movers using the connection-oriented NFS protocol. Whenever the data mover 21 receives a file access request from the client
26, it checks the configuration directory to determine whether or not the file specified by the request is in a file system owned by the data mover 21. If so, then the data mover 21 places a lock on the specified file, accesses the file in the file system 23, and streams any read/write data between the client 26 and the file system 23. If the file specified by the request is not a file system owned by the data mover 21, then the data mover 21 forwards the request to the data mover that owns the file system to be accessed. For example, if the client 26 requests access to a file in the file system 24, then the first data mover 21 forwards the file access request to the second data mover 22. The second data mover 22 places a lock on the file to be accessed, the second data mover accesses the file, and the second data mover streams any read/write data between the first data mover 21 and the file in the file system 24. The first data mover then streams the read/write data between the second data mover 22 and the client 26. The second data mover 22 responds to file access requests from its client 27 in a similar fashion, by directly servicing file access request to files in the file system 24 that it owns, or forwarding to other data movers the requests for access to the files in file systems that it does not own.
The solution as shown in FIG. 1 is rather efficient because the data movers 21, 22 can be linked by a dedicated high-speed data link for the exchange of read/write data between them. Therefore, there is no additional loading of the data network between the data movers and the clients and no additional loading of the data links between the cached disk array 25 and the data movers 21, 22. The data movers can cache the file access information (e.g., file locks) and file data and attributes for the files that they own, so that the loading on the data links between the cached disk array and the data movers 21, 22 can be somewhat reduced. In the network file system implemented at EMC Corporation, when a data mover did not own the file system to be accessed, the data mover forwarded to or exchanged NFS data packets with the data mover that owned the file system to be accessed. Such a system was relatively easy to implement, since it involved creating a proxy router routine that would recognize whether or not a NFS data packet from a client was for access to a file system owned by another data mover, and if so, routing the data packet to the data mover that owned the file system. The data mover owning the file system could treat the forwarded data packet in a fashion similar to a data packet received directly from a client.
Although the system of FIG. 1 is satisfactory for handling NFS file access requests, it has a number of limitations that will become increasingly significant. The current trend is toward higher-speed network links and interconnection technology, such as technology for the Fibre-Channel standards being developed by the American National Standards Institute (ANSI). In a network employing high-speed links and interconnection technology, the delays inherent in a connectionless communications protocol such as NFS become more pronounced.
The Internet uses a connection-oriented protocol known as the Transmission Control Protocol (TCP/IP). In order to provide read/write file sharing over the Internet, the Internet Network Working Group has drafted a specification for a Common Internet File System (CIFS) Protocol. The CIFS protocol is described, for example, in Paul L. Leach and Dilip C. Naik, "A Common Internet File System," Microsoft Corporation, Dec. 19, 1997, incorporated herein by reference. The status of development of CIFS is posted on the Internet at http://www.microsoft.com/workshop/networking/cifs/default.asp. CIFS is touted as incorporating the same high-performance, multi-user read and write operations, locking, and file-sharing semantics that are the backbone of today's sophisticated enterprise computer networks.
According to the CIFS protocol specification of Leach and Naik, p. 14-15, protocol dialects of NT LM 0.12 and later support distributed file system operations. The distributed file system is said to give a way for this protocol to use a single consistent file naming scheme which may span a collection of different servers and shares. The distributed file system model employed is a referral-based model. This protocol specifies the manner in which clients receive referrals. The client can set a flag in the request server message block (SMB) header indicating that the client wants the server to resolve this SMB's paths within the distributed file system known to the server. The server attempts to resolve the requested name to a file contained within the local directory tree indicated by the tree identifier (TID) of the request and proceeds normally. If the request pathname resolves to a file on a different system, the server returns the following error: "STATUS_DFS_PATH_NOT_COVERED--the server does not support the part of the DFS namespace needed to resolved the pathname in the request." The client should request a referral from this server for further information. A client asks for a referral with the TRANS2_DFS_GET_REFERRAL request containing the DFS pathname of interest. The response from the server indicates how the client should proceed. The method by which the topological knowledge of the DFS is stored and maintained by the servers is not specified by this protocol.
SUMMARY OF THE INVENTION
In accordance with one aspect of the invention, there is provided a method of operating a data mover computer using a connection-oriented protocol for permitting a client to access a file system. A network file server system has at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer. At least one file system in data storage is accessible to the second data mover computer. The first data mover computer uses the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client. Then the first data mover computer responds to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer. Then the first data mover computer maintains a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client.
In accordance with another aspect of the invention, there is provided a method of operating a data mover computer to use the Common Internet File System (CIFS) Protocol for maintaining a connection with a client for permitting the client to access a file system. A network file server system has at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer. At least one file system in data storage is accessible to the second data mover computer. The first data mover computer uses the Common Internet File System (CIFS) Protocol to respond to a negotiate request from the client and to respond to a session setup request from the client to authenticate the client and assign a user identification for a client session. Then the first data mover computer responds to a file system connection request from the client by assigning a tree identifier and forwarding the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer. Then the first data mover computer maintains a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client.
In accordance with still another aspect of the invention, there is provided a method of operating a data mover computer to use the Common Internet File System (CIFS) Protocol for maintaining a connection with a client for permitting the client to access a file system. A network file server system has at least a first data mover computer coupled to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer. At least one file system in data storage is accessible to the second data mover computer. The first data mover computer uses the Common Internet File System (CIFS) Protocol to respond to a negotiate request from the client and to respond to a session setup request from the client to authenticate the client and assign a user identification for a client session. Then the first data mover computer responds to a file system connection request from the client by assigning a tree identifier and forwarding the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer. Then the first data mover computer maintains a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client. The first data mover computer forwards the user identification for the client session and the tree identifier and the file system connection request to the second data mover computer by appending stream context information to the file system connection request and forwarding the file system connection request including the appended stream context information to the second data mover computer. The stream context information includes the user identification for the client session, the tree identifier, a server message block (SMB) protocol dialect, a maximum SMB message packet size, and access credentials associated with the user identification. Multiple clients of the first data mover computer request access to file systems accessed through the second data mover computer and the multiple clients share at least one Transmission Control Protocol (TCP) connection between the first data mover computer and the second data mover computer by allocation of virtual channels within the shared TCP connection. Data packets of more than one of the virtual channels are multiplexed over the shared TCP connection.
In accordance with another aspect of the invention, there is provided a network file server. The network file server includes a first data mover computer having a port for coupling to a data network for servicing data access requests from at least one network client, and at least a second data mover computer coupled to the first data mover computer for servicing data access requests from the first data mover computer. At least one file system in data storage is accessible to the second data mover computer. The first data mover computer is programmed to use a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system. The first data mover computer is programmed for using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client.
In accordance with still another aspect of the invention, there is provided a program storage device containing a program for at least a first data mover computer in a network file server. The first data mover computer has a port for coupling to a data network for servicing data access requests from at least one network client. The first data mover computer is coupled to at least a second data mover computer for servicing data access requests from the first data mover computer. At least one file system in data storage is accessible to the second data mover computer. The program is executable by the first data mover computer for using a connection-oriented protocol for maintaining a connection with the client for permitting the client to access the file system. The program is executable by the first data mover computer for using the connection-oriented protocol to obtain client context information and to respond to a session setup request from the client by authenticating the client, and then responding to a file system connection request from the client by forwarding the client context information and the file system connection request to the second data mover computer, and then maintaining a connection between the first data mover computer and the second data mover computer when the client accesses the file system and the first data mover computer passes file access requests from the client to the second data mover computer and returns responses to the file access requests from the second data mover computer to the client.
BRIEF DESCRIPTION OF THE DRAWINGS
Additional features and advantages of the invention will be described below with reference to the drawings, in which:
FIG. 1 is a block diagram of a Prior Art file server including a cached disk array and a plurality of data mover computers;
FIG. 2 is a block diagram of a file server in which a secondary data mover request a distributed file lock from a primary data mover that owns the file, and receives metadata from the primary data mover in order to directly access the file in data storage of the file server;
FIG. 3 is a block diagram of a data storage network in which a client requests a distributed file lock from a file server and receives metadata from the server in order to directly access the file in data storage of the file server;
FIG. 4 is a block diagram of a data storage network which combines various aspects of the file servers of FIGS. 2 to 4;
FIG. 5 is a flowchart of a procedure followed by each of the data movers in FIG. 4 upon receipt of a file access request from a client or another data mover;
FIG. 6 is a block diagram of various fields in a message block of the conventional CIFS protocol;
FIG. 7 is a flowchart of a preferred procedure for forwarding CIFS file access messages from a data mover that does not own the file to be accessed to a data mover that owns the file to be accessed;
FIG. 8 is a block diagram showing a server state header appended to a CIFS message sent from a data mover that forwards the message to a data mover that owns a file to be accessed;
FIG. 9 is a flowchart of a procedure performed by a data mover to process a CIFS message received from a client;
FIG. 10 is a flowchart of a routine used by a data mover to process data access requests upon a file that is not owned by the data mover;
FIG. 11 is a flowchart of a routine used by a data mover upon receipt of a CIFS message received from another data mover;
FIG. 12 is a block diagram of a data mover;
FIG. 13 is a block diagram of stream contexts, TCP channel connection objects, and TCP channel status data structures in random access memory of a data mover;
FIG. 14 is a procedure used by a data mover to dynamically assign a pre-opened TCP connection between data movers for remote file access;
FIG. 15 is a block diagram showing various TCP connections between two data movers and associated data structures in the data movers;
FIG. 16 is a block diagram showing various software programs in a data mover for communication of CIFS messages between the data mover and clients and between the data mover and other data movers;
FIG. 17 is a block diagram showing a hierarchy or layering of software modules in a data mover;
FIG. 18 is a block diagram showing the management of metadata for a file in a data mover that owns the file and a data mover that is secondary with respect to the file;
FIG. 19 is a flowchart of a routine used by a data mover that owns a file to respond to a request from a data mover for a distributed lock on the file;
FIG. 20 is a first portion of a flowchart of a routine used by a data mover for directly accessing data of a file in network data storage;
FIG. 21 is a second portion of the flowchart begun in FIG. 20;
FIG. 22 is a graph of file systems and virtual nodes as maintained by the UFS software mode of FIG. 17;
FIG. 23 is a graph of shadow file systems and shadow nodes as maintained by the ShFS software module of FIG. 17;
FIG. 24 is a block diagram of a client;
FIG. 25 is a hierarchy or layering of software modules in a client for directly accessing data in a file in network data storage; and
FIG. 26 is a flowchart depicting the operation of the client's operating system program that responds to storage access calls from application programs.
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof have been shown in the drawings and will be described in detail. It should be understood, however, that it is not intended to limit the invention to the particular forms shown, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the scope of the invention as defined by the appended claims.
DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
I. Introduction to Network File Server Architectures for Shared Data Access
A number of different network file server architectures have been developed that can be used individually or in combination in a network to provide different performance characteristics for file access by various clients to various file systems. In general, the increased performance is at the expense of additional network links and enhanced software.
FIG. 1 shows the basic architecture of a file server 20 that has been used to permit clients 26, 27 to access the same read/write file through more than one data mover computer 21, 22. As described above in the section entitled "Background of the Invention," this basic network file server architecture has been used with the NFS protocol. NFS has been used for the transmission of both read/write data and control information. The solid interconnection lines in FIG. 1 represent the transmission of read/write data, and the dashed interconnection lines in FIG. 1 represent the transmission of control information. The NFS protocol has been used for the transmission of data and control over the data network 30 between the data movers
21, 22 and also between each data mover 21, 22 and the client 26 or clients connected to the data mover through the data network. NFS data packets transmitted between the data movers 21, 22 were substantially the same as data packets that were transmitted between the data movers 21, 22 and the clients 26, 27. If a data mover did not own the file system including the file to be accessed, it functioned as a proxy router by forwarding the NFS data packets from the client to the data mover that owned the file system, and by forwarding to the client any data packets returned from the data mover that owned the file system.
As will be described in detail below, the basic network file server architecture of FIG. 1 can be used with a connection-oriented protocol such as CIFS to enable clients to access the same read/write file through more than one data mover computer. In this case, when a data mover 21 receives from one of its clients 26 a request to access a file in a file system 24 that it does not own, then the data mover 21 maintains a connection to its client 26 and also maintains a connection with the data mover 22 that owns the file system 24 to be accessed. The data mover 21 that does not own the file system 24 to be accessed maintains a proxy or virtual connection between its client 26 and the data mover 22 that owns the file system 24 to be accessed.
Referring to FIG. 2, there is shown a network file server 40 that may provide a significant improvement in data access time by using a data bypass path around the data mover that owns the file system during the transmission of read/write data. The network file server includes at least two data movers 41, 42 that access at least two file systems 43, 44 in storage of a cached disk array 45. The first data mover 41 owns the file system 43, and the second data mover 42 owns the second file system
44. The file server 40 is linked by a data network 50 to a plurality of clients 46, 47. The first data mover 41 has a network port 51 for receiving file access requests from at least one client 46, and the second data mover 42 has a network port 52 for receiving file access requests from at least one other client 47.
In contrast to FIG. 1, the network file server architecture in FIG. 2 includes a data bypass path 48 between the first data mover 41 and the second file system 44 in order to bypass the second data mover 42, and a data bypass path 49 between the second data mover 42 and the first file system 43 in order to bypass the first data mover 41. It is possible for each of the data movers 41, 42 to access data in each of the file systems 43, 44, but if a data mover does not own the file access information for the file system to be accessed, then the data mover should ask the owner for permission to access the file system, or else a data consistency problem may arise. For example, when the first data mover 41 receives a file access request from its client 46, it accesses its directory of file ownership information to determine whether or not it owns the file system to be accessed. If the first data mover 41 does not own the file system to be accessed, then the first data mover 41 sends a metadata request to the data mover that owns the file system to be accessed. For example, if the first client 46 requests access to the second file system 44, then the first data mover 41 sends a metadata request to the second data mover 42.
The term metadata refers to information about the data, and the term metadata is inclusive of file access information and file attributes. The file access information includes the locks upon the files or blocks of data in the files. The file attributes include pointers to where the data is stored in the cached disk array. The communication of metadata between the data movers 41, 42 is designated by the dotted line interconnection in FIGS. 1 to 4.
In response to a metadata request, the data mover owning the file system accesses file access information and file attributes in a fashion similar to the processing of a file access request, but if the file access request is a read or write request, then the data mover owning the file does not read or write data to the file. Instead of reading or writing data, the data mover owning the file system places any required lock on the file, and returns metadata including pointers to data in the file system to be accessed. For example, once the first data mover 41 receives the pointers to the data to be accessed in the second file system 44, then the first data mover communicates read or write data over the bypass path 48. For a read operation, the first data mover 41 sends a read command over the data bypass path 48 to the file system 44. In response, read data from the file system 44 is returned over the data bypass path 48, and the first data mover 41 forwards the read data to the first client 46. For a write operation, the first data mover 41 receives write data from the first client, and forwards the write data over the data bypass path 48 to be written in the second file system 44. The first data mover 41 transmits the write data in a write command including the pointers from the metadata received from the second data mover 42.
If a write operation changes any of the file attributes, then the new file attributes are written from the first data mover 41 to the second data mover, and after the write data is committed to the second file system 44, the second data mover 42
commits any new file attributes by writing the new file attributes to the file system. As described in the above-referenced Vahalia et al., U.S. Pat. No. 5,893,140 issued Apr. 6, 1999, a data security problem is avoided by writing any new file attributes to storage after the data are written to storage. If the network communication protocol supports asynchronous writes, it is possible for a data mover that does not own a file system to cache read or write data, but in this case any data written to the cache should be written down to the nonvolatile storage of the file system and the cache. invalidated just prior to releasing the lock upon the file system. Otherwise, data in the cache of a data mover that does not own a file system may become inconsistent with current data in the file system or in a cache of another data mover.
The network file server architecture of FIG. 2 may appear more complex than the architecture of FIG. 1 due to the presence of the bypass data paths 48 and 49 in FIG. 2. In practice, however, the bypass data paths can be paths that are internal to and inherent in the single cached disk array 45 that contains the first file system 43 and the second file system 44. These data paths are inherent in the cached disk array 45 since the first file system 43 and the second file system 44 share a cache in the cached disk array, and therefore the bypass data paths 48, 49 can be enabled by programming the configuration of cached disk array 45 to permit the first file system 43 to be accessed from the port of the cached disk array connected to the first data mover 41 and also from the port of the cached disk array connected to the second data mover 42, and to permit the second file system 44 to be accessed from the port of the cached disk array connected to first data mover 41 and also from the port of the cached disk array connected to the second data mover 42.
Referring to FIG. 3, there is shown yet another network file server architecture. In this example, a file server 60 includes a data mover 61 and data storage such as a file system 62 in a cached disk array 63. The data mover 61 owns the file system 62, and the data mover 61 exchanges metadata with the file system 62. The data mover 61 has at least one network port 71 connected through the data network 70 to a first client 64 and a second client 65. As shown, one network port 71 is shared among requests from the clients 64, 65, although a separate respective network port could be provided for each of the clients 64, 65. Each client 64, 65 also has a respective bypass data path 66, 67 that bypasses the data mover 61 for reading data from and writing data to the file system 62. As shown, the cached disk array 63 has one network port 72 for the bypass data path 66, and another network port 73 for the bypass data path 67. Alternatively, the two bypass data paths 66, 67 could share one network port of the cached disk array 63, although such sharing could limit the maximum data transfer rate to the data storage in the cached disk array 63 for simultaneous data access by the clients 64, 65. Before reading or writing to the file system
62, however, a client first issues a request for metadata to the data mover 61. The data mover 61 responds by placing an appropriate lock on the file to be accessed, and returning metadata including pointers to where the data to be accessed is stored in the file system. The client uses the metadata to formulate a read or write request sent over the bypass data path to the file system 62. If the write request changes the file attributes, then the client writes the new file attributes to the data mover
61 after the data is written to the file system 62. In this regard, a client in the data network of FIG. 3 behaves in a fashion similar to a data mover in FIG. 2 that does not own a file system to be accessed.
Turning now to FIG. 4, there is shown a more complex network file server architecture that combines the architectural features of FIGS. 1, 2 and 3. In this example, a data network 80 includes a first data mover 81, a second data mover 82, a first cached disk array 85, a second cached disk array 86, and a plurality of clients 87, 88, 89, 90. In this example, the data movers 81, 82 and the cached disk arrays 85, 86 could be spaced from each other, placed at various geographic locations, and interconnected by high-speed Fibre Channel data links. The first data mover 81 owns a first file system 83 in the first cached disk array 85, and the second data mover 82 owns a second file system 84 in the second cached disk array 86. The first data mover 81 is connected to the first cached disk array 85 for the communication of data and metadata, and the second data mover 82 is connected to the second cached disk array 86 for the communication of data and metadata. The first data mover 81 is connected to the second data mover 82 for the communication of data, metadata, and control information. The second data mover 82 has a bypass data path 91 to the first file system 83 for bypassing the first data mover 81, but the first data mover 81
does not have a bypass data path to the second file system 84 for bypassing the second data mover 82.
The first data mover 81 is linked to a first client 87 for the communication of data and control information, and is linked to a second client 88 for communication of metadata. The second client 88 has a bypass data path 92 to the first file system 85 for bypassing the first data mover 81, and a bypass data path 93 to the second file system 84 for bypassing the first data mover 81 and also bypassing the second data mover 82.
The second data mover 82 is linked to a third client 89 for the communication of metadata, and is linked to a fourth client 90 for the communication of data and control information. The third client 89 has a bypass data path 94 to the first file system 83 for bypassing the first data mover 81 and the second data mover 82, and a bypass data path 95 to the second file system 84 for bypassing the second data mover 82.
The first client 87 accesses the first file system 83 and the second file system 84 in the fashion described above with respect to FIG. 1. For example, to access the second file system 84, the first client 87 sends a file access request to the first data mover 81, the first data mover 81 forwards the request to the second data mover 82, and the second data mover 82 accesses the second file system.
The fourth client 90 accesses the first file system 83 and the second file system 84 in the fashion described above with reference to FIG. 2. For example, to access the first file system 83, the fourth client 90 sends a file access request to the second data mover 82, and the second data mover 82 sends a corresponding metadata request to the first data mover 81. The first data mover 81 places a lock on the file to be accessed, and returns metadata including pointers to the data to be accessed. The second data mover uses the pointers to formulate a corresponding data access command sent over the bypass data path 91 to the first file system 83, and any read or write data is communicated over the bypass path 91 and between the second data mover 82 and the fourth client 90.
The second client 88 accesses the first file system 83 in the fashion described above with reference to FIG. 3, and the third client 89 accesses the second file system 84 in the fashion described above with reference to FIG. 3. For example, to access the first file system 83, the second client 88 sends a metadata request to the first data mover 81. The first data mover 81 places a lock on the file to be accessed, and returns metadata including pointers to the data in the file to be accessed. The second client 88 uses the pointers to formulate a corresponding data access command sent over the bypass data path 92 to the first file system 83, and any read or write data is also communicated over the bypass data path 92 between the first file system 83 and the second client 88. In a similar fashion, the second client 88 can access the second file system 84, and the third client 89 can access the first file system, but in these cases a respective metadata request is forwarded between the first and second data movers 81 and 82.
There are various reasons why it may be advantageous to use the different access methods in the same file server network. The method of FIG. 2 is easy to use when file systems owned by different file servers are located in the same cached disk array, but when the file systems are located in different cached disk arrays, the bypass connections between the data movers and the cached disk arrays may be relatively scarce and costly. Therefore, as illustrated by the example in FIG. 4, if the fourth client 90 is more likely than the first client 87 to load the file server network with read/write operations, then a bypass connection 91 should be allocated to the second data mover 82 to prevent the fourth client 90 from overloading the network. In a similar fashion, the second and third clients 88, 89 are provided with more direct bypass connections 92, 93, 94, 95 to each of the file systems 83, 84, and therefore the second and third clients 88, 89 can also engage in highly intensive read/write operations.
Whenever a client has a bypass data path to a file system and can therefore send data access commands to the file system without passing through a data mover computer, the client can potentially access all of the files in the file system. In this situation, the client must be trusted to access only the data in a file over which the client has been granted a lock by the data mover that owns the file system to be accessed. Therefore, the methods of client access as described above with reference to FIGS. 2 and 3 have a security risk that may not be acceptable for clients located in relatively open regions of the data network. The method of client access as described above with reference to FIG. 3 also requires special client software, in contrast to the methods of client access as described above with reference to FIGS. 1-2 which can use standard client software.
In general, a data network may have a more complex topology than the example in FIG. 4. A data network may have a multiplicity of cached disk arrays connected to a multiplicity of data movers, and each data mover could be connected to a multiplicity of clients. Some of the clients may have bypass data paths to some of the cached disk arrays, and some of the data movers may have bypass data paths to cached disk arrays containing file systems owned by other data movers. In the general case, however, each data mover can be programmed to respond in a similar fashion to a file access request, which could be a request for data from the file, or a request for metadata about the data in the file. A procedure executed by a data mover for responding to such a file access request is illustrated by the flowchart of FIG. 5.
In a first step 101 of FIG. 5, execution branches depending on whether or not the data mover is the owner of the file system to be accessed. If the data mover is the owner of the file system to be accessed, execution continues from step 101 to step 102. In step 102, execution branches depending on whether or not the file access request is a request for metadata about the file. If the file access request is a request for metadata, then execution continues to step 103 to process the metadata request and to communicate metadata with the requester. If the file access request is not a request for metadata, then execution continues from step 102 to step 104 to process the file access request, and to communicate any read/write data with the requester (i.e., the client or data mover having sent the request to the data mover executing the procedure of FIG. 5). Steps 103 and 104 may each include similar operations of checking the authenticity of the client having originated the request, checking the authority of the client to access the file, and checking whether the client process having originated the request has any required lock on the file to be accessed, and if not, attempting to grant the client process a lock sufficient for the requested file access. For example, the authenticity of the client request is checked by accessing a cache of client attribute data and comparing the client's password in the cache of client attribute data to a password included in the request, and the authority of the client to access the file is checked by accessing a cache of file attribute data and comparing the file access rights in the cache of file attribute data to access rights of the client. If the client request is authenticated, the client is authorized to access the file, and the client has any required lock upon the file, then the specified metadata or read/write data can be exchanged with the requester. After steps 102 or 104, the procedure of FIG. 5 is finished.
In step 101, if the data mover responding to the file access request is not the owner of the file system to be accessed, then execution branches to step 105. In step 105, execution branches depending on whether or not the data mover has a bypass data path to the file system to be accessed. If the data mover does not have a bypass data path to the file system to be accessed, then execution continues from step 105 to step 106. In step 106, the data mover processing the file access request acts as a proxy router for the client or data mover that originated the request. After step 106, the procedure of FIG. 5 is finished. If in step 105 the data mover has a bypass data path to the file system to be accessed, then execution branches from step
105 to step 107. In step 107, the data mover processing the request sends a metadata request to the owner of the file system to be accessed, and uses metadata communicated with the owner to formulate a read/write command to access the file system by communicating read/write data over the bypass path. After step 107, the procedure of FIG. 5 is finished.
II. Using the CIFS Protocol for Sharing Data Sets Among Data Movers
A. General Overview
As described above with reference to FIGS. 1, 4, and 5, a data mover that is not the owner of the file system to be accessed will often receive a file access request from a client. If the data mover is the owner of the file system to be accessed, then the file access request can be handled in the conventional way as in any ordinary file server. If not, then the file access request is forwarded to the owner of the file system. A data mover that receives a file access request from a client and forwards the file access request will be referred to as a Forwarder, and the data mover that owns the file system to be accessed will be referred to as the Owner. In the example of FIG. 1, the file access request is forwarded directly from the Forwarder to the Owner. In the more general case, as described above with reference to FIG. 5, the file access request could be forwarded through one or more additional data movers along a path between the Forwarder and the Owner, and if the file access request is a read or write request, it could be converted to a metadata request by one of the additional data movers.
The forwarding of a file access request is a relatively simple task when using a connectionless communications protocol such as the protocol used by a NFS file server. In a network employing high-speed links and interconnection technology, the delays inherent in a connectionless communications protocol become more pronounced. One way of avoiding these inherent delays is to use a file system protocol that is based on a connectionless communications protocol. For example, the CIFS file system protocol is based on the connection-oriented Transmission Control Protocol (TCP/IP).
By forwarding data access requests between CIFS file servers, the same file system can be accessed by the CIFS clients through different CIFS file servers. The group of CIFS file servers appears to the CIFS clients as a single file server. The group of CIFS file servers, however, may provide enhanced data availability, reliability, and storage capacity.
Besides file access requests (e.g. open, read, write, close, etc.), the CIFS file server recognizes a user session setup request, a file system (dis)connection request, and a session logoff request. In the preferred scheme, the client authentication and identification number allocation is done in the Forwarder. The first forwarded request to the Owner is the file system connection request combined with the client context in the Forwarder and the allocated identification number for this connection. The basic client context is the per client based information including negotiated dialect, user identification numbers, client operating system, connection identification numbers, and maximum network packet size. The extended client context also includes all the open file information. The Owner will use those Forwarder-allocated client and connection identification number and client context from the Forwarder to reconstruct the client context in its own space. The Forwarder accesses file system ownership information to determine the Owner for the data access request, and accesses file server configuration information to determine the Recipient for the data access request.
All the file access requests are transparently forwarded from the Forwarder to the Owner. The file system disconnection and user session logoff requests are both handled in the Forwarder and the Owner. After the Forwarder has done the connection/session clean up, the corresponding request is forwarded to the Owner, and the Owner cleans up the associated client context. Since the tasks of the conventional CIFS file server have been divided into the Forwarder and the Owner parts, both file servers need to support the same set of CIFS dialects, and the Owner must trust the negotiation and authentication done by the Forwarder with the client.
In a conventional CIFS file server, each client context is associated with one TCP network connection to the server. In this fashion, it is easy to identify different client context inside the server. However, in a system that forwards data access requests over TCP connections between data movers, the network connecting the data movers will be jammed by the forwarded data access requests if there is only one TCP connection per client context. To solve this problem, a limited number of open TCP connections are pre-allocated between each Forwarder and Owner pair for the forwarding of file access requests. Based on the network type, there may be an additional fixed number of open TCP connections that are in a standby state in case one of the preallocated open TCP connections has a communication failure.
Multiple clients of a Forwarder requesting the same file system will have their requests sent to the same Owner, and their requests will share the same set of TCP connections between this Forwarder and Owner pair. The number of TCP connections may be much less than the number of client contexts shared by this Forwarder and Owner pair. Virtual channels are constructed inside this set of TCP connections. Each virtual channel corresponds to a client context. The Round Robin method is used to allocate virtual channels within this set of open TCP connections. The virtual channels are identified by the context ID chosen by the Forwarder and the Owner.
For those requests that need to have a dedicated TCP connection, such as the write_raw, read_raw, and trans commands, the TCP connections will be obtained from a pool of pre-opened TCP connections. Once allocated, such a dedicated TCP connection will not be altered or intruded by different clients until the connection is released and returned to the pool. By pre-opening TCP connections and keeping the opened TCP connections in a pool, the peers avoid the connecting and closing delays of TCP connections. The number of TCP connections in the pool can be dynamically adjusted according to the server load.
By using this scheme, the clients will see the file server group as a single server. The availability and reliability is the same as the multiple servers' environment. It is a big benefit for the system administrator to let multiple file servers share the same data set.
B. CIFS Request Sequence Processing by Forwarder and Owner
There is a preferred partitioning between the Forwarder and Owner of the performance of the tasks in the request sequence specified by the CIFS protocol. Following is a summary of the CIFS request sequence as specified by the CIFS protocol, and then an explanation of how the tasks of the standard CIFS request are partitioned between the Forwarder and the Owner.
1. CIFS Request Sequence Specified by the CIFS Protocol
In order to access a file on a server, a client has to: (1) parse the full file name to determine the server name, and the relative name within that server; (2) resolve the server name to a transport address (this may be cached); (3) make a connection to the server (if no connection is already available); and (4) exchange CIFS messages. (Leach, p. 6.) The messages that a client exchanges with a server to access resources on that server are called Server Message Blocks (SMBs). (See Leach, p. 15.)
Every SMB message has a common format, which is illustrated in FIG. 6. The SMB message 110 has a header 111, and the header has a multiplicity of fields. The header starts with a field 113 having a value of 0XFF and the ASCII codes for "SMB." The preamble is followed by a command code 114 specifying the command of the SMB message 110, error codes 115, status codes 116, flags 117, some reserved space 118, some space for a security signature 119, a tree identifier (Tid) field 120, a process identifier (Pid) field 121, a user identifier (Uid) field 122, and a multiplex identifier (Mid) field 123, a word count 124 of a number of following parameter words 125, and a byte count 126 of a number of bytes in a buffer of bytes 127. (See Leach, p.
15-16.)
The Tid represents an instance of an authenticated connection to a server resource. The server returns Tid to the client when the client successfully connects to a resource, and the client uses Tid in subsequent requests referring to the resource. (Leach, p. 17.)
The Pid identifies to the server the "process" that opened a file or that owns a byte range lock. This "process" may or may not correspond to the client operating system's notion of process. (Leach, p. 19.)
The Uid is assigned by the server after the server authenticates the user, and that the server will associate with that user until the client requests the association to be broken. After authentication to the server, the client should make sure that the Uid is not used for a different user than the one that was authenticated. (It is permitted that a single user have more than one Uid.) Requests that do authorization, such as open requests, will perform access checks using the identity associated with the Uid. (Leach, p. 19-20.)
The Mid is used to allow multiplexing the single client and server connection among the client's multiple processes, threads, and requests per thread. Clients may have many outstanding requests at one time. Servers may respond to requests in any order, but a response message must always contain the same Mid value as the corresponding request message. The client must not have multiple outstanding requests to a server with the same Mid. (Leach, p. 20.)
The following illustrates a typical message exchange sequence for a client connecting to a user level server, opening a file, reading its data, closing the file, and disconnecting from the server:
Client Command Server Response 1. SMB_COM_NEGOTIATE Must be the first message sent by client to the server. Includes a list of SMB dialects supported by the client. Server response indicates which SMB dialect should be used. 2. SMB_COM_SESSION_SETUP_ANDX Transmits the user's name and credentials to the server for verification. Successful server response has Uid field set in SMB header used for subsequent SMBs on behalf of this user. 3. SMB_COM_TREE_CONNECT_ANDX Transmits the name of the disk share the client wants to access. Successful server response has Tid field set in SMB header used for subsequent SMBs referring to this resource. 4. SMB_COM_OPEN_ANDX Transmits the name of the file, relative to Tid, the client wants to open. Successful server response includes a file id (Fid) the client should supply for subsequent operations on this file; 5. SMB_COM_READ Client supplies Tid, Fid, file offset, and number of bytes to read. Successful server response includes the requested file data. 6. SMB_COM_CLOSE Client closes the file represented by Tid and Fid. Server responds with success code. 7. SMB_COM_TREE_DISCONNECT Client disconnects from resource represented by Tid.
By using a CIFS request batching mechanism (called the "AndX" mechanism), the second to sixth messages in this sequence can be combined into one, so there are really only three round trips in the sequence, and the last one can be done asynchronously by the client. (Leach. p. 7-9.)
2. CIFS Request Sequence for Request Forwarding
With reference to FIG. 7, there is shown a flowchart of a preferred method of processing the CIFS request sequence by allocation of tasks between the Forwarder and the Owner. In a first step 131, in response to a file access request from a client, the network opens a TCP connection between the client and the server for NETBIOS transport over the TCP connection. As described in Leach, Appendix A, p. 119-120, this includes resolving the server name in the client request to an IP address of the Forwarder, and establishing a connection between the client and the Forwarder if a connection has not already been set up. Connection establishment is done using the NETBIOS session service, which requires the client to provide a "calling name" and a "called name."
In step 132, the Forwarder responds to a SMB_COM_NEGOTIATE message from the client. The response from the Forwarder to the client indicates which SMB dialect should be used.
In step 133, the Forwarder responds to a SMB_COM_SESSION_SETUP_ANDX message from the client. In this message, the client transmits a user name and credentials to the Forwarder for verification. If the Forwarder is successful in verifying the user name and credentials, then the Forwarder returns a response that has the Uid field set in the SMB header. The client uses the value in the UID field for subsequent SMBs to the Forwarder, until the session is closed. The value in the Uid field indicates a particular one of possible multiple sessions inside the TCP connection between the Forwarder and the client.
In step 134, the forwarder responds to a SMB_COM_TREE_CONNECT_ANDX message from the client. The client transmits the name of the file system that the client wants to access. (In the jargon of the CIFS specification, the file system is referred to as a "disk share".) If the client may access the file system, then the Forwarder returns a response that has the tree identification (Tid) field set in the SMB header set to a Tid value used for subsequent SMBs referring to this file system. Since it is the Owner of the file system that maintains the attributes of the file system determining whether or not the particular client may access the file system, the Owner performs a step 135 providing assistance to the Forwarder in responding to the client. In step 134, however, the Forwarder maintains responsibility for allocating the Tid value, and the Owner will use the Uid and the Tid assigned by the Forwarder as the index of an Access_Credential object, and a connection object defining a connection between the Forwarder and the Owner for client session access of the file system. The Access_Credentials object includes the user credentials that were received from the client in the SMB_COM_SESSION_SETUP_ANDX message and then authenticated by the Forwarder in step 133.
The connection between the Owner and the Forwarder is established during step 134 in the procedure of the Forwarder and at the beginning of step 135 in the procedure of the Owner. To establish the connection between the Owner and the Forwarder, the Forwarder sends a message to the Owner. The transmission of the message is indicated schematically by a dashed line arrow from step 134 to step 135.
In general, the transmission of a message from the Forwarder to the Owner is indicated in FIG. 7 by a dashed line arrow. In general, the Owner may receive SMB messages from clients as well as SMB messages forwarded by other data movers. It is possible that a single link in the data network could convey SMB messages from clients as well as SMB messages from other clients, although it is also possible that the SMB messages transmitted to an Owner from other data movers could be transmitted over one or more dedicated network links that do not convey any SMB messages transmitted directly from clients. It is advantageous to set some of the reserved bytes (118 in FIG. 6) in the SMB message header with a code to indicate whether an SMB message has been transmitted directly from a client or has been transmitted from another data mover. For example, if an SMB message has been transmitted directly from a client, the reserved bytes are set to zero, and if an SMB message has been transmitted from another data mover, then the reserved bytes are set to a non-zero code, such as 0XFE `EMC`.
The access of files in the file system occurs in step 136 of the procedure of the Forwarder, and in step 137 in the procedure of the Owner. In step 137, the Forwarder passes a series of conventional CIFS file access commands from the client to the Owner in a fashion transparent to the client. The series of conventional CIFS file access commands includes, for each file in the file system to be accessed, an SMB_COM_OPEN request, one or more SMB_COM_READ or SMB_COM_WRITE requests, and an SMB_COM_CLOSE request. Any number of files in the file system could be opened for the client at any given time for reading or writing.
The file access commands in the series are transparently passed through the Forwarder and then processed by the Owner. In an SMB_COM_OPEN request, the client specifies the name of the file, relative to the Tid, that the client wants to open. If the Owner can open the file, the Owner returns a response indicating a file id (Fid) that the client should supply for subsequent operations on this file. The Forwarder receives the response from the Owner, and forwards the response to the client.
In an SMB_COM_READ or SMB_COM_WRITE request, the client supplies Tid, Fid, a file offset, and the number of bytes to be read or written. For the SMB_COM_WRITE request, the client also supplies the data to be written. If the Owner is successful in performing the requested read operation, then the Owner returns a response to the client that includes the requested file data. If the Owner is successful in performing the requested write operation, then the Owner returns a response to the client that the data was written. The Forwarder receives the response from the Owner, and forwards the response to the client.
In an SMB_COM_CLOSE request, the client requests the file represented by Tid and Fid to be closed. The Forwarder transparently passes this request to the Owner. The Owner responds with a success code. The Forwarder receives the response from the Owner, and forwards the response to the client.
In step 138, the Forwarder receives a SMB_COM_TREE_DISCONNECT request from the client. In response, the Forwarder disconnects the client from the resource represented by Tid. The Forwarder also transmits the SMB_COM_TREE_DISCONNECT request to the Owner, and in step 139 the Owner also disconnects the client represented by Tid. In other words, step 138 involves deallocating state memory used in the Forwarder in step 134 for establishing the relationship between the client and the resource represented by Tid, and step 139 involves deallocating state memory used in the Owner in step 135 for establishing the relationship between the client and the resource represented by Tid.
In step 140, the Forwarder receives a SMB_COM_LOGOFF_ANDX request from the client. In response, the Forwarder performs the inverse of the SMB_COM_SESSION_SETUP_ANDX operation of step 133. The user represented by Uid in the SMB header is logged off. The Forwarder closes all files currently open by this user, and invalidates any outstanding requests with this Uid. For closing all files that are currently opened by this user but not owned by the Forwarder, the Forwarder also sends a SMB_COM_LOGOFF_ANDX request to each Owner of any files that are not owned by the Forwarder. In response, in step 141, the Owner closes all files that it owns that are currently open by this user, and invalidates any outstanding requests with this Uid.
Upon completion of step 140, the Forwarder performs a TCP_CLOSE operation in step 142. The Forwarder closes the TCP connection between the client and the server. The Forwarder also sends a SMB_CONTEXT_CLOSE message to the Owner. In response, in step 143 the Owner closes the connection that was established in steps 134 and 135 between the Forwarder and the Owner for access of the client to resources owned by the Owner. This involves deallocating memory in the Owner that had been allocated in step 135 for storing stream context information associated with the client.
In general, there is one stream context per client TCP connection. The stream context is distributed among the Forwarder and the Owners of the file systems to be accessed by the client and that are not owned by the Forwarder. Only at tree connection time (step 134 in FIG. 7) does the Forwarder know to where the file access requests are to be forwarded. Thus, all the CIFS servers in the group need to support the same set of dialects, and trust the negotiation and authentication done by the Forwarder prior to the tree connection time.
Since the SMB message protocol of CIFS is a statefull protocol, the Forwarder cannot merely forward SMB messages to the Owner. In order for the Owner to properly interpret the SMB_COM_TREE_CONNECT message in step 135 and the subsequent SMB messages from the client, the Owner needs some state information of the Forwarder from the steps 131-133 prior to the tree connection time in step 134. Moreover, subsequent to the tree connection time in step 124, state information of the Forwarder that is relevant to the processing of the SMB messages by the Owner may be changed by the Forwarder's processing of a SMB message from the client that is not merely passed through to the Owner.
As shown in FIG. 8, if any new state information of the Forwarder 151 that is relevant to the stream context of a SMB message 153 to be transmitted to the Owner, then the Forwarder appends a server state header 154 containing the new stream context information to the SMB message 153, and the Forwarder transmits the combination of the server state header 154 and the SMB message to the Owner. For example, in step 134 of FIG. 7, the Forwarder appends to the SMB message SMB_COM_TREE_CONNECT a server state header identifying the remote architecture of the client (e.g., Windows, NT, etc.) , the SMB protocol dialect, the maximum SMB message packet size, and session related information including the Uid and Tid allocated by the Forwarder, and the Access_Credentials object associated with the Uid.
With reference to FIG. 9, there is shown a flowchart of programming in a data mover for processing a SMB message received from a client. In a first step 161, the data mover determines whether or not the command in the SMB message is a remote command or a local command. The command is a remote command if it accesses a file system that is not owned by the data mover. Some commands, such as SMB_COM_NEGOTIATE and SMB_COM_SESSION_SETUP_ANDX, may not have an associated file system and therefore they are local commands. In a similar fashion, some miscellaneous commands have nothing to do with data storage, and therefore they are local commands. For a command having an associated file system, the data mover accesses a file system mapping table in memory of the data mover to determine the owner of the file system. If the data mover is the owner, then the command is a local command. Otherwise, the command is a remote command. If the command is a remote command, then execution branches from step 161 to remote command processing in step 162, where the remote command is processed as will be further described below with reference to FIG. 10. If the command is a local command, then execution continues from step 161 to local command processing in step 163. This local command processing can be done in a conventional fashion. By inspecting the command code in the SMB message, execution is directed to a respective routine for processing the command. As shown in FIG. 9, for example, there are routines 164 for establishing a session stream with the client (NetBIOS_SR, NegProt, Session_Setup_AndX), a Tree_Connect routine 165, a Tree_Disconnect routine 166, Read_Raw and Write_Raw routines 167, a Logoff_AndX routine 168, file access routines 169
including Open, Read, Write, and Close, and routines 170 for miscellaneous commands, such as data access commands from a peripheral data processing device in the data network.
With reference to FIG. 10, there is shown a flowchart for processing of the remote SMB commands. By inspecting the command code in the SMB message in step 162, execution is directed to a respective routine for processing the command. For example, there is a Tree_Connect routine 181, a Tree_Disconnect routine 182, Read_Raw and Write_Raw routines 183, a Logoff AndX routine 184, a routine for transparent passthrough of the SMB messages for Open, Read, Write, and Close commands 185, and routines 186 for miscellaneous commands, such as data access commands from a peripheral data processing device in the data network. As described above with respect to FIG. 7, the Tree_Connect routine 181, Tree_Disconnect routine 182, the Read Raw and Write Raw routines 183, and the Logoff And_X routine 184 perform some local processing and then forward the corresponding SMB message to the file system Owner. The miscellaneous routines 186 may function in a similar manner or be passed through to the Owner as appropriate.
As shown in FIG. 11, the Owner is programmed with a procedure for inspecting the message packets that it receives from a Forwarder, in order to determine whether or not it receives an SMB message packet with or without a server state header. In step 191, the prefix of the message packet is inspected to determine whether it is the prefix of an SMB message or the prefix of a server state header. For example, an SMB message has a prefix value of 0XFF `SMB`, and a server state header has a prefix value of 0XFF `EMC`. If the message packet has a server state header prefix, then execution branches from step 191 to step 192. In step 192, the Owner loads the new stream context information from the server state header into the Owner's state memory, and execution continues to step 193. In step 191, if the message packet has a SMB message prefix, then execution continues from step 191 to step 193. In step 193, the SMB message is processed by the Owner, and the message processing task is finished. In this fashion, the programming of the Owner for step 193 is considerably simplified since the Owner can interpret the command of the SMB message in a conventional fashion similar to the local command processing in FIG. 9.
With reference to FIG. 12, there is shown a block diagram of the data mover 81 including programming for forwarding CIFS data access requests for accessing a file system not owned by the data mover. The data mover 81 has conventional hardware components inc