Linux ファイルシステムのマウント

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Linux ファイルシステムのマウントは、システム管理者や技術者にとって基本的なスキルです。このプロセスにより、オペレーティングシステムは、ストレージデバイスとそのファイルシステムをディレクトリ構造内の特定の場所に取り付けることで、アクセスし、操作することができます。

この実験(Lab)では、模擬ストレージデバイスを作成し、ファイルシステムでフォーマットし、マウントしてその内容にアクセスする方法を学びます。また、実行権限の制限や読み取り専用にするなど、ファイルシステムの使用方法を制御するさまざまなマウントオプションについても学習します。

この実験(Lab)を終えるまでに、以下のことを理解できるようになります。

  • Linux でストレージデバイスを作成およびフォーマットする方法
  • ファイルシステムのマウントとアンマウントのプロセス
  • マウントオプションを使用してファイルシステムへのアクセスを制御する方法
  • マウントされたファイルシステムのステータスを確認する方法

これらのスキルは、ローカルハードドライブからリムーバブルメディア、ネットワークストレージまで、Linux 環境でストレージデバイスを管理するために不可欠です。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/SystemInformationandMonitoringGroup -.-> linux/df("Disk Space Reporting") linux/SystemInformationandMonitoringGroup -.-> linux/mount("File System Mounting") linux/SystemInformationandMonitoringGroup -.-> linux/dd("File Converting/Copying") subgraph Lab Skills linux/echo -.-> lab-271335{{"Linux ファイルシステムのマウント"}} linux/cat -.-> lab-271335{{"Linux ファイルシステムのマウント"}} linux/cd -.-> lab-271335{{"Linux ファイルシステムのマウント"}} linux/mkdir -.-> lab-271335{{"Linux ファイルシステムのマウント"}} linux/df -.-> lab-271335{{"Linux ファイルシステムのマウント"}} linux/mount -.-> lab-271335{{"Linux ファイルシステムのマウント"}} linux/dd -.-> lab-271335{{"Linux ファイルシステムのマウント"}} end

ストレージデバイスの作成とマウント

このステップでは、模擬ストレージデバイスを作成し、ファイルシステムでフォーマットし、Linux ディレクトリ構造内でアクセスできるようにマウントします。

プロジェクトディレクトリへの移動

まず、この実験(Lab)全体で使用するプロジェクトディレクトリに移動しましょう。

cd ~/project

模擬ストレージデバイスの作成

次に、dd コマンドを使用して模擬ストレージデバイスを作成します。このコマンドは、ストレージデバイスとして機能する特定のサイズのファイルを作成します。

dd if=/dev/zero of=storage_device.img bs=1M count=100

このコマンドは、storage_device.img という名前の 100MB のファイルを作成します。このコマンドの各部分を理解しましょう。

  • if=/dev/zero: 入力ファイルは /dev/zero で、これはゼロの無限ストリームを生成する特別なファイルです。
  • of=storage_device.img: 出力ファイルは storage_device.img という名前です。
  • bs=1M: ブロックサイズは 1 メガバイトに設定されています。
  • count=100: 100 ブロックをコピーすると、100MB のファイルになります。

次のような出力が表示されるはずです。

100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0331261 s, 3.2 GB/s

ファイルシステムでのストレージデバイスのフォーマット

ストレージデバイスを使用する前に、ファイルシステムでフォーマットする必要があります。mkfs.ext4 コマンドは、Linux で一般的に使用される ext4 ファイルシステムでファイルをフォーマットします。

mkfs.ext4 storage_device.img

コマンドがファイルシステムを作成すると、次のような出力が複数行表示されます。

mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 25600 4k blocks and 25600 inodes

Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

マウントポイントの作成

デバイスをマウントする前に、マウントポイントとして機能するディレクトリを作成します。これは、ファイルシステムの内容にアクセスできる場所です。

mkdir -p ~/project/mount_point

ストレージデバイスのマウント

次に、mount コマンドを使用して、ストレージデバイスをマウントポイントにマウントします。

sudo mount -t ext4 storage_device.img ~/project/mount_point

このコマンドは Linux に以下を指示します。

  • タイプ (-t) ext4 のデバイスをマウントする
  • マウントするデバイスは storage_device.img
  • マウント場所は ~/project/mount_point

マウントの確認

デバイスが正しくマウントされていることを確認するには、ファイルシステムタイプと人間が読めるサイズを表示するオプションを指定して df コマンド (disk free) を使用します。

df -hT | grep mount_point

次のような出力が表示されるはずです。

/dev/loop0     ext4      90M   24K   83M   1% /home/labex/project/mount_point

マウントされたファイルシステムのテスト

ファイルシステムが正しく動作していることをテストするには、マウントされたディレクトリにテストファイルを作成します。

echo "This is a test file" | sudo tee ~/project/mount_point/test.txt > /dev/null

ファイルが正常に作成されたことを確認するために、ファイルを読み取ります。

cat ~/project/mount_point/test.txt

「This is a test file」というテキストが表示され、ファイルシステムが正しくマウントされ、機能していることが確認されます。

起こったことの理解

