5.4. ディスクのマウント、アンマウント -mount , umountコマンド-

【コマンド説明】mount , umount
ハードディスクやフラッシュメモリ、ネットワーク越しのディスクやCD/DVD/Blu-ray等、様々なディスクが今日の環境には存在しています。これらのデバイスをLinux で使えるようにするためには、ディレクトリツリーのどこかにデバイスを「繋ぐ」という行為が必要です。この繋ぐ行為を「マウント」と呼びmountコマンドにより実行します。また、使わなくなったディスクを開放して取り外せるようにすることを「アンマウント」と呼びます。ただし、コマンド名はunmountではなくumountですので注意して下さい。
あるデバイスをマウントしたい場合、デバイスを繋げる先となる「マウントポイント」が必要になります。マウントポイントはディレクトリのことですが、そのディレクトリにマウントしたデバイスがマッピングされるため、そこにファイルがあったとしても覆い隠されて一時的に読めなくなります。

一般にLinux では、接続されたデバイスは/devディレクトリ以下にデバイスファイルとして登録されています。

  • ハードディスク
    SATAのディスクであればsda〜sdhが該当します。ハードディスクの中はパーティションという区切りによって複数に仕切られているため、前出のsda〜sdhの後に番号をつけて利用します。(例:sda1)
  • CD/DVD-ROM
    旧式のIDEであれ、SCSIであれ、インストールに使ったCD/DVD-ROMは“/dev/cdrom”にリンクされています。起動中に光学ドライブに挿入した場合には、“/media”にマウントされます。
  • ネットワーク越しのディスク
    主に用いられているのはNFSとSambaです。NFSはUNIX向けのファイル共有サーバであり、サーバのIPアドレス及び共有許可を与えられているディレクトリ名を組にして用います。たとえばamuというサーバ上のディレクトリ“/export“の使用が認められている場合、“amu:/export”という名前で用います。一方、SambaはWindows間でのファイル共有で提供される仕組みであり、1ファイルシステムとして利用します(smbfs)。この場合には、Windowsの流儀に近い、UNC名を利用した名前になります(例:“//amu/share”)。
  • 論理ボリューム
    複数のディスクを仮想的にひとまとめにしたものです。RAIDもそのためのものですが、ソフトウェアRAIDの場合は“/dev/md*”(*は数字)を用い、ハードウェアRAIDの場合はSCSIのディスクとしてマッピングされます。また、最近のLinuxではLVMによって拡張性のある論理ボリュームが提供されています。この場合は“/dev/VG名/LV名”となります。

LVMとは?
LVM(logical volume manager)とは、複数のハードディスクやパーティションにまたがった記憶領域を一つの論理的なディスクとして扱うことのできるディスク管理機能。LinuxをはじめとしたUNIX系OS上で利用できる。
LVMでは、パーティション内を数十メガバイトの多数の小さな領域(物理エクステント)に細かく分割して管理する。
(1)物理エクステントの集団を2つに分ける
(2)異なるハードディスク上にある物理エクステントを1つにまとめて管理する

以上2つの特徴で、あたかも1つのハードディスクを分割したり、複数のハードディスクを結合したかのように利用できる。

例えばデバイス“/dev/sda2”を、マウントポイントとして“/mnt/data”というディレクトリ(あらかじめ存在している必要があります)にマウントするという場合は、root権限を取得し以下のようにコマンドを入力します。

# mount /dev/sda2 /mnt/data/

現在のマウント状態を確認するには、ただmountと実行するだけです。

# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

1行目の“/dev/sda3 on / type ext4 (rw)”は、「デバイス/dev/sda3をext4形式で“/”にマウントしている」という意味になります。各パーティションやメディアには、固有の形式(フォーマット)があるのですが、Linuxでは数多くのフォーマットを認識できます(無論できないこともあります)。

一例としては、以下のようなものがあります。

  • ext3 , ext4
    Linuxのネイティブ形式です。まだext3が主流ですが、ext4への移行が進んでいます。
  • ReiserFS , JFS , XFS
    Linux向けに開発された障害対策や性能向上を求めたフォーマット、IBM(JFS)やSGI(XFS)が開発している。ジャーナルという仕組みを加えて耐障害性を上げた仕組みが近年の主流です。
  • VFAT , MSDOS
    Windows向けのフォーマットです。
  • NTFS
    ディストリビューションによりサポートを外している場合がありますが、Windows NT/2000/XPのNTFS形式です。
  • HFS
    Macintoshで使われるフォーマット。
    HFS拡張(HFS+)のサポートは標準カーネルでは行われていません。
  • iso9660(isofs) , UDF
    CD-ROM(iso9660)やDVD-ROM(UDF)、ちなみにCD-ROMだからといって必ずしもiso9660やUDFである必要はないことに注意して下さい。(実際、MacOSのCDはHFSです)
  • proc , devfs , usbdevfs , devpfs , tmpfs , sysfs
    これらは仮想的なものであり、実際に存在するディスク向けのものではありません。よって普段、意識的にマウントすることはありません。
  • NFS , smbfs
    ネットワーク越しにディスクをマウントするための形式です。たいていのフォーマットは自動認識しますが、認識できなかった時には、
    “-t [フォーマット]”として明示的に指定することができます。

一方デバイスをマウントポイントから切り離すためのumountコマンドは引数としてマウントポイントを指定します

うまく切り離せたかは直後にmountコマンドで確認してみるといいでしょう。なお、umountするには、切り離したいディレクトリを他のユーザやプロセスなどが一切利用していないことが条件となっています。

【動画説明】
では実際にUSBメモリをマウントしてみましょう。Linuxが起動しているときにUSBメモリを挿すと自動的にSCSIとして認識されます。 接続しているディスクなどにもよりますが、/dev/sda1や/dev/sdb1などのデバイスファイル名になります。 今回は、/dev/sdb1を/mnt/rootにマウントします。

# mount /dev/sdb1 /mnt/root/

マウントできたか確認します。

# mount

/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /mnt type vfat (rw) → マウントされている

マウントされていることを確認できました。ではアンマウントしてみましょう。

# umount /dev/sdb1

# mount

/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
→ 先ほどマウントされていた部分が消えている

【問題】
1. USBメモリ等のストレージデバイスを接続して、/mntディレクトリにマウントしてみましょう
2. 先ほどマウントしたUSBメモリをアンマウントして安全に取り外してみましょう

資料をダウンロード