Linux のパーティションとファイルシステムの管理

CompTIABeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、Linux 環境でディスクパーティションとファイルシステムを管理するために必要な基本スキルを習得します。fdisk などのコマンドラインユーティリティを使用して、利用可能なディスクの確認、新しいパーティションの作成、および標準的なファイルシステムでのフォーマットを行います。安全に学習を進めるため、すべての操作は専用のセカンダリ仮想ディスク /dev/sdb に対して行い、メインのオペレーティングシステムが入っているディスクには一切手を加えません。

注意: この実験環境では、/dev/sdb はループデバイス(ディスクのように動作するファイル)として実装されています。パーティションを作成すると loop13p1 のような名前で表示されますが、実際のハードウェアと同様に /dev/sdb1/dev/sdb2 としてアクセスできるよう、シンボリックリンクを作成して操作を進めます。

演習を通じて、標準的な Linux パーティションを作成し、それを ext4 ファイルシステムでフォーマットし、即座に使用できるようにマウントする方法を学びます。その後、/etc/fstab ファイルを編集して、システム起動時にこのファイルシステムが自動的にマウントされるように設定します。最後に、システムのパフォーマンスにおいて重要な役割を果たす、専用の Linux スワップ(Swap)パーティションの作成と管理についても学習します。

ディスクの確認と fdisk による新しい Linux パーティションの作成

このステップでは、利用可能なディスクとそのパーティションテーブルを確認する方法を学びます。次に、強力なコマンドラインツールである fdisk ユーティリティを使用して、セカンダリディスクに新しいパーティションを作成します。実際の運用環境では、パーティションの変更は慎重に行う必要があります。誤操作はデータ損失につながる可能性があるためです。この実験では、メインの OS ディスク(/dev/sda)を保護するため、専用の仮想ディスク /dev/sdb を使用します。

まず、システムに接続されているすべてのブロックデバイス(ディスクとパーティション)の概要を確認しましょう。lsblk コマンドを使用すると、ツリー形式で分かりやすく表示されます。

lsblk

出力には、プライマリシステムディスク(vda)や、この実験用の仮想ディスクを表すループデバイス(loop13)など、利用可能なディスクが表示されます。

NAME       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
...
loop13       7:13   0     2G  0 loop
vda        252:0    0    40G  0 disk
├─vda1     252:1    0     1M  0 part
├─vda2     252:2    0   200M  0 part /boot/efi
└─vda3     252:3    0  39.8G  0 part /

ループデバイス(シンボリックリンクを介して /dev/sdb としてアクセス可能)は 2GB の仮想ディスクであり、まだパーティションが作成されていないことがわかります。次に、fdisk を使用して /dev/sdb のパーティションテーブルをより詳細に確認します。-l フラグを指定すると、指定したデバイスのパーティションテーブルをリスト表示して終了します。fdisk でディスクレベルの情報を確認するには root 権限が必要なため、sudo を使用します。

sudo fdisk -l /dev/sdb

出力には、ディスクのサイズ、セクタ、識別子などの詳細が表示されます。まだパーティションがないため、下部のデバイスリストは空になります。

Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

注意:このディスクを初めて使用する場合、新しい DOS ディスクラベルの作成に関するメッセージが表示されることがあります。

次に、fdisk を対話モードで起動し、新しいパーティションを作成します。このプロセスでは、一連の 1 文字コマンドを使用します。次のコマンドを実行して /dev/sdb の管理を開始します。

sudo fdisk /dev/sdb

