4.2. ファイルシステムの作成

4.2.1. ext2~ext4ファイルシステムの作成

ext2/ext3/ext4のファイルシステムの作成はmke2fsコマンドで可能。

mke2fs [オプション] デバイスファイル
オプション説明
-b サイズブロックサイズをバイト単位で指定する
-cファイルシステム作成前に不良ブロックのチェックを行う
-i サイズinodeあたりのバイト数を指定
-jrootユーザ用の予約領域を%指定する
-m 領域%rootユーザ用の予約領域を%で指定する
-nパラメータ確認
-t タイプファイルシステムのタイプを指定(ext2~ext4)

なおデフォルト値は/etc/mke2fs.confで指定可能。

使用例

ブロックサイズを2048Byte、不良ブロックのチェックを行い、/dec/sda1にext3ファイルシステムを作成する例

mke2fs -b 2048 -c -j /dev/sda1

ブロックサイズは平均低ファイルサイズが小さい場合は小さく、大きい場合は大きく設定する。
またinode1つ当たりのByte数は平均低名ファイルサイズを基準にしそれを超えないようにする。

ext3ファイルシステムの書き込みフロー

  1. 書き込み操作の発生
  2. メタデータ(inode番号など)の更新内容をログへ書き込み
  3. データとメタデータをディスクに書き込む
  4. ディスク書き込み後に該当ログを破棄する

ext4ファイルシステムの作成

ext4ファイルシステムの作成にはmkfs.ext4コマンドを使用する。
またext4システムはext3ファイルシステムと互換性がある。

変換例は以下の通り。

tune2fs -O extend,uninit_bg,dir_index /dev/sda4
e2fsck /dev/sda4 #  整合性の確認

ジャーナリングモード

ext3/ext4には3つのモードのジャーナリングモードがある。

種類説明
journalメインファイルシステムより前にすべてのデータがジャーナルに記録される
orderedメタデータがジャーナルに記録される前に、すべてのデータをメインファイルシステムに直接書き出す(デフォルトの設定)
writebackメタデータがジャーナルに記録された後に、すべてのデータをメインファイルシステムに上書きする

writebackはファイルシステムの完全性が保持されるが、クラッシュ後のリカバリでファイル内容が元に戻ることがある。

4.2.2. XFSファイルシステムの作成

XFSはSGI社が開発した堅固な高速なジャーナリングファイルシステムのこと。
最大ボリュームサイズ/最大ファイルサイズは8EBとなっている。

カーネルがxfsに対応しているかは以下のように確認可能。

modprobe xfs
grep xfs /proc/filesystems

mkfs.xfsコマンド

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

mkfs.xfs /dev/sda1

4.2.3. Btrfsファイルシステムの作成

BtrfsはLinux向けのファイルシステム、耐障害性に優れている。
特徴は以下の通り。

  • 最大16EiBのファイルサイズに対応
  • コピーオンライト
  • ディスク領域の効率的利用
  • inodeの動的割り当て
  • ストレージプールの対応
  • スナップショット機能
  • チェックサムによる完全性保証
  • 効率的な増分バックアップ

mfs.brtfsコマンド

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

mkfs.btrfs /dev/sdb1

4.2.4. mkfsコマンドによるファイルシステムの作成

mkfsコマンドはファイルシステムの作成などができるフロントエンドプログラム。

mkfs -t ext3 /dev/sdc1

対応しているファイルシステムは以下の通り。
ext2~ext4,XFS,Brtfs,cramfs,FAT/VFAT,MINXFS

オプション説明
-t タイプファイルシステムの種類を指定
-c不良ブロックのチェック
-V詳細情報の表示

4.2.5. CD/DVDの作成

LinuxでCD/DVDへ書き込みを行い場合の手順は以下の通り。

  1. CD-R/DVD-Rへ書き込むデータのファイルイメージの作成
  2. 作成したイメージファイルをライティングソフトで書きこむ

CD-ROMのファイルシステムはISO9660となる。
ファイルシステムはmkisofsコマンドで作成を行う。

mkisofs [オプション] ディレクトリ名
オプション説明
-bブータブルCDにする
-o ファイル名ISO9660/UEFIイメージの指定
-Jjolietフォーマット
-R,-rRockRidgeフォーマット
-TRockRidgeフォーマットが使えないファイルシステムで正しいファイル名を維持する
-udfDVDなどで用いられるUDFイメージの作成

jolietとRockridge

ISO9660ではファイル名は「8文字+.+3文字」構成(8.3形式)となる。
RockRidgeフォーマットはロングネームでもファイル名が対応できるように拡張したものでUnixOSで使用される。
Jolietフォーマットは最大64文字のファイル名に対応しているMicrosoftが開発したISO9660上位互換規格である。

4.2.6. 暗号化ファイルシステムの作成

ディスクやファイルの暗号化を行うことができる。
ディスクやファイルの暗号化は大きく分けて以下の種類がある。

  • ブロックデバイス(パーティション、ファイルシステムを含む)に対する暗号化
  • 個別のファイルに対する暗号化

ファイル自体を個別に暗号化する暗号化手法にはEncfs、eCryptfsなどがある。

dm-cryptによる暗号化

dm-cryptはカーネルの仕組みの1つ。
dm-cryptによる暗号化はブロックデバイスの暗号化機能を提供する。

dm-cryptはdevice-mapperを利用して、ブロックデバイス(物理デバイス)へのアクセス時に暗号化が行われるよう暗号化マッピングを行う。
またdevice-mapperは論理デバイスを/dev/mapper配下に作成し、物理デバイスと論理デバイス間のマッピングを行う。

暗号化にはcryptsetupコマンドを使用する。

なお暗号化のためには以下パッケージが必要。

  • RHell系ではcryptsetup-luks
  • Debian系ではcryptsetup

cryptsetupコマンド

ブロックデバイスを暗号化するコマンド。
入力されたパスフレーズをもとに暗号化する(覚えておく必要あり)

cryptsetup create 名前 デバイスファイル名 # ファイルシステムの暗号化
cryptsetup remove 名前 # 次回使用時に暗号化を解く
cryptsetup status 名前 

cryptsetup luksDump デバイスファイル名 # 暗号化の状態を表示
cryptsetup luksFormat デバイスファイル名 # 指定したデバイスを暗号化パーティションとして初期化
cryptsetup luksOpen デバイスファイル名 名前 # LuKSパーティションを名称を指定し開く
cryptsetup luksClose デバイスファイル名 # LUKSパーティションを閉じる

暗号化してマウントする手順は以下の通り

  1. cryptsetup create 名前 デバイスファイル名で暗号化
  2. /dev/mapper/名前にデバイスファイルが作成される
  3. 上記デバイスファイルにファイルシステムを作成(mkfs.ext4 /dev/mapper/名前など)
  4. マウントポイントの作成(mkdir /mnt/名前)、そしてマウントを行う(mount /dev/mapper/名前 /mnt/名前)

アンマウントして暗号化を削除する手順は以下の通り。

  1. unmount /dev/mapper/名前
  2. cryptsetup remove 名前

LUKS

LUKS(Linux Unified Key Setup) はLinuxにおいて標準的に使用される暗号化ファイルシステムの仕様のこと。
LUKSは異なるシステム、ディストリビューション間において相互運用ができる。
LUKSではKeySlotといって、暗号化管理のための鍵をパーティションごとに8つ持つことができる。

LUKSはLinuxにおいてdm-cryptを用いて実装されており、cryptsetupコマンドでファイルシステムの暗号化や管理を行う。