📂

ファイルシステム

2021/12/09に公開

パーティション

1台の物理的なディスクを複数の領域に分割した領域のこと

パーティションの規格

MBR(Master Boot Record)

1つのディスクに最大4つのパーティションを作成でき、これをプライマリパーティションという。
5つ以上に分割したい場合、プライマリパーティションの1つを拡張パーティションに指定し、その中を論理パ ーティションに分割する。
MBR方式で利用できるディスクは最大2TiB

GPT(GUID Partition Table)

1つのディスクに最大128個のパーティションを作成できる。
プライマリパーティション、拡張パーティション、論理パーティションの区別はない。


ファイルシステムでは、ルートディレクトリの下に多数のディレクトリがある。
ファイルシステム用のパーティション以外にスワップ領域として使われるスワップパーティションが必要。


FHS(FileSystem Hierarchy Standard)
ディレクトリの役割や名称などの構造を定めた仕様書


デバイスファイル

デバイスを操作するためのファイル。デバイスを追加すると/devの下にファイルが追加される。

■デバイスファイル名
ディスク(WindowsでいうローカルディスクCドライブみたいな)
1台目:sda
2台目:sdb

CD/DVDドライブ
1台目:sr0
2台目:sr1

パーティションのデバイスファイル名
/dev/sda1(1つ目のパーティション)
/dev/sda2(2つ目のパーティション)
/dev/sdb1(ディスク2の1つ目のパーティション)


パーティション操作コマンド

parted コマンド
GPTまたはMBRパーティションを作成、変更、削除できる

parted オプション デバイス 操作コマンド
※操作コマンド省略すると対話モードに入る

# パーティションの一覧表示
parted -l

# パーティションするデバイスを選択(対話的モードで作成)
parted /dev/sdb
操作コマンド 説明
print パーティション一覧表示
mkpart パーティション作成
rm パーティション削除
quit 保存して終了

 
gdiskコマンド
GPTまたはMBRパーティションを作成、変更、削除できる

gdisk オプション デバイス

# パーティションの一覧表示
gdisk -l

# パーティションするデバイスを選択(対話的モードで作成)
gdisk /dev/sdb
操作コマンド 説明
p パーティション一覧表示
n パーティション作成
d パーティション削除
w 保存して終了
q 保存せずに終了

 
fdiskコマンド
パーティションを作成、変更、削除できる(MBR専用)

fdisk オプション デバイス

# パーティションの一覧表示
fdisk -l
fdisk -l /dev/sdb

※fdiskは実験フェーズのため、以下のメッセージが出る可能性がある
# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

# パーティションするデバイスを選択(対話的モードで作成)
fdisk /dev/sdb
操作コマンド 説明
p パーティション一覧表示
n パーティション作成
d パーティション削除
w 保存して終了
q 保存せずに終了

LVM(Logical Volume Manager)
複数のディスクやパーティションにまたがった論理的なパーティションである論理ボリュームを構成することができる仕組みです。論理ボリュームは、作成後でも拡張や縮小が可能です。

①ディスクやパーティションをLVMで扱えるようにしたものを物理ボリュームという。
②物理ボリュームを束ねてボリュームグループを構成する。論理的な大容量ディスクを作れる。
③ボリュームグループから必要なサイズを切り出し、論理的なパーティションを作成する。
 これを論理ボリューム(LV)という。論理ボリューム上にファイルシステムを作ることができる。
※ブートローダはLVを認識しないので、/bootは物理パーティション上に構成する。

LVMの物理ボリュームを作成するコマンド
pvcreate

ファイルシステム

パーティションを作っただけでは、ファイルを格納できない。
パーティションを利用可能にするにはファイルシステムを作る。

ファイルシステムの構成要素

構成要素 説明
全体管理情報領域 ファイルシステム全体を管理する情報を格納
iノード 各ファイルを管理するiノード情報を格納
データ領域 ファイル内容のデータを格納

iノード
ファイルごとの管理情報。
iノード番号、ファイルの属性情報、ファイルの内容を格納している場所の情報が格納されている。
ファイルの内容はデータ領域に格納されている。その格納場所をiノードが管理している。
ファイル名はiノードではなく、そのファイルを含んでいるディレクトリのファイル内容として管理され、iノード番号に紐づけられる。

各ファイルのiノードを表示できる
ls -il

ファイルシステムの種類
xfs:REHL/CentOS7/8での標準ファイルシステム
ext2:Linuxの初期ぐらいに標準として採用されていた
ext3:CentOS6の標準ファイルシステム。ジャーナル機能が追加された。ジャーナル機能とは、ファイルシステムのデータ更新を記録する機能のこと
ext4:ext3を改良したもの。Debian10の標準ファイルシステム
btrfs:xfsより新しい。高度な機能。
vfat:WindowsとLinux両方で利用できる。ただLinuxでは不十分。
ntfs:Windows系の標準ファイルシステム
tmpfs:メモリ上に生成するファイルシステム


ファイルシステムを作成するコマンド
mkfs コマンド

mkfs オプション デバイス

 
オプション

ファイルシステムタイプを指定する
mkfs -t ファイルシステムタイプ デバイス

※ファイルシステムタイプを指定しなかった場合、ext2ファイルシステムが作成される。
 