fdisk ユーティリティが起動し、Command (m for help): というプロンプトが表示されます。以下の手順に従って慎重に操作してください。

  1. 新しいパーティションの作成: n と入力して Enter を押します。
  2. パーティションタイプの選択: パーティションタイプ(基本パーティションまたは拡張パーティション)を選択するよう求められます。デフォルトは基本パーティション(p)なので、そのまま Enter を押して確定します。
  3. パーティション番号の選択: 最初のパーティションなので、デフォルトは 1 です。Enter を押して確定します。
  4. 最初のセクタの指定: デフォルト値はディスク上の最初の利用可能なセクタです。通常はこれが正しい選択です。Enter を押して確定します。
  5. 最後のセクタまたはサイズの指定: セクタ数を計算する代わりに、人間が読みやすいサイズを指定できます。ここでは 500MB のパーティションを作成します。+500M と入力して Enter を押します。
  6. メモリ上のパーティションテーブルの表示: 保存する前に、変更内容を確認するのが良い習慣です。p と入力して Enter を押し、新しいパーティション構成を確認します。/dev/sdb1 という新しいデバイスが表示されるはずです。
  7. 変更をディスクに書き込む: ここまでの変更はまだメモリ上にしかありません。ディスクのパーティションテーブルに保存するには、w と入力して Enter を押します。これにより変更が書き込まれ、fdisk が終了します。

対話セッションの概要は以下の通りです。

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x54041549.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-4194303, default 4194303): +500M

Created a new partition 1 of type 'Linux' and of size 500 MiB.

Command (m for help): p
Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x54041549

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1        2048 1026047 1024000  500M 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Invalid argument

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).

パーティションテーブルを書き込んだ後、カーネルがすぐにパーティションテーブルを再読み込みできなかったというメッセージが表示されることがあります。これはループデバイスを操作しているときによくある現象です。partprobe コマンドを実行して、OS カーネルにパーティションテーブルの再読み込みを要求します。

sudo partprobe

次に、lsblk を再度実行して、システムが新しいパーティションを認識しているか確認します。

lsblk /dev/sdb

出力には、ループデバイスとその新しいパーティションが表示されます。ループデバイスの設定上、パーティションは loop13p1 として表示されます。

NAME       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop13       7:13   0    2G  0 loop
└─loop13p1 259:0    0  500M  0 part

パーティションは loop13p1 として表示されていますが、この実験を円滑に進めるには /dev/sdb1 としてアクセスできる必要があるため、パーティションのシンボリックリンクを作成します。まず、実際のパーティションデバイスを特定します。

PARTITION_DEVICE=$(lsblk -lno NAME /dev/sdb | grep p1 | head -1)
echo "Partition device: /dev/$PARTITION_DEVICE"

次に、パーティションのシンボリックリンクを作成します。

sudo ln -s /dev/$PARTITION_DEVICE /dev/sdb1

/dev/sdb1 が機能することを確認します。

lsblk /dev/sdb1

出力に、パーティションが /dev/sdb1 としてアクセス可能であることが示されます。

NAME       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop13p1   259:0    0  500M  0 part

これで、/dev/sdb 上に新しい 500MB の Linux パーティションを作成し、/dev/sdb1 としてアクセスできるように設定できました。

mkfs.ext4 による ext4 ファイルシステムの作成とフォーマット

このステップでは、作成した新しいパーティション /dev/sdb1 をファイルシステムでフォーマットします。ファイルシステムは、ファイルやディレクトリを保存・整理するために必要な構造を提供します。ファイルシステムがないと、オペレーティングシステムはそのパーティションに対して読み書きを行うことができません。ここでは、パフォーマンス、信頼性、機能のバランスが良く、現代の Linux ディストリビューションで最も広く使われている ext4 を使用します。

ファイルシステムを作成するコマンドは mkfs(make filesystem の略)です。これは、mkfs.ext4mkfs.xfs など、各ファイルシステム専用のビルダーを呼び出すフロントエンドとして機能します。ここでは mkfs.ext4 を直接使用します。この操作は破壊的であり、パーティション上の既存のデータはすべて消去されるため、sudo 権限が必要です。

/dev/sdb1 パーティションを ext4 ファイルシステムでフォーマットするには、次のコマンドを実行します。

sudo mkfs.ext4 /dev/sdb1

コマンドを実行するとファイルシステムが作成され、ファイルシステムの UUID、ブロックサイズ、i ノード数などの情報が表示されます。

