LVMの作成・参照・削除のまとめ

LVM(Logical Volume Manager(論理ボリュームマネージャー))とは、Linuxで柔軟にディスク領域を管理する仕組みです。

パーティションの作成

ディスク全体をLVMとして利用する場合、パーティションを作成せずとも利用可能ですが、anacondaの標準構成との整合性を考えて、その方がわかりやすいと思います。
1ステップ増えますが、パーティションを切ってからLVMを作成するようにしています。

パーティション作成前の状態

$ lsblk /dev/sdb
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb                 8:16   0   16G  0 disk ・・・ 新規ディスク

新規ディスク(/dev/sdb)にパーティション作成

最近のハードウェアであれば、fdiskコマンドよりもgdiskコマンドを使うのが良いでしょう。

$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.7

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries in memory.

Command (? for help): o ・・・ 新しい空のパーティション作成する
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

Command (? for help): n ・・・ 新しいパーティションを作成する
Partition number (1-128, default 1): ・・・ エンターキーを押下
First sector (34-33554398, default = 2048) or {+-}size{KMGTP}: ・・・ エンターキーを押下
Last sector (2048-33554398, default = 33554398) or {+-}size{KMGTP}: ・・・ エンターキーを押下
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 8e00 ・・・ パーティションタイプを指定する
Changed type of partition to 'Linux LVM'

Command (? for help): p ・・・ パーティションテーブルを表示する
Disk /dev/sdb: 33554432 sectors, 16.0 GiB
Model: Virtual disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 6163F143-1758-47B7-BD70-C49ACC7BE8F1
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        33554398   16.0 GiB    8E00  Linux LVM

Command (? for help): w ・・・ パーティションテーブルをディスクに書き込みをして終了する

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y ・・・ 続行するかどうか(「y」を応答で書き込まれる)
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

パーティション作成後の状態

