RHEL,CentOS:LVMのボリュームに容量を追加する方法

2021年4月14日

個人的には書き込み速度とか気にするとLVMはお勧めでないのですが、昨今、気にするほど書込み速度も気にならないというか、このクラウド全盛期のご時世に微々たる書き込み速度を気にし過ぎて、より良い技術を使わないのもダメな気がするので、LVMを最近やっと使い始めました。

LVMの売りは、後からボリュームを増やすのが容易というのがあると思うので、後からボリュームを増やして手順を確認してみました。

OSインストール後にボリューム容量を増やす

事前に仮想マシン側でHDD容量を増やしておきます。

以下の手順で、ルート(/)の容量を増やします。

①現状の容量確認

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_hogehoge-lv_root
                     53.7G   xxG  xxG  xx% /
 :
# fdisk -l

ディスク /dev/sda: xxx GB, xxxxxxxxxxxx バイト
 :
デバイス ブート      始点        終点     ブロック   Id  システム
 :
/dev/sda2              64       26109   209202176   8e  Linux LVM

ディスク /dev/mapper/vg_hogehoge-lv_root: 53.7 GB, 53687091200 バイト
 :

②増加HDD分のLVMを作成する

# fdisk /dev/sda

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').
コマンド (m でヘルプ): p

ディスク /dev/sda: xxx GB, xxxxxxxxxxxx バイト
 :
デバイス ブート      始点        終点     ブロック   Id  システム
 :
/dev/sda2              64       26109   209202176   8e  Linux LVM
コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 3
最初 シリンダ (26109-78325, default 26109): 
Using default value 26109
Last シリンダ, +シリンダ数 or +size{K,M,G} (26109-78325, default 78325): 
Using default value 78325
コマンド (m でヘルプ): p

ディスク /dev/sda: xxx GB, xxxxxxxxxxxx バイト
 :
デバイス ブート      始点        終点     ブロック   Id  システム
 :
/dev/sda2              64       26109   209202176   8e  Linux LVM
/dev/sda3           26109       78325   419430362+  83  Linux
コマンド (m でヘルプ): t
パーティション番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): L

 0  空             24  NEC DOS         81  Minix / 古い  bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux スワッ c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 隠し C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux 拡張領 c7  Syrinx         
 5  拡張領域    42  SFS             86  NTFS ボリュ  da  非 FS デー  
 6  FAT16           4d  QNX4.x          87  NTFS ボリュ  db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux プレー de  Dell ユーテ 
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX ブート   50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 ブート  51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad    eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 拡張領   55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隠し FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq 診断   61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  隠し FAT16 <3 63  GNU HURD また ab  Darwin ブー   f2  DOS セカン  
16  隠し FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  隠し HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI スワッ  fd  Linux raid 自 
1b  隠し W95 FAT3 75  PC/IX           bb  隠し Boot Wiz fe  LANstep        
1c  隠し W95 FAT3 80  古い Minix    be  Solaris ブー  ff  BBT            
1e  隠し W95 FAT1
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました
コマンド (m でヘルプ): p

ディスク /dev/sda: xxx GB, xxxxxxxxxxxx バイト
 :
デバイス ブート      始点        終点     ブロック   Id  システム
 :
/dev/sda2              64       26109   209202176   8e  Linux LVM
/dev/sda3           26109       78325   419430362+  8e  Linux LVM
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に使えるようになるでしょう
ディスクを同期しています。
# shutdown -r now

③/(ルート)の容量を増やす。

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
# pvdisplay
 :  
  "/dev/sda3" is a new physical volume of "400.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name               
  PV Size               400.00 GiB
 :  

ボリュームグループに追加します。

# vgextend vg_hogehoge /dev/sda3
  Volume group "vg_hogehoge" successfully extended
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               vg_hogehoge
 :  

追加容量分、ボリュームグループのサイズが増えていることを確認します。

# vgdisplay
  --- Volume group ---
  VG Name               vg_hogehoge
 :
  VG Size               599.50 GiB
 :
  Free  PE / Size       102399 / 400.00 GiB
 :

容量増加前の/(ルート)の論理ボリュームサイズを確認します。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_hogehoge/lv_root
  LV Name                lv_root
  VG Name                vg_hogehoge
 :
  LV Size                50.00 GiB
 :  

/(ルート)の論理ボリュームサイズを変更します。増加分を追加するのではなく、増加後の/(ルート)の全体の論理ボリュームサイズを指定します。

変更後の容量が大き過ぎる場合、以下のような結果が出力されます。

# lvextend -L 450Gb /dev/vg_hogehoge/lv_root
  Insufficient free space: 12800 extents needed, but only 12799 available

以下は容量変更成功時の出力結果です。

# lvextend -L 449Gb /dev/vg_hogehoge/lv_root
  Size of logical volume vg_hogehoge/lv_root changed from 400.00 GiB (102400 extents) to 449.00 GiB (114944 extents).
  Logical volume lv_root successfully resized.

容量増加後の/(ルート)の論理ボリュームサイズを確認します。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_hogehoge/lv_root
  LV Name                lv_root
  VG Name                vg_hogehoge
 :
  LV Size                449.00 GiB
 :

ファイルシステムに反映させます。

# resize2fs /dev/vg_hogehoge/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_hogehoge/lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 29
Performing an on-line resize of /dev/vg_hogehoge/lv_root to 117702656 (4k) blocks.
The filesystem on /dev/vg_hogehoge/lv_root is now 117702656 blocks long.

④追加した容量を確認する。

# df -m
Filesystem           1M-blocks  Used Available Use% Mounted on
/dev/mapper/vg_hogehoge-lv_root
                        452434 xxxxx    xxxxxx  xx% /
 :
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_hogehoge-lv_root
                      442G   xxG  xxxG  xx% /
 :

参考サイト