diff --git a/ja_JP.eucJP/books/handbook/disks/chapter.sgml b/ja_JP.eucJP/books/handbook/disks/chapter.sgml index a34498263f..99429c56cd 100644 --- a/ja_JP.eucJP/books/handbook/disks/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/disks/chapter.sgml @@ -1,1139 +1,1139 @@ ディスク この章では この章では, FreeBSD 上でどのようにして物理的なディスクやメモリディスク, もしくはネットワークに接続されたディスクを使うのか, ということを解説します. BIOS ドライブの番号付け FreeBSD をインストールして設定する前に, 特に複数のハードディスクを持っているならば気をつけておかなければならない重要なことがあります. DOS が動いている PC や WINxxx のような BIOS 依存のオペレーティングシステムでは, BIOS がディスクドライブの順序を構成し, OS はその変化に追従します. これにより, ユーザはいわゆる プライマリーマスター 以外のディスクから起動することができます. この仕組みを用いればシステムのバックアップを取る最も簡単で安価な方法を構築できます. もう一つ同じディスクを買い, Ghost や XCOPY を用いて一つ目のディスクから二つめのディスクへのコピーを定期的に取ればいいのです. そして, 一つ目のディスクに障害が起きた時には, BIOS に対してドライブを論理的に交換するように指示することで簡単に復旧できるのです. この方法はドライブのケーブルを交換するのと同じようなことなのですが, ケースを開ける必要がありません. SCSI コントローラを備えたもっと高価なシステムでは, しばしば BIOS に拡張が施されており同じように 7 台までのドライブの順番を組み換えることができるようになっています. 以上のような機能を便利に使っているユーザは, FreeBSD では同じような結果にならないことに驚くかもしれません. FreeBSD は BIOS を利用しないため, 論理 BIOS ドライブマッピングについては知らないのです. このため, 特にいくつかのドライブが同じジオメトリを持っている時に, そしてまたあるものをもう一つのクローンとして使っている時に非常にややこしい状況になり得ます. FreeBSD を使う時は, インストール前にドライブの番号付けが自然なものになるように, BIOS の設定を忘れずに戻しておきましょう. もしドライブの番号付けを変更する必要がある場合には, そうすればいいのですが, ハードウェア的にケースを開けジャンパーやケーブルを移動しましょう. Bill と Fred のイケイケ冒険記 Bill は Fred のためにもう一つ FreeBSD 箱を作ろうと古い Wintel 箱を潰しました. Bill は ユニット番号 0 の SCSI ドライブを一つ追加し, そこに FreeBSD を入れました. Fred はこのシステムを使い始めましたが, 数日後その古い SCSI ドライブがたくさんのソフトエラーを吐いているのに気付き, Bill に報告しました. さらに数日後, Bill はその問題に対処しようと決意し, 倉庫のディスクドライブアーカイブから同じ SCSI ドライブを取ってきました. まずドライブのサーフィススキャンを行なってみましたが特に問題なかったため, Bill はこのドライブをユニット番号 4 として付け, ドライブ 0 からドライブ 4 へのイメージコピーを行ないました. 新しいドライブがインストールされ, しかもうまく動いているため, Bill はそれを使い始めてもいいだろうと思いました. そこで彼は SCSI BIOS の機能を使ってシステムがユニット 4 から起動するようにディスクドライブの順序を入れ換えました. FreeBSD が起動し, 調子良く動き始めました. Fred は数日作業を続けましたが, すぐに Bill と Fred は新しい冒険に挑戦することにしました. 新しいバージョンの FreeBSD にアップグレードするのです. Bill は SCSI ユニット 0 のディスクは当てにならないので取りはずし, アーカイブから持ってきた別の新しいドライブと交換しました. そして, 新しいバージョンの FreeBSD を, Fred の持っていた魔法のインターネット FTP フロッピーを用いて新しい SCSI ユニット 0 にインストールしたのです. インストールはうまくいきました. Fred は新しいバージョンの FreeBSD を数日使ってみて, 技術部門でも使えるくらい十分に良いものだと確認しました. 古いバージョンから全ての作業をコピーする時が来たのです. そこで Fred は SCSI ユニット 4 (古い FreeBSD で行なっていた作業の最新のものを置いてあるドライブです) をマウントしました. ところが, Fred は SCSI ユニット 4 には自分の貴重な作業がなにも残っていないことを発見して慌てふためきました. データはどこへ行ったのでしょう? Bill がオリジナルの SCSI ユニット 0 のイメージをユニット 4 にコピーした時, ユニット 4 は「新クローン」になりました. Bill がユニット 4 から起動するように SCSI BIOS で順序の入れ換えを行なった時, 実はおバカなことにそう変更したと思い込んでいただけなのです. FreeBSD は依然として SCSI ユニット 0 上で動いていたのです. BIOS にこのような変更を行なっても Boot と Loader のコードの一部もしくは全部は選択された BIOS ドライブから取得されるものの, 処理が FreeBSD のカーネルドライバーに引き渡された時から BIOS ドライブの順序は無視され, FreeBSD は通常のドライブ番号順に移行するのです. さきほどの例では, システムはオリジナルの SCSI ユニット 0 で動き続けており, Fred のデータは全て SCSI ユニット 4 ではなくそのディスクに残っていたのです. システムが SCSI ユニット 4 で動いているように見えたのは単に人の期待からくる妄想だったのです. こういった現象の発見のどの時点においてもデータは全く失なわれても損なわれてもいないことを喜びをもって伝えておきます. 古い SCSI ユニット 0 はガラクタの山から見つけ出され, Fred の作業は全て彼のもとへ返ってきたのです (そして Bill は自分が 0 までは数えられることを学んだのでした). この例では SCSI ドライブが用いられましたが, その概念は IDE ドライブにも同じように当てはまります. ディスクの名前付け 物理ディスクには主に二つの種類, IDESCSI がありますが, 他にも RAID コントローラによって提供されるものやフラッシュメモリなどがあります. これらのディスクの振舞いはかなり異なるため, それぞれにドライバーとデバイスがあります. 物理ディスクへの名前付け ドライブの種類 ドライブのデバイス名 IDE ハードドライブ 4.0-RELEASE では ad, 4.0-RELEASE より前のものでは wd. IDE CD-ROM ドライブ 3.1-RELEASE 以降は acd, 4.0-RELEASE より前のものでは wcd. SCSI ハードドライブ 3.0-RELEASE 以降は da, 3.0-RELEASE より前は sd. SCSI CD-ROM ドライブ cd その他の非標準的 CD-ROM ドライブ ミツミ CD-ROM は mcd, Sony CD-ROM は scd, 松下/パナソニック CD-ROM は matcd フロッピードライブ fd SCSI テープドライブ 3.0-RELEASE 以降は sa, 3.0-RELEASE よりも前では st. IDE テープドライブ 4.0-RELEASE 以降では ast, それよりも前のものでは wst. フラッシュドライブ 3.3-RELEASE 以降の DiskOnChip フラッシュデバイスは fla. RAID ドライブ myxd は Mylex 用, amrd は AMI MegaRAID 用, idad は Compaq Smart RAID 用. これらは全て 4.0-RELEASE 以降. 3.2-RELEASE から 4.0-RELEASE までは id.
スライスとパーティション 物理ディスクは危険な専用(原文はdangerously dedicated)ディスクでない限り, 通常はスライスを含んでいます. スライス番号はデバイス名の後に続き, s という接頭文字が付きます. da0s1 といった感じです. スライスや危険な専用 (原文はdangerously dedicated) ディスクや他のディスクはパーティションを含んでおり, パーティションは a から h までの文字で表現されます. b はスワップパーティション用に予約されており, c はスライスもしくはドライブの全体を表わす未使用パーティションです. - このあたりのことは で解説します. + このあたりのことは で解説します.
ファイルシステムのマウントとアンマウント ファイルシステムは / を根とする木構造として最もうまく視覚化できます. /dev/usr, ルートディレクトリにあるその他のディレクトリは枝であり, /usr/local のようにそれぞれが自身の枝を持つことができます. 様々な理由がありますが, これらのディレクトリのいくつかは異なるファイルシステム上に構築するのが良いでしょう. /var はログやスプール, そして様々な種類の一時ファイルなどを含むため溢れてしまう可能性があります. ルートファイルシステムが溢れるのは良くないため, たいての場合は /var/ と切り離すのです. あるディレクトリツリーを他のファイルシステムに含まれるようにするもう一つのよくある理由は, それらが別の物理ディスクや, ネットワークファイルシステムや CD-ROM といった仮想ディスクに置かれる場合です. fstab ファイル 起動プロセスにおいて, /etc/fstab にリストされているファイルシステムは自動的にマウントされます (ただし オプションがない場合). /etc/fstab ファイルは以下のようなフォーマットの行からなります. device /mount-point fstype options dumpfreq passno device は上の ディスクの名前付けのセクションで解説したデバイス名 (存在している必要があります) です. mount-point はそのファイルシステムをマウントするディレクトリです (存在していなければなりません). fstype は &man.mount.8; に渡されるファイルシステムタイプです. デフォルトの FreeBSD ファイルシステムは ufs です. options では読み書き可能なファイルシステム用の , か読み込み専用ファイルシステム用の のどちらかと, 他に必要なものをそれに続けます. よくあるのは で, これは起動中にはマウントしたくないファイルシステムに用います. 他のオプションはマニュアル &man.mount.8; を参照してください. dumpfreq はファイスシステムを dump すべき日数で, passno は起動中でファイルシステムがマウントされる時のパスナンバーです. マウントコマンド &man.mount.8; コマンドはファイルシステムをマウントする時に使われるコマンドです. 最も基本的な形は以下の通りです. &prompt.root; mount device mountpoint マニュアル &man.mount.8; にあるように非常にたくさんのオプションがありますが, 最も頻繁に使われるものは次のようなものです. マウントオプション /etc/fstab にあるファイルシステムを全てマウントします. もし があればそれが効きます. 実際のファイルシステムのマウント以外の全てを行ないます. 強制的にファイルシステムをマウントします. ファイルシステムを読み込み専用でマウントします. fstype 与えられたファイルシステムを与えられたファイルシステムタイプでマウントします. もしくは オプションも与えられている場合は与えられたタイプのファイルシステムのみマウントします. ufs がデフォルトのファイルシステムタイプです. (既にマウントされている) ファイルシステムのマウントオプションを更新します. 冗長になります. ファイルシステムを読み書き可能でマウントします. は次のようなオプションを複数カンマで区切って指定します. nodev ファイルシステム上のデバイススペシャルファイルを解釈しません. 便利なセキュリティオプションです. noexec このファイルシステム上のバイナリの実行を許可しません. セキュリティに便利なオプションです. nosuid setuid や setgid といったオプションを解釈しません. セキュリティに便利なオプションです. umount コマンド umount コマンドは, パラメータとしてマウントポイントの一つ, デバイス名, もしくは といったオプションを取ります. 全ての形式において, は強制アンマウント, は冗長性を高めるために用いることができます. はマウントされている全てのファイルシステムをアンマウントするために用いられますが, の後にファイルシステムタイプがリストされていればそれだけがアンマウントされます. はルートファイルシステムはアンマウントしません. ディスクの追加 オリジナルは &a.obrien; によって 1998 年 4 月 26 日に寄贈されました. 現在一つしかドライブがない計算機に新しく SCSI ディスクを追加したいとしましょう. まずコンピュータの電源を切り, コンピュータやコントローラ, ドライブの製造元の指示に従ってドライブを取り付けます. このあたりの手順は非常にバラエティに富んでいるため, 細かいことはこのドキュメントの範囲外です. root ユーザでログインします. ドライブの取り付け後は /var/run/dmesg.boot を調べて新しいディスクが見つかっていることを確認しておきます. この例では, 新しく付けたドライブは da1 で, 我々はそれを /1 にマウントしたいとしましょう (もし IDE ドライブを付けようとしているのなら, 4.0 以前のシステムでは wd1, ほとんどの 4.x システムでは ad1 になるでしょう). FreeBSD は IBM-PC 互換のコンピュータで動くため, PC BIOS のパーティションを考慮に入れる必要があります. これは従来の BSD パーティションとは異なります. PC ディスクは 4 つまでの BIOS パーティションエントリを持つことができます. もしそのディスクを本当に FreeBSD 専用にしたい場合には専用モードで用いることもできます. そうでない場合には, FreeBSD は PC BIOS パーティションのどれか一つの中に入れることになります. FreeBSD では, 従来の BSD パーティションと混乱しないように PC BIOS パーティションのことをスライスと呼びます. また, 別の OS がインストールされていたコンピュータで使われていたが FreeBSD 専用にするディスク上でもスライスを用いることができます. これは, 他の OS の fdisk ユーティリティを混乱させないためです. スライスの場合, ドライブは /dev/da1s1e として加えられるでしょう. これは, SCSI ディスクでユニット番号は 1 (二つめの SCSI ディスク), スライスは 1 (PC BIOS のパーティションが 1) で BSD パーティション e, と読みます. 専用ディスクの場合だと単純に /dev/da1e として加えられるでしょう. sysinstall を利用 /stand/sysinstall の使い易いメニューを利用して新しいディスクのパーティション分けやラベル付けを行なうことができます. root ユーザでログインするか su コマンドを用いるかして root 権限を取得します. /stand/sysinstall を実行し, Configure メニューに入ります. FreeBSD Configuration Menu の中でスクロールダウンして Partition の項目を選びます. するとシステムに付けられているハードディスクのリストが表示されるはずです. もし da1 がリストされていない場合には物理的な取り付け及び, /var/run/dmesg.boot ファイルへの dmesg 出力をチェックし直してください. da1 を選んで FDISK Partition Editor に入ります. ディスク全体を FreeBSD で使うために A を選びます. remain cooperative with any future possible operating systems と聞かれたら YES と答えます. W で変更をディスクに書き込みます. ここで q と入力して FDISK エディタを抜けます. マスターブートレコードについて聞かれますが, ここでは既に動いているシステムにディスクを追加しようとしているのですから None を選びます. 次に Disk Label Editor に入ります. ここでは従来の BSD パーティションを作成します. 一つのディスクは a から h までのラベルがついた最大 8 つのパーティションを持つことができます. いくつかのパーティションラベルは特殊な用途に用いられます. a パーティションはルートパーティション (/) です. 従って, システムディスク (つまり起動ディスク) のみが a を持ちます. b パーティションはスワップパーティションに用いられ, 複数のディスクにスワップパーティションを作ることができます. c は専用モードにおけるディスク全体, もしくはスライスモードにおけるスライス全体を指します. 他のパーティションは汎用的に用いられます. sysinstall の Label Editor は非ルートで非スワップなパーティションには e を好んで付けます. ラベルエディタでは C を用いて一つのファイルシステムを作成します. FS (ファイルシステム) かスワップかを聞かれたら FS を選びマウントポイント (例えば /mnt) を入力します. インストール後のモードでディスクを追加する場合, sysinstall は /etc/fstab にエントリを追加しないため, ここで指定するマウントポイントはそれほど重要ではありません. さて, ディスクに新しいラベルを書き込み, そこにファイルシステムを作る準備が整いました. 早速 W を叩いて実行しましょう. sysinstall からの, 新しいパーティションをマウントできない, というエラーは無視してください. Label Editor から抜け, sysinstall を終了します. 最後に /etc/fstab を編集し, 新しいディスクを追加します. コマンドラインユーティリティの利用 スライスの利用 このセットアップ方法では, すでにコンピュータに他のオペレーティングシステムがインストールされていても 正しく協調動作することが可能で, 他のオペレーティングシステムの fdisk ユーティリティを混乱させることもありません. 新しいディスクにインストールする場合は, この方法を用いることが推奨されています. 後述する専用モードは, そうしなければならない理由がある時にのみ, 利用するようにしてください. &prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1 &prompt.root; fdisk -BI da1 # 新しいディスクの初期化 &prompt.root; disklabel -B -w -r da1s1 auto # ディスクにラベルを付ける &prompt.root; disklabel -e da1s1 # 作成したディスクラベルを編集し, パーティションを追加する &prompt.root; mkdir -p /1 &prompt.root; newfs /dev/da1s1e # 作成したすべてのパーティションに対してこれを繰り返す &prompt.root; mount -t ufs /dev/da1s1e /1 # パーティションをマウントする &prompt.root; vi /etc/fstab # マウントに成功したら, /etc/fstab に適切なエントリを追加する IDE ディスクを使う場合は da の部分を ad とします. 4.x より前のシステムでは, (訳注: ad ではなく) wd としてください. 専用モード 新しいドライブを他の OS と共有しない場合には専用モードを用いることもできます. このモードはマイクロソフトの OS を混乱させることを憶えておいてください (しかし, それらによって壊されることはありません). 一方, IBM の OS/2 はどんなパーティションでも見つけたら理解できなくても専有します. &prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1 &prompt.root; disklabel -Brw da1 auto &prompt.root; disklabel -e da1 # create the `e' partition &prompt.root; newfs -d0 /dev/rda1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # add an entry for /dev/da1e &prompt.root; mount /1 もう一つの方法は次の通り. &prompt.root; dd if=/dev/zero of=/dev/rda1 count=2 &prompt.root; disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin &prompt.root; newfs /dev/rda1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # add an entry for /dev/da1e &prompt.root; mount /1 仮想ディスク: ネットワーク, メモリ, そしてファイルベースのファイルシステム FreeBSD にはフロッピーや CD, ハードディスクなどの手元の計算機に取り付けたディスクの他に, 別の形態のディスク, 仮想ディスク, もあります. これには, Network Filesystem のようなネットワークファイルシステムや Coda, md のようなメモリベースのファイルシステム, vnconfig によって作られるようなファイル中に構築されるファイルシステムがあります. vnconfig: ファイル中に構築されるファイルシステム &man.vnconfig.8; を使えば擬似ディスクデバイスを設定し, 有効にすることができます. vnode とはファイルの内部的な表現方法であり, ファイルに関する操作の中心となるものです. つまり, &man.vnconfig.8; はファイルシステムを生成したり操作したりするためにファイルを用いるのです. 一つ例を挙げると, ファイルに収められたフロッピーや CD-ROM のイメージをマウントするために用いることができます. 既にあるファイルシステムイメージのマウント vnconfig を用いた既存のファイルシステムイメージのマウント &prompt.root; vnconfig vn0 diskimage &prompt.root; mount /dev/vn0c /mnt vnconfig を用いたファイルシステムイメージの新規作成 vnconfig を用いたファイルベースディスクの新規作成 &prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; vnconfig -s labels -c vn0 newimage &prompt.root; disklabel -r -w vn0 auto &prompt.root; newfs vn0c Warning: 2048 sector(s) in last cylinder unallocated /dev/rvn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors 5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g) super-block backups (for fsck -b #) at: 32 &prompt.root; mount /dev/vn0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/vn0c 4927 1 4532 0% /mnt md: メモリファイルシステム md はメモリファイルシステムを実現するためにシンプルで効率的な手段です. 単に, 例えば &man.vnconfig.8; を用いて作成したファイルシステムを取り, 以下のようにします. md メモリディスク &prompt.root; dd if=newimage of=/dev/md0 5120+0 records in 5120+0 records out &prompt.root; mount /dev/md0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4927 1 4532 0% /mnt ディスククォータ クォータは OS の持っているオプショナルな機能であり, ファイルシステム毎にユーザやグループのメンバが使用するディスク容量やファイルの数を制限することができます. この機能は, あるユーザやグループに割り当てられるリソースの量を制限することが望ましいようなタイムシェアリングシステムにおいてよく用いられます. この機能を用いることによって使用可能なディスク容量の全てを一人のユーザが使ってしまうことを防ぐことができます. ディスククォータを使うためのシステム設定 ディスククォータの設定を始める前に, まずはカーネルにクォータが組み込まれていることを確認しましょう. カーネルのコンフィグレーションファイルに次の行を入れます. options QUOTA 標準の GENERIC カーネルでは, この機能は有効になっていませんので, ディスククォータを利用するためには上記を設定後カーネルを構築しなおし, 作成されたカスタムカーネルをインストールしなければいけません. カーネルのコンフィグレーションに関しては FreeBSD カーネルのコンフィグレーションのセクションをご覧ください. 次に /etc/rc.conf でディスククォータを有効にする必要があります. 次の行を加えましょう. enable_quotas=YES 起動時の動作をさらに細かくコントロールするためにもう一つ設定用の変数があります. 通常, 起動時には quotacheck によりそれぞれのファイルシステムのクォータの整合性がチェックされます. quotacheck の役割は, クォータデータベースのデータが正しくファイルシステム上のデータを反映しているか確認することです. これはかなり時間を食う処理であり, 起動にかかる時間に大きな影響を及ぼします. このステップをとばしたい人のために次の変数が用意されています. check_quotas=NO もし 3.2-RELEASE よりも前の FreeBSD を使っているならば設定はもっと単純で, 一つの変数のみです. 次の行を /etc/rc.conf で設定してください. check_quotas=YES 最後に, ファイルシステム毎にディスククォータを有効にするために /etc/fstab を編集する必要があります. ここでユーザもしくはグループ, あるいはその両方にクォータを設定することができるのです. あるファイルシステム上にユーザ毎のクォータを有効にする場合には, /etc/fstab 中でクォータを有効にしたいファイルシステムエントリのオプション部に userquota を加えます. 例えば次のようになります. /dev/da1s2g /home ufs rw,userquota 1 2 同様に, グループクォータを有効にするには userquota キーワードの代わりに groupquota を用います. ユーザとグループの両方のクォータを有効にするには次のようにします. /dev/da1s2g /home ufs rw,userquota,groupquota 1 2 デフォルトでは, クォータファイルはそのファイルシステムのルートディレクトリに ユーザ用, グループ用それぞれ quota.user, quota.group という名前で置かれます. さらに詳しい情報は man fstab をご覧ください. マニュアルには別の場所を指定することができると書いてはありますが, あまり勧められません. なぜなら, 様々なクォータ関係のユーティリティがそれにうまく対処できるようにないためです. この時点で, 一度システムを再起動して新しいカーネルで立ち上げましょう. /etc/rc が自動的に適当なコマンドを実行し, /etc/fstab で有効にした全てのクォータ用に初期ファイルを作ってくれます. 従って, 空のクォータファイルを手で作る必要は一切ありません. 通常の運用では quotacheckquotaon, quotaoff といったコマンドを手で動かす必要はないのですが, 慣れるためにもこれらのマニュアルは読んでおきましょう. クォータリミットの設定 一旦クォータを有効にしたら本当に有効になっているのか確認しておきましょう. 簡単な方法は次のコマンドを実行することです. &prompt.root; quota -v ディスクの使用状況と, クォータが有効になっているファイルシステムのクォータリミットが一行にまとめて出力されるでしょう. さあ、edquota でクォータリミットを設定する準備ができました. ユーザやグループが使用できるディスク容量や作成できるファイルの数に制限をかけるにはいくつかのオプションがあります. 割り当てディスク容量を制限 (ブロッククォータ) することもファイル数を制限 (inode クォータ) することも, 両者を組み合わせることもできるのです. これらの制限はそれぞれさらに二つのカテゴリ, ハードリミットとソフトリミット, に分けることができます. ハードリミットを越えることはできません. あるユーザが一旦ハードリミットにたっした場合, そのファイルシステムではそれ以上の割り当ては望めません. 例えばあるファイルシステム上に 500 ブロックのハードリミットが設定されており現在 490 ブロックを使用している場合, さらに 10 ブロックしか使えないのです. 11 ブロックを使おうとすると失敗します. 一方, ソフトリミットはある限られた時間内であれば越えることができます. この時間は猶予期間として知られており, デフォルトでは 1 週間です. あるユーザが自分のソフトリミットを猶予期間よりも長い間越えているとソフトリミットはハードリミットに変わり, それ以上使用することはできなくなります. ユーザがソフトリミットよりも減らせば猶予期間はリセットされます. 以下は edquota コマンドを実行した時に見ることになるであろう例です. edquota コマンドが起動されると環境変数 EDITOR で指定されるエディタに入ります. EDITOR が設定されていない場合には vi が起動されます. ここでクォータリミットを編集します. &prompt.root; edquota -u test Quotas for user test: /usr: blocks in use: 65, limits (soft = 50, hard = 75) inodes in use: 7, limits (soft = 50, hard = 60) /usr/var: blocks in use: 0, limits (soft = 50, hard = 75) inodes in use: 0, limits (soft = 50, hard = 60) 通常, クォータが有効になっているファイルシステム毎に 2 行あります. 一つはブロックリミット用でもう一つは inode リミット用です. クォータリミットを変更したいところを書き変えるだけでかまいません. 例えばこのユーザのブロックリミットを, 「ソフトリミットは 50 で ハードリミットは 75」から「ソフトリミットは 500 で ハードリミットは 600」に変更する場合, /usr: blocks in use: 65, limits (soft = 50, hard = 75) から /usr: blocks in use: 65, limits (soft = 500, hard = 600) へ書き換えます. 新しいクォータリミットはエディタを終了すれば設定されます. ある範囲の uid に対してクォータリミットを設定したい場合がありますが, このような時には edquota コマンドの オプションを使うといいでしょう. まず, あるユーザに割り当てたいクォータリミットを設定し, 次に edquota -p protouser startuid-enduid を実行するのです. 例えばユーザ test にお望みのクォータリミットが付いているとしましょう. 次のコマンドにより 10,000 から 19,999 の間の uid に対して同じクォータリミットを付けることができるのです. &prompt.root; edquota -p test 10000-19999 さらに詳しいことは man edquota をご覧ください. クォータリミットとディスク使用状況のチェック quotarepquota といったコマンドを使ってクォータリミットやディスクの利用状況をチェックすることができます. quota コマンドは個々のユーザやグループのクォータやディスク利用状況をチェックするのに使えます. スーパーユーザのみが他のユーザや所属していないグループのクォータと利用状況を見ることができます. repquota コマンドはクォータが有効になっているファイルシステム用の全てのクォータやディスク容量のサマリを得るのに使えます. 以下は二つのファイルシステムにクォータ制限がかけられているユーザに対する quota -v コマンドの出力例です. Disk quotas for user test (uid 1002): Filesystem blocks quota limit grace files quota limit grace /usr 65* 50 75 5days 7 50 60 /usr/var 0 50 75 0 50 60 上の例で, /usr ファイルシステム上ではこのユーザは現在 50 ブロックというソフトリミットを 15 ブロックオーバーし 5 日間の猶予期間が残っています. アスタリスク * はクォータリミットを越えているユーザを示していることに注意してください. 通常, そのユーザが全く使っていないファイルシステムは, クォータリミットが付けられているとしても quota コマンドの出力には現われません. オプションを用いればそのようなファイルシステム, 上の例では /usr/var, を表示することができます. NFS 上の クォータ クォータは NFS サーバ上のクォータサブシステムにより実行されます. &man.rpc.rquotad.8; デーモンにより, NFS クライアント上の &man.quota.1; コマンドは情報を得ることができ, クライアントマシン上のユーザが自分のクォータの統計を見ることができます. /etc/inetd.conf において以下のように rpc.rquotad を有効にしましょう. rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad そして以下のように inetd を再起動します. &prompt.root; kill -HUP `cat /var/run/inetd.pid` CD の作成 寄稿: Mike Meyer mwm@mired.org, 2001 年 4 月. はじめに CD は他の一般的なディスクと異なる様々な特徴を持っています. そもそもユーザが書き込むことができません. また遅延なしで連続的に読み出せるように, トラック間をヘッドが移動しないですむようにデザインされています. さらにこのサイズのメディアの中では最もシステム間での転送が簡単なものです. CD はトラックの概念を持っていますが, これはデータを連続的に読み出すためのものであってディスクの物理属性ではありません. FreeBSD に CD を提供するにあたっては, まず CD 上のトラックとなるデータファイルを処理し, そのトラックを CD に書き込みます. ISO 9660 ファイルシステムはこの様な差異を扱うべく設計されました. 残念ながらファイルシステムは標準的なものに制限されるような明文化がされてしまいましたが, 適切に書かれた CD がその拡張をサポートしないシステムでも動作する範囲でこの制限を越えられるようにこれを拡張する機構が提供されています. mkisofs プログラムは ISO 9660 ファイルシステムを持つデータファイルを作成するのに使われます. これには様々な拡張をサポートするオプションがあり, それは以下に書かれています. あなたはそれを ports の /usr/ports/sysutils/mkisofs からインストールすることができます. CD を焼くためのツールはあなたの CD ライタが ATAPI か否かにも依存します. ATAPI CD ライタはベースシステムの一部である burncd プログラムを使います. SCSI や USB の CD ライタは ports の /usr/ports/sysutils/cdrecord から cdrecord を使わなければなりません. mkisofs mkisofs は Unix ファイルシステムの名前空間でのディレクトリツリーのイメージである ISO 9660 ファイルシステムを作成します. 最も簡単な使い方は以下の通りです. &prompt.root; mkisofs imagefile.iso /path/to/tree このコマンドは /path/to/tree 以下のディレクトリツリーのコピーである ISO 9660 ファイルシステムを含む imagefile を作成します. プロセスにおいて, ファイル名は標準的な ISO 9660 ファイルシステムの制限に適合するようなファイル名に対応づけられ, ISO ファイルシステムの特徴を持たないファイル名のファイルを含めることができます. この過程の詳細とオプションについては &man.mkisofs.8; を読んでください. 制限を回避するオプションはいくつもあります. は Unix システムで標準的な Rock Ridge 拡張を可能にします. は Microsoft のシステムで標準的な Joliet 拡張を可能にし, は Mac で使われている HFS ファイルシステムを作るために使われます. 後の二つについてのこれ以上の情報は &man.mkisofs.8; を読んでください. FreeBSD でしか使わないのであれば があらゆるファイル名制限を無効にするのに使えます. さらに とともに使うことで FreeBSD と同一のファイルシステムイメージを作成できますが, これは ISO 9660 標準の多数を無視しています. 一般的に使われるオプションの最後のものは です. これは El Torito ブータブル CD を作成するのに使うブートイメージのありかを指示します. このオプションは引数としてブートイメージへのパスを, CD に書き込まれるディレクトリツリーのトップからの相対位置で取ります. よって /tmp/myboot がブート可能な FreeBSD システムで /tmp/myboot/boot/cdboot にブートイメージがあるならば, 以下のようにすることで ISO 9660 ファイルシステムのイメージを /tmp/bootable.iso に作成することができます. &prompt.root; mkisofs boot/cdboot /tmp/bootable.iso /tmp/myboot この後, カーネルで vn が設定されていれば, ファイルシステムを以下のようにしてマウントすることができます. &prompt.root; vnconfig vn0c /tmp/bootable.iso &prompt.root; mount cd9660 /dev/vn0c /mnt あなたが確認すべきは /mnt/tmp/myboot が同一かどうかです. mkisofs には挙動を細かく制御するためにたくさんのオプションがあります. 詳細は &man.mkisofs.8; を見てください. burncd あなたが持っているのが ATAPI CD ライタならば CD 上に ISO イメージを焼くのために burncd コマンドが使えます. burncd はベースシステムの一部で /usr/sbin/burncd としてインストールされています. 使い方はとても単純でオプションも少ししかありません. &prompt.root; burncd cddevice data imagefile.iso fixate 以上のコマンドは imagefile.iso のコピーを cddevice 上に焼付けます. デフォルトのデバイスは /dev/acd0 です. 書きこみ速度やフロッピーのイジェクト, オーディオデータの書き込みなどのオプションについては &man.burncd.8; を見てください. cdrecord あなたが持っている CD ライタが ATAPI ではないのでしたら CD を書き込むのに cdrecord を使わねばなりません. cdrecord はベースシステムの一部ではなく, /usr/ports/sysutils/cdrecord から ports としてかそのパッケージをインストールするしなければなりません. ベースシステムへの変更はこのプログラムのバージョンを途切れさせ, コースターを作ることになるでしょう. それゆえシステムをアップグレードするつど ports もアップグレードし, あるいはあなたがFreeBSD の安定版を追い掛けているのならば, 新しいバージョンが利用できるようになった時に ports をアップグレードする必要があります. cdrecord にはたくさんのオプションがありますが, 基本的な使い方は burncd と同様です. ISO 9660 イメージを書き込むには以下のようにします. &prompt.root; cdrecord device imagefile.iso cdrecord のトリッキーな部分は使う を見つけるところにあります. 適切な設定を見つけるためには cdrecord フラグを使います. それは以下のような結果を出力するはずです. &prompt.root; cdrecord Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) * リストにあるデバイスに対する適切な の値がここに示されています. あなたの CD ライタをこのリストから見つけ, カンマで区切られた 3 つの数値を の値として使ってください. この例では CRW デバイスは 1,5,0 なので適切な入力は =1,5,0 となります. 値を明示するもっと簡単な方法もあります. 詳細は &man.cdrecord.1; を見てください. そこにはオーディオトラックを書き込む方法や書きこみ速度その他を操作する方法も書かれています.