What to do if you have problems with Vinum

What to do if you have problems with Vinum

If you have problems with Vinum, it could be due to misunderstanding the setup, or it could be a bug. This page describes some of the more common pitfalls of setting up Vinum and then describes the state of the known bugs.

Setup problems

The following list of GOTCHAs comes from the man page vinum(8), which may be more up to date:
  1. vinum drives are UNIX disk partitions and should have the partition type vinum. This is different from ccd, which expects partitions of type 4.2BSD. This behaviour of ccd is an invitation to shoot yourself in the foot: with ccd you can easily overwrite a file system. vinum will not permit this. See the man page for details of how to set the partition type.

    For similar reasons, the vinum start command will not accept a drive on partition c. Partition c is used by the system to represent the whole disk, and must be of type unused. Clearly there is a conflict here, which vinum resolves by not using the c partition.

  2. When you create a volume with multiple plexes, vinum does not automatically initialize the plexes. This means that the contents are not known, but they are certainly not consistent. As a result, by default vinum sets the state of all newly-created plexes except the first to stale. In order to synchronize them with the first plex, you must start their subdisks, which causes vinum to copy the data from a plex which is in the up state. Depending on the size of the subdisks involved, this can take a long time.

    In practice, people aren't too interested in what was in the plex when it was created, and other volume managers cheat by setting them up anyway. vinum provides two ways to ensure that newly created plexes are up:

  3. Some of the commands currently supported by vinum are not really needed. For reasons which I don't understand, however, I find that users frequently try the label and resetconfig commands, though especially resetconfig outputs all sort of dire warnings. Don't use these commands unless you have a good reason to do so.
  4. Some state transitions are not very intuitive. In fact, it's not clear whether this is a bug or a feature. If you find that you can't start an object in some strange state, such as a reborn subdisk, try first to get it into stopped state, with the stop or stop -f commands. If that works, you should then be able to start it. If you find that this is the only way to get out of a position where easier methods fail, please report the situation.
  5. If you build the kernel module with the -DVINUMDEBUG option, you must also build vinum(8) with the -DVINUMDEBUG option, since the size of some data objects used by both components depends on this option. If you don't do so, commands will fail with the message Invalid argument, and a console message will be logged such as

    vinumioctl: invalid ioctl from process 247 (vinum): c0e44642

    This error may also occur if you use old versions of kld or userland program.

  6. The vinum read command has a particularly emetic syntax. Once it was the only way to start vinum, but now the preferred method is with the start command. vinum read should be used for maintenance purposes only. Note that its syntax has changed, and the arguments must be disk slices, such as /dev/da0, not partitions such as /dev/da0e.

Unresolved bugs

Bugs missing, presumed dead

These bugs haven't formally been fixed; they were reported at some time, but can no longer be reproduced.

Bugs considered fixed

These bugs have been identified, a fix has been committed, and the problem hasn't shown up again yet.