Zbr's days.
August
Sun Mon Tue Wed Thu Fri Sat
     
14
 
2007
Months
Aug

About :: TODO :: Blog :: RSS :: Old blog :: Projects :: GIT :: Gallery :: Notes

Tue, 14 Aug 2007

New release of the distributed storage subsystem.

I've just completed testing of the following complex setup, which I think is a good milestone for the project.

One system has 10 local devices, each of which is a mirror device on top of two remote systems. All 10 devices are combined into single linear device, which is exported as a local target to remote machine, where that device was added into linear device with another remote system, and resulted device was tested by performing different IO tasks.
So, roughly it looks like this:

DST setup diagram

Main feature of the new release is mirroring to any number of devices with automatic reconnection to remote nodes when it is ready after a crash and resync. Reconnection is a feature of the distributed storage core and does not depend on algorithm being used. Resync bitmap can have various size, so with some compilers it might not compile, I'm considering to move to per-block bitmask in the next release. Because of this feature resync can be inaccurate (i.e. partial if less than a page was written to the device before resync is completed), and thus it will be rescheduled.
Another feature for the next release is documentation (excertpts from blog mostly and overall design, since it looks like (quite big for me amount of) comments in code is not enough).

/devel/dst :: Link / Comments (2)


Strange math in kernel.

During heavy testing of the mirroring code in the distributed storage (200 remote nodes and one local form a mirror, which is pretty slow just because 200 nodes are separated between two physical devices, each one has 100 process accessing each own's file in random order, I can not test 1000 nodes since it will be too slow, try to put 1000 active readers/writes over 1000 5mb files in your desktop, for 100 processes my LA is about 77) I found following problem.
To select an index in the dirty bitmap code gets a sector and devides it to chunk size, so I calculate this:

 request start: 7 segments
 rest of the data: 0 segments
 chunk size: 8 segments
 index: (7 - 0) / 8 = 2305843009213693951
Which is 0x1fffffffffffffff. It happens quite rarely, and this problem does not hurt anything, and in future I plan to move to sector-sized chunks, instead of dynamically sized, so dividing will be eliminated, but right now it sometimes fires in dmesg.

/devel/other :: Link / Comments (0)


Kevent has been removed from kernel summit agenda.

As long as other event delivery mechanisms, seems things settled down and everyone is happy.

/devel/kevent :: Link / Comments (0)


Spam.

I got a mail with following header:

POSIX and up able to recognize all three formats, and let older GNU tar fade out slowly.
I also regulary get excerpts from clasical literature (in english and russian). What next, parts of kernel code?
Although it failed to get through spam filters...

/other :: Link / Comments (0)