| DS(3) | Library Functions Manual | DS(3) |
ds - compound device subsystems
bind -b #k /dev /dev/ds /dev/ds/ctl /dev/ds/...
Ds builds complex block storage subsystems out of simpler ones. Inspired by the Plan 9 file server kernel's configuration strings, it provides device mirroring, partitioning, interleaving, and catenation for block-oriented file systems.
It serves a two-level directory. The top level contains a single directory ds, which contains a control file ctl and one file per configured device.
The control messages each introduce a new device, here named new. The file arguments are interpreted in the name space of the writer.
If the variable fsconfig is set in plan9.ini(8) then ds will read its configuration from the file $fsconfig on the first attach. This is useful when the machine boots from a local file server that uses fs.
Mirror the two disks /dev/sdC0/data and /dev/sdD0/data as /dev/ds/m0; similarly, mirror /dev/sdC1/data and /dev/sdD1/data as /dev/ds/m1:
echo mirror m0 /dev/sdC0/data /dev/sdD0/data >/dev/ds/ctl
echo mirror m1 /dev/sdC1/data /dev/sdD1/data >/dev/ds/ctl
Interleave the two mirrored disks to create /dev/ds/data:
echo inter data /dev/ds/m0 /dev/ds/m1 >/dev/ds/ctl
Run kfs (4) on the interleaved device:
disk/kfs -f /dev/ds/data
Save the configuration:
cp /dev/ds/ctl /dev/fd0disk
To load the configuration automatically at boot time, add this to
plan9.ini:fsconfig=/dev/fd0disk
/os/port/devds.c
Should be able to select block size for interleaved devices.