mke2fs x.xx.x (xx-xxx-xxxx)
Creating filesystem with 128000 4k blocks and 32000 inodes
Filesystem UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Superblock backups stored on blocks:
 32768, 98304

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

フォーマット後、ファイルシステムが正常に作成されたか確認できます。blkid コマンドは、ブロックデバイスの属性(ファイルシステムタイプなど)を表示するのに非常に便利です。

sudo blkid /dev/sdb1

出力に、/dev/sdb1TYPEext4 であることが明確に表示されるはずです。

/dev/sdb1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="1a2b3c4d-01"

より詳細な情報を確認するには、dumpe2fs コマンドに -h フラグを付けて実行し、スーパーブロック(superblock)情報を表示します。スーパーブロックには、ファイルシステムに関する重要なメタデータが含まれています。

sudo dumpe2fs -h /dev/sdb1

このコマンドは多くの情報を出力します。Filesystem magic numberFilesystem state などの項目を確認して、ファイルシステムの整合性を確かめてください。

dumpe2fs x.xx.x (xx-xxx-xxxx)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
...

これでパーティションのフォーマットが完了し、データを保存するためにマウントして使用する準備が整いました。

ファイルシステムのマウント、テスト、およびアンマウント

このステップでは、新しくフォーマットしたファイルシステムをオペレーティングシステムからアクセス可能にする方法を学びます。このプロセスを「マウント(Mounting)」と呼びます。マウントとは、デバイス(/dev/sdb1 など)上のファイルシステムを、ファイルシステムツリー内の特定のディレクトリ(「マウントポイント」と呼ばれます)に結びつけることです。マウントが完了すると、そのパーティションを他のディレクトリと同じように操作できるようになります。

まず、マウントポイントを作成する必要があります。これは単なる空のディレクトリです。一時的なマウントポイントは /mnt ディレクトリの下に作成するのが一般的です。ここでは /mnt/data という名前のディレクトリを作成します。/mnt はシステムディレクトリなので、sudo が必要です。

sudo mkdir /mnt/data

次に、mount コマンドを使用して /dev/sdb1 パーティションを /mnt/data ディレクトリに接続します。

sudo mount /dev/sdb1 /mnt/data

ファイルシステムがマウントされたことを確認するために、まずマウント状態をチェックします。複数のコマンドを使って確認してみましょう。

## マウントポイントにファイルシステムがマウントされているか確認
mountpoint /mnt/data

マウントに成功していれば、次のように表示されます。

/mnt/data is a mountpoint

次に、df コマンドでディスク使用量を確認します。ループデバイスの設定により、パーティションはシンボリックリンク名ではなく実際のデバイス名で表示される場合があります。

df -h /mnt/data

マウントされたファイルシステムを示すエントリが表示されるはずです。

Filesystem      Size  Used Avail Use% Mounted on
/dev/loop13p1   488M  2.6M  459M   1% /mnt/data

mount コマンドでも確認できます。

mount | grep /mnt/data

次のように表示されます。

/dev/loop13p1 on /mnt/data type ext4 (rw,relatime)

では、新しいファイルシステムにデータを書き込めるかテストしてみましょう。まず、マウントポイントの現在の所有者と権限を確認します。

ls -ld /mnt/data

次のような出力が表示されます。

drwxr-xr-x 3 root root 4096 Dec 12 10:00 /mnt/data

マウントポイント内にファイルを作成してみます。

touch /mnt/data/testfile

このコマンドはおそらく「Permission denied(許可がありません)」というエラーで失敗します。これは、マウントされたファイルシステムのルートディレクトリの所有者が root ユーザーであるためです。これを解決するために、マウントポイントの所有者を現在のユーザーである labex に変更します。

sudo chown labex:labex /mnt/data

もう一度、ファイルの作成を試みます。

touch /mnt/data/testfile

今度は成功するはずです。ファイルが作成されたことを確認します。

