5.4 ファイル

 コンピュータ上ではさまざまなファイルがあります. ここまでにでてきたファイルにはコマンドやユーザ情報のファイル, OS の起動の設定を記述したものなどがありました. 実際にはもっとたくさんのファイルがありほとんどがハードディスク上に保存されています.
 ここではハードディスクをどのように利用しているかを確認します.

パーティション
 容量の大きいハードディスクは通常 パーティション という単位に分割して利用します. Linux をインストールするときにもハードディスクをパーティションに分割して / (ルート)や swap といったマウントポイントを指定しました.

 パーティションの状態を確認するためのコマンドに df コマンドがあります.これによって各パーティションの利用状況(使用している容量, 空き容量)やどこにマウントされているかを確認することができます.


[user]$ df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda1              2746992   1342960   1404032  49% /
/dev/hda5              3076316    141532   2934784   5% /home
[user]$					

 この例では 1 番目に接続されているハードディスク(/dev/hda) が 2 つのパーティションに分割されていて /dev/hda1 は約 2.7GB の総容量がありそのうち 1.3GB 程が利用されていて, 1.4GB 程の空きがあることが分かります. 一方 /dev/hda5 は約 3.1GBの総容量がありそのうち 0.1GB が利用されていて, 2.9GB 程の空きがあることが分かります.また, /dev/hda1 と /dev/hda5 はそれぞれ / と /home にマウントされています.

 パーティションを設定するツールには代表的なものに fdiskDisk Druid があります(この他にも市販されているものもありますが, Linux でよく利用される代表的なものはこの 2 つです).パーティションを変更すると, データは消えてしまいますのでパーティションの設定をするときは注意して行って下さい.


ファイルシステム
  ファイルは新しく作成されたり, 削除されたり常に変化していますのでそれに応じて領 域を確保したり, 解放するなどの管理を行わなければいけません. このようにハードディスク上の 領域を管理し, ファイルを利用しやすくするためのものが ファイルシステム です.
  ファイルシステムにはさまざまな種類があります. 例えば Linux には ext2, ReiserFS, ext3 などがあり, Windows には fat, fat32, NTFS などがあります. こ れらのファイルシステムを介して OS はファイルを扱うことができます.

  パーティションに分割されたハードディスクは各パーティション毎にファイルシステムを 作成して管理できる状態にする必要があります(Windowsではフォーマットにあたる操作です). そのためのコマンドが mkfs です. 例えばパーティション /dev/hda2 に ext2 のファイルシステムを作成するには次のように -t オプションで作成するファイルシス テムを指定して実行します.

 mkfs -t ext2 /dev/hda2 
作成できるファイルシステムはディストリビューションによって違いますのでどのファイルシステム が利用できるかはそれぞれ確認してください. また, ファイルシステムを作成するときも以前のデータは消えてしまいますので注意して行って下 さい.


マウント
 Linux ではディレクトリは / を頂点とする階層構造になっていて全てのファイルは / 以下のディレクトリ上に存在します.そこで各ファイルシステムは階層構造上のどの場所に存在するかを指定する必要があります. この指定をすることを マウント と言い, 指定した場所のことを マウントポイントと言います. ファイルシステムはマウントすることによって利用できるようになります.
 先程の df コマンドの結果ではパーティション /dev/hda1 のファイルシステムはディレクトリ / にマウントされており, このファイルシステム上のディレクトリとファイルは /ディレクトリ以下に存在し, パーティション /dev/hda5 のファイルシステムはディレクトリ /home にマウントされており, このファイルシステム上のディレクトリとファイルは /home ディレクトリ以下に存在することになります.

 マウントの状況を確認するコマンドに mount があります.


[user]$ mount
/dev/hda1 / reiserfs rw 0 0
none /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda5 /home reiserfs rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
automount(pid488) /misc autofs rw,fd=5,pgrp=488,minproto=2,maxproto=3 0 0
[user]$				

これによってデバイス(ハードディスクの場合はパーティションに相当)のファイルシステムやマウントポイントが確認できます. ここで表示される内容は /etc/mtab の内容と同じです.

 mount コマンドで新たにデバイスをマウントすることもできます.例えばデバイス /dev/hdc に接続されている CD-ROM を /mnt/cdrom にマウントするには, CD-ROM のファイルシステムである iso9660 を指定して次のようにします

 mount -t iso9660 /dev/hdc /mnt/cdrom 
 これは root 権限で実行して下さい.
 また umount コマンドで利用しなくなったファイルシステムを アンマウントすることもできます.先程 /mnt/cdrom にマウントした CD-ROM のデバイスをアンマウントするには次のようにします.
 umount /mnt/drom 

 ファイルを利用するときには必ずマウントしておかなければいけませんので Linux を起動したときにいくつかのファイルシステムは時動的にマウントされます. そのための設定を記述しているのが /etc/fstab です. /etc/fstab の中身は次のようになっています.


/dev/hda1               /                       reiserfs defaults       0 0 
/dev/hda5               /home                   reiserfs defaults       0 0
/dev/hda2               /dos                    vfat    defaults        0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner    0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/pts                devpts  gid=5,mode=620  0 0
/dev/hda6               swap                    swap    defaults        0 0	

 このファイルには利用するデバイスとそのファイルシステムとマウントポイントなどが記述されています.ここに記述されているデバイスに関しては mount コマンドでマウントポイントを指定するだけでマウントすることができます.例えばファイルの中に /dev/fd0 というデバイスがあり /mnt/floppy にマウントされる設定になっています. これはフロッピーディスクですが実際にはフロッピーディスクが入っていない場合は対象となるデバイスが存在しないことになりますのでマウントされません.ただし, 後からフロッピーを利用したいときにはフロッピーを挿入した後で次のようにすることで利用することができます.


[root]# mount /mnt/floppy
[root]# mount
/dev/hda1 / reiserfs rw 0 0
none /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda5 /home reiserfs rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
automount(pid488) /misc autofs rw,fd=5,pgrp=488,minproto=2,maxproto=3 0 0
/dev/fd0 on /mnt/floppy type vfat (rw,nosuid,nodev)
[root]# umount /dev/floppy
[root]# mount
/dev/hda1 / reiserfs rw 0 0
none /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda5 /home reiserfs rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
automount(pid488) /misc autofs rw,fd=5,pgrp=488,minproto=2,maxproto=3 0 0
[root]#				

ファイルシステムのチェック
 正式な終了手順で Linux を終了できなかった場合はそのときに利用していたファイルシステムの情報が正しく変更されずに終了してしまうことがあります. このような場合は fsckコマンドで状態の確認と修復ができます. デバイス /dev/hda1 のファイルシステム ext2 の状態を確認するには次のようにします.
 fsck -t ext2 /dev/hda1 
 また, 終了を正しく行わなかったときなどは次回の起動時に fsck コマンドを実行するようにメッセージがでることがありますのでデバイスを指定して修復を行って下さい.

その他のファイルシステムのファイルの参照方法
  • Linux から Windows のファイルを参照する
     Linux からマウントするときにファイルシステムを指定することでほとんどのWindows のファイルシステムそのままを扱うことができます. 上に出てきた /etc/fstab の設定の中では/dev/hda2 デバイスは Windows の vfat というファイルシステムとして /dos ディレクトリにマウントする設定になっています.
     また, Windows 上でフォーマットしたフロッピーディスクを利用するには mtools というツールを使うことでフロッピーディスク内のファイルを扱うことができます.
  • Windows から Linux のファイルを参照する
     Explore2fs というツールで Windows から Linux のファイルを参照できます.