Linuxファイルシステムについて学んでみた(パーティション編)

酸素
2024-08-26
2024-08-26

はじめに

こんにちは、酸素です。
最近はサーバー構築の研修に励んでおり、日々コンソール画面とにらめっこをしています。。。

今回は、研修中にパーティションやファイルシステムの全体像をいまいち掴めていないと感じたので、1つずつ手を動かして検証していきます。

また、ファイルシステムの中でもパーティションの作成に絞って検証していきます。(ファイルシステムの作成やマウントまで記事にすると長くなりすぎたため)

以下のような段取りで進めていきます。

  • パーティション構成の確認
  • ディスクの拡張
  • パーティションの作成

なお、検証用のvmにはAlmalinux9.4を使用しました。

パーティション構成の確認

早速パーティションを追加と行きたいところですが、まずは現在のvmのパーティション構成を調べてみます。
fdiskコマンドに-lオプションを付けることでパーティション構成を確認できます。


#fdisk -l
Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 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: 0x618f58f5

Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 41943039 39843840 19G 8e Linux LVM


Disk /dev/mapper/almalinux-root: 17 GiB, 18249416704 bytes, 35643392 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


Disk /dev/mapper/almalinux-swap: 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

出力結果を見てみると、ディスク全体のサイズである20GB分を、vda1とvda2というパーティションが占有していることが分かります。
また、その他の情報についてもまとめると下図のようになります。

容量拡張前

ディスクの拡張

既存のパーティションがディスクを利用しているため、このままでは新たにパーティションを割り当てることはできません。
今回は、ホストマシン側からvmに割り当てるディスクサイズを拡張します。


# virsh shutdown test-vm
# virsh list --all
Id Name State
------------------------
- test-vm shut off

# qemu-img resize test-vm.img +10G
# virsh start test-vm

再度vmに接続し、確認するとディスクサイズが10GB増えていると思います。

パーティションの作成

次に、拡張したディスクに対して新しいパーティションを作成します。
fdiskコマンドにデバイス名(今回は/dev/vda)を与えると、対話モードで操作できます。


# fdisk /dev/vda

Command (m for help): F

Unpartitioned space /dev/vda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Start End Sectors Size
41943040 62914559 20971520 10G

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

Created a new partition 3 of type 'Linux' and of size 10 GiB.

Command (m for help): F
Unpartitioned space /dev/vda: 0 B, 0 bytes, 0 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Command (m for help): p
(一部省略)
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 41943039 39843840 19G 8e Linux LVM
/dev/vda3 41943040 62914559 20971520 10G 83 Linux

Command (m for help): w

行った操作について、順に解説します。

  1. Fコマンドでディスク内でパーティションが未割り当ての領域を確認

  2. nコマンドでパーティションを新規作成
    partition type
    今回は基本パーティション(primary partition)を作成するためpと入力。
    もう一方の拡張パーティション(extend partition)は、/dev/vda2のように、1つのパーティション内に複数の論理ボリュームを割り当てたいときに選択します。

    partition number
    すでに1,2のパーティションを利用しているため、3を選択。特別な理由がなければ連続した番号になるよう設定してください。
    なお、MBRとよばれるパーティションテーブルの管理方式では、パーティションを4つまで扱えます。今回の状況では、新規作成できるパーティション数は残り1つです。

    First sector
    作成するパーティションの先頭セクターの番号を指定できます。既存のパーティションが41943039番まで利用しているため、大抵それに続く番号を指定します。

    Last sector
    パーティションが利用するセクターの末尾を指定できます。今回は拡張した10GB全てを割り当てるので、デフォルトの値を指定します。
    なお、セクター番号のほかに+1Gのように、バイトサイズでの指定も可能です。

  3. 再度Fコマンドを実行し、未割り当ての領域が無くなっている確認

  4. pコマンドでパーティション構成の確認。実際に、/dev/vda3というパーティションが追加されていることが確認できます。

  5. wコマンドで変更を保存し、対話モードを終了する。

現在のパーティション構成を図にすると以下のようになります。

パーティション作成後

最後に

実際に手を動かし、図にまとめることで理解が深まりました。
vm上での操作なので、最悪壊れても良いというスタンスで試行錯誤ができるのも良いですね。

機会があれば、拡張パーティションやGPT方式でのパーティション作成も行ってみたいです。

次回はパーティションに対してファイルシステムを割り当て、マウントするところまで記事にしたいです。