ファイルシステム
パーティション
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
操作コマンド | 説明 |
---|---|
パーティション一覧表示 | |
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は物理パーティション上に構成する。
pvcreate
ファイルシステム
パーティションを作っただけでは、ファイルを格納できない。
パーティションを利用可能にするにはファイルシステムを作る。
ファイルシステムの構成要素
構成要素 | 説明 |
---|---|
全体管理情報領域 | ファイルシステム全体を管理する情報を格納 |
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ファイルシステムが作成される。
mkfs -j デバイス
mkfs -V -j デバイス
mkfs -t ext4 -m 10 /dev/sdb1
mke2fs -t ファイルシステムタイプ デバイス
※ファイルシステムタイプを指定しなかった場合、ext2ファイルシステムが作成される。
#ext3を作成する場合は-jオプション
mke2fs -j デバイス
ファイルシステム関連コマンド
findfs LABEL=ラベル名 or UUID=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は起動時に自動的に読み込まれる。
$ 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コマンドでマウントする。
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