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

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

はじめに

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

注意: この実験環境では、/dev/sdb はループデバイス(ディスクのように動作するファイル)として実装されています。パーティションを作成すると、loop13p1loop14p1 のような名前で表示されます。正確なループ番号はセッション内で空いているループデバイスによって異なるため、ここに示されている例とは異なる場合があります。実際のハードウェアと同様に、これらのパーティションに /dev/sdb1/dev/sdb2 などとしてアクセスできるよう、シンボリックリンクを作成します。

一連の演習を通じて、標準的なLinuxパーティションを作成し、ext4 ファイルシステムでフォーマットして、すぐに使用できるようにマウントする方法を学びます。その後、/etc/fstab ファイルを編集して、起動時にこのファイルシステムが自動的にマウントされるように設定します。最後に、システムパフォーマンスに不可欠なコンポーネントである、専用のLinuxスワップパーティションの作成と管理方法を学びます。

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

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

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

lsblk

出力には、プライマリシステムディスク (vda) と、この実験用の仮想ディスクを表す loop13loop14 などのループデバイスが含まれます。正確なループデバイス番号は環境によって異なる場合があります。

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 コマンドを使用して、オペレーティングシステムのカーネルにパーティションテーブルの再読み込みを要求します。

sudo partprobe

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

lsblk /dev/sdb

出力には、ループデバイスとその新しいパーティションが表示されるはずです。ループデバイスの設定により、パーティションはセッションに応じて loop13p1loop14p1 のように表示されます。

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

パーティションが /dev/sdb1 ではなく loop13p1loop14p1 のようなループバック名で表示されるため、パーティションへのシンボリックリンクを作成する必要があります。まず、実際のパーティションデバイスを特定します。p1$ というパターンは、親のループデバイスではなくパーティション名のみに一致させるためのものです。

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

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

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

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

lsblk /dev/sdb1

出力には、/dev/sdb1 としてアクセス可能なパーティションが表示されるはずです。基盤となるデバイス名は依然として loop13p1loop14p1 などである可能性があります。

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、ブロックサイズ、inode数などのプロセスに関する情報を表示します。

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"

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

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
...

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

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

このステップでは、フォーマットしたファイルシステムをオペレーティングシステムからアクセスできるようにする方法を学びます。このプロセスを「マウント」と呼びます。マウントとは、デバイス(/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 コマンドでディスク使用量を確認します。ループデバイスの設定により、パーティションはシンボリックリンク名ではなく実際のデバイス名で表示される場合があります。出力には loop13p1loop14p1、またはその他のループバックパーティション名が表示される可能性があります。

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(ファイルシステムテーブル)という特別な設定ファイルにエントリを追加する必要があります。

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

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

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

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

sudo mkdir /data

/etc/fstab でデバイス名 (/dev/sdb1) を使用することもできますが、推奨されません。デバイス名は、ハードウェアの追加や削除によって再起動時に変更される可能性があるためです。より信頼性の高い方法は、ファイルシステム作成時に割り当てられ、変更されることのない Universally Unique Identifier (UUID) を使用することです。

/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 エントリの形式は以下の通りです。 <device_identifier> <mount_point> <filesystem_type> <options> <dump> <pass>

以下の行を追加します。xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx は、blkid コマンドからコピーした実際の 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スワップ」について学びます。スワップ領域は、物理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 ファイルに対応するエントリを追加する方法も学びました。