あなたは正常に以下を行いました。

  1. ストレージデバイスをシミュレートするファイルを作成しました
  2. ext4 ファイルシステムでフォーマットしました
  3. マウントポイントディレクトリを作成しました
  4. ファイルシステムをそのディレクトリにマウントしました
  5. マウントが成功したことを確認しました
  6. マウントされたファイルシステム上にファイルを作成して読み取りました

このプロセスは、外付けハードドライブまたは USB スティックを接続して使用するのと似ていますが、物理デバイスをシミュレートするためにファイルを使用しています。

セキュリティとアクセス制御のためのマウントオプション

このステップでは、マウントオプションを使用して、ファイルシステムへのアクセス方法を制御する方法を学びます。マウントオプションは、実行権限の制限やファイルシステムの読み取り専用化など、ファイルシステムの動作をさらに制御する機能を提供します。

現在のファイルシステムのアンマウント

新しいマウントオプションを適用する前に、現在のファイルシステムをアンマウントする必要があります。

sudo umount ~/project/mount_point

デバイスがビジー状態であるというエラーメッセージが表示された場合は、現在マウントポイントディレクトリにいないことを確認してください。

cd ~/project

その後、再度アンマウントを試してください。

noexec オプションを使用したマウント

noexec マウントオプションは、マウントされたファイルシステム上でのバイナリの実行を禁止します。これは、悪意のあるスクリプトやプログラムの実行を防ぐことができるセキュリティ機能です。

noexec オプションを使用してファイルシステムをマウントします。

sudo mount -t ext4 -o noexec storage_device.img ~/project/mount_point

-o noexec の部分は、mount コマンドに noexec オプションを使用するように指示します。

noexec オプションのテスト

マウントされたファイルシステム上に簡単なシェルスクリプトを作成し、それを実行してみましょう。

echo '#!/bin/bash' | sudo tee ~/project/mount_point/test_script.sh > /dev/null
echo 'echo "This script is running"' | sudo tee -a ~/project/mount_point/test_script.sh > /dev/null

スクリプトを実行可能にします。

chmod +x ~/project/mount_point/test_script.sh

次に、スクリプトを実行してみます。

~/project/mount_point/test_script.sh

次のようなエラーメッセージが表示されるはずです。

bash: /home/labex/project/mount_point/test_script.sh: Permission denied

これは、noexec オプションがスクリプトの実行を禁止していることを確認します。

読み取り専用オプションを使用したアンマウントと再マウント

次に、ファイルシステムを読み取り専用としてマウントしてみましょう。まず、アンマウントします。

sudo umount ~/project/mount_point

次に、読み取り専用オプションを使用してマウントします。

sudo mount -t ext4 -o ro storage_device.img ~/project/mount_point

-o ro の部分は、mount コマンドに読み取り専用オプションを使用するように指示します。

読み取り専用オプションのテスト

マウントされたファイルシステム上に新しいファイルを作成してみます。

touch ~/project/mount_point/new_file.txt

次のようなエラーメッセージが表示されるはずです。

touch: cannot touch '/home/labex/project/mount_point/new_file.txt': Read-only file system

これは、ファイルシステムが読み取り専用としてマウントされていることを確認します。

マウントオプションの確認

mount コマンドを使用して、現在のマウントオプションを確認できます。

mount | grep mount_point

ro を含む出力が表示され、読み取り専用オプションがアクティブになっていることを示します。

/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,relatime)

マウントオプションの組み合わせ

複数のマウントオプションをコンマで区切って組み合わせることができます。ファイルシステムをアンマウントし、noexec オプションと ro オプションの両方を使用して再マウントしてみましょう。

sudo umount ~/project/mount_point
sudo mount -t ext4 -o ro,noexec storage_device.img ~/project/mount_point

マウントオプションを確認します。

mount | grep mount_point

出力に両方のオプションが表示されるはずです。

/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,noexec,relatime)

マウントオプションの理解

これまで学習したマウントオプションは、セキュリティとアクセス制御にとって重要です。

  • noexec はバイナリファイルの実行を禁止し、悪意のあるコードから保護することができます。
  • ro (読み取り専用) はファイルシステムへの変更を禁止し、データの整合性を保護することができます。

これらのオプションは、最小権限の原則を実装するために、本番環境で一般的に使用され、システムとユーザーに必要なアクセス権のみを付与します。

/etc/fstab を使用したマウントの自動化

このステップでは、/etc/fstab ファイルを構成して、システム再起動後もファイルシステムのマウントを永続化する方法を学びます。これは、システムの起動時にストレージデバイスを自動的にマウントするために不可欠です。

/etc/fstab の理解

/etc/fstab (ファイルシステムテーブル) ファイルには、システムの起動時に自動的にマウントされるファイルシステムに関する情報が含まれています。ファイル内の各行は個別のファイルシステムを表し、デバイス、マウントポイント、ファイルシステムタイプ、マウントオプションなどのフィールドが含まれています。

まず、ファイルの現在の内容を見てみましょう。

cat /etc/fstab

すでに構成されているシステムマウントを含む複数の行が表示されます。

現在のファイルシステムのアンマウント