$ lsblk /dev/sdb
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb                 8:16   0   16G  0 disk
`-sdb1              8:17   0   16G  0 part ・・・ 新規作成したパーティション

物理ボリューム(PV)

LVMの物理ボリューム操作です。

物理ボリューム作成

「/dev/sdb1」のパーティションに、LVMの物理ボリュームを作成する方法です。

$ sudo pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

物理ボリューム参照

作成した物理ボリュームは「pvs」コマンドや「pvdisplay」コマンドで参照できます。

$ sudo pvs /dev/sdb1
  PV         VG Fmt  Attr PSize   PFree
  /dev/sdb1     lvm2 ---  <16.00g <16.00g
$ sudo pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "<16.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1 ・・・ 物理ボリューム(PV)名
  VG Name
  PV Size               <16.00 GiB ・・・ 物理ボリューム(PV)サイズ
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               POL1ZI-bv95-GmC2-E7Ge-IUIg-Z0mQ-TENHCy

物理ボリューム削除

物理ボリュームを削除する方法です。

$ sudo pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped.

ボリュームグループ(VG)

LVMのボリュームグループ操作です。

ボリュームグループの作成

「/dev/sdb1」の物理ボリュームに、ボリュームグループを作成する方法です。

$ sudo pvs /dev/sdb1 ・・・ 物理ボリューム(PV)の確認
  PV         VG Fmt  Attr PSize   PFree
  /dev/sdb1     lvm2 ---  <16.00g <16.00g
$ sudo vgcreate data1vg /dev/sdb1 ・・・ ボリュームグループの作成
  Volume group "data1vg" successfully created

ボリュームグループの参照

作成したボリュームグループは「vgs」コマンドや「vgdisplay」コマンドで参照できます。

$ sudo vgs data1vg
  VG      #PV #LV #SN Attr   VSize   VFree
  data1vg   1   0   0 wz--n- <16.00g <16.00g
$ sudo vgdisplay data1vg
  --- Volume group ---
  VG Name               data1vg ・・・ ボリュームグループ(VG)名
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0 ・・・ 物理ボリューム(PV)の最大の数 [ 0 は 無制限 システム上限値まで]
  Cur PV                1 ・・・ ボリュームグループ(VG)に含まれている物理ボリューム(PV)の数
  Act PV                1 ・・・ アクティブな物理ボリューム(PV)の数
  VG Size               <16.00 GiB ・・・ ボリュームグループ(VG)サイズ
  PE Size               4.00 MiB ・・・ 物理区画(PE)サイズ
  Total PE              4095 ・・・ 総物理区画数[ 4095 × 4 Mib ≒ 16 GiB ]
  Alloc PE / Size       0 / 0
  Free  PE / Size       4095 / <16.00 GiB
  VG UUID               FtlNtK-yUEi-2eqf-AEuz-M5uL-3ylA-6iIObo

ボリュームグループの削除

ボリュームグループを削除する方法です。

$ sudo vgremove data1vg
  Volume group "data1vg" successfully removed

論理ボリューム(LV)

LVMの論理ボリューム操作です。

論理ボリュームの作成

「data1vg」のボリュームグループに、論理ボリュームを作成する方法です。

$ sudo lvcreate -n work1lv -L 4096m data1vg
  Logical volume "worklv" created.

論理ボリュームの参照

作成した論理ボリュームは「lvs」コマンドや「lvdisplay」コマンドで参照できます。

$ sudo lvs /dev/data1vg/work1lv
  LV      VG      Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  work1lv data1vg -wi-a----- 4.00g
$ sudo lvdisplay /dev/data1vg/work1lv
  --- Logical volume ---
  LV Path                /dev/data1vg/work1lv
  LV Name                work1lv
  VG Name                data1vg
  LV UUID                DnsUch-VECW-xl3E-almM-D5iC-s3u1-JTE29A
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2025-10-10 00:40:10 +0900
  LV Status              available
  # open                 0
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:7

論理ボリュームの削除

論理ボリュームを削除する方法です。

$ sudo lvremove /dev/data1vg/work1lv
Do you really want to remove active logical volume data1vg/work1lv? [y/n]: y
  Logical volume "work1lv" successfully removed.

ファイルシステム

ファイルシステムの作成

mkfsコマンドでファイルシステムを作成します。

$ sudo mkfs -t xfs /dev/data1vg/work1lv ・・・ ファイルシステムは「xfs」で作成
meta-data=/dev/data1vg/work1lv   isize=512    agcount=4, agsize=262144 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
data     =                       bsize=4096   blocks=1048576, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
$ sudo mount /dev/data1vg/work1lv /work1 ・・・ マウントの確認
$ df -hT /work1
Filesystem                  Type  Size  Used Avail Use% Mounted on
/dev/mapper/data1vg-work1lv xfs   4.0G   61M  3.9G   2% /work1

ファイルシステムの自動マウント

マシン起動時にファイルシステムの自動マウントを設定します。

$ sudo blkid | grep work1lv
/dev/mapper/data1vg-work1lv: UUID="bb28e2b8-8368-4e05-bc56-1663bcd42eaf" TYPE="xfs"
$ sudo cp -p /etc/fstab /etc/fstab.bak
$ diff /etc/fstab.bak /etc/fstab
20a21
> UUID=bb28e2b8-8368-4e05-bc56-1663bcd42eaf  /work  xfs   defaults 0 0

LVMでミラーリング(RAID1)構成

ディスクをミラーリング(RAID1)構成するのに、専用のRAIDボードを購入しても良いですが、LVMの機能でミラーリングすうことも可能です。

既存の論理ボリュームをミラーリングする場合、1物理区画(1PE)の空が必要です。

種類特徴メリットデメリット
ハードウェア RAID・RAID専用のハードウェアが処理を行う
・OSからは通常の1つのディスクとして見える
・処理がCPUに負担をかけない
・BIOSレベルで構成され、OSより前の段階で動作
・CPU負荷が少ない
・パフォーマンスが高い
(特にRAID 5, RAID 6など)
・信頼性が高い
(高品質なRAIDカード使用時)
・RAIDカードが故障すると復旧が困難
(同型カードが必要な場合も)
・コストが高い
(RAIDカードの導入が必要)
・設定や監視がブラックボックスになりやすい
ソフトウェアRAID・RAID処理をOSがソフトウェア的に実行
・専用ハードウェアは不要
・LVM+RAIDやmdadmなどで管理
・OSがRAIDを直接制御し、柔軟性が高い
・コストがかからない
(ハードウェア不要)
・柔軟で管理しやすい
・RAID構成を別のLinuxに移動しても認識されやすい
・CPU負荷が増える
(最近のCPUなら問題ないケース多い)
・BIOSレベルでRAID構成が見えない
・ブートディスクに関して注意が必要
(特にRAID 1以外)

既存の論理ボリュームとファイルシステム

$ sudo vgdisplay data1vg
  --- Volume group ---
  VG Name               data1vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <16.00 GiB
  PE Size               4.00 MiB
  Total PE              4095
  Alloc PE / Size       4094 / 15.99 GiB
  Free  PE / Size       1 / 4.00 MiB ・・・ 1物理区画の空が必要
  VG UUID               gRJNty-sT8b-i7Kp-M9Y3-BhBv-8hIW-50l7kL

$ lsblk /dev/sdb /dev/sdc
NAME                MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb                   8:16   0  16G  0 disk
`-sdb1                8:17   0  16G  0 part
  `-data1vg-work1lv 253:7    0  16G  0 lvm  /work1 ・・・ /dev/sdb1側にマウントされている
sdc                   8:32   0  16G  0 disk
`-sdc1                8:33   0  16G  0 part
$ ls -lh /work1
total 10485760
-rw-r--r--. 1 root root 10737418240 Oct 13 05:20 10GiB.dat ・・・ 10ギガバイトのファイルがある

