Linux-LVMディスク拡張ガイド

LVM技術の詳細

lvm2のインストール後に以下のコマンドがサポートされます。

yum install -y lvm2

LVMコマンド一覧

番号 機能 PV物理ボリュームコマンド VGボリュームグループコマンド LV論理ボリュームコマンド
01 スキャン機能 pvscan vgscan lvscan
02 作成機能 pvcreate vgcreate lvcreate
03 表示機能 pvdisplay vgdisplay lvdisplay
04 削除機能 pvremove vgremove lvremove
05 拡張機能 vgextend lvextend
06 縮小機能 vgreduce lvreduce

ディスク論理ボリューム管理の実践操作

01. 論理ボリューム操作環境の準備

空のハードディスクsdbを追加し、500Mのパーティションsdb1とsdb2を2つ作成します。

まず、新しく追加したsdbディスクのパーティション操作を行います。

fdisk /dev/sdb

最初に500Mのパーティションを作成するには「n」を入力します。

次に500Mのパーティションを作成するには再度「n」を入力します。

パーティションを確認するには「p」を入力します。

変更を保存するには「w」を入力します。

fdisk -l /dev/sdbでディスクパーティションを確認し、ll /dev/sdb*でパーティションファイルが存在するか確認します。

パーティション操作は完了です。

02. 論理ボリューム機能の基本設定:物理ボリューム(PV)

PVを作成します - sdb1+sdb2

pvcreate /dev/sdb1 /dev/sdb2
pvdisplay

注意点1: この時点で"Total PE"は0です。PVがVGグループに追加されて初めてPEに分割されます。

注意点2: pvsコマンドでPVのグループを簡単に確認できます。

VGグループ"vg_data"を作成します。

vgcreate vg_data /dev/sdb1 /dev/sdb2

vgdisplayで詳細を確認すると、"Total PE"が248個、各PEが4Mサイズであることがわかります。

なぜ248個なのかは、pvdisplayで確認できます。

注意点1: まだLVを作成していないため、VG内の"Alloc PE / Size"はまだ"0/0"です。

注意点2: まだLVを作成していないため、VG内の"Free PE / Size"はまだ"248"で未使用です。

pvdisplayで確認すると、sdb1とsdb2はそれぞれ124個ずつなので、このVGは合計248個のPEを持つことがわかります。

VG作成後、LVを作成します。

lvcreate -L 200M -n storage_lv vg_data

storage_lvに対してファイルシステムを作成(フォーマット)します。

mkfs -t ext4 /dev/vg_data/storage_lv

注意:

  • ext4はLVMの縮小と拡張の両方が可能です。
  • xfsはLVMの拡張のみ可能で、縮小する場合はフォーマットが必要です。

/mntディレクトリにマウントします。

df -hでマウント状況を確認します。

03. 論理ボリューム拡張の実践

lvextend -L +100M または lvextend -l +100%FREE

-Lと-lの大文字・小文字に注意してください。

[root@server ~]# vgs
VG     #PV   #LV  #SN  Attr      VSize    VFree
vg_data 2    1    0    wz -- n-  992.00m  792.00m
#VGに拡張可能な空き容量があるか確認
[root@server ~]# lvextend -L +100M /dev/vg_data/storage_lv
Size of logical volume vg_data/storage_lv changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
Logical volume vg_data/storage_lv successfully resized.
[root@server ~]# lvs
LV        VG      Attr        LSize    Pool Origin Data%    Meta%    Move    Log    Cpy%Sync    Convert
storage_lv vg_data -wi-ao ---- 300.00m
[root@server ~]# lvscan
ACTIVE    '/dev/vg_data/storage_lv' [300.00 MiB ] inherit

拡張容量が正しく反映されない場合は、lvscanコマンドで再スキャンして認識させます。

[root@server ~]# resize2fs /dev/vg_data/storage_lv

ext4ファイルシステムタイプの場合、resize2fsでファイルシステムが拡張容量を認識します。xfsの場合はxfs_growfsコマンドを使用します。

[root@server ~]# df -h
Filesystem            Size  Used Avail Use%    Mounted on
/dev/mapper/vg_data-storage_lv   297M  11M  287M  4%      /mnt
#容量が100M拡張されていることが確認できます

04. 論理ボリューム縮小の実践

