|
OS は静的な情報を「ファイル」という単位で管理します。ファイルは単に平面的に並べられるだけではなく、ディレクトリ・リンクなどによって構造的に配置されます。また、ファイルの属性としてタイムスタンプや所有者・パーミッションなどを実装していることもあります。このようなシステムをファイルシステムと呼びます。
Linux は、Linux 専用のファイルシステムだけでなく Windows, MacOS, BSD, 各社 UNIX などで使われているファイルシステムも扱えます。また、Windows の共有ディスクや NFS も「ネットワークファイルシステム」として扱えます。ARMA に収録している Linux カーネルが対応する主なファイルシステムは以下の通りです。
| |

俗に言うディスクを「フォーマットする」とは「ファイルシステムを作る」ことである場合もよくあります。
|
|
UNIX 系 OS では、/ (ルートディレクトリ) を頂点とする単一のディレクトリツリーでファイルを管理します。しかし、ファイルシステムはディスクやパーティションごとにありますから、単一のツリーを作るためにはそれらのファイルシステムを全て接続しなければなりません。この、ファイルシステムを接続する作業を「マウント」(mount)、逆に切り離す作業を「アンマウント」(un-mount) と言います。
マウントの設定ファイルは /etc/fstab です。Linux 起動時に自動的に行われるマウントや、後述の mount コマンドでの手動マウント時に参照されます。
proc /proc proc defaults 0 0
| none /proc/bus/usb usbdevfs defaults 0 0
| /dev/sda3 none swap sw 0 0
| /dev/sda1 / xfs defaults 0 1
| /dev/sda2 /home xfs defaults 0 1
| /dev/sda5 /usr xfs defaults 0 1
| /dev/sda6 /usr/local xfs defaults 0 0
| /dev/cdrom /mnt/cdrom auto ro,noauto,user 0 0
| pc01:/dir01 /mnt/dir01 nfs noauto 0 0
| //pc02/dir02/ /mnt/dir02 smbfs noauto 0 0
|
|
|
|
各行は次のような書式になっています。
<ディスク> <ポイント> <種類> <オプション> <num1> <num2>
|
|
|
|
| |

認識名は Linux カーネルモジュールの名前で、後述の /etc/fstab など、様々な場面でファイルシステムの名前を示すときに使います。
|
|
第1パラメータにはマウントするディスクのデバイスファイルを指定します。ただし、ネットワークファイルシステムの場合はデバイスファイルではなく、9,10 行目のように NFS なら <サーバ>:<共有ディレクトリ>、SMB なら //<サーバ>/<共有ディレクトリ>という形式で指定します。
第2パラメータにはマウントポイントとするディレクトリを指定します。ここで注意すべきことは、Linux の起動時に /etc/fstab が 1 行目から順に解釈されるため、上位のディレクトリをマウントポイントとするディスクほど前の行に書く必要があることです。例えば、3 行目と 4 行目を入れ替えると、/dev/sda6 を /usr/local にマウントしようとしても、まだ /usr/local が存在しないのでマウントできません。
第3パラメータにはファイルシステムの種類を指定します。auto を指定するとファイルシステムを自動判別するので、様々な種類のメディアが挿入される CD-RW ドライブなどのリムーバブルディスクドライブでは便利です。ただし、特に「空ディスク」などで判別を間違える可能性もゼロではないので、ハードディスクなどファイルシステムの種類が確定している場合は xfs などと種類を明示した方が無難でしょう。
第 4 パラメータにはオプションを , (カンマ) で区切って指定します。オプションを指定しない場合は defaults とします。主なオプションには以下の通りです。
|
|
初期値 (rw,auto,nouser) のままにする
|
|
|
user ではマウントしたユーザだけがアンマウントできますが、これを users とすると誰でもアンマウントできるようになります。
以上に挙げたのはファイルシステムに依存しない汎用のオプションですが、この他にファイルシステムごとに固有のオプションがあります。ファイルシステム固有のオプションについては man fstab を参照してください。
第5パラメータはバックアップコマンド dump を使用する場合に指定します。dump を使わない場合は 0 で構いません。
第 6 パラメータにはマウント時に fsck (FileSystem ChecKer) がファイルシステムを検証する順番を指定します。通常は / にマウントするものは 1 、その他の fsck が必要なものは全て 2 、fsck しなくてよいものは 0 を指定します。XFS のようにマウント時に自動的にファイルシステムの修復がおこなわれるタイプのファイルシステム(ジャーナリングファイルシステム)を使用している場合は 0 で問題ありません。
| |

