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

酸素
2024-10-11
2024-10-11

はじめに

こんにちは、酸素です。

今回は前回のパーティション編の続きとして、パーティションに対してファイルシステムを作成していきます。

現在の構成は以下の図のような状態となっています。
前回は10GB分のパーティション3(/dev/vda3)を作成したので、OSが読み書きできるようにファイルシステムを作成します。

パーティション作成後

ファイルシステムとは

先ほどから「ファイルシステムを作成~」と書いていますが、そもそも「ファイルシステムって何?」というところについて、軽く紹介します。

ファイルシステムのは、OSが物理ディスクなどの物理レイヤを簡単に参照することを実現しています。
もしファイルシステムが存在しなければ、ユーザーが○○.txtというファイルを変更した際に、OS(書き込みプログラム)は○○.txtのデータが存在する物理ディスクのセクタを探しに行かなければなりません。
そのため、実体として存在する物理レイヤを抽象的な"ファイル"というもので扱うためにファイルシステムが存在します。

また、Linuxではマウスをはじめとした入力デバイスなど全てをファイルとして扱います。
OSによってファイルシステムに持たせる役割がいくつか異なっているため、ファイルシステムは幾つもの種類が存在します。以下に主要OSで利用可能なファイルシステムをまとめてみます。

OS名 利用可能なファイルシステム
Windows NFS、FAT32
Mac APFS
Linux xfs、ext4

 

ファイルシステムの作成

それでは、実際にパーティションに対してファイルシステムを作成していきます。
今回は、xfs形式のファイルシステムを作成します。

# mkfs.xfs /dev/vda3
meta-data=/dev/vda3 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.

実際にファイルシステムが作られたか確認してみます。


# lsblk -o NAME,FSTYPE,MOUNTPOINTS
NAME FSTYPE MOUNTPOINTS
sr0
vda
├─vda1 xfs /boot
├─vda2 LVM2_member
│ ├─almalinux-root xfs /
│ └─almalinux-swap swap [SWAP]
└─vda3 xfs

vda3にxfsが作成されていますね。
ちなみに、vda2はLVM(Logical Volume Manager = 論理ボリュームマネージャー)というシステムが使われています。LVMによって、2つの論理ボリュームが作成でき、それぞれrootパーティションとswapパーティションとして利用されています。

ここまでの構成を図にすると以下のようになります。

ファイルシステム作成後

おわりに

パーティションを作成する過程でさまざまな記事を読んだことで、パーティションの役割や実現できることを理解できました。
記事の手順を完コピでも良いのですが、やはり自分で構成を考えて作る方が身につく気がします。

今回は拡張した10GBの領域にvda3というパーティションを作成していますが、vda2に新しく10GB分の論理ボリュームを作成するとかも面白い気がしました。

次回、vda3をディレクトリにマウントしてファイルを扱えるように設定していきます。