読者です 読者をやめる 読者になる 読者になる

LVM の論理ボリュームを拡張する

検証環境は以下の通りです。
VMWare Player を使用しています。

# cat /etc/centos-release
CentOS release 6.7 (Final)

HDD の未割り当て領域を全部割り当てて、論理ボリュームを拡張する場合

20GB の HDD の未割り当て領域を VolGroup-lv_root に全て割り当てます。

LVM の縮小はアンマウントが必要ですが、拡張はアンマウントの必要はありません。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      4.7G  618M  3.9G  14% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             477M   30M  422M   7% /boot

/dev/sda のパーティションを確認します。

# fdisk -l /dev/sda

ディスク /dev/sda: 21.5 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000774d4

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        1370    10485760   8e  Linux LVM

未割り当て領域のパーティショニングを行なう

パーティショニングを行ないます。
/dev/sda2 のパーティションの終点が 1370 なので、
/dev/sda3 のパーティションの始点は 1370 で終点は最後までになります。

パーティショニングが終わったら、続けてシステムタイプを標準パーティションから LVM に変更します。

# fdisk /dev/sda

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

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 3
最初 シリンダ (1370-2610, 初期値 1370):1370
Last シリンダ, +シリンダ数 or +size{K,M,G} (1370-2610, 初期値 2610): 2610
コマンド (m でヘルプ): t
パーティション番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

ディスク /dev/sda: 21.5 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000774d4

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        1370    10485760   8e  Linux LVM
/dev/sda3            1370        2610     9966041   8e  Linux LVM

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

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

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

設定反映のため、再起動します。

# reboot

/dev/sda3 が追加されています。

# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3

物理ボリュームの設定

現在の物理ボリュームの設定を確認します。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               1053
  Allocated PE          1506
  PV UUID               aclPKe-o53p-4KY6-6krH-y0Zt-x3cx-29DBeD

物理ボリュームを作成します。

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created

作成した物理ボリューム /dev/sda3 が追加されています。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               1053
  Allocated PE          1506
  PV UUID               aclPKe-o53p-4KY6-6krH-y0Zt-x3cx-29DBeD

  "/dev/sda3" is a new physical volume of "9.50 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               9.50 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               FLfw0S-pXDp-USBW-yeei-CDM9-S9aM-Bq2X9G

ボリュームグループの拡張設定

現在のボリュームグループの設定を確認します。
VG Size は 10.00 GiB になっています。

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               10.00 GiB
  PE Size               4.00 MiB
  Total PE              2559
  Alloc PE / Size       1506 / 5.88 GiB
  Free  PE / Size       1053 / 4.11 GiB
  VG UUID               OXrCrz-4s5B-WpyZ-fg0u-9DH5-twER-rrgddC

ボリュームグループ VolGroup の拡張を行ないます。

# vgextend VolGroup /dev/sda3
  Volume group "VolGroup" successfully extended

VG Size が拡張されたことを確認します。 VG Size は 19.50 GiB になっています。

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.50 GiB
  PE Size               4.00 MiB
  Total PE              4991
  Alloc PE / Size       1506 / 5.88 GiB
  Free  PE / Size       3485 / 13.61 GiB
  VG UUID               OXrCrz-4s5B-WpyZ-fg0u-9DH5-twER-rrgddC

論理ボリュームの拡張設定

現在の論理ボリュームの設定を確認します。 LV Size は 4.88 GiB になっています。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                gvqSgz-dJ36-7CHA-fYOI-fBDa-qneb-7dl8wU
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:51 +0900
  LV Status              available
  # open                 1
  LV Size                4.88 GiB
  Current LE             1250
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_swap
  LV Name                lv_swap
  VG Name                VolGroup
  LV UUID                p3AR0l-LHwH-JFu5-nvIj-NRSy-usGO-XJg7Xz
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:54 +0900
  LV Status              available
  # open                 1
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

論理ボリューム /dev/VolGroup/lv_root を拡張して、未割り当て領域を全て割り当てます。

# lvextend -l +100%FREE /dev/VolGroup/lv_root
  Size of logical volume VolGroup/lv_root changed from 4.88 GiB (1250 extents) to 18.50 GiB (4735 extents).
  Logical volume lv_root successfully resized

確認します。LV Size が 18.50 GiB になっています。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                gvqSgz-dJ36-7CHA-fYOI-fBDa-qneb-7dl8wU
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:51 +0900
  LV Status              available
  # open                 1
  LV Size                18.50 GiB
  Current LE             4735
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_swap
  LV Name                lv_swap
  VG Name                VolGroup
  LV UUID                p3AR0l-LHwH-JFu5-nvIj-NRSy-usGO-XJg7Xz
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:54 +0900
  LV Status              available
  # open                 1
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

ファイルシステムの拡張

ファイルシステムext4 です。
resize2fs コマンドでファイルシステムを拡張します。

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

設定の反映を確認します。
/dev/mapper/VolGroup-lv_root の Size が 19G に増えています。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       19G  622M   17G   4% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             477M   30M  422M   7% /boot

HDD を追加して論理ボリュームを拡張する場合

20GB の HDD にさらに 20GB 追加して、VolGroup-lv_root に割り当てます。

