Linuxのディスク管理はとっつきづらい点がある。この記事ではパーティション分割からLVMまでWindowsとの比較を行いLinuxのディスクについての概要を把握する。
物理ドライブの認識と命名規則
LinuxとWindowsでは、物理ドライブの認識方法が根本的に異なる。
Linux
- 物理ドライブ(HDDやSSDなど)は
/dev/sd[a-z]
として認識される - 1本目のドライブ:
/dev/sda
- 2本目のドライブ:
/dev/sdb
- 3本目のドライブ:
/dev/sdc
(以降アルファベット順)
graph TB subgraph "物理的なハードディスク" HDD1["`**HDD 1** 1台目の物理ディスク 500GB`"] HDD2["`**HDD 2** 2台目の物理ディスク 1TB`"] HDD3["`**HDD 3** 3台目の物理ディスク 2TB`"] end subgraph "Linuxでのデバイス名" SDA["`**/dev/sda** SCSI disk a`"] SDB["`**/dev/sdb** SCSI disk b`"] SDC["`**/dev/sdc** SCSI disk c`"] end HDD1 -.->|"`**認識**`"| SDA HDD2 -.->|"`**認識**`"| SDB HDD3 -.->|"`**認識**`"| SDC style HDD1 fill:#e6f3ff,stroke:#87ceeb,stroke-width:3px style HDD2 fill:#ffe6e6,stroke:#ffb3b3,stroke-width:3px style HDD3 fill:#e6ffe6,stroke:#b3ffb3,stroke-width:3px style SDA fill:#e6f3ff,stroke:#4682b4,stroke-width:2px style SDB fill:#ffe6e6,stroke:#ff6b6b,stroke-width:2px style SDC fill:#e6ffe6,stroke:#4caf50,stroke-width:2px
最近ではNVMe接続のSSDがあり、そちらは1本目nvme0n1
、2本目nvme1n1
といった形で命名される。
詳しい命名についてはArchWikiに解説が載っているのでそちらを参照されたい。
https://wiki.archlinux.jp/index.php/%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
Windows
- 物理ドライブは内部的には
Disk 0
、Disk 1
と数字で管理 - ユーザーには論理ドライブとして
C:
、D:
などのドライブレターで表示
パーティション分割の違い
Linux(/dev/sdaを分割する場合)
パーティションは数字で識別される:
/dev/sda1
:1番目のパーティション/dev/sda2
:2番目のパーティション/dev/sda3
:3番目のパーティション
MBRの場合、基本パーティションは4つまで。拡張パーティションを作成すると論理パーティションは/dev/sda5
から始まる(4は拡張パーティション用に予約)。
graph TB subgraph "物理的なハードディスク" HDD1["`**HDD 1** 1台目の物理ディスク 500GB`"] HDD2["`**HDD 2** 2台目の物理ディスク 1TB`"] HDD3["`**HDD 3** 3台目の物理ディスク 2TB`"] end subgraph "Linuxでのデバイス名" SDA["`**/dev/sda** SCSI disk a`"] SDB["`**/dev/sdb** SCSI disk b`"] SDC["`**/dev/sdc** SCSI disk c`"] end subgraph "パーティション" subgraph "sdaのパーティション" SDA1["`**/dev/sda1** 200MB`"] SDA2["`**/dev/sda2** 16GB`"] SDA3["`**/dev/sda3** 483.8GB`"] end subgraph "sdbのパーティション" SDB1["`**/dev/sdb1** 500GB`"] SDB2["`**/dev/sdb2** 500GB`"] end subgraph "sdcのパーティション" SDC1["`**/dev/sdc1** 2TB`"] end end HDD1 -.->|"`**認識**`"| SDA HDD2 -.->|"`**認識**`"| SDB HDD3 -.->|"`**認識**`"| SDC SDA -->|"`**分割**`"| SDA1 SDA --> SDA2 SDA --> SDA3 SDB -->|"`**分割**`"| SDB1 SDB --> SDB2 SDC -->|"`**分割**`"| SDC1 style HDD1 fill:#e6f3ff,stroke:#87ceeb,stroke-width:3px style HDD2 fill:#ffe6e6,stroke:#ffb3b3,stroke-width:3px style HDD3 fill:#e6ffe6,stroke:#b3ffb3,stroke-width:3px style SDA fill:#e6f3ff,stroke:#4682b4,stroke-width:2px style SDB fill:#ffe6e6,stroke:#ff6b6b,stroke-width:2px style SDC fill:#e6ffe6,stroke:#4caf50,stroke-width:2px style SDA1 fill:#f0f8ff,stroke:#4682b4 style SDA2 fill:#f0f8ff,stroke:#4682b4 style SDA3 fill:#f0f8ff,stroke:#4682b4 style SDB1 fill:#fff0f0,stroke:#ff6b6b style SDB2 fill:#fff0f0,stroke:#ff6b6b style SDC1 fill:#f0fff0,stroke:#4caf50
Windows
- パーティションに直接ドライブレターを割り当て(C:、D:、E:など)
- ディスクの管理ツールでは「ディスク0 パーティション1」のような表示
LVM(Logical Volume Manager)について
LVMはLinux独自の論理ボリューム管理システムで、Windowsのダイナミックディスクに相当する。
LVMのメリット
- 動的なサイズ変更:稼働中でもボリュームサイズの拡張が可能
- スナップショット:ある時点の状態を保存
- 物理ドライブをまたぐボリューム:複数のドライブを1つの論理ボリュームとして扱える
図で表すとこのような形になる。
graph TB subgraph "物理ドライブ (500GB)" HDD["`**物理HDD** /dev/sda 500GB`"] end HDD --> P1["`**/dev/sda1** 200MB`"] HDD --> P2["`**/dev/sda2** 16GB`"] HDD --> P3["`**/dev/sda3** 50GB`"] HDD --> P4["`**/dev/sda4** 433.8GB`"] subgraph "LVM使用時" HDD2["`**物理HDD** /dev/sda 500GB`"] end HDD2 --> L1["`**/dev/sda1** 200MB 通常パーティション`"] HDD2 --> L2["`**/dev/sda2** 499.8GB LVM物理ボリューム`"] L2 --> VG["`**ボリュームグループ** vg_system 499.8GB`"] VG --> LV1["`**lv_swap** 論理ボリューム 16GB`"] VG --> LV2["`**lv_root** 論理ボリューム 50GB`"] VG --> LV3["`**lv_home** 論理ボリューム 400GB`"] VG --> LV4["`**未割り当て** 33.8GB (後で使用可能)`"] style HDD fill:#e6f3ff,stroke:#87ceeb,stroke-width:3px style HDD2 fill:#e6f3ff,stroke:#87ceeb,stroke-width:3px style P1 fill:#ffe6e6,stroke:#ffb3b3 style P2 fill:#f0e6ff,stroke:#d4b3ff style P3 fill:#e6ffe6,stroke:#b3ffb3 style P4 fill:#fff9e6,stroke:#ffd966 style L1 fill:#ffe6e6,stroke:#ffb3b3 style L2 fill:#e6e6ff,stroke:#b3b3ff,stroke-width:2px style VG fill:#f0e6ff,stroke:#c299ff,stroke-width:2px style LV1 fill:#ffe6f3,stroke:#ffb3d9 style LV2 fill:#e6fff9,stroke:#b3ffe6 style LV3 fill:#fff0e6,stroke:#ffcc99 style LV4 fill:#f5f5f5,stroke:#d9d9d9,stroke-dasharray: 5 5
Windowsとの比較
Windowsのダイナミックディスクも似た機能を提供するが、LVMほど柔軟ではない。Storage Spacesが近い概念だが、エンタープライズ向けの機能として位置づけられている。
実際の運用例
1本の500GB HDDを以下のように分割する場合:
従来のパーティション方式
/dev/sda1 200MB /boot (ext4)
/dev/sda2 16GB swap
/dev/sda3 50GB / (ext4)
/dev/sda4 434GB /home (ext4)
LVM使用時
/dev/sda1 200MB /boot (ext4) ※LVMは使わない
/dev/sda2 499.8GB LVM物理ボリューム
└─ vg_system(ボリュームグループ)
├─ lv_swap 16GB swap
├─ lv_root 50GB / (ext4)
└─ lv_home 400GB /home (ext4)
※33.8GBは未割り当て(後で必要に応じて拡張可能)
2本目のドライブ(/dev/sdb)を追加した場合、既存のボリュームグループに追加して論理ボリュームを拡張できる。これはWindowsの基本ディスクでは不可能な操作である。
まとめ
LinuxのディスクがWindowsより優れている点:
- デバイス名が明確で一貫性がある
- マウントポイントによる柔軟なディレクトリ構造
- LVMによる高度な論理ボリューム管理
一方で、Windowsのドライブレターはシンプルでわかりやすいというメリットもある。サーバー用途ではLinuxのアプローチが、デスクトップ用途ではWindowsのアプローチがそれぞれ適している。