FS(3)                                                       FS(3)

     NAME
          fs - file system devices

     SYNOPSIS
          bind -b #k /dev

          /dev/fs
          /dev/fs/ctl
          /dev/fs/...

     DESCRIPTION
          The fs driver builds complex disk files out of simpler disk
          files. Inspired by the Plan 9 file server kernel's configu-
          ration strings, it provides device mirroring, partitioning,
          interleaving, and catenation for disk-based services like
          kfs(4) or venti(8).

          The device is intended to be bound at /dev and contains a
          directory named fs, which in turn contains a ctl file and
          one file per configured device.

          Most control messages each introduce a new device, here
          named new. The file arguments are interpreted in the name
          space of the writer.

          cat new files...
               The device new corresponds to the catenation of files.

          inter new files...
               The device new corresponds to the block interleaving of
               files; an 8192-byte block size is assumed.

          mirror new files...
               The device new corresponds to a RAID-1-like mirroring
               of files. Writes to new are handled by sequentially
               writing the same data to the files from right to left
               (the reverse of the order in the control message).  A
               failed write causes an eventual error return but does
               not prevent the rest of the writes to the other devices
               of the mirror set.  Reads from new are handled by
               sequentially reading from the files from left to right
               until one succeeds.  The length of the mirror device is
               the minimum of the lengths of the files.

          part new file offset length
               The device new corresponds to the length bytes starting
               at offset in file. If offset+length reaches past the
               end of file, length is silently reduced to fit.

          clear

     Page 1                       Plan 9             (printed 5/19/12)

     FS(3)                                                       FS(3)

               Discard all fs device definitions.

          If the variable fsconfig is set in plan9.ini(8) then fs 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.

     EXAMPLE
          Mirror the two disks /dev/sdC0/data and /dev/sdD0/data as
          /dev/fs/m0; similarly, mirror /dev/sdC1/data and
          /dev/sdD1/data as /dev/fs/m1:

               echo mirror m0 /dev/sdC0/data /dev/sdD0/data >/dev/fs/ctl
               echo mirror m1 /dev/sdC1/data /dev/sdD1/data >/dev/fs/ctl

          Interleave the two mirrored disks to create /dev/fs/data:

               echo inter data /dev/fs/m0 /dev/fs/m1 >/dev/fs/ctl

          Run kfs(4) on the interleaved device:

               disk/kfs -f /dev/fs/data

          Save the configuration:

               cp /dev/fs/ctl /dev/fd0disk

          To load the configuration automatically at boot time, add
          this to plan9.ini:

               fsconfig=/dev/fd0disk

     SEE ALSO
          read in cat(1), dd(1), sd(3), kfs(4), fs(8), plan9.ini(8),
          prep(8), venti(8)

     SOURCE
          /sys/src/9/port/devfs.c

     BUGS
          Mirrors are RAID-like but not RAID.  There is no fancy
          recovery mechanism and no automatic initial copying from a
          master drive to its mirror drives.

          Each write system call on ctl may transmit at most one com-
          mand.

     Page 2                       Plan 9             (printed 5/19/12)