現在のディスクサイズを確認します。
/dev/mapper/VolGroup-lv_root の Size が 19G になっています。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       19G  622M   17G   4% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             477M   30M  422M   7% /boot

VMWare Player を使用しているので、仮想マシンの編集より HDD を 20G 追加しました。
仮想マシンを起動します。

追加した HDD のパーティショニングを行なう

HDD が追加されたことを確認します。
/dev/sdb が追加されています。

# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb

/dev/sdb のパーティションを切ります。 基本パーティション1つに全て割り当てて、
システムタイプを標準パーティションから LVM に変更します。

# fdisk /dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルをディスク識別子 0xf873b291 で作成します。
あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

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

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-2610, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-2610, 初期値 2610):
初期値 2610 を使います

コマンド (m でヘルプ): p

ディスク /dev/sdb: 21.5 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xf873b291

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1        2610    20964793+  83  Linux

コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

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

/dev/sdb のパーティションを確認をします。

# fdisk -l /dev/sdb

ディスク /dev/sdb: 21.5 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xf873b291

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1        2610    20964793+  8e  Linux LVM

物理ボリュームの設定

現在の物理ボリュームの設定を確認します。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               0
  Allocated PE          2559
  PV UUID               aclPKe-o53p-4KY6-6krH-y0Zt-x3cx-29DBeD

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               VolGroup
  PV Size               9.50 GiB / not usable 4.46 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              2432
  Free PE               0
  Allocated PE          2432
  PV UUID               FLfw0S-pXDp-USBW-yeei-CDM9-S9aM-Bq2X9G

物理ボリューム /dev/sdb1 を作成します。

# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

物理ボリューム /dev/sdb1 が新たに作成されています。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               0
  Allocated PE          2559
  PV UUID               aclPKe-o53p-4KY6-6krH-y0Zt-x3cx-29DBeD

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               VolGroup
  PV Size               9.50 GiB / not usable 4.46 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              2432
  Free PE               0
  Allocated PE          2432
  PV UUID               FLfw0S-pXDp-USBW-yeei-CDM9-S9aM-Bq2X9G

  "/dev/sdb1" is a new physical volume of "19.99 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               19.99 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               SG1uFf-p91O-9DLc-5Eem-OhZE-LI5m-AHc9ic

ボリュームグループの拡張設定

ボリュームグループの設定を確認します。
VG Size が 19.50 GiB になっています。

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.50 GiB
  PE Size               4.00 MiB
  Total PE              4991
  Alloc PE / Size       4991 / 19.50 GiB
  Free  PE / Size       0 / 0
  VG UUID               OXrCrz-4s5B-WpyZ-fg0u-9DH5-twER-rrgddC

ボリュームグループ VolGroup を拡張します。

# vgextend VolGroup /dev/sdb1
  Volume group "VolGroup" successfully extended

ボリュームグループの VG Size が拡張されているのを確認します。
VG Size が 39.49 GiB になっています。

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               39.49 GiB
  PE Size               4.00 MiB
  Total PE              10109
  Alloc PE / Size       4991 / 19.50 GiB
  Free  PE / Size       5118 / 19.99 GiB
  VG UUID               OXrCrz-4s5B-WpyZ-fg0u-9DH5-twER-rrgddC

論理ボリュームの拡張設定

論理ボリュームの設定を確認します。
lv_root の LV Size は 18.50 GiB になっています。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                gvqSgz-dJ36-7CHA-fYOI-fBDa-qneb-7dl8wU
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:51 +0900
  LV Status              available
  # open                 1
  LV Size                18.50 GiB
  Current LE             4735
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_swap
  LV Name                lv_swap
  VG Name                VolGroup
  LV UUID                p3AR0l-LHwH-JFu5-nvIj-NRSy-usGO-XJg7Xz
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:54 +0900
  LV Status              available
  # open                 1
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

拡張した物理ボリュームの未割り当て領域を、
論理ボリューム /dev/VolGroup/lv_root に全て割り当てます。

# lvextend -l +100%FREE /dev/VolGroup/lv_root
  Size of logical volume VolGroup/lv_root changed from 18.50 GiB (4735 extents) to 38.49 GiB (9853 extents).
  Logical volume lv_root successfully resized

論理ボリュームの LV Size が 38.49 GiB に増えています。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                gvqSgz-dJ36-7CHA-fYOI-fBDa-qneb-7dl8wU
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:51 +0900
  LV Status              available
  # open                 1
  LV Size                38.49 GiB
  Current LE             9853
  Segments               4
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_swap
  LV Name                lv_swap
  VG Name                VolGroup
  LV UUID                p3AR0l-LHwH-JFu5-nvIj-NRSy-usGO-XJg7Xz
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-11-01 23:29:54 +0900
  LV Status              available
  # open                 1
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

ファイルシステムの拡張

ファイルシステムext4 です。 resize2fs コマンドでファイルシステムを拡張します。

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

拡張できました。

/dev/mapper/VolGroup-lv_root の Size が 38G に増えているのを確認します。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       38G  623M   36G   2% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             477M   30M  422M   7% /boot

以下を参考にさせていただきました!ありがとうございました!

LVMで新たにディスクを追加して既存のLVを拡張する - Qiita