The Clockwise real-time file server installation manual
Clockwise currently runs on a 200MHz Pentium-Pro, with Linux 2.2.1.
It is able to schedule Seagate Cheetah disks (although I have
available the settings for Quantum Atlas-II disks). I use NCR53C875
Ultra-Wide SCSI controllers to connect the disks.
- Install Linux 2.2.1 on a machine and configure the machine such
that Clockwise can use a free SCSI controller and disks. I.e. use a
seperate disk and controller for the root partition.
- Patch Linux 2.2.1 with this patch
file. This patch contains fixes for the standard NCR SCSI driver and
it installs code that allows Clockwise to retrieve the physical
address of a virtual address.
- Install and build the latest
Clockwise version and compile the tree. Some utilities assume that
ATM is available. If this is not the case, building the utilities
will fail.
- Make sure that the device driver number 60 is free (for both the
character and block devices).
- Install Clockwise in the kernel and make it available for yourself:
- insmod $CW/cw/driver/clockwise.o
- mknod /dev/clockwise c 60 255
$CW represents the base Clockwise directory.
- Inform Clockwise of the scheduling parameters. If you use
Seagate Cheetahs, you can use the distributed numbers:
- $CW/cwgeom/cwgeom -v -g st19101w
If you use a different disk you need to construct this file yourself.
If you need to do this, I appreciate it if you can send me the
scheduling files so I can add them to the distribution.
- Install superblocks on the Clockwise disks. NOTE THAT THIS WILL
DESTROY ANY EXISTING FILE SYSTEM ON THE DISKS!!! To write a
superblock to a four disk configuration (e.g. on /dev/sd[b-e]) use:
- $CW/cwsb/cwwsb /dev/sdb 0 0 0 2048 8600 0 0xF
- $CW/cwsb/cwwsb /dev/sdc 0 0 1 2048 8600 0 0xF
- $CW/cwsb/cwwsb /dev/sdd 0 0 2 2048 8600 0 0xF
- $CW/cwsb/cwwsb /dev/sde 0 0 3 2048 8600 0 0xF
This writes superblocks to all disks so that the the FTAB and FDISK
are on logical disk 0, block 0, /dev/sdb is logical disk 0, /dev/sdc
is logical disk 1 (etc), each disk uses a block size of 2048 sectors
of 512 bytes and there are 8600 blocks of 2048 sectors available. The
last two parameters represent a bitmap of all disks.
- Construct a configuration file that represents your Clockwise
hardware. The file $CW/cwd/config represents my environment:
/dev/sd[b-e] are 4 Seagate Cheetahs on two NCR SCSI controllers. In
my case /dev/sda is a private SCSI disk on a free SCSI controller.
- Start the Clockwise deamons:
This utility will fork a deamon for each disk and finally tell all
disk deamons to start serving requests.
- If all is well, Clockwise now runs.
- To verify this, try to allocate a dynamic partition:
- $CW/cw/cwreserve usr0 100 1 0 0xF 0
This command creates a dynamic partition under the name usr0, it has a
size of 100 dynamic partition blocks (of 2048 sectors), each disk has
1 consecutive dynamic partition block (so, block 0 is on disk 0, block
1 is on disk 1, etc.) and all disks are to be used during the
reservation.
- The dynamic partition can now be listed with:
- $CW/cwls/cwls
- $CW/cwusage/cwusage
The dynamic partition can now be made available to Linux:
- mkdir /dev/cw_dir
- mknod /dev/cw_dir/b_usr0 b 60 0
- mknod /dev/cw_dir/c_usr0 c 60 0
The minor device 0 shows up in cwls.
- To install and mount an EXT2 file system in the created dynamic
partition, use:
- mkfs /dev/cw_dir/b_usr0
- mkdir /mnt/usr0
- mount /dev/cw_dir/b_usr0 /mnt/usr0
At this point, you are in business and you can create dynamic
partitions for real-time transfers. The directory
$CW/videofs contains a bunch of examples and utilities to
play or record continuous media streams.