見出し画像

Linux のディスクとファイルシステムを使いこなすために



1. はじめに

パソコンやサーバを使ううえで、ディスクファイルシステムは欠かせない要素ですよね。OSがどうやってディスクを分割・管理し、ユーザーが扱いやすいファイルやディレクトリ階層を提供しているのか、意外と知らない方も多いのではないでしょうか。

本記事では、Linuxでディスクを扱ううえで押さえておくべきパーティションの仕組み、ファイルシステムの作成・マウント、スワップ、そしてLVM(Logical Volume Manager)の概要を、初学者の方にもわかりやすく解説します。

ワンメッセージ:
Linuxではディスクやファイルシステムが高度に抽象化されており、柔軟かつ強力な管理が可能です。

まずはパーティションの概念から入り、その後ファイルシステムの基本操作やスワップ領域、LVMを使ったより洗練されたディスク管理法へと進んでいきましょう。


2. ディスクを区切る:パーティションの基本

2.1 デバイス名とパーティション

Linuxカーネルは、ハードディスクをブロックデバイスとして /dev/sda や /dev/sdb のように扱います。ディスク全体だけでなく、その一部をパーティションとして区切り、/dev/sda1 や /dev/sda2 のように番号を付けて認識させます。

# 例:/dev/sda ディスクにあるパーティション
/dev/sda1 /dev/sda2

こうすることで、1台の物理ディスクを複数の論理領域として使えるようになるのです。

2.2 パーティションテーブル(MBRとGPT)

パーティションの情報は、パーティションテーブル(disk label)と呼ばれる領域に記録されます。代表的なのが以下の2種類です。

  • MBR (Master Boot Record): レガシーな方式で最大4つのプライマリパーティションを記録可。拡張パーティションによってさらに論理パーティションを増やせる。

  • GPT (GUID Partition Table): より新しい方式。ディスク容量が大きい環境にも対応し、パーティション数の制限も緩和。


2.3 partedやfdiskでパーティションを確認・作成する

Linuxでパーティションを操作する代表的なコマンドは以下の通りです。

  • parted:MBRやGPTの両方に対応。コマンド実行後に対話的・即時にパーティションを変更

  • gparted:partedのGUIフロントエンド

  • fdisk:伝統的なCLIツール。変更をまとめて書き込むので安心して試行錯誤できる

例えば、すべてのディスク情報を一覧するには

# parted でシステム内のディスクを一覧
$ sudo parted -l

と実行すると、接続されたディスクやパーティションの詳細が表示されます。
一方、fdisk /dev/sda のようにして対話モードでパーティションを編集することも可能です。

注意:パーティションテーブルを編集するときは、既存のデータが破壊される危険があるためバックアップを取ってから行ないましょう。


3. ファイルシステムを作ってマウントする

3.1 ファイルシステムとは?

パーティションはあくまで「生のブロック領域」です。その上にファイルシステムを作ることで、フォルダやファイルなどの階層構造を利用できるようになります。Linuxには多種多様なファイルシステムが存在します。

  • ext4:従来のext2/ext3を発展させたLinux標準のジャーナリングFS

  • btrfs:スナップショットや大規模運用に強い新世代ファイルシステム

  • XFS:高性能かつ大容量での利用に強み

  • vfat / exfat:Windowsとの互換性のため、USBメモリ等で使用される

3.2 mkfs でファイルシステムを作る

ファイルシステム作成には、以下のようにmkfsコマンド(内部的にはmkfs.ext4など各FS向けコマンド)を使います。

# /dev/sda1 パーティションに ext4 を作成
$ sudo mkfs -t ext4 /dev/sda1

# コマンド出力例
mke2fs 1.44.1 (24-Mar-2018) Creating filesystem with 2621440 4k blocks and ... --snip--

この操作によって既存のデータは失われるので要注意です。

3.3 mount/umount でファイルシステムを取り付ける

作成したファイルシステムをマウント (mount) することで、特定のディレクトリパスに接続できます。典型的な例:

# /dev/sda1 の ext4 filesystem を /mnt へマウント
$ sudo mount -t ext4 /dev/sda1 /mnt
  • /mnt は一時的なマウントポイントとしてよく用いられます。長期利用の場合、専用のディレクトリを作ってください。

  • umount /mnt でアンマウントします(umount /dev/sda1でも可)。

UUID でマウントする

デバイス名(/dev/sda1, /dev/sdb1)は接続順に左右されることがあります。そのため、ファイルシステムにはUUIDという固有IDが付与され、そちらを使って安定的にマウントする方法も推奨されています。

# blkid でUUIDを確認
$ sudo blkid /dev/sda1
UUID="17f12d53-c3d7-4ab3-943e-a0a72366c9fa" TYPE="ext4"

# UUIDを指定してマウント
$ sudo mount UUID=17f12d53-c3d7-4ab3-943e-a0a72366c9fa /mnt

3.4 /etc/fstab ファイル

ブート時に自動マウントしたい場合や、手動マウントを簡易にしたい場合は /etc/fstab に設定を書きます。

UUID=17f12d53-c3d7-4ab3-943e-a0a72366c9fa /mnt ext4 defaults 0 2

ここには

  1. デバイス名(またはUUID)

  2. マウントポイント

  3. ファイルシステムタイプ

  4. マウントオプション(defaultsなど)

  5. dump用 (通常0)

  6. fsck実行順序 (ルートは1、他は2、チェック不要なら0)
    を記述します。


4. スワップ領域:メモリ不足を補う仕組み

4.1 スワップパーティションまたはスワップファイル

OSは物理メモリが不足したとき、不要なページをディスク上のスワップ領域へ退避できます。専用パーティションを用意する場合が多いですが、通常のファイルをスワップとして使うことも可能です。

# パーティションをスワップ用に初期化
$ sudo mkswap /dev/sda5 

# 利用開始 
$ sudo swapon /dev/sda5

/etc/fstab に以下のように書いておけば、再起動後も自動的にスワップとして認識されます。

UUID=... none swap sw 0 0

(swapにマウントポイントは不要)

4.2 どれくらいスワップを割り当てる?

昔は「物理メモリの2倍」というセオリーがありましたが、メモリ容量が大きい近年では事情が変わっています。ハイパフォーマンスサーバの場合はメモリが潤沢なのでスワップを使わない設計もある一方で、デスクトップ用途では少なくとも数GB用意しておくと、メモリ不足時の保険になります。


5. さらに柔軟なディスク管理:LVM

5.1 なぜLVMが便利なのか?

従来のパーティション方式では、後からディスクを拡張したり、使用量に合わせてサイズを変更したりするのが面倒でした。LVM (Logical Volume Manager) は、複数の物理ディスク(Physical Volume)を一つのボリュームグループ(Volume Group)としてまとめ、その上に論理ボリューム(Logical Volume)を柔軟に作成・拡張できる仕組みです。

ここから先は

2,026字 / 3画像

■なにをするサークル・コミュニティか 「エンジニアのコンパス」は、エンジニアの基礎力向上を目指すメン…

スタンダードプラン

¥500 / 月
初月無料

この記事が気に入ったらチップで応援してみませんか?