メインコンテンツへスキップ
  1. ノート/
  2. システム底层/

ディスク関連:ボリュームと LVM

ICE345
著者
ICE345
CS Student | System | Linux | OCaml
LVM(Logical Volume Manager)は、ディスクのパーティションを直接固定的に使う代わりに、複数の領域をプールとして管理し、そこから論理ボリュームを切り出す仕組みです。

1. LVM の階層
#

物理ディスクまたはパーティション
  ↓ pvcreate
Physical Volume(PV)
  ↓ vgcreate
Volume Group(VG)
  ↓ lvcreate
Logical Volume(LV)
  ↓ mkfs
ファイルシステム
  ↓ mount
ディレクトリ

1.1 Physical Volume(PV)
#

PV は LVM が管理する最小の物理単位です。通常はディスクパーティション、またはディスク全体を PV として初期化します。

sudo pvcreate /dev/sda3
sudo pvs
sudo pvdisplay

1.2 Volume Group(VG)
#

VG は一つ以上の PV をまとめた容量プールです。VG に空き領域があれば、後から新しい LV を作成できます。

sudo vgcreate ubuntu-vg /dev/sda3
sudo vgs
sudo vgdisplay

1.3 Logical Volume(LV)
#

LV は VG から切り出した仮想的なブロックデバイスです。通常のパーティションと同じように、ファイルシステムを作成してマウントできます。

sudo lvcreate -L 100G -n ubuntu-lv ubuntu-vg
sudo lvs
sudo lvdisplay

2. 基本的な作業例
#

以下は /dev/sda3 を LVM に利用し、100 GiB の LV を作成して /mnt にマウントする例です。実際に実行する前に、対象デバイスを必ず確認してください。pvcreatemkfs は既存データを破壊する可能性があります。

# 1. PV を作成
sudo pvcreate /dev/sda3

# 2. VG を作成
sudo vgcreate ubuntu-vg /dev/sda3

# 3. LV を作成
sudo lvcreate -L 100G -n ubuntu-lv ubuntu-vg

# 4. LV にファイルシステムを作成
sudo mkfs.ext4 /dev/ubuntu-vg/ubuntu-lv

# 5. マウント
sudo mkdir -p /mnt
sudo mount /dev/ubuntu-vg/ubuntu-lv /mnt

3. PV、VG、LV の関係
#

  • PV:LVM に登録された物理パーティションまたはディスク。
  • VG:一つ以上の PV をまとめた容量プール。
  • LV:VG の空き領域から作成した論理的なブロックデバイス。
  • ファイルシステム:LV 上でファイルとディレクトリを管理する形式。
  • マウントポイント:ファイルシステムを OS のディレクトリツリーへ接続する場所。

4. 情報を確認するコマンド
#

pvs
#

sudo pvs

PV ごとの名前、所属 VG、サイズ、空き容量を一覧表示します。

PV         VG        Fmt  Attr PSize    PFree
/dev/sda3  ubuntu-vg lvm2 a--  <462.71g <362.71g

vgs
#

sudo vgs

VG の数、PV と LV の数、合計容量、空き容量を一覧表示します。

VG        #PV #LV #SN Attr   VSize    VFree
ubuntu-vg   1   1   0 wz--n- <462.71g <362.71g

lvs
#

sudo lvs

LV の名前、所属 VG、属性、容量、スナップショットやシンプールの状態を一覧表示します。

pvdisplayvgdisplaylvdisplay
#

sudo pvdisplay
sudo vgdisplay
sudo lvdisplay

これらは、それぞれ PV、VG、LV の詳細情報を表示します。例えば vgdisplay では、VG の UUID、物理エクステントのサイズ、割り当て済み容量、空き容量などを確認できます。

5. 容量を拡張するときの注意
#

LVM の利点は、VG に空きがあれば LV を後から拡張しやすいことです。ただし、LV のサイズを変更しただけでは、ファイルシステムのサイズが自動的に変わるとは限りません。

# LV を拡張する例
sudo lvextend -L +20G /dev/ubuntu-vg/ubuntu-lv

# Ext4 のファイルシステムを拡張する例
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

XFS など、拡張方法が異なるファイルシステムもあります。縮小はデータ破損の危険があるため、バックアップを取ったうえでファイルシステムごとの手順を確認してください。

6. マウントと起動時の利用
#

lsblk -f
findmnt
df -hT

これらのコマンドで、ファイルシステムの種類、マウント先、使用容量を確認できます。起動時にも自動マウントしたい場合は、UUID を使って /etc/fstab に登録します。

blkid /dev/ubuntu-vg/ubuntu-lv

/etc/fstab を変更した後は、次のコマンドで構文を確認できます。

sudo mount -a

7. まとめ
#

LVM は、PV を VG にまとめ、VG から LV を作成することで、ストレージの割り当てを柔軟にします。ただし、対象デバイスを間違えるとデータを失う可能性があるため、lsblkpvsvgslvs の出力を確認してから変更を行ってください。


评论