[root@server ~]# umount /mnt
#縮小操作はストレージデバイスをアンマウントする必要があります
[root@server ~]# e2fsck -f /dev/vg_data/storage_lv
#ファイルシステムを縮小する前に、スキャン検査を行い、データ損傷を防ぎます
[root@server ~]# resize2fs /dev/vg_data/storage_lv 200M
#縮小後の200Mファイルシステム空間にスキャンします
[root@server ~]# lvreduce -L 200M /dev/vg_data/storage_lv
WARNING: Reducing active logical volume to 200.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_data/storage_lv? [ y/n ] : y
Size of logical volume vg_data/storage_lv changed from 300.00 MiB (75 extents) to 200.00 MiB (50 extents).
Logical volume vg_data/storage_lv successfully resized.
#storage_lv論理ボリュームを元の200Mに縮小します
[root@server ~]# lvs
LV        VG      Attr         LSize    Pool Origin Data%     Meta%    Move Log Cpy%Sync Convert
storage_lv vg_data -wi-a ----- 200.00m
[root@server ~]# mount /dev/vg_data/storage_lv /mnt
[root@server ~]# df -h
Filesystem            Size    Used  Avail  Use%  Mounted on
/dev/mapper/vg_data-storage_lv   190M    1.6M  175M   1%    /mnt

注意: 企業環境ではディスク縮小操作は極力避けてください。縮小操作はファイルシステムに不可逆的な影響を与える可能性があります。

05. ボリュームグループ拡張の実践

仮想ホスト環境で新しいハードディスクを追加し、そのディスクをPVとして設定します。

[root@server ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@server ~]# vgextend vg_data /dev/sdc
Volume group "vg_data" successfully extended with /dev/sdc
#VG物理ボリュームグループの拡張が完了しました
[root@server ~]# vgs
VG     #PV #LV  #SN  Attr       VSize    VFree
vg_data 2   1    0    wz -- n-   20.96g   20.57 g

06. ボリュームグループ縮小の実践

[root@server ~]# vgreduce vg_data /dev/sdc
Removed "/dev/sdc" from volume group "vg_data"
[root@server ~]# vgs
VG     #PV #LV  #SN   Attr      VSize      VFree
vg_data 2    1   0     wz -- n-  992.00m    792.00m
[root@server ~]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.
# /dev/sdc PV物理ボリュームの削除が完了しました

LVM論理ボリュームの知識まとめ

LVM論理ボリューム管理の利点

  • ディスク容量を柔軟に管理できます。
  • 将来のデータ移行作業を回避できます。

LVM論理ボリューム管理の欠点

  • ディスクの性能に影響を与える可能性があります。
  • ディスクファイルシステムに損傷を与える可能性があります(データ損傷に相当)。
  • 可能であればストレージデバイスの使用を推奨します(ソフトウェアストレージアプリケーション)。

関連コマンドの使用例

まず「lsblk」で現在のディスク状況を確認します。

root@server:~# lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                   8:0    0    80G  0 disk 
├─sda1                8:1    0   512M  0 part /boot/efi
├─sda2                8:2    0     1K  0 part 
└─sda5                8:5    0  49.5G  0 part 
  ├─vg_data-root   253:0    0  48.5G  0 lvm  /
  └─vg_data-swap_1 253:1    0   976M  0 lvm  [SWAP]

「lsblk -f」でディスクフォーマットを確認できます。

root@server:~# lsblk -f
NAME                FSTYPE      LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINT
sda                                                                                         
├─sda1              vfat              8BE7-DF3D                                 511M     0% /boot/efi
├─sda2                                                                                      
└─sda5              LVM2_member       eDSv3f-euPB-ePjk-3Nuz-pXuP-a4Tg-xvYwYY                
  ├─vg_data-root   ext4              c2545732-2cc3-47b2-a098-5c770211e1a0      5.9G    83% /
  └─vg_data-swap_1 swap              0a3c99af-e9ef-432e-9e16-458b267d1027                  [SWAP]

ディスク拡張の手順

  1. df -h でディスク状況を確認
  2. lvdisplay(論理ボリューム)を確認
  3. vgdisplay(論理グループ)を確認
  4. pvdisplay(物理ボリューム)を確認
  5. fdisk /dev/ディスク名 でパーティション作成
  6. mkfs -t ext4 /dev/sdb1 でフォーマット
  7. vgextend vg_data /dev/sdb1 でVG拡張(vg_dataはVG名、sdb1はディスク名)
  8. pvscan で確認
  9. lvextend -l 100%FREE /dev/vg_data/root でLV拡張(/dev/vg_data/rootはLVのパス)
  10. resize2fs /dev/vg_data/root でファイルシステム更新

CentOS7の場合、最後のステップでエラーが発生することがあります。正しいコマンドは:

xfs_growfs -d /dev/vg_data/root

タグ: LVM linux ディスク管理 論理ボリューム ストレージ

7月18日 20:08 投稿