ls -l /mnt/data

次のように表示されます。

total 16
drwx------ 2 root  root  16384 Dec 12 10:00 lost+found
-rw-r--r-- 1 labex labex     0 Dec 12 10:05 testfile

lost+found ディレクトリは ext4 ファイルシステムの標準的な機能で、ファイルシステムが破損した場合のファイル復旧に使用されます。

ファイルシステムの使用が終わったら、umount コマンドを使用してアンマウントする必要があります。重要な点として、ファイルシステムが現在使用中(例えば、カレントディレクトリがマウントポイント内にある場合など)はアンマウントできません。これを実際に確認してみましょう。

まず、ディレクトリを /mnt/data に移動します。

cd /mnt/data

この状態でアンマウントを試みます。ファイルシステムはデバイス名またはマウントポイントのいずれかで指定できます。

sudo umount /mnt/data

ターゲットがビジー(使用中)であることを示すエラーメッセージが表示されます。

umount: /mnt/data: target is busy.

正常にアンマウントするには、まずそのディレクトリから抜ける必要があります。ホームディレクトリに戻りましょう。

cd ~

再度 umount コマンドを実行します。

sudo umount /mnt/data

コマンドは何も出力せずに終了するはずです。mountpoint コマンドを実行して、マウントが解除されたことを確認します。

mountpoint /mnt/data

次のように表示されます。

/mnt/data is not a mountpoint

最後に、マウントポイントとして作成したディレクトリを削除して後片付けをします。

sudo rmdir /mnt/data

トラブルシューティングのヒント: もし mount コマンドがうまく動作しない場合は、シンボリックリンクの代わりに実際のループデバイス名を使用してマウントを試みてください。

## 実際のデバイス名を特定
ACTUAL_DEVICE=$(readlink -f /dev/sdb1)
echo "Actual device: $ACTUAL_DEVICE"

## 実際のデバイス名を使用してマウント
sudo mkdir /mnt/data
sudo mount $ACTUAL_DEVICE /mnt/data

/etc/fstab による永続的なマウント設定

このステップでは、システムが起動するたびにファイルシステムが自動的にマウントされるように設定する方法を学びます。前のステップで使用した mount コマンドは一時的なものであり、再起動するとマウントは解除されます。永続的にマウントするには、/etc/fstab(filesystem table)という特別な設定ファイルにエントリを追加する必要があります。

システムは起動プロセス中に /etc/fstab を読み取り、どのファイルシステムをマウントするかを決定します。これは非常に重要なファイルであるため、編集する前に必ずバックアップを作成することをお勧めします。

まず、現在の fstab ファイルのバックアップを作成します。

sudo cp /etc/fstab /etc/fstab.bak

次に、恒久的なマウントポイントを用意します。前のステップでは /mnt/data を使用して削除しましたが、恒久的なマウントの場合はルートファイルシステムにディレクトリを作成するのが一般的です。ここでは /data というディレクトリを作成します。

sudo mkdir /data

/etc/fstab ではデバイス名(/dev/sdb1)を使用することもできますが、推奨されません。デバイス名は再起動のたびに変わる可能性があり、特にハードウェアを追加・削除した場合には注意が必要です。より信頼性の高い方法は、パーティションの UUID(Universally Unique Identifier)を使用することです。これはファイルシステム作成時に割り当てられる一意の文字列で、変更されることはありません。

/dev/sdb1 の UUID を確認するには、再度 blkid コマンドを使用します。

sudo blkid /dev/sdb1

出力に UUID が表示されます。この値をコピーしてください(引用符は含めません)。

/dev/sdb1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="1a2b3c4d-01"

次に、nano エディタを使用して /etc/fstab を編集します。システムファイルなので sudo を使用する必要があります。

sudo nano /etc/fstab

ファイルの末尾に移動し、パーティション用の新しい行を追加します。fstab エントリの形式は以下の通りです。
<デバイス識別子> <マウントポイント> <ファイルシステムタイプ> <オプション> <ダンプ> <パス>

