Hi,
I have a storage device (hard disk) that is accessable from more then one
machine in the same time (let’s assume it’s a SCSI hard disk on shared SCSI
bus). While the device is only readen everything is OK, but how can I make
this device writable by more then one client in the same time? How to keep
the file caches consistant? Any ideas? Anybody works with clusters here?
File system drive will not work I need to use existing one (maybe modified
with filter driver but I’d prefer not to do so…)
Regards,
Anton
P.S. For now I do store the written data in the different space so the hard
disk is “partially shared”. Only the data that was never touched by
writing.
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
A few thoughts:
- You MUST have an efficient distributed lock manager. Without that,
forget it.
- You need something more tightly coupled than NT ever will be.
Take a look at the VMS Clusters. They had the technology 15 to 20 years
ago. NT could have had this technology, but M$ rejected it. In fact, DEC
did a cluster for NT and sold it for a while until MS pulled the plug on
them. I’m sorry, but I think you are SOL for the level of clustering you
want with NT.
Greg
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Anton Kolomyeytsev
Sent: Wednesday, February 20, 2002 12:00 AM
To: NT Developers Interest List
Subject: [ntdev] How to share storage device on logical block access
level?
Hi,
I have a storage device (hard disk) that is accessable from more then one
machine in the same time (let’s assume it’s a SCSI hard disk on shared SCSI
bus). While the device is only readen everything is OK, but how can I make
this device writable by more then one client in the same time? How to keep
the file caches consistant? Any ideas? Anybody works with clusters here?
File system drive will not work I need to use existing one (maybe modified
with filter driver but I’d prefer not to do so…)
Regards,
Anton
P.S. For now I do store the written data in the different space so the hard
disk is “partially shared”. Only the data that was never touched by
writing.
You are currently subscribed to ntdev as: xxxxx@pdq.net
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
This problem sounds familiar. In good old days, in 1991, I wrote
a program that allowed to access PC HDD from another PC, on
per-sector basis. It was very simple - the “client” had a block
device driver for virtual disk, the “server” had a TSR program that
did HDD access. They communicated through serial ports or Novell IPX.
I had the same problem as you are having now. I never solved it
completely. However, I did honest attempts to investigate it and even
added to the TSR program an ability to mark DOS disk cache buffers as
“invalid”, to make DOS re-read the sectors the TSR has modified. This
did not solve the problem that happens when both machines write to the
disk simultaneously, but at least made the changes visible on the
“server” machine.
You need a way to make every FS that uses your shared storage aware
of changes other FS’es make and make sure the FS doesn’t get confused
if the data on the disk change “by themselves”. Whether this can be
done depends solely on the design of the involved FS drivers. I’m not
sure any of Microsoft FS drivers are capable of tolerating this,
because it seems Microsoft made up its mind long ago on how it wants
the disks to be shared and decided they will be shared by a driver
*above* FS, and they have been providing this driver for a very
long time. Then why would they bother to have the ability you need
in their FS drivers? That’s just my speculation, though. Hope that
somebody not as ignorant as myself will step in and explain that
Microsoft has yet another way to share disks…
— Anton Kolomyeytsev wrote:
> Hi,
>
> I have a storage device (hard disk) that is accessable from more then one
> machine in the same time (let’s assume it’s a SCSI hard disk on shared SCSI
> bus). While the device is only readen everything is OK, but how can I make
> this device writable by more then one client in the same time? How to keep
> the file caches consistant? Any ideas? Anybody works with clusters here?
> File system drive will not work I need to use existing one (maybe modified
> with filter driver but I’d prefer not to do so…)
>
> Regards,
> Anton
>
> P.S. For now I do store the written data in the different space so the hard
> disk is “partially shared”. Only the data that was never touched by
> writing.
>
> —
> You are currently subscribed to ntdev as: xxxxx@yahoo.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
__________________________________________________
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com
—
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
This is the wholly grail of a SAN oriented file system. When you solve
this you will be a very rich person 
There is no way, without complex software, to do this. The problem is
there is no way to coordinate multiple updaters and verify the cache on
each machine.
Jamey
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Anton Kolomyeytsev
Sent: Wednesday, February 20, 2002 12:00 AM
To: NT Developers Interest List
Subject: [ntdev] How to share storage device on logical block access
level?
Hi,
I have a storage device (hard disk) that is accessable from more then
one
machine in the same time (let’s assume it’s a SCSI hard disk on shared
SCSI
bus). While the device is only readen everything is OK, but how can I
make
this device writable by more then one client in the same time? How to
keep
the file caches consistant? Any ideas? Anybody works with clusters here?
File system drive will not work I need to use existing one (maybe
modified
with filter driver but I’d prefer not to do so…)
Regards,
Anton
P.S. For now I do store the written data in the different space so the
hard
disk is “partially shared”. Only the data that was never touched by
writing.
You are currently subscribed to ntdev as: xxxxx@storagecraft.com To
unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Even if you flush the read cache on all computers, there is no way to
coordinate updates.
Suppose machine (a) writes to block 100 and a few seconds later, machine
(b) updates block 100 - 200 while machine (c) is updating block 150. As
you can see the FSD will soon get completely corrupt and confused.
There needs to be a distributed lock manager. See GFS and its source
code. They take advantage of hardware DLOCKS (a SCSI extension) and they
also have a method for emulating DLOCKS using TCP/IP and a lock table in
memory.
Jamey
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ntdev Reader
Sent: Wednesday, February 20, 2002 6:57 AM
To: NT Developers Interest List
Subject: [ntdev] Re: How to share storage device on logical block access
level?
This problem sounds familiar. In good old days, in 1991, I wrote a
program that allowed to access PC HDD from another PC, on per-sector
basis. It was very simple - the “client” had a block device driver for
virtual disk, the “server” had a TSR program that did HDD access. They
communicated through serial ports or Novell IPX. I had the same problem
as you are having now. I never solved it completely. However, I did
honest attempts to investigate it and even added to the TSR program an
ability to mark DOS disk cache buffers as “invalid”, to make DOS re-read
the sectors the TSR has modified. This did not solve the problem that
happens when both machines write to the disk simultaneously, but at
least made the changes visible on the “server” machine.
You need a way to make every FS that uses your shared storage aware of
changes other FS’es make and make sure the FS doesn’t get confused if
the data on the disk change “by themselves”. Whether this can be done
depends solely on the design of the involved FS drivers. I’m not sure
any of Microsoft FS drivers are capable of tolerating this, because it
seems Microsoft made up its mind long ago on how it wants the disks to
be shared and decided they will be shared by a driver
*above* FS, and they have been providing this driver for a very long
time. Then why would they bother to have the ability you need in their
FS drivers? That’s just my speculation, though. Hope that somebody not
as ignorant as myself will step in and explain that Microsoft has yet
another way to share disks…
— Anton Kolomyeytsev wrote:
> Hi,
>
> I have a storage device (hard disk) that is accessable from more then
> one
> machine in the same time (let’s assume it’s a SCSI hard disk on shared
SCSI
> bus). While the device is only readen everything is OK, but how can I
make
> this device writable by more then one client in the same time? How to
keep
> the file caches consistant? Any ideas? Anybody works with clusters
here?
> File system drive will not work I need to use existing one (maybe
modified
> with filter driver but I’d prefer not to do so…)
>
> Regards,
> Anton
>
> P.S. For now I do store the written data in the different space so the
> hard
> disk is “partially shared”. Only the data that was never touched by
> writing.
>
> —
> You are currently subscribed to ntdev as: xxxxx@yahoo.com To
> unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
__________________________________________________
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com
—
You are currently subscribed to ntdev as: xxxxx@storagecraft.com To
unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
—
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
DEC DID it nearly 20 years ago! Look at the technology there. The key was
an efficient distributed lock manager and a RECORD (not just file)
management system built into the OS, instead of a GUI.
Greg
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Jamey Kirby
Sent: Wednesday, February 20, 2002 9:52 AM
To: NT Developers Interest List
Subject: [ntdev] RE: How to share storage device on logical block access
level?
This is the wholly grail of a SAN oriented file system. When you solve
this you will be a very rich person 
There is no way, without complex software, to do this. The problem is
there is no way to coordinate multiple updaters and verify the cache on
each machine.
Jamey
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Anton Kolomyeytsev
Sent: Wednesday, February 20, 2002 12:00 AM
To: NT Developers Interest List
Subject: [ntdev] How to share storage device on logical block access
level?
Hi,
I have a storage device (hard disk) that is accessable from more then
one
machine in the same time (let’s assume it’s a SCSI hard disk on shared
SCSI
bus). While the device is only readen everything is OK, but how can I
make
this device writable by more then one client in the same time? How to
keep
the file caches consistant? Any ideas? Anybody works with clusters here?
File system drive will not work I need to use existing one (maybe
modified
with filter driver but I’d prefer not to do so…)
Regards,
Anton
P.S. For now I do store the written data in the different space so the
hard
disk is “partially shared”. Only the data that was never touched by
writing.
You are currently subscribed to ntdev as: xxxxx@storagecraft.com To
unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: xxxxx@pdq.net
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> this device writable by more then one client in the same time? How to keep
the file caches consistant?
A great task. I don’t think it is solvable without a custom filesystem.
Search the web for “Frangipani” for a sample documentation.
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> There is no way, without complex software, to do this. The problem is
there is no way to coordinate multiple updaters and verify the cache on
each machine.
Oplock thing from SMB - but extended to sector level - can be a good starting point.
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Thanks to everybody for pointing me good starting point! -)
Anton
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com