ARMA ではパスの区切り文字に「/」を使います。Windows/DOS と異なり「\」の方はエスケープ文字(特殊文字)としてしばしば使われます。
|
|
10,11 行目では swap, proc という特殊なファイルシステムをマウントしています。swap は仮想メモリ (スワップ) 領域として Linux カーネルが占有し何処にもマウントされないため、第 2 パラメータは none を指定します。proc は Linux カーネルが自分の状況を報告するための 仮想的なファイルシステムで、通常 /proc にマウントします。
起動時以外に手動でマウントするには mount コマンドを使います。root であれば、以下の書式で任意のディスクを任意のマウントポイントにマウントできます。
|
# mount [-t <種類>] [-o <オプション>] <ディスク> <マウントポイント>
|
|
|
-t,-o, を省略すると、それぞれ -t auto と -o defaults と見なされます。その他の注意事項は /etc/fstab と同じです。
これに対し、一般ユーザーは fstab に user か users オプション付きで書かれた「特に許されたディスク」しかマウントできません。しかし、ディスクかマウントポイントのどちらか一方を指定すれば、fstab からマウントすべきディスクを特定できるので、root のときのように両方を指定する必要はありません。
|
$ mount {<ディスク> | <マウントポイント>}
|
|
|
| |

例えば /proc/interrupts は IRQ の状況を表します。
|
|
現在のマウント状況を調べるには、mount を引数なしで実行します。
ディスクをアンマウントするには umount コマンドを使います。
|
$ umount {<ディスク> | <マウントポイント>}
|
|
|
一般ユーザが、特に許されたファイルシステムしかアンマウントできないことは mount と同じですが、その他に「内部のファイルがひとつでも開かれているとアンマウントできない」ことも要注意です。例えば、誰かがアンマウント対象となるファイルを開いていたり、カレントディレクトリにしていたりするとアンマウントできません。
このような場合具体的にどのプロセスが原因となっているかを調べるには lsof コマンドを使います。例えば /mnt/cdrom が開放できない、というような場合は以下のようにコマンドを実行します。
|
$ lsof | grep /mnt/cdrom
| sh 6672 foo cwd DIR 3,2 6 517 /mnt/cdrom
|
|
|
| |

この他に df コマンドを使ってもマウント状況をしることができます。
|
|
この場合、ユーザー foo の PID(プロセスID) 6672 のコマンド sh がアンマウントを妨害していることが分かりますので、kill を使って当該プロセスを排除すればアンマウントを行うことができるようになります。
| |

さらに他のケースとしては、該当するファイルシステム内のどこかがマウントポイントとなっている場合や、ハードウェアレベルのエラーを起こしている場合等にアンマウントできない場合があります。
|
|
リムーバブルディスクを使う場合は、「メディア挿入→マウント」と「アンマウント→メディア取り出し」の順序を守るようにしてください。マウントされているメディアをアンマウントする前に取り出すと、メモリ上にあるキャッシュなどディスクへの最終的な書き込みが済んでいないデータが消失したり、ディスク上のファイルシステムが壊れたりすることがあります。DVD-ROM, CD-ROM 系や MO など、多くのリムーバブルディスクドライブでは、マウントされている間はイジェクトボタンがロックされてメディアを取り出せないようになるため、この種の事故は起こりにくくなっていますが、フラッシュメディアのアダプタやUSB接続のドライブのように特にロックされない場合もあります。
| マウントポイントのディレクトリの下にあるコンテンツ
|
|
マウントポイントの下に既にディレクトリやファイルがあると、それらはマウント後には一時的に見えなくなってしまいますが、消去された訳ではありません。アンマウントするとまた何事もなく見えるようになります。しかし通常はマウントポイントにするディレクトリは空にしておいてください。
| |

カーネルがバッファしている内容を強制的に書き出させる場合は sync コマンドを使います。
|
|