「/dev/sdc1」を「data1vg」に含めます

$ sudo pvs /dev/sdb1 /dev/sdc1
  PV         VG      Fmt  Attr PSize   PFree
  /dev/sdb1  data1vg lvm2 a--  <16.00g   4.00m ・・・ ボリュームグループの「data1vg」に属している
  /dev/sdc1          lvm2 ---  <16.00g <16.00g ・・・ ボリュームグループのどこにも属していない
$ sudo vgs data1vg
  VG      #PV #LV #SN Attr   VSize   VFree
  data1vg   1   1   0 wz--n- <16.00g 4.00m
$ sudo vgextend data1vg /dev/sdc1
  Volume group "data1vg" successfully extended
$ sudo pvs /dev/sdb1 /dev/sdc1
  PV         VG      Fmt  Attr PSize   PFree
  /dev/sdb1  data1vg lvm2 a--  <16.00g   4.00m ・・・ ボリュームグループの「data1vg」に属している
  /dev/sdc1  data1vg lvm2 a--  <16.00g <16.00g ・・・ ボリュームグループの「data1vg」に属している
$ sudo vgs data1vg
  VG      #PV #LV #SN Attr   VSize  VFree
  data1vg   2   1   0 wz--n- 31.99g 16.00g

RAID1構成に変換します。

$ sudo lvconvert -m1 /dev/data1vg/work1lv /dev/sdc1
Are you sure you want to convert linear LV data1vg/work1lv to raid1 with 2 images enhancing resilience? [y/n]: y
  Logical volume data1vg/work1lv successfully converted.

RAID1更生のディスクが同期されます。Cpy%Syncの値が100.00で完全同期です。

$ sudo lvs /dev/data1vg/work1lv
  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  work1lv data1vg rwi-aor--- 15.99g                                    5.58   ・・・ 同期が100.00になるまで待つ
  LV      VG      Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  work1lv data1vg rwi-aor--- 15.99g                                   100.00

LVM上でのRAID1構成であることを確認します。

$ lsblk /dev/sdb /dev/sdc
NAME                         MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb                            8:16   0  16G  0 disk
`-sdb1                         8:17   0  16G  0 part
  |-data1vg-work1lv_rmeta_0  253:8    0   4M  0 lvm ・・・ RAID1のメタデータ領域(監視・整合性チェックに使われる)
  | `-data1vg-work1lv        253:7    0  16G  0 lvm  /work1
  `-data1vg-work1lv_rimage_0 253:9    0  16G  0 lvm ・・・ RAID1のミラーイメージ領域(実際のデータが格納される)
    `-data1vg-work1lv        253:7    0  16G  0 lvm  /work1
sdc                            8:32   0  16G  0 disk
`-sdc1                         8:33   0  16G  0 part
  |-data1vg-work1lv_rmeta_1  253:10   0   4M  0 lvm
  | `-data1vg-work1lv        253:7    0  16G  0 lvm  /work1
  `-data1vg-work1lv_rimage_1 253:11   0  16G  0 lvm
    `-data1vg-work1lv        253:7    0  16G  0 lvm  /work1

RAID1更生を解除します。

$ sudo lvconvert -m0 /dev/data1vg/work1lv
Are you sure you want to convert raid1 LV data1vg/work1lv to type linear losing all resilience? [y/n]: y
  Logical volume data1vg/work1lv successfully converted.

LVM上でのRAID1構成でないことを確認します。

$ lsblk /dev/sdb /dev/sdc
NAME                MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb                   8:16   0  16G  0 disk
`-sdb1                8:17   0  16G  0 part
  `-data1vg-work1lv 253:7    0   4G  0 lvm  /work1
sdc                   8:32   0  16G  0 disk
`-sdc1                8:33   0  16G  0 part

タイトルとURLをコピーしました