Linux ハードディスクをマウント(mount)する
増設したハードディスクへfdiskでパーティションを作成し、そのパーティション上へmkfsでファイルシステムを作成しました。最後にマウント(mount)する事でやっとそのハードディスクを利用する事ができます。
Last Update : 2013年08月15日
Linux ハードディスクをマウント(mount)する 項目
1. mountとは
Linuxのディレクトリ構造は、「/(ルートディレクトリ)」とよばれる一番上のディレクトリからはじまるツリー状の構造になっていますが、増設したハードディスクの様な記憶装置を、このツリー構造のあるポイントへ登録する事をマウントといいます。
また、「あるポイント」の事をマウントポイントといいます。
2. mountコマンドの書式
mountコマンドの書式
mount -t <タイプ> -o <オプション> <デバイスファイル> <マウントポイント>
有用なオプション
オプション | 意味 |
-t タイプ | マウントするデバイスのファイルシステムを指定する |
-o オプション | 読込のみ、読書可等のフラグを指定する |
デバイスファイルは、/dev/sdb1のようにパスで指定する。
マウントポイントも、/mnt/diskAのようにパスで指定する。
オプション無しで実行すると、現在マウントしているファイルシステムを表示する。
※ このページではハードディスクをマウントするという視点からmountコマンドを説明しています。実際には、もっと多くのオプションがあり、ハードディスクをマウントするだけに使われるわけではありません。
memo
-o オプションについて
オプションは色々あります。複数のオプションを指定する際は、「,(カンマ)」で区切って指定します。
オプション | 意味 |
defaults | デフォルトのオプション(rw, suid, dev, exec, auto, nouser, async)でマウントする |
rw | 読み書き可能なモードでマウントする |
suid | SUID および SGID ビットを有効にする |
dev | ファイルシステム上のキャラクタ・スペシャル・デバイスやブロック・スペシャル・デバイスを利用できるようにする |
exec | バイナリの実行を許可する |
auto | mount コマンドに-a が指定されたときにマウントされるようになる。 |
nouser | 一般ユーザー (スーパーユーザー以外のユーザー) のマウントを禁止する |
async | そのファイルシステムに対するすべての I/O が非同期に行われる |
ro | リードオンリーでマウントする |
nosuid | SUID および SGID ビットを無効にする |
nodev | ファイルシステム上のキャラクタ・スペシャル・デバイスやブロック・スペシャル・デバイスを利用できないようにする |
noexec | バイナリの直接実行を禁止する |
noauto | mount コマンドの-a オプションでマウントされない |
user | 一般ユーザーでもファイルシステムをマウントできるようにする |
users | 全てのユ ーザーがファイルシステムをマウント・アンマウント出来るようにする |
remount | すでにマウントされているファイルシステムを再マウントする。オプションを変えてマウントし直したい時、例えば、リードオンリーを読書き可能としてマウントし直す際等に使用する。 |
※オプションはまだまだあります。
3. mountする
/dev/sdb5 パーティションを、/mnt/diskA ディレクトリ配下へマウントしてみます。
# mount -t ext4 -o defaults /dev/sdb5 /mnt/diskA/ ← mountする
マウントされたか確認します。確認は、以下のようにします。
# mount -t ext4 ← ext4でマウントされているファイルシステムのリストを表示する /dev/mapper/vg_sandbox1-lv_root on / type ext4 (rw) /dev/sda1 on /boot type ext4 (rw) /dev/sdb5 on /mnt/diskA type ext4 (rw) ← ext4でマウントされている
一度マウントしてしまえば、普通のディレクトリのように使う事ができます。
4. OSを再起動した後もmountさせる
OSを再起動した後もmountさせるには、/etc/fstab へ記述しておきます。
例えば、再起動後も /dev/sdb5 パーティションを、/mnt/diskA ディレクトリ配下へマウントさせるには、以下のように追記します。
/dev/sdb5 /mnt/diskA ext4 defaults 0 0
/etc/fstab について
fstabファイルの中身をみてみます。
# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Aug 13 09:25:19 2013 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/vg_sandbox1-lv_root / ext4 defaults 1 1 UUID=b5bc792e-4c30-48a5-bd1a-f071192d5573 /boot ext4 defaults 1 2 /dev/mapper/vg_sandbox1-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
fstab ファイルは、それぞれのファイルシステムのマウント情報を1行に1つずつ書きます。各行のフィールドは、スペースか、TABで区切られます。
また、fsck mount, umount などのfstabファイルを利用するプログラムは、 fstab ファイルを先頭から順に読み込んで処理するため、fstabの中にに記述されるレコード(ファイルシステム)の順序は重要です。
各フィールドについて
フィールド | 記述内容 |
第1フィールド |
マウントしたいデバイスファイルを書く。 例:/dev/sdb5 UUIDや、ボリュームラベルで指定する事もできる。LABEL=Boot、UUID=3e6be9de-8139-11d1-9106-a43f08d823a6 |
第2フィールド | ファイルシステムのマウントポイントを記述する。 例:/mnt/diskA |
第3フィールド | ファイルシステムのタイプを記述する。 例:ext3, ext4, iso9660, nfs 等 |
第4フィールド | ファイルシステム毎のマウントオプションを記述する。オプションが複数ある場合は、「,カンマ」で区切る。 |
第5フィールド | ファイルシステムを dump コマンドがダンプする必要があるかを記述する。1が必要。0が不要。記述がないのも不要とみなす。 |
第6フィールド |
fsckが、ブート時にファイルシステムのチェックを実行する順序を決定するために参照される。 ルートファイルシステムは、1と記述する必要がある。それ以外のパーティションは、2と記述する。 0の場合は、fsckによるチェックが不要とみなす。 |
memo
ラベルとは
ハードディスク等の記憶装置を識別するために、ユーザが自由に付けられる名前の事をいいます。
mkfs コマンド実行時に、オプションに、-L ラベル名と指定したり、e2label コマンドを使うことで、ボリュームにラベルをつける事ができます。
# mkfs -t ext4 -L hdd1 /dev/sdb5 ←/dev/sdb5にhdd1というラベル名をつける
や、
# e2label /dev/sdb5 hdd1 ←/dev/sdb5にhdd1というラベル名をつける
どちらの手順でもラベル名をつける事ができます。
ラベルを確認する
e2label コマンドで確認できます。
# e2label /dev/sdb5
hdd1 ←/dev/sdb5のラベル名が表示される。
ラベルをつけたファイルシステムをfstabへ記述する場合は、以下のように記述します。
LABEL=hdd1 /mnt/diskA ext4 defaults 0 0
memo
UUIDとは
UUIDとは、機器を管理・識別ためのIDです。誰かが重複しないように管理しているわけではないのですが、機器を識別するためのユニークなIDとして存在しており、ハードディスクにもUUIDが割り振られています。
ハードディスクのUUIDを調べるには、blkid コマンドを使います。
# blkid
/dev/sda1: UUID="b5bc792e-4c30-48a5-bd1a-f071192d5573" TYPE="ext4"
/dev/sda2: UUID="50KmAJ-A2Le-xYiK-ag0P-sQgb-bZXI-rWa21g" TYPE="LVM2_member"
/dev/sdb5: LABEL="hdd1" UUID="8b976773-def1-4a70-acc1-6284f53cf230" TYPE="ext4"
↑ /dev/sdb5のラベル、UUID、Typeがわかる
/dev/mapper/vg_sandbox1-lv_root: UUID="fa117ec8-70ec-4fc5-bff2-f74bbe58b972" TYPE="ext4"
/dev/mapper/vg_sandbox1-lv_swap: UUID="38037ae3-a844-487b-8b49-98d98cff0b69" TYPE="swap"
fstabにUUIDでレコードを記述しておくと、ハードディスクの接続を物理的に変えたり、 デバイスの追加・変更等でデバイス名が変更されてしまった場合(例えば、sda1がsdb1に変更された等)でも、 fstabに書いたそのレコードは指定したUUIDのデバイスを選択してくれます。 fstabをデバイス名で記述していた場合、デバイス名が変更されてしまったとしたら正常に起動してこない場合もあります。
fstabへの記述例
UUID=8b976773-def1-4a70-acc1-6284f53cf230 /mnt/diskA ext4 defaults 0 0
ハードディスクのUUIDも、ファイルシステムを作る際に生成されています。mkfsコマンドに-U オプションを指定すれば好きなUUIDをつける事ができます。
# mkfs -t ext4 -L hdd1 -U aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa /dev/sdb5 ← UUIDを指定 # blkid /dev/sda1: UUID="b5bc792e-4c30-48a5-bd1a-f071192d5573" TYPE="ext4" /dev/sda2: UUID="50KmAJ-A2Le-xYiK-ag0P-sQgb-bZXI-rWa21g" TYPE="LVM2_member" /dev/sdb5: LABEL="hdd1" UUID="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" TYPE="ext4" ↑ UUIDが指定したものに /dev/mapper/vg_sandbox1-lv_root: UUID="fa117ec8-70ec-4fc5-bff2-f74bbe58b972" TYPE="ext4" /dev/mapper/vg_sandbox1-lv_swap: UUID="38037ae3-a844-487b-8b49-98d98cff0b69" TYPE="swap"
誰も得しませんがこういう仕組みということで。。