Why you shouldn't share disk resources in a SAN
I have connected the same SCSI
disk across two hosts, giving both hosts as exclusive logins. My SCSI disk is detected and visible from both initiators. Now, when I write a file from initiator 1 to the disk, and force a bus reset, initiator 2 can't see the file. Is there any way to force the initiator to reread the disk from the initiator instead of reading from the cache?
It is not recommended to share disk resources in a SAN
(or a SCSI chain) unless there is some form of intelligent locking mechanism underlying the access to the disks. Usually, a form of clustering technology is used to provide that functionality. Windows-based servers could use MSCS (Microsoft Cluster Server) to provide that intelligence, and Unix-based servers can use solutions like VCS (Veritas Cluster Server) or the integrated clustering technology within the operating system itself (if applicable).
Without this software layer, the problem with what you are trying to accomplish is that operating systems generally do not like multiple writers to a single target without locking, since each OS wants the disk resource as its own. Also, most operating systems utilize a form of file system caching within system memory. You could turn off file system caching on the OS, but if one server happens to change the underlying inode structure of the disks, the other OS sharing that disk may crash.
You have two options for what you are trying to do:
- Use a NAS protocol like CIFS and NFS over Ethernet to access the shared "files" on the disk.
- If block access is required, implement a clustering solution on your servers.
This was first published in October 2004