ファイルシステムタイプをext3に指定する
mkfs -j デバイス
-Vで実行するコマンドが詳細にわかる
mkfs -V -j デバイス
-mでスーパーユーザの予備領域を設定できる:デフォルトは5%
mkfs -t ext4 -m 10 /dev/sdb1

 

ext2/3/4を作成するコマンド
mke2fs -t ファイルシステムタイプ デバイス
※ファイルシステムタイプを指定しなかった場合、ext2ファイルシステムが作成される。

#ext3を作成する場合は-jオプション
mke2fs -j デバイス

 

ファイルシステム関連コマンド

ファイルシステムを検索する
findfs LABEL=ラベル名 or UUID=uuid
xfsファイルシステムのラベル名やUUIDを表示・設定する
xfs_admin オプション デバイス
操作コマンド 説明
-l ラベルを表示
-u UUIDを表示
-L ラベル名 ラベル名を設定
-U UUID UUIDを設定
 
ext2/3/4ファイルシステムの場合は、tune2fsコマンドを使用する

その他のxfsコマンド

ファイルシステムに関する情報を表示
xfs_info
ファイルシステムの修復を行う
xfs_repair
デフラグを行う
xfs_fsr
デバッグを行う
xfs_db

スワップ領域の作成
スワップ領域はシステムインストール時に生成するが、追加する場合はmkswapコマンドで作成する。作成したスワップ領域を有効化するにはswaponコマンドを実行する必要がある。

スワップ領域の初期化(作成)を行う
mkswap オプション デバイス
作成したスワップ領域を有効化する
swapon オプション デバイス

#-sでスワップの使用状況を表示する
swapon -s
スワップ領域を無効化する
swapoff

マウント

新しく作成したファイルシステムはディレクトリに紐づけられていないため、まだファイルを格納できない。ディレクトリにファイルシステムのルートディレクトリを接続する作業をマウントという。

マウント状況を確認する(オプション不要)
mount [-l]
ファイルシステムをマウントする
mount オプション [-t ファイルシステムタイプ] デバイス マウントポイント
mount /dev/sdb1 /task

# -tでファイルシステムタイプを指定してマウント
mount -t ext4 /dev/sdb5 /test

# 通常はデバイスファイル名を指定するが、--bindオプションをつけることでディレクトリをマウントできる
mount --bind /task/test /test

マウントコマンドのオプション

操作コマンド 説明
-a /etc/fstabファイルに記述されたファイルシステムをすべてマウントする
-r 読み取り専用でマウント
-w 読み書き可能モードでマウント
-t ファイルシステムタイプを指定してマウント
-o マウントオプションを指定する
--bind サブツリーをどこか他の場所に再マウントする

 

マウントを解除する
umount デバイスorマウントポイント

# -aで/etc/fstabファイルに記述されたファイルシステムをすべてアンマウントする (noautoを除く)
umount -a

 
/etc/fstabファイル
mountコマンドでマウントしても、システムを再起動するとマウントは外れてしまう。システム起動時にファイルシステムが自動的にマウントされるようにするには、/etc/fstabファイルに設定を記述する。/etc/fstabは起動時に自動的に読み込まれる。

/etc/fstab
$ cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Thu Nov  4 20:31:35 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a4667eb6-374b-46d7-8d18-1867927685c4 /                       xfs     defaults        0 0
UUID=3278-6212          /boot/efi               vfat    defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 0
/dev/sda2 /test ext3 user,auto,rw,exec 0 0

自動マウントの設定オプション
左から4つめの項目に設定する

オプション 説明
defaults デフォルトのオプション
auto/noauto 自動マウントを行う/自動マウントを行わない
nouser スーパーユーザのみマウントできる
user 一般ユーザもマウントできる。アンマウントはマウントしたユーザのみ
users 一般ユーザもマウントできる。アンマウントは誰でも可能
exec/noexec プログラムの実行許可/実行を許可しない
ro/rw 読み取り専用/読み書き可能

CD/DVD/USBを利用するときもマウントが必要。
GUI環境ではメディアを挿入すると自動的にマウントされるが、
CUI環境ではmountコマンドでマウントする。

CD-ROMをマウントする
mount -t iso9660 /dev/sr0 /media

# アンマウント
umount /media

ファイルシステムの情報を確認するコマンド

ファイルシステムの使用状況を確認する
df [オプション]

# -hオプションで見やすい単位で表示
df -h

# -iオプションでiノードの使用状況を確認
df -i
ファイルやディレクトリの使用量を表示する
du [オプション]

# -hオプションで見やすい単位で表示
du -h

# -sオプションで使用量の総和だけを表示、hオプションで見やすい単位で表示
du -sh /etc

# -aオプションでディレクトリだけでなく、ファイルの容量についても表示
du -a .
メモリ、スワップ領域の使用量を表示する
free

# -hオプションで見やすい単位で表示
free -h

ハードディスクにファイルシステムを作成する手順
1.ハードディスクをマシンに接続
2.追加したハードディスクのデバイスファイルが作成されたことを確認する
3.パーティションを作成する(parted,gdisk,fdisk)
4.各パーティションにファイルシステムを作成する(mkfs,mke2fs)
5.作成したファイルシステムをマウントする(mount)

Discussion