コピーした実際の UUID を使用して、次の行を追加します(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx の部分は自分の UUID に置き換えてください)。

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2

各項目の意味は以下の通りです。

  • UUID=...: 一意の ID でパーティションを識別します。
  • /data: ファイルシステムがマウントされるディレクトリ。
  • ext4: ファイルシステムのタイプ。
  • defaults: ほとんどのケースに適した標準的なマウントオプションのセット。
  • 0: dump フィールド。古いバックアップユーティリティ用のフラグで、現在は通常 0 にします。
  • 2: pass フィールド。起動時に fsck ユーティリティがファイルシステムをチェックする順序を指定します。ルートファイルシステムは 1、その他の恒久的なファイルシステムは 2、チェックしない場合は 0 にします。

行を追加したら、Ctrl+XYEnter の順に押してファイルを保存し、nano を終了します。

設定をテストするために再起動する必要はありません。mount -a コマンドを使用できます。このコマンドは、/etc/fstab に記載されているファイルシステムのうち、まだマウントされていないものをすべてマウントします。

sudo mount -a

エラーがなければ、コマンドは何の出力もなく終了します。df コマンドを使用して、ファイルシステムが正しくマウントされているか確認します。

df -h | grep /data

/dev/sdb1/data にマウントされていることが確認できるはずです。

/dev/sdb1       488M  2.6M  459M   1% /data

これで、システムが起動するたびにパーティションが自動的にマウントされるようになりました。

Linux スワップパーティションの作成と管理

このステップでは、もう一つの特別なパーティションタイプである「Linux スワップ(Swap)」について学びます。スワップ領域は、物理 RAM が不足したときにオペレーティングシステムによって仮想メモリとして使用されます。これにより、システムはアクティブでないメモリページをディスクに移動させ、アクティブなプロセスに RAM を開放することができます。十分な RAM の代わりにはなりませんが、スワップパーティションがあることで、メモリ不足によるシステムのクラッシュを防ぐことができます。

重要な注意: 新しいパーティションを作成する前に、/dev/sdb 上の既存のファイルシステムがアンマウントされていることを確認してください。デバイスがマウントされたままだと、パーティションテーブルを変更しようとしたときに「Device or resource busy(デバイスまたはリソースがビジーです)」というエラーが発生することがあります。

/dev/sdb に新しいパーティションを作成し、それをスワップ領域として設定します。まず、デバイスがマウントされていないことを確認してから、fdisk を使用してパーティションを作成します。すでに /dev/sdb1 を作成済みなので、新しいパーティションは /dev/sdb2 になります。

## まず、デバイスがマウントされているか確認し、必要に応じてアンマウントします
lsblk /dev/sdb
sudo umount /data /mnt/data 2> /dev/null || true

## パーティションを作成します
sudo fdisk /dev/sdb

fdisk の対話プロンプト内で、以下のコマンドを実行します。

  1. 新しいパーティションの作成: n と入力して Enter を押します。
  2. パーティションタイプと番号の選択: 基本パーティション(p)とパーティション番号 2 のデフォルト値を、Enter を 2 回押して受け入れます。
  3. セクタの指定: 最初のセクタはデフォルトを受け入れます。サイズは 256MB にします。+256M と入力して Enter を押します。
  4. パーティションタイプの変更: これが重要なステップです。パーティションのタイプを変更するには t と入力します。パーティション番号を求められたら 2 を入力します。16 進数コードを求められたら、"Linux swap / Solaris" に対応する 82 を入力します。
  5. 確認: p と入力して変更内容を確認します。/dev/sdb2 のタイプが Linux swap / Solaris になっているはずです。
  6. 変更の書き込み: w と入力して新しいパーティションテーブルを保存し、終了します。
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (1026048-4194303, default 1026048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1026048-4194303, default 4194303): +256M

