/dev/sdb
を拡張して5GBに拡張してみる。なお、LVMの領域はマウントした状態のままオンラインで拡張を行う。※今までのLVM関連記事はこちら。↓
手順 | 記事 |
---|---|
LVM領域作成 | 【LVM入門】LinuxのLVM領域を最短で作成する |
LVM領域削除 | 【LVM入門】LinuxのLVMで作成したディスクを削除する |
LVM領域拡張 | 【LVM入門】LinuxのLVMでディスク容量を拡張する←★本記事 |
LVM領域縮小 | 【LVM入門】LinuxのLVMでディスク容量を縮小する |
VG・LV名前変更 | 【LVM入門】LinuxのLVMで作成済みのVGやLVの名前を変更する |
環境
環境情報は以下の通り。下から順に削除していくイメージとなる。- OS : Red Hat Enterprise Linux 7.6
- PV : /dev/sdb1
- VG : vg_sdb1
- LV : lv_sdb1
- マウントポイント : /mnt
df
コマンドの状態を以下に記載しておく。/dev/mapper/vg_sdb1-lv_sdb1
となっている2GBの領域を拡張し4GBにする。[root@localhost ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/rhel-root 14G 1.4G 13G 11% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.9M 911M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/vg_sdb1-lv_sdb1 2.0G 33M 2.0G 2% /mnt
LVM容量拡張手順
1. 拡張前のディスク状態を確認
[root@localhost ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
Disk identifier: B383352C-EF95-49AC-AA28-A6A99BB2A11C
# Start End Size Type Name
1 2048 4192255 2G Linux LVM
[root@localhost ~]# ls -l /mnt/
合計 0
-rw-r--r--. 1 root root 0 2月 8 19:55 test.txt
2. ストレージやVMware上でディスクを拡張
ストレージやVMwareの仮想マシンの設定などで、ディスクの拡張を行う。今回はVMware Host Clientにて拡張作業を実施した。拡張しただけでは容量を認識しないので、ディスク容量は変わらず2GBのままとなる。
[root@localhost ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
Disk identifier: B383352C-EF95-49AC-AA28-A6A99BB2A11C
# Start End Size Type Name
1 2048 4192255 2G Linux LVM
3. 拡張後OSでリスキャンし、容量を認識させる
リスキャンコマンドはecho 1 > /sys/class/block/_device-name_/device/rescan
となる。_device-name_
は今回の場合はsdb
となる。[root@localhost ~]# echo 1 > /sys/class/block/sdb/device/rescan
リスキャンしてfdisk -l
で確認すると、「Disk label type」がgptではなくdosとなり表示がおかしくなるが、これは次の手順で修正する。[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos ←★gptではなくdosになっている
ディスク識別子: 0x00000000
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 4194303 2097151+ ee GPT
4. GPTテーブルの修復
リスキャンし、parted -l
コマンドで確認しようとすると、「あるべき GPT テーブルのバックアップがディスクの最後にありません」というエラーが表示される。そのまま修正することができるので「F」を入力して修正すること。[root@localhost ~]# parted -l
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 17.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 17.2GB 16.1GB primary lvm
エラー: あるべき GPT テーブルのバックアップがディスクの最後にありません。他の OS
がディスクはもっと小さいものだと思っているのかもしれません。バックアップを最後に持ってきて(古いバックアップを削除して)修復しますか?
修正/Fix/無視(I)/Ignore/取消(C)/Cancel? F ←★Fを入力
警告: /dev/sdb で利用可能な領域の一部が利用されていません。GPT を修正して全ての 領域を利用可能にするか(4194304
ブロック増えます)、このままで続行することができますが、どうしますか?
修正/Fix/無視(I)/Ignore? F ←★Fを入力
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 1049kB 2146MB 2145MB lvm
~(以下略)~
fdisk
コマンドも表示が正常に戻る。[root@localhost ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdb: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
Disk identifier: B383352C-EF95-49AC-AA28-A6A99BB2A11C
# Start End Size Type Name
1 2048 4192255 2G Linux LVM
5. パーティションの拡張
parted
コマンドでパーティションを拡張する。[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p ←★現在のパーティション情報を確認
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 1049kB 2146MB 2145MB lvm
(parted) p free ←★現在のパーティションの空き容量を確認
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
17.4kB 1049kB 1031kB 空き容量
1 1049kB 2146MB 2145MB lvm
2146MB 4295MB 2149MB 空き容量
(parted) resizepart ←★パーティション容量拡張
パーティション番号? 1
終了? [2146MB]? 100%
(parted) p free
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
17.4kB 1049kB 1031kB 空き容量
1 1049kB 4295MB 4294MB lvm
(parted) q ←★parted終了
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
なお、resize
コマンドは、RHEL 7.6に付属しているpartedコマンドのバージョン3.0では使えなくなったので注意。(parted) resize
エラー: The resize command has been removed in parted 3.0
6. PV容量拡張
pvresize
コマンドでPVの容量を拡張する。[root@localhost ~]# pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg_sdb1
PV Size <2.00 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 511
Free PE 0
Allocated PE 511
PV UUID pmrFQB-o1oh-VGLc-Aogy-tOoC-PYdz-qizm2I
[root@localhost ~]# pvresize /dev/sdb1
Physical volume "/dev/sdb1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@localhost ~]# pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg_sdb1
PV Size <4.00 GiB / not usable 1.98 MiB ←★容量が4.00GiBに増えている
Allocatable yes
PE Size 4.00 MiB
Total PE 1023
Free PE 512
Allocated PE 511
PV UUID pmrFQB-o1oh-VGLc-Aogy-tOoC-PYdz-qizm2I
7. VG確認
PVの容量が拡張されれば、自動的にVGの容量も増えるので、確認だけしておく。[root@localhost ~]# vgdisplay vg_sdb1
--- Volume group ---
VG Name vg_sdb1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <4.00 GiB ←★容量が4.00GiBに増えている
PE Size 4.00 MiB
Total PE 1023
Alloc PE / Size 511 / <2.00 GiB
Free PE / Size 512 / 2.00 GiB
VG UUID rV0GBn-DK2o-5STl-LJCX-y3yF-1kB0-eoqTP9
8. LV容量拡張
lvextend
コマンドで容量を拡張する。空き容量をすべて拡張するので**+100%FREE
を指定して拡張する(+を付けないと拡張されないので注意)**。[root@localhost ~]# lvdisplay /dev/vg_sdb1/lv_sdb1
--- Logical volume ---
LV Path /dev/vg_sdb1/lv_sdb1
LV Name lv_sdb1
VG Name vg_sdb1
LV UUID WBUK0w-La44-rff0-DLIY-QpWK-a72w-cfzOEF
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-02-08 19:53:50 +0900
LV Status available
# open 1
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
[root@localhost ~]# lvextend -l +100%FREE /dev/vg_sdb1/lv_sdb1
Size of logical volume vg_sdb1/lv_sdb1 changed from 2.00 GiB (512 extents) to <4.00 GiB (1023 extents).
Logical volume vg_sdb1/lv_sdb1 successfully resized.
[root@localhost ~]# lvdisplay /dev/vg_sdb1/lv_sdb1
--- Logical volume ---
LV Path /dev/vg_sdb1/lv_sdb1
LV Name lv_sdb1
VG Name vg_sdb1
LV UUID WBUK0w-La44-rff0-DLIY-QpWK-a72w-cfzOEF
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-02-08 19:53:50 +0900
LV Status available
# open 1
LV Size <4.00 GiB ←★容量が4.00GiBに増えている
Current LE 1023
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
9. ファイルシステム拡張
xfsの領域は、xfs_growfs
コマンドで拡張する。xfs_growfs
コマンドはファイルシステムをマウントした状態で実行すること。また、xfs_growfs
コマンドでは、デバイス名ではなくマウントポイントを指定すること。[root@localhost ~]# xfs_growfs /mnt
meta-data=/dev/mapper/vg_sdb1-lv_sdb1 isize=512 agcount=4, agsize=130816 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 523264 to 1047552
df
コマンドで確認すると、/mnt
領域の容量が4.0GBに拡張していることが確認できる。[root@localhost ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/rhel-root 14G 1.4G 13G 11% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.9M 911M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/vg_sdb1-lv_sdb1 4.0G 33M 4.0G 1% /mnt ←★容量が4.00GiBに増えている
ちなみに、xfs_growfs
を実行した際に、マウントポイントではなくデバイス名をした場合、「デバイス is not a mounted XFS filesystem」のエラーが出る場合がある (成功する場合もある)。
[root@localhost ~]# xfs_growfs /dev/mapper/rhel-root
xfs_growfs: /dev/mapper/rhel-root is not a mounted XFS filesystem
この場合は、デバイスではなくマウントポイントを指定して再実行してみよう。以下は「/」を拡張する際のコマンド実行例となる。
[root@localhost ~]# xfs_growfs /
meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=839424 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=3357696, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 3357696 to 14892032
なお、xfsの領域拡張はresize2fs
ではできないので注意。resize2fs
で実施しようとすると、「Bad magic number in super-block」というエラーで失敗する。[root@localhost ~]# resize2fs /dev/vg_sdb1/lv_sdb1
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/vg_sdb1/lv_sdb1
Couldn't find valid filesystem superblock.
以上で作業は完了となる。
0 件のコメント:
コメントを投稿