前回の続きです。
- ディスクの追加
- 物理ボリュームの作成
- 物理ボリュームをボリュームグループへ追加
- 論理ボリュームの拡張
の順番で作業していきます。
1. 仮想サーバへの仮想ディスク追加。
サーバをシャットダウンし、Hyper-Vマネージャーから仮想ディスクを追加します。
ハードドライブを選択して追加を押します。
未使用の場所を選択し、新規を押します。
次へを押します。
容量可変を選択し、次へを押します。
わかりやすい名前を付け、次へを押します。
新しい空の仮想ハードディスクを作成するを選択し、希望する容量を入力(今回はただの練習なので4Gにしました)、次へを押します。
内容に問題がなければ完了とします。
設定画面を閉じた後、サーバを起動してsshでログインします。ログイン後、lsblkコマンドで確認してみます。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 127G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 125.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 1G 0 lvm [SWAP]
└─centos-home 253:2 0 74.8G 0 lvm /home
sdb 8:16 0 4G 0 disk
sr0 11:0 1 1024M 0 rom
$
sdbが追加されました。
2. 物理ボリュームの作成
lvmdiskscanというコマンドでLVMから参照できるHDDの情報を一覧表示することができるようなので実行してみます。
$ sudo /sbin/lvmdiskscan
/dev/sda1 [ 200.00 MiB]
/dev/sda2 [ 1.00 GiB]
/dev/sda3 [ 125.80 GiB] LVM physical volume
/dev/sdb [ 4.00 GiB]
1 disk
2 partitions
0 LVM physical volume whole disks
1 LVM physical volume
$
/dev/sda3がLVM physical volumeになっていて、/dev/sdbが存在します。/dev/sdbをpvcreateコマンドで物理ボリュームにしてみます。
$ sudo /sbin/pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
$ sudo /sbin/lvmdiskscan
/dev/sda1 [ 200.00 MiB]
/dev/sda2 [ 1.00 GiB]
/dev/sda3 [ 125.80 GiB] LVM physical volume
/dev/sdb [ 4.00 GiB] LVM physical volume
0 disks
2 partitions
1 LVM physical volume whole disk
1 LVM physical volume
$
disksが減り、LVM physical volume whole diskが1増えました。/dev/sdbがディスクからLVM physical volumeに変わったようです。
pvdisplayも観てみます。
$ sudo /sbin/pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name centos
PV Size 125.80 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 32205
Free PE 1
Allocated PE 32204
PV UUID F0ItPv-jpOz-A6o7-LDbQ-f8Zv-Wcv2-kTnyaG
"/dev/sdb" is a new physical volume of "4.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 4.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 6nQ880-Zidy-gUEb-atXL-xkgI-8peq-splD6H
$
/dev/sdbがphysical volumeになっていますがまだAllocatableになってません。また、VG Nameも空になっています。
3. 物理ボリュームをボリュームグループへ追加
既存のボリュームグループに新しく作成した物理ボリュームを追加します。まずは、ボリュームグループを確認します。-v(verbose)オプションをつけると詳細情報が出てくるようなので-vをつけて実行します。
$ sudo /sbin/vgdisplay -v
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 125.80 GiB
PE Size 4.00 MiB
Total PE 32205
Alloc PE / Size 32204 / <125.80 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID 510xRa-4lvI-s60z-E3ji-dRjf-F15Z-ZFcqnT
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID jCgO6B-3uus-3miN-hOmq-Ymaq-7y3S-qfQa9D
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 2
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID Qu2Nej-yB1c-hl8L-4mF1-q9Ok-wSvh-BuCWeh
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 1
LV Size <74.80 GiB
Current LE 19148
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID mW4aXn-KUik-P3IK-Ep58-ryvj-bRZ0-aebUO0
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:05 +0900
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Physical volumes ---
PV Name /dev/sda3
PV UUID F0ItPv-jpOz-A6o7-LDbQ-f8Zv-Wcv2-kTnyaG
PV Status allocatable
Total PE / Free PE 32205 / 1
$
physical volumesには/dev/sda3しかありません。vgextendコマンドで/dev/sdbをVG(centos)に追加します。
$ sudo /sbin/vgextend centos /dev/sdb
Volume group "centos" successfully extended
$ sudo /sbin/vgdisplay -v
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size <129.80 GiB
PE Size 4.00 MiB
Total PE 33228
Alloc PE / Size 32204 / <125.80 GiB
Free PE / Size 1024 / 4.00 GiB
VG UUID 510xRa-4lvI-s60z-E3ji-dRjf-F15Z-ZFcqnT
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID jCgO6B-3uus-3miN-hOmq-Ymaq-7y3S-qfQa9D
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 2
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID Qu2Nej-yB1c-hl8L-4mF1-q9Ok-wSvh-BuCWeh
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 1
LV Size <74.80 GiB
Current LE 19148
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID mW4aXn-KUik-P3IK-Ep58-ryvj-bRZ0-aebUO0
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:05 +0900
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Physical volumes ---
PV Name /dev/sda3
PV UUID F0ItPv-jpOz-A6o7-LDbQ-f8Zv-Wcv2-kTnyaG
PV Status allocatable
Total PE / Free PE 32205 / 1
PV Name /dev/sdb
PV UUID 6nQ880-Zidy-gUEb-atXL-xkgI-8peq-splD6H
PV Status allocatable
Total PE / Free PE 1023 / 1023
$
physical volumesに/dev/sdbが追加されました。pvdisplayも見てみます。
$ sudo /sbin/pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name centos
PV Size 125.80 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 32205
Free PE 1
Allocated PE 32204
PV UUID F0ItPv-jpOz-A6o7-LDbQ-f8Zv-Wcv2-kTnyaG
--- Physical volume ---
PV Name /dev/sdb
VG Name centos
PV Size 4.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1023
Free PE 1023
Allocated PE 0
PV UUID 6nQ880-Zidy-gUEb-atXL-xkgI-8peq-splD6H
$
/dev/sdbのVG NameがcentosになってAllocatableになりました。
4. 論理ボリュームの拡張
追加した4Gのハードディスクを/dev/centos/homeと/dev/centos/swapに半分ずつ割り当てます。現状のディスク容量を確認。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 200M 0 200M 0% /dev
tmpfs 212M 0 212M 0% /dev/shm
tmpfs 212M 4.4M 207M 3% /run
tmpfs 212M 0 212M 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 2.3G 48G 5% /
/dev/sda2 1014M 129M 886M 13% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home 75G 33M 75G 1% /home
tmpfs 43M 0 43M 0% /run/user/1000
$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 1544 -2
$
改めて、vgdisplayコマンドで空きを確認。
$ sudo /sbin/vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size <129.80 GiB
PE Size 4.00 MiB
Total PE 33228
Alloc PE / Size 32204 / <125.80 GiB
Free PE / Size 1024 / 4.00 GiB
VG UUID 510xRa-4lvI-s60z-E3ji-dRjf-F15Z-ZFcqnT
$
Free PE / SIZEが 4.00 GiBになっています。lvextendコマンドで空き容量の半分を/dev/centos/homeに割り当てます。
$ sudo /sbin/lvextend -l +50%FREE /dev/centos/home
Size of logical volume centos/home changed from <74.80 GiB (19148 extents) to <76.80 GiB (19660 extents).
Logical volume centos/home successfully resized.
$ sudo /sbin/lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID jCgO6B-3uus-3miN-hOmq-Ymaq-7y3S-qfQa9D
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 2
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID Qu2Nej-yB1c-hl8L-4mF1-q9Ok-wSvh-BuCWeh
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 1
LV Size <76.80 GiB
Current LE 19660
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID mW4aXn-KUik-P3IK-Ep58-ryvj-bRZ0-aebUO0
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:05 +0900
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 200M 0 200M 0% /dev
tmpfs 212M 0 212M 0% /dev/shm
tmpfs 212M 4.4M 207M 3% /run
tmpfs 212M 0 212M 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 2.3G 48G 5% /
/dev/sda2 1014M 129M 886M 13% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home 75G 33M 75G 1% /home
tmpfs 43M 0 43M 0% /run/user/1000
$
/dev/centos/homeのLV Sizeが74.80 GiBから76.80 GiBに増えていますが、ファイルシステムはまだ拡張されていないためdfでみたサイズは変わっていません。
dfコマンドに-Tオプションをつけてファイルシステムの形式を確認します。
$ df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 200M 0 200M 0% /dev
tmpfs tmpfs 212M 0 212M 0% /dev/shm
tmpfs tmpfs 212M 4.4M 207M 3% /run
tmpfs tmpfs 212M 0 212M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 2.3G 48G 5% /
/dev/sda2 xfs 1014M 129M 886M 13% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home xfs 75G 33M 75G 1% /home
tmpfs tmpfs 43M 0 43M 0% /run/user/1000
$
/dev/centos/home(/dev/mapper/centos-home)のタイプがxfsなので、xfs_growfsコマンドでファイルシステムを拡張します
$ sudo /sbin/xfs_growfs /dev/centos/home
meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=4901888 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=19607552, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=9574, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 19607552 to 20131840
$ df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 200M 0 200M 0% /dev
tmpfs tmpfs 212M 0 212M 0% /dev/shm
tmpfs tmpfs 212M 4.4M 207M 3% /run
tmpfs tmpfs 212M 0 212M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 2.3G 48G 5% /
/dev/sda2 xfs 1014M 129M 886M 13% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home xfs 77G 33M 77G 1% /home
tmpfs tmpfs 43M 0 43M 0% /run/user/1000
$
/dev/centos/home(/dev/mapper/centos-home)が75Gから77Gに増えました。続いてswap領域のサイズを変更します。あえて、swapoffにしないで割り当てを増やしてみます。lvextendコマンドで残りすべての容量をswapに割り当てます。
$ sudo /sbin/lvextend -l +100%FREE /dev/centos/swap
Size of logical volume centos/swap changed from 1.00 GiB (256 extents) to 3.00 GiB (768 extents).
Logical volume centos/swap successfully resized.
$ sudo /sbin/lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID jCgO6B-3uus-3miN-hOmq-Ymaq-7y3S-qfQa9D
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 2
LV Size 3.00 GiB
Current LE 768
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID Qu2Nej-yB1c-hl8L-4mF1-q9Ok-wSvh-BuCWeh
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:04 +0900
LV Status available
# open 1
LV Size <76.80 GiB
Current LE 19660
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID mW4aXn-KUik-P3IK-Ep58-ryvj-bRZ0-aebUO0
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-17 02:51:05 +0900
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
$
特にエラーになることもなく、/dev/centos/swapの容量を1Gから3Gに増やすことができました。vgdisplayで割り当てされてない容量を確認します。
$ sudo /sbin/vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size <129.80 GiB
PE Size 4.00 MiB
Total PE 33228
Alloc PE / Size 33228 / <129.80 GiB
Free PE / Size 0 / 0
VG UUID 510xRa-4lvI-s60z-E3ji-dRjf-F15Z-ZFcqnT
$
Free PE / Sizeが0になっています。すべて割り当てられました。swaponコマンドでswap領域のサイズを確認してみます。
$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 2824 -2
$
1Gのまま変わってません。swapoff && swaponしてみます。
$ sudo swapoff -a && swapon -a
swapon: /dev/mapper/centos-swap を open できません: 許可がありません
$ swapon -s
$ free -m
total used free shared buff/cache available
Mem: 422 275 22 25 124 109
Swap: 0 0 0
$
想定外のエラー。swapon出来ません。free等で確認するとswap領域のサイズがになってしまいました。再度swaponコマンドを打ってみます。
$ sudo swapon -a
$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 0 -2
$ free -m
total used free shared buff/cache available
Mem: 422 275 22 25 124 109
Swap: 1023 0 1023
$
swap領域は復活しましたがサイズは増えていません。xfs_growfs的作業が必要なのでしょか。
そちらの調査の前にswapon -aが失敗した原因を少し調べてみます。まずはもう一回swapoff -a && swapon -aを打ってみます。
$ sudo swapoff -a && swapon -a
swapon: /dev/mapper/centos-swap を open できません: 許可がありません
$
許可がありませんということは権限回りでしょうか。sudoで&&を使用していることが原因かを切り分けるためrootになって再度実行してみます。
$ sudo -i
# free -m
total used free shared buff/cache available
Mem: 422 277 19 25 124 107
Swap: 1023 0 1023
# swapoff -a && swapon -a
# free -m
total used free shared buff/cache available
Mem: 422 278 16 25 127 106
Swap: 1023 0 1023
# swapoff -a && swapon -a
# exit
ログアウト
$ sudo swapoff -a && swapon -a
swapon: /dev/mapper/centos-swap を open できません: 許可がありません
$
やはりsudoで実行したからのようです。sudoでコマンドを連結して実行する場合はsudoを2回いれればよいのでしょうか。
$ sudo swapoff -a && sudo swapon -a
$ free -m
total used free shared buff/cache available
Mem: 422 276 18 25 127 109
Swap: 1023 0 1023
$ sudo swapoff -a && sudo swapon -a
$ free -m
total used free shared buff/cache available
Mem: 422 276 18 25 127 108
Swap: 1023 0 1023
$
いけました。やはり&&のあともsudoがいるみたいです。ちょっと調べてみるとここに回答がありました。ちょっと考えてみればわかることかもしれませんが、sudo swapoff -a && swapon -aはsudo swapoff -aとswaponに別れて実行されてしまうからでした。whoamiのを使った例が分かりやすいので載せておきます。
$ sudo whoami && whoami
root
staring_lion # 自ユーザ名
$ sudo whoami && sudo whoami
root
root
$
また、上記ページには-cオプションを使ってコマンドを文字列で渡して実行する例が記載されています。こちらのほうがエレガントかもしれません。
$ sudo /bin/bash -c "whoami && whoami"
root
root
$
勉強になりました。あとはswapの領域拡張の問題を解決します。素直にググります。ここを参考に、swapoff, mkswap, swaponの手順を実行してみます。
$ sudo swapoff -a
$ sudo mkswap /dev/centos/swap
mkswap: /dev/centos/swap: warning: wiping old swap signature.
スワップ空間バージョン1を設定します、サイズ = 3145724 KiB
ラベルはありません, UUID=0faf720d-4c29-4d73-8e8a-8163fab93488
$ sudo swapon -a
$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 3145724 0 -2
$ free -h
total used free shared buff/cache available
Mem: 422M 288M 8.6M 25M 124M 96M
Swap: 3.0G 0B 3.0G
$
無事、swap領域も拡張されました