Created a new partition 2 of type 'Linux' and of size 256 MiB.

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): p
Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 sectors
...
Device     Boot   Start     End   Sectors   Size Id Type
/dev/sdb1          2048 1026047   1024000   500M 83 Linux
/dev/sdb2       1026048 1550335    524288   256M 82 Linux swap / Solaris

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

パーティション作成後、/dev/sdb1 のときと同様に /dev/sdb2 のシンボリックリンクを作成する必要があります。まず partprobe を実行して、カーネルに新しいパーティションを認識させます。

sudo partprobe

次に、2 番目のパーティションを特定してシンボリックリンクを作成します。

PARTITION2_DEVICE=$(lsblk -lno NAME /dev/sdb | grep p2 | head -1)
sudo ln -s /dev/$PARTITION2_DEVICE /dev/sdb2

パーティションにアクセスできるか確認します。

lsblk /dev/sdb2

パーティションをスワップ領域としてフォーマットする前に、デバイスがビジーでないことを確認する必要があります。もし「Device or resource busy」エラーが出た場合は、デバイスがマウントされている可能性があります。現在のマウント状態を確認し、必要であればアンマウントしてください。

## 現在のマウント状態を確認
lsblk /dev/sdb

## デバイスがマウントされている場合はアンマウント
sudo umount /data /mnt/data 2> /dev/null || true

パーティションが作成されアクセス可能になったら、mkswap コマンドを使用してスワップ領域としてフォーマットします。

sudo mkswap /dev/sdb2

フォーマット後、スワップ領域を有効化できます。まず、free -h コマンドで現在のスワップ使用量を確認します。

free -h

出力では、Swap が 0B と表示されているはずです。

              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       151Mi       1.6Gi       0.0Ki       202Mi       1.7Gi
Swap:            0B          0B          0B

次に、swapon コマンドを使用して新しいスワップパーティションを有効化します。

sudo swapon /dev/sdb2

free -h および swapon -s(サマリー)で再度スワップ使用量を確認します。

free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       152Mi       1.4Gi       0.0Ki       202Mi       1.6Gi
Swap:         256Mi          0B       256Mi
swapon -s
Filename    Type  Size Used Priority
/dev/sdb2                               partition 262140 0 -2

スワップの合計容量が増加したことがわかります。スワップパーティションを無効にするには、swapoff コマンドを使用します。

sudo swapoff /dev/sdb2

再度 free -h を実行して、無効になったことを確認してください。スワップ容量がゼロに戻ります。これにより、稼働中のシステムでスワップ領域を動的に管理する方法が理解できたはずです。

トラブルシューティングのヒント: このステップで「Device or resource busy」エラーが発生する場合、通常は以下の理由が考えられます。

  1. デバイスまたはそのパーティションのいずれかが現在マウントされている。
  2. プロセスがデバイスにアクセスしている。

これを解決するには、パーティション操作を進める前に sudo umount /data /mnt/data を実行して、すべてのマウントポイントがアンマウントされていることを確認してください。

まとめ

この実験では、Linux システムにおけるディスクパーティションとファイルシステムの管理に関する不可欠なスキルを学びました。まず lsblk を使用して利用可能なブロックデバイスを確認し、次に fdisk ユーティリティを使用してセカンダリディスクに新しい基本パーティションを作成しました。パーティション作成後、mkfs.ext4 を使用して ext4 ファイルシステムでフォーマットしました。また、新しいファイルシステムをディレクトリにマウントし、その状態を確認し、アンマウントする実習も行いました。最後に、パーティションの UUID を使用して /etc/fstab ファイルを編集し、システム起動時に自動的にマウントされるよう永続的な設定を行いました。

さらに、専用のスワップ領域の作成と管理についても学習しました。これには、fdisk を再度使用してパーティションを作成し、そのタイプを「Linux swap」に変更する操作が含まれます。その後、mkswap コマンドでスワップ領域として準備し、swapon で有効化しました。スワップ領域を再起動後も維持するために、/etc/fstab に対応するエントリを追加する方法についても触れました。