こんにちは。22年度入社の中島です。
前回はLinuC101試験に向けての学習の一環として、GNU/Linuxついての記事を作成しました。今回はLinuC101試験のファイルシステムについての内容をまとめました。この記事を通じて、ファイルシステムの基本的な内容、ファイルシステムのマウントとアンマウント、ファイルシステムのバックアップについて共有します。
1. ファイルシステムとは
ファイルシステムとは、コンピュータのストレージデバイス(HDD、SSDなど)上でデータを管理するための方法であり、データの保存、取得、整理を行います。ファイルシステムは、ファイルを格納する場所(ファイルシステムのブロック)とその情報を格納するメタデータを管理します。例えば、ファイルの名前、サイズ、作成日などです。
2. ファイルシステムの作成と管理
ファイルシステムを新しく作成するには、mkfsコマンドが一般的です。具体的な手順は以下の通りです。
ファイルシステムの作成
1 |
mkfs -t ext4 /dev/sdX1 |
ファイルシステムの管理
作成したファイルシステムの管理には、tune2fs(extファイルシステム用)やxfs_admin(xfs用)といったコマンドが使用されます。例えば、tune2fsを使用してext4ファイルシステムの設定を変更することが可能です。
1 |
tune2fs -l /dev/sdX1 |
3. 一般的なファイルシステムタイプ
Linuxではいくつかのファイルシステムタイプがサポートされており、用途に応じて選択することが重要です。以下は代表的なファイルシステムタイプです。
コマンド | 説明 |
---|---|
ext3 | ext3は、Linuxで広く使用されているジャーナリングファイルシステムで、ext2ファイルシステムの後継として登場しました。ジャーナリング機能により、システムクラッシュや突然の電源断からの回復が速くなります。 |
ext4 | 最も一般的なLinuxのファイルシステムであり、ジャーナリング機能を持ち、データの信頼性が向上しています。ext4は、安定性と速度のバランスが良いため、個人のPCやサーバーにも広く利用されています。 |
xfs | xfsは、大容量ファイルや高速な書き込みが必要なシステムで利用されます。特にデータベースやファイルサーバーに適しており、スナップショットやデータの圧縮機能を提供します。 |
btrfs | btrfsは、スナップショット機能や圧縮、自己修復機能を備えた新しいファイルシステムです。ファイルシステムの管理が容易で、ストレージの拡張性や効率性に優れています。 |
f2fs | フラッシュメモリ向けに最適化されたファイルシステムで、特にSSDやeMMCのようなフラッシュストレージに適しています。 |
iso9660 | iso9660は、主にCD-ROMやDVD-ROMなどの光ディスクメディアに使用されるファイルシステム規格です。このファイルシステムは、光ディスクにおけるデータの標準的な配置方法を定めています。 |
UDF | UDFは、光ディスクやその他のストレージデバイス向けに設計されたファイルシステムで、iso9660の後継として登場しました。主にDVD、Blu-rayディスク、USBフラッシュドライブなどの書き込み可能なメディアで使用されます。 |
4. スワップ領域について
スワップ領域は、システムメモリ(RAM)が不足した際に使用されるディスク領域であり、仮想メモリの一部として機能します。スワップ領域を設定することで、システムがメモリ不足の際にハングアップせずに動作を維持することができます。
スワップ領域の作成例:
1 |
mkswap /dev/sdX2 |
1 |
swapon /dev/sdX |
ここで、/dev/sd2はスワップ領域として使用するパーティションです。swaponコマンドでスワップを有効にすることができます。
5. ファイルシステムのマウントとアンマウント
ファイルシステムは、物理デバイス(ハードディスク、SSD、USBドライブなど)に格納されたデータにアクセスするために、システムに「マウント」して利用します。マウントとは、ファイルシステムを特定のディレクトリに接続し、そこからファイルにアクセスできるようにする操作です。アンマウントは、逆にファイルシステムを切り離し、デバイスを安全に取り外すための操作です。
Linuxでは、mountコマンドとumountコマンドを使ってファイルシステムをマウントおよびアンマウントします。
ファイルシステムのマウント
ファイルシステムをマウントするには、mountコマンドを使用します。マウントは、デバイスとマウントポイントというディレクトリを指定して行います。マウントポイントは、ファイルシステムが接続されるディレクトリで、通常は/mntや/mediaが利用されますが、任意のディレクトリを指定できます。
例えば、/dev/sda1というパーティションを/mntにマウントする場合、次のようにコマンドを実行します。
1 |
mount /dev/sda1 /mnt |
このコマンドを実行すると、/dev/sda1の内容が/mntディレクトリに表示され、そこからファイルを読み書きできるようになります。
例:ファイルシステムをマウントする
例えば、/dev/sda1という外部ドライブを/media/usbというディレクトリにマウントしたい場合、次のようにコマンドを実行します。
1 |
mount /dev/sdb1 /media/usb |
これで、/media/usbにアクセスすることで、外部ドライブ内のファイルを操作できるようになります。
マウントのオプション
mountコマンドには、さまざまなオプションを付けてマウントをカスタマイズできます。以下は代表的なオプションです
- -t:マウントするファイルシステムのタイプを指定します(例:ext4、xfs)。bashコードをコピーする
1mount -t ext4 /dev/sda1 /mnt
- -o:特定のオプションを指定します。例えば、ro(読み取り専用)やnoexec(実行不可)など。bashコードをコピーする
1mount -o ro /dev/sda1 /mnt
- -v:詳細な出力を表示します。マウントの進行状況やエラーを確認できます。bashコードをコピーする
1mount -v /dev/sda1 /mnt
永続的なマウント(/etc/fstabを使用)
一度マウントしたファイルシステムは、再起動後に自動的にマウントされるわけではありません。システムの起動時に自動的にマウントするためには、/etc/fstabというファイルに設定を追加する必要があります。
/etc/fstabファイルに、マウントするデバイスとマウントポイント、ファイルシステムタイプなどを記載します。例えば、/dev/sda1を/mntにマウントする設定は次のように記載します。
1 |
/dev/sda1 /mnt ext4 defaults 0 2 |
これで、システムが起動するたびに/dev/sda1が自動的に/mntにマウントされます。
ファイルシステムのアンマウント
ファイルシステムをアンマウントするには、umountコマンドを使用します。アンマウントは、ファイルシステムへのアクセスを停止し、デバイスを切り離す操作です。
アンマウントするには、マウントポイントまたはデバイスを指定します。例えば、/mntをアンマウントするには次のようにコマンドを実行します。
1 |
umount /mnt |
また、デバイス名を指定してアンマウントすることもできます。
1 |
umount /dev/sda1 |
アンマウント時の注意点
- アンマウントを行う前に、マウントされているディレクトリ内のファイルが使用中でないことを確認する必要があります。ファイルが開かれていたり、プロセスがファイルシステムにアクセスしていると、アンマウントできない場合があります。
- lsofコマンドやfuserコマンドを使って、ファイルシステムを使用しているプロセスを確認できます。
1 |
lsof /mnt |
または
1 |
fuser -m /mnt |
これらのコマンドを使って、ファイルシステムを使用しているプロセスを確認し、プロセスを終了させてからアンマウントすることができます。
6. ファイルシステムの整合性チェックと修復
ファイルシステムの整合性を維持するためには、定期的なチェックと修復が重要です。特に、システムがシャットダウン不完全であった場合や、ディスクの物理的な問題が発生した場合には、ファイルシステムが壊れることがあります。そのため、定期的なチェックと修復作業はシステムの安定性を保つために欠かせません。
Linuxでは、fsck(File System Consistency Check)コマンドを使用して、ファイルシステムのエラーをチェックし、修復することができます。fsckは、指定したファイルシステムに対して以下の作業を行います:
- ファイルシステムのメタデータを確認し、破損している場合には修復
- ファイルシステム内での不整合を検出し、修復
- 破損したファイルを隔離し、可能な限り復旧
fsckコマンドの使い方
ファイルシステムの整合性をチェックするためにfsckコマンドを使用します。例えば、/dev/sda1というパーティションのファイルシステムをチェックするには以下のコマンドを実行します。
1 |
fsck /dev/sda1 |
このコマンドを実行すると、システムは自動的にファイルシステムを確認し、エラーが発見されると修復を試みます。
例: fsckの実行
例えば、次のようにコマンドを実行した場合、ファイルシステムにエラーがあったと仮定します。
1 |
fsck /dev/sda1 |
出力例:
1 |
fsck from util-linux 2.34 e2fsck 1.44.5 (15-Dec-2018) Checking for unreferenced inodes.. Inode 123456789 not used (id=1234) ... /dev/sda1: 1/1000000 files (0.1% non-contiguous), 10000/1000000 blocks |
この場合、fsckはエラーを修復し、破損していないかを確認します。e2fsck(ext2/ext3/ext4ファイルシステムのチェックツール)は、実際に問題が見つかると、修復するかどうかを尋ねることがあります。たとえば、「修復するか?」という確認メッセージが表示されることがあります。
例文:
1 |
/dev/sda1: clean, 12345/1000000 files, 567890/2000000 blocks |
このメッセージは、ファイルシステムが正常であり、エラーがないことを意味します。
コマンドのオプション
fsckコマンドには、いくつかの便利なオプションがあります。例えば、-yオプションを使用すると、すべての修復を自動的に承認します。手動で確認することなく、エラーを修正する場合に便利です。
例文:
1 |
fsck -y /dev/sda1 |
-nオプションを使用すると、修復せずにエラーメッセージを表示するだけになります。これを使うことで、実際に修復作業を行う前にエラーを確認できます。
出力例:
1 |
fsck -n /dev/sda1 |
ブート時の自動チェック
多くのLinuxディストリビューションでは、システム起動時に自動的にファイルシステムのチェックを行います。もしファイルシステムに問題が発見されると、fsckが自動的に修復処理を行います。この処理が長時間かかる場合もあるので、定期的にディスク状態を確認しておくことが推奨されます。
例えば、システム起動時に「ディスクにエラーがあるため、fsckが実行されています」といったメッセージが表示されることがあります。
ファイルシステムの修復後
ファイルシステムが修復されると、fsckコマンドは修復後の状態を報告します。報告には、修復したエラーの数や修復内容が含まれます。例えば、次のような報告が表示されます。
1 |
/dev/sda1: 1000000/1000000 files (0.1% non-contiguous), 2000000/2000000 blocks |
これは、ファイルシステムに問題がなかったことを意味します。
ファイルシステムが修復できない場合
fsckがファイルシステムを修復できない場合もあります。その場合、手動でさらに調査したり、バックアップからの復元が必要です。例えば、物理的なディスク障害がある場合や、データが完全に破損している場合には、fsckでは回復できないことがあります。
そのため、定期的なバックアップと、fsckによる早期のチェックが非常に重要です。システムの信頼性を確保するために、バックアップの重要性を忘れないようにしましょう。
おわりに
今回の記事では、LinuC101試験に向けての学習の一環として、ファイルシステムの基本的な内容、ファイルシステムのマウントとアンマウント、ファイルシステムのバックアップなどについてまとめました。ファイルシステムの正しい管理は、Linuxシステムの安定性を保つために不可欠です。今回紹介したファイルシステムの作成と管理、各種ファイルシステムタイプ、スワップ領域の使用方法、マウントとアンマウント、整合性チェックとバックアップをしっかり理解し、実際の操作を繰り返すことで、LinuC 101試験にも十分に備えることができるでしょう。
今回はここまで
最後までご覧いただきありがとうございました!