VNCONFIG(8)

名称
vnconfig - vnode ディスクを構築して利用できるようにする

書式
vnconfig [-cdeguvTZ] [-s option [,option...]] [-r option [,option...]] [-S value] special_file [regular_file] [feature] vnconfig -a [-cdeguv] [-s option] [-r option] [-f config_file]

解説
vnconfig コマンドは、vnode 疑似ディスクデバイスを構築して使用可能にします。 コマンドの最初の書式では、特殊ファイル special_file を通常ファイル regular_file に結びつけ、 後で通常ファイルをディスクであるかのようにアクセスできるようにします。 これによりファイルシステム中の通常ファイルを、 スワップや、名前空間にマウントされるファイルシステムと出来ます。 もしファイルの代わりにスワップ領域を使用したい場合には、 regular_fileを指定せずに -S オプションを用いてブロックデバイスの 大きさを指定することができます。

オプションは動作を指定します:

-a  コマンドファイルを読み込み、 各デバイス/ファイルの組に対して指定された動作を実行します。

-c  デバイスを構築します。 成功すると、 special_file への参照は、 regular_file の内容へのアクセスとなります。

-d  指定した feature を (可能であれば) 無効にします。

-e  デバイスを構築し、指定された feature を有効にします。 feature が指定されないと、 -e は -c と同じ意味になります。

-f config_file
    config_file を設定ファイルの代りに使用します。

-g  global オプションを制御します。

-r flag
    flag をリセットします。 利用可能なフラグと意味は以下の通りです:

    labels
        ディスク/スライスラベルを使用します。

    reserve
        ファイルやスワップ領域をあらかじめ予約します。 現在のところスワップ領域のみ利用可能です。 またこのオプションは (例えば大きなファイルを削除した際のような) 内在する記憶領域を on-the-fly で 解放しないようにします。 このオプションは記憶領域中で長い間フラグメンテーションを 発生させたくない場合に使用してください。 このオプションを使用した場合、記憶領域の初期の値は 必ずしも 0 でないことに注意してください。 システムがスワップを割り当てる前に VN デバイスが 設定されていた場合、 リブートされてもスワップを用いた VN の 内容を回復する事ができます。

    follow
        vn(4) ドライバのフローをデバッグします。

    debug
        vn(4) ドライバのデータをデバッグします。

    io  vn(4) ドライバの I/O をデバッグします。

    all すべてのフラグをオンにします。

    none
        すべてのフラグをオフにします。

-s flag
    flag をセットします。 利用可能なフラグと意味は -r と同じです。

-S  value 通常ファイルが指定されなかった場合、 VN は記憶領域としてスワップを使用します。 このオプションはデバイスのサイズを指定します。 例えば '23m' は 23 メガバイトを意味します。 VN デバイスはサイズをマシンのページ境界に切り上げます。 ファイルシステムは 7.9 テラバイトまでサポートされています。 通常ファイルと共に指定した場合、 このオプションは VN が認識する通常ファイルのサイズを上書きします。

-T  通常ファイルが指定された場合、 VN はまず ftruncate() によりファイルのサイズを 0 にします。 通常 -S オプションによりファイルの大きさを指定することができます。 もしファイルが存在しない場合にはファイルが作成されます。 このオプションは -S オプションが指定された時のみ意味を持ちます。

-Z  通常ファイルが指定された場合、 VN は確実にファイルシステムにより全てのブロックが確保させるために ファイルの内容を 0 に設定します。 このオプションは -S オプションが指定された時のみ意味を持ちます。

-u  デバイスを無効にし、``無構築状態'' にします。

-v  実行される動作の内容を標準出力に表示します。

動作を指定するオプションがない場合には、 -c が指定されたものと見なします。

feature 引数は、 -e によって有効になる機能を指定します。

swap
    特殊ファイル上でのスワップを有効にします。 swapon(2) を参照してください。

mountro=mount_point
    特殊ファイルは、 mount_point へ読み込み専用マウントされます。 mount(2) を参照してください。

mountrw=mount_point
    特殊ファイルは、 mount_point へ読み書き可能マウントされます。 mount(2) を参照してください。

mount=mount_point
    ``mountrw='' と同じです。

設定ファイルは、1 行にデバイスとファイル名の組を次の形式で持ちます:

    	special_file	regular_file	[ feature ]

ここでは各フィールドはスペースで分割されます。 設定ファイル中のすべてのデバイスの動作に関して、 前述の動作オプションが有効です。

関連ファイル
/etc/vntab
    -a オプションで使われるデフォルトの設定ファイル

使用例
    vnconfig vn0c /tmp/diskimage

vnode ディスクデバイス vn0c を構築します。

    vnconfig -e vn0c /var/swapfile swap

vnode ディスクデバイス vn0c を構築し、それをスワップ領域として使うようにします。

    vnconfig -d vn0c myfilesystem mount=/mnt

vnode ディスクデバイス vn0c のマウントを解除します (また無構築状態にします)。

    vnconfig -ae

/etc/vntab に記述されているすべてのデバイスを構築して使用可能にします。

    vnconfig -s labels -c vn0 somebackingfile
    disklabel -r -w vn0 auto
    disklabel -e vn0

ファイルのファイルを用いた VN ディスクを構築し、 ディスクラベルを使用して 初期化しラベルを編集する例です。 いったんラベルを作成すれば、 VN ディスクに対してパーティションを作成したり、 作成したあるパーティションでファイルシステムを作成することができます。 ファイルを記憶領域として使用した場合、 同じファイルを vnconfig で設定することで ラベルを再編集したりファイルシステムを再構築せず、 またファイル中に保存されている VN の設定を使用して クラッシュ後に VN ディスクを回復することができます。 またファイルシステムを含んでいた VN パーティションに fsck を実行することも可能です。

    vnconfig -e -s labels,reserve -S 400m vn1
    disklabel -r -w vn1 auto
    newfs /dev/vn1c
    mount /dev/vn1c /usr/obj

スワップを用いた VN ディスクの設定例です。 この例では少なくとも 400 メガバイト (もしくはそれ以上が望ましい)の 空きがスワップにあると仮定しています。 スワップ領域は最大のパフォーマンスを得るために あらかじめ予約されます。 その後ディスクに対してラベルを作成し、 newfs を実行し、/usr/obj にマウントします。 スワップを用いた VN デバイスはクラッシュ後 (A) reserve フラグを指定している、 (B) 前回と同じスワップが確保されている、つまりvnconfig が rc.local で 起動されている場合回復可能です。 しかしながら一般的にスワップを用いた VN デバイスは リブート時に失われても構わないようなデータを保存するために 使用します。

関連項目
mount(2), swapon(2), unmount(2), vn(4)