システムに新しいハードディスクを挿入したら、通常は fdisk や parted などのユーティリティを使用してパーティションを作成します。パーティションを作成したら、mkfs コマンドを使用して ext2、ext3、または ext4 パーティションを作成します。
パーティションを作成したら、mount コマンドを使用してパーティションをマウント ポイント (ディレクトリ) にマウントし、ファイル システムの使用を開始する必要があります。
このチュートリアルでは、mount コマンドと umount コマンドの両方について知っておく必要があるすべてのことを、15 の実用的な例で説明します。
デバイスをマウントするための一般的な mount コマンド構文:
mount -t type device destination_dir
1. CD-ROM をマウント
CD のデバイス ファイルは、/dev ディレクトリの下に存在します。たとえば、CD-ROM デバイスは次のようにマウントされます。
# mount -t iso9660 -o ro /dev/cdrom /mnt
上記の例では、オプション「-o ro」は、cdrom を読み取り専用アクセスでマウントする必要があることを示しています。また、マウント コマンドを実行する前に、宛先ディレクトリ (上記の例では /mnt) が存在することを確認してください。
2.すべてのマウントを見る
パーティションまたはファイルシステムのマウントを実行した後、引数を指定せずにマウント コマンドを実行して、すべてのマウントを表示します。
以下の例では、USB ドライブをシステムにマウントした後、mount の出力は次のようになります。以下に示すように、USB デバイス (つまり、/dev/sdb) は /media/myusb にマウントされており、これはマウント コマンドの最後の行として表示されます。
# mount /dev/sda5 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) none on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda6 on /mydata type ext2 (rw) /dev/sda7 on /backup type vfat (rw) gvfs-fuse-daemon on /home/bala/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=bala) /dev/sdb on /media/myusb type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
df コマンドを使用して、すべてのマウント ポイントを表示することもできます。
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda5 195069136 128345036 56958520 70% / udev 2008336 4 2008332 1% /dev tmpfs 806244 928 805316 1% /run none 5120 0 5120 0% /run/lock none 2015604 228 2015376 1% /run/shm /dev/sda6 17729076 176200 16657596 2% /mydata /dev/sda7 11707200 573312 11133888 5% /backup /dev/sdb 3910656 2807160 1103496 72% /media/myusb
3. /etc/fstab に記載されているすべてのファイルシステムをマウントします
/etc/fstab にリストされているファイルシステムは、起動プロセス中にマウントされます。起動後、システム管理者はさまざまな理由で一部のパーティションをアンマウントする場合があります。 /etc/fstab で指定されているようにすべてのファイルシステムをマウントしたい場合は、以下に示すように、mount で -a オプションを使用します。
/etc/fstab ファイルのエントリの例:
# cat /etc/fstab # proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda5 during installation /dev/sda5 / ext4 errors=remount-ro 0 1 # /mydata was on /dev/sda6 during installation /dev/sda6 /mydata ext2 defaults 0 2 # /backup was on /dev/sda7 during installation /dev/sda7 /backup vfat defaults 0 3
-a オプションを指定してマウント コマンドを実行し、すべての /etc/fstab エントリをマウントします。
# mount -a # mount /dev/sda5 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) none on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda6 on /mydata type ext2 (rw) /dev/sda7 on /backup type vfat (rw) gvfs-fuse-daemon on /home/bala/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=bala)
同じ -a オプションを umount で使用して、/etc/mtab に記載されているすべてのファイルシステムをアンマウントできます
# umount -a umount: /run/shm: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) umount: /run: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) umount: /dev: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) umount: /: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
一部のファイルシステムは、使用中または現在使用中のため、マウント解除されません。ファイル /etc/mtab と /proc/mounts の内容は似ていることに注意してください。
4. /etc/fstab から特定のファイルシステムのみをマウント
マウントにディレクトリ名のみを渡すと、マウント ポイント エントリが検索され、見つからない場合は、/etc/fstab でデバイスを連続して検索し、マウントされます。
# mount | grep /mydata # cat /etc/fstab | grep mydata ##########/mydata was on /dev/sda6 during installation########## /dev/sda6 /mydata ext2 defaults 0 2
上記のように、/mydata ディレクトリはマウントポイントではありませんが、/etc/fstab に存在します。
# mount /mydata # mount | grep /mydata /dev/sda6 on /mydata type ext2 (rw)
同じことをもう一度実行すると、次のようなエラー メッセージが表示されます:
# mount /mydata mount: /dev/sda6 already mounted or /mydata busy mount: according to mtab, /dev/sda6 is already mounted on /mydata
ここでは、ディレクトリ名の代わりにデバイス名を渡すこともできます (/etc/fstab ファイルから取得されます)。
# mount /dev/sda6
ファイル /etc/mtab と /proc/mounts の内容は似ていることに注意してください。
5.特定のタイプのマウントされたすべてのパーティションを表示
以下に示すように、オプション -l と -t を使用して、マウントされた特定のタイプのファイルシステムのみをリストすることができます:
# mount -l -t ext2 /dev/sda6 on /mydata type ext2 (rw) # mount -l -t ext4 /dev/sda5 on / type ext4 (rw,errors=remount-ro)
上記のように、/dev/sda6 は唯一の ext2 パーティションであり、/dev/sda5 は唯一の ext4 パーティションです。
6.フロッピー ディスクをマウントする
フロッピー ディスクのデバイス ファイルは、/dev ディレクトリの下に存在します。たとえば、フロッピー ディスクは次のようにマウントされます。
# mount /dev/fd0 /mnt # cd /mnt
マウントが成功すると、フロッピー ディスクの内容にアクセスできるようになります。作業が完了したら、システムからフロッピー ディスクを物理的に取り外す前に、umount を使用してください。
# umount /mnt
7.マウント ポイントを新しいディレクトリにバインド
マウントポイントは、新しいディレクトリにバインドできます。同時に複数のマウントポイントを介してファイルシステムのコンテンツにアクセスできるようにします。
次のように -B オプションを olddir と newdir に使用してバインドします。
# mount -B /mydata /mnt
これでバインドが完了し、次のように確認できます。
# mount | grep /mydata /dev/sda6 on /mydata type ext2 (rw) /mydata on /mnt type none (rw,bind)
上記のように、バインドは適切に行われます。したがって、ある場所でファイルシステムを変更すると、以下に示すように、他のマウント ポイントでその変更が反映されていることがわかります:
# cd /mydata # ls test # mkdir dir1 # mkdir dir2 # ls test dir1 dir2 # cd /mnt # ls test dir1 dir2
8.新しいマウント ポイントからコンテンツにアクセス
Mount を使用すると、新しいマウント ポイントからマウント ポイントの内容にアクセスできます。マウントされたツリーを別の場所に移動するだけです。
以下の例では、以下に示すように、オプション -M を使用して /mnt からマウント ポイント /mydata にアクセスします。
# mount -M /mydata /mnt/
完了すると、古いマウント ポイントは新しいマウント ポイントに移動されるため、使用できなくなります。これは、以下に示すように確認できます。
# mount | grep /mydata # mount | grep /mnt /dev/sda6 on /mnt type ext2 (rw)
9. /etc/mtab にエントリを書き込まずにマウント
/etc/ の読み取り専用マウント中は、mount コマンドで /etc/mtab ファイルのエントリを変更できません。ただし、次のようにオプション -n を使用すると、/etc/mtab に書き込まずにマウントできます。
# mount -n /dev/sda6 /mydata
この /mydata のエントリは、mount コマンドの出力にも、次のように /etc/mtab ファイルにも表示されません:
# mount | grep /mydata # cat /etc/mtab | grep /mydata
マウントされたディレクトリ /mydata の内容にアクセス:
# cd /mydata # ls dir1 dir2 test
10.読み取りまたは読み取り/書き込みアクセスでファイルシステムをマウント
パーティションを読み取り専用としてマウントするには、-o ro と同義の -r オプションを使用します。
# mount /dev/sda6 /mydata -r # mount | grep /mydata /dev/sda6 on /mydata type ext4 (ro)
ext3 および ext4 ファイルシステムでは、ファイルシステムがダーティな場合でも書き込み操作を実行できます。そのため、この種の書き込み操作を防ぐために、「ro,noload」を使用する必要がある場合があります。
# mount /dev/sda6 /mydata -t ext4 -o ro -o noload # mount | grep /mydata /dev/sda6 on /mydata type ext4 (ro,noload)
読み取り/書き込みアクセスでパーティションをマウントするには、「-o rw」と同じ -w オプションを使用します (つまり、デフォルト)。
11.マウントされたファイルシステムを再マウント
既にマウントされているファイルシステムをマウントするには、remount オプションを使用します。これは通常、以前に読み取りアクセスでマウントされていたファイルシステムを読み取り/書き込みアクセスで再マウントするために使用されます。
/mydata マウント ポイントは、以下に示すように、読み取りアクセスから読み取り/書き込みアクセスで再マウントされます:
# mount | grep /mydata /dev/sda6 on /mydata type ext4 (ro,noload) # mount -o remount,rw /mydata # mount | grep /mydata /dev/sda6 on /mydata type ext4 (rw)
12. iso イメージをディレクトリにマウント
iso イメージは以下のようにマウントできます:
# mount -t iso9660 -o loop pdf_collections.iso /mnt # cd /mnt # ls perl/ php/ mysql/
13.複数のマウント ポイントをアンマウント
次のように、umount を使用すると、コマンドの umount を 1 回実行するだけで複数のマウント ポイントをアンマウントできます。
# umount /mydata /backup # mount | grep /mydata # mount | grep /backup
14.ファイルシステムの遅延アンマウント
これは、ディスク操作が完了した後にパーティションをアンマウントする場合に備えて、umount の特別なオプションです。そのパーティションに対してコマンド umount -l を発行すると、ディスク操作が完了した後にアンマウントが行われます。
たとえば、タスク (つまり、スクリプトまたはその他のコマンド) がディスク上でコピー操作を実行していて、同時に -l を使用してアンマウントを発行できるシナリオを考えてみましょう。コピーが終了しました (つまり、ディスク操作)。
# umount /mydata -l
15.ファイルシステムを強制的にアンマウント
umount は、以下に示すように、デバイスがビジー状態のときにオプション -f を使用してファイルシステムを強制的にアンマウントするオプションを提供します:
# umount -f /mnt
これがうまくいかない場合は、レイジー アンマウントを使用できます。
一方、以下に示すように、どのプロセスが現在マウントポイントを使用しているかを示す ps コマンドの出力を確認することもできます。
# ps ajx | grep /mydata 2540 3037 3037 2468 pts/2 3037 D+ 0 0:00 cp -r /home/geekstuff/ProjectData/ /mydata
また、fuser コマンドを実行して、操作用のディレクトリを保持しているプロセスを見つけることもできます。
# fuser -cu /mydata /mydata: 3087(root)
ユーザー名(プロセスの所有者以外は何もありません)でプロセスIDを提供します。そのプロセスが何であるかがわかっている場合は、そのプロセスを停止してから、umount を再試行してください。