Bootstrapping Vinum: A Foundation for Reliable Servers
Prev |  | Next

# B. Manual Vinum Bootstrapping

The `bootvinum` Perl script in Appendix A makes life easier, but it may be necessary to manually perform some or all of the steps that it automates. This appendix describes how you would manually mimic the script.

1. Make a copy of `/etc/fstab` to be customized.

       # cp /etc/fstab /etc/fstab.vinum

2. Edit `/etc/fstab.vinum`.

   1. Change the `device` column of non-root partitions on the root spindle to `/dev/vinum/mnt`.

   2. Change the `pass` column of non-root partitions on the root spindle to `2`, `3`, etc.

   3. Delete any lines with mountpoint matching `/NOFUTURE*`.

   4. Change the `device` column of `/rootback` from `e` to `a`.

   5. Change the `pass` column of `/rootback` to `1`.

3. Prepare disklabels for editing:

       # cd /bootvinum
       # disklabel ad0s1 > disklabel.ad0s1
       # cp disklabel.ad0s1 disklabel.ad0s1.b4vinum
       # disklabel ad2s1 > disklabel.ad2s1
       # cp disklabel.ad2s1 disklabel.ad2s1.b4vinum

4. Edit `/etc/disklabel.ad?s1`.

   1. On the root spindle:

      1. Decrease the `size` of the `b` partition by 265 blocks.

      2. Note the `size` and `offset` of the `a` and `b` partitions.

      3. Note the smallest `offset` for partitions `d`-`h`.

      4. Note the `size` and `offset` for all non-root, non-swap partitions (`/home` was probably on `e` and `/usr` was probably on `f`).

      5. Delete partitions `d`-`h`.

      6. Create a new `h` partition with `offset` 265 blocks less than the smallest `offset` for partitions `d`-`h` noted above. Set its `size` to the `size` of the `c` partition less the smallest `offset` for partitions `d`-`h` noted above + 265 blocks.

         > Note: Vinum can use any partition other than `c`. It is not strictly necessary to use `h` for all your Vinum partitions, but it is good practice to be consistent across all spindles.

      7. Set the `fstype` of this new partition to `vinum`.

   2. On the rootback spindle:

      1. Move the `e` partition to `a`.

      2. Verify that the `size` of the `a` and `b` partitions matches the root spindle.

      3. Note the smallest `offset` for partitions `d`-`h`.

      4. Delete partitions `d`-`h`.

      5. Create a new `h` partition with `offset` 265 blocks less than the smallest `offset` noted above for partitions `d`-`h`. Set its `size` to the `size` of the `c` partition less the smallest `offset` for partitions `d`-`h` noted above + 265 blocks.

      6. Set the `fstype` of this new partition to `vinum`.

5. Create a file named `create.YouCrazy` that contains:

       drive YouCrazy device /dev/ad0s1h
       volume home
         plex name home.p0 org concat volume home
           sd name home.p0.s0 drive YouCrazy plex home.p0 len $hl driveoffset $ho
       volume usr
         plex name usr.p0 org concat volume usr
           sd name usr.p0.s0 drive YouCrazy plex usr.p0 len $ul driveoffset $uo

   Where:

   - `$hl` is the length noted above for `/home`.

   - `$ho` is the offset noted above for `/home` less the smallest offset noted above + 265 blocks.

   - `$ul` is the length noted above for `/usr`.

   - `$uo` is the offset noted above for `/usr` less the smallest offset noted above + 265 blocks.

6. Create a file named `create.UpWindow` containing:

       drive UpWindow device /dev/ad2s1h
         plex name home.p1 org concat volume home
           sd name home.p1.s0 drive UpWindow plex home.p1 len $hl driveoffset $ho
         plex name usr.p1 org concat volume usr
           sd name usr.p1.s0 drive UpWindow plex usr.p1 len $ul driveoffset $uo

   Where `$hl`, `$ho`, `$ul`, and `$uo` are set as above.

Prev | Home | Next
bootvinum Perl Script |  | Acknowledgements