永続的なマウントを構成する前に、現在のファイルシステムをアンマウントします。

sudo umount ~/project/mount_point

/etc/fstab のバックアップの作成

システム構成ファイルを変更する前に、常にバックアップを作成することをお勧めします。

sudo cp /etc/fstab /etc/fstab.backup

/etc/fstab へのエントリの追加

次に、ストレージデバイスのエントリを /etc/fstab に追加します。デバイスファイルへの絶対パスを使用する必要があります。

echo "$(readlink -f ~/project/storage_device.img) $(readlink -f ~/project/mount_point) ext4 defaults 0 0" | sudo tee -a /etc/fstab

このコマンドは次のことを行います。

  • readlink -f を使用して、ファイルへの絶対パスを取得します
  • tee -a と sudo 権限を使用して、フォーマットされた行を /etc/fstab にリダイレクトします

fstab エントリのフィールドを分解してみましょう。

  1. デバイス (Device) - ストレージデバイスファイルへのフルパス
  2. マウントポイント (Mount point) - マウントディレクトリへのフルパス
  3. ファイルシステムタイプ (File system type) - ext4
  4. マウントオプション (Mount options) - defaults (rw,suid,dev,exec,auto,nouser,async と同等)
  5. Dump - 0 (dump でバックアップしない)
  6. Pass - 0 (起動時にファイルシステムをチェックしない)

fstab エントリのテスト

/etc/fstab にリストされているファイルシステムのうち、まだマウントされていないものをすべてマウントする mount -a コマンドを使用して、エントリが正しく機能するかどうかをテストします。

sudo mount -a

エラーメッセージが表示されない場合は、エントリが正しいことを意味します。

マウントの確認

ファイルシステムが期待どおりにマウントされていることを確認します。

df -hT | grep mount_point

ファイルシステムが ext4 タイプでマウントされていることが表示されるはずです。

より多くのオプションを使用した fstab エントリの変更

次に、前のステップで学習したマウントオプションを使用するようにエントリを変更しましょう。nano テキストエディタで /etc/fstab ファイルを編集します。

sudo nano /etc/fstab

追加した行を見つけます。これは次のようなものです。

/home/labex/project/storage_device.img /home/labex/project/mount_point ext4 defaults 0 0

マウントオプション (4 番目のフィールド) を defaults から ro,noexec に変更します。

/home/labex/project/storage_device.img /home/labex/project/mount_point ext4 ro,noexec 0 0

Ctrl+O を押して変更を書き込み、Enter を押して確認し、Ctrl+X を押して nano を終了します。

新しいオプションを使用した再マウント

ファイルシステムをアンマウントし、/etc/fstab 内のすべてのエントリを再マウントします。

sudo umount ~/project/mount_point
sudo mount -a

新しいマウントオプションの確認

ファイルシステムが新しいオプションでマウントされていることを確認します。

mount | grep mount_point

出力に ro オプションと noexec オプションが表示されるはずです。

永続的なマウントの理解

/etc/fstab ファイルは、次の方法を提供します。

  • 起動時にファイルシステムを自動的にマウントする
  • マウントオプションを永続的な方法で構成する
  • 起動時のファイルシステムチェックの順序を制御する

本番環境では、/etc/fstab を適切に構成することで、システム起動時に手動で介入しなくても、必要なすべてのファイルシステムが利用可能になることが保証されます。

まとめ

Linux ファイルシステムのマウント実験の完了おめでとうございます。Linux システム管理者または技術ユーザーにとって不可欠な貴重なスキルを習得しました。

この実験では、次のことを学びました。

  1. ストレージデバイスの作成とフォーマット

    • dd コマンドを使用して、シミュレートされたストレージデバイスを作成する方法
    • mkfs.ext4 を使用して、ext4 ファイルシステムでデバイスをフォーマットする方法
  2. 基本的なマウント操作

    • マウントポイントディレクトリを作成する方法
    • mount コマンドを使用してファイルシステムをマウントする方法
    • df およびその他のコマンドを使用してマウントを確認する方法
  3. セキュリティと制御のためのマウントオプション

    • noexec オプションを使用して、バイナリの実行を防止する方法
    • ro オプションを使用して、読み取り専用ファイルシステムを作成する方法
    • 強化されたセキュリティのために、複数のマウントオプションを組み合わせる方法
  4. /etc/fstab を使用した永続的なマウント

    • 起動時にファイルシステムを自動的にマウントするように構成する方法
    • 永続的なマウントオプションを設定する方法
    • fstab エントリをテストおよび検証する方法

これらのスキルにより、次のことが可能になります。

  • Linux でさまざまな種類のストレージデバイスを管理する
  • マウントオプションを通じてセキュリティ制御を実装する
  • システム起動時に自動マウントを構成する
  • ファイルシステムのマウントに関する問題をトラブルシューティングする

Linux の学習を続けるにつれて、これらのスキルは、物理ストレージデバイス、ネットワーク共有、および仮想ファイルシステムを扱う際に役立つことがわかります。学んだ原則は、さまざまな Linux ディストリビューションおよびストレージテクノロジーに適用できます。