今回はHDDの切離しを想定してテストしました。
HDD追加はある程度順序立てて作業を行えばそれほどトラブルになることも少ないと思いますが、HDDの交換・切離しなどでパーティションの縮小作業となると一つ間違えばデータ損失の可能性が出てきます。
(実際、この作業でデータを削除してしまって泣きをみました;_;)
この記事も一つの作業例としての参考程度して下さい。実際にはデータ容量等で出来ない場合もあります。
くれぐれも自己責任でお願い致します。
今回は下記のようなLVM構成のテストマシンで/varを縮小してHDD(/dev/sdb)を完全に切離します。
取り敢えずinit 3でオンラインのまま作業をしてみます。
resize2fsはオンラインでの縮小はサポートしていない、/varのumountもできないのでOSをシングルモードで起動して作業を行います。
1 2 3 4 5 6 7 |
[root@host01 ~]# resize2fs /dev/vg_host01/lv_var 6G resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/vg_host01/lv_var is mounted on /var; on-line resizing required On-line shrinking from 4665344 to 2097152 not supported. [root@host01 ~]# umount /var umount /var: デバイスがビジーです。 (このデバイスがプロセスによって使われているのであれば、lsof(8)やfuser(1) を使って調査するのが有益かもしれません) |
- シングルモードで起動して/varのアンマウント
- ファイルシステムチェック
- ファイルシステム縮小
- 論理ボリューム(lv)の縮小
- 物理ボリュームグループ(gv)から物理ボリュームの切離し
- 物理ボリューム(pv)の切離し
- /varのサイズ調整
- /varのmount
シングルモードで起動して/varのアンマウントを行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sh-4.1# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_host01-lv_root 10079084 3365008 6202076 36% / tmpfs 502204 0 502204 0% /dev/shm /dev/sda1 495844 34568 435676 8% /boot /dev/mapper/vg_host01-lv_var 18369524 233136 17207136 2% /var sh-4.1# umount /var sh-4.1# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_host01-lv_root 10079084 3365008 6202076 36% / tmpfs 502204 0 502204 0% /dev/shm /dev/sda1 495844 34568 435676 8% /boot |
ファイルシステムをチェックします。
1 2 3 4 5 6 7 8 |
sh-4.1# e2fsck -f /dev/vg_host01/lv_var e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vg_host01/lv_var: 2729/1162304 files (0.9% non-contiguous), 131247/4665344 blocks |
/dev/vg_host01/lv_varのファイルシステムを6GBに縮小します。
この作業で/varが18GBから6GBに縮小されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sh-4.1# resize2fs /dev/vg_host01/lv_var 6G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg_host01/lv_var to 1572864 (4k) blocks. The filesystem on /dev/vg_host01/lv_var is now 1572864 blocks long. sh-4.1# mount /var sh-4.1# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_host01-lv_root 10079084 3365008 6202076 36% / tmpfs 502204 0 502204 0% /dev/shm /dev/sda1 495844 34568 435676 8% /boot /dev/mapper/vg_host01-lv_var 6193472 227192 5652996 4% /var sh-4.1# umount /var |
論理ボリューム/dev/vg_host01/lv_varを6GBに縮小します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sh-4.1# lvscan ACTIVE '/dev/vg_host01/lv_root' [9.77 GiB] inherit ACTIVE '/dev/vg_host01/lv_swap' [1.94 GiB] inherit ACTIVE '/dev/vg_host01/lv_var' [17.80 GiB] inherit sh-4.1# lvreduce -L 6G /dev/vg_host01/lv_var WARNING: Reducing active logical volume to 6.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv_var? [y/n]: y Reducing logical volume lv_var to 6.00 GiB Logical volume lv_var successfully resized sh-4.1# lvscan ACTIVE '/dev/vg_host01/lv_root' [9.77 GiB] inherit ACTIVE '/dev/vg_host01/lv_swap' [1.94 GiB] inherit ACTIVE '/dev/vg_host01/lv_var' [6.00 GiB] inherit |
物理ボリュームグループvg_host01から物理ボリューム/dev/sdb1の切離しを行います。
vg_host01のサイズが20GBに減少しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
sh-4.1# vgreduce -v vg_host01 /dev/sdb1 Finding volume group "vg_host01" Using physical volume(s) on command line Archiving volume group "vg_host01" metadata (seqno 7). Removing "/dev/sdb1" from volume group "vg_host01" Creating volume group backup "/etc/lvm/backup/vg_host01" (seqno 8). Removed "/dev/sdb1" from volume group "vg_host01" sh-4.1# vgdisplay --- Volume group --- VG Name vg_host01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 8 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 19.51 GiB PE Size 4.00 MiB Total PE 4994 Alloc PE / Size 4532 / 17.70 GiB Free PE / Size 462 / 1.80 GiB VG UUID xUbe4B-cUqK-IHph-6D7J-cAl1-BJzf-iMyaoD sh-4.1# pvscan PV /dev/sda2 VG vg_host01 lvm2 [19.51 GiB / 1.80 GiB free] PV /dev/sdb1 lvm2 [10.00 GiB] Total: 2 [29.50 GiB] / in use: 1 [19.51 GiB] / in no VG: 1 [10.00 GiB] |
物理ボリューム/dev/sdb1を切離します。これでHDDが取り外せます。
1 2 3 4 5 6 |
sh-4.1# pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped sh-4.1# pvscan PV /dev/sda2 VG vg_host01 lvm2 [19.51 GiB / 1.80 GiB free] Total: 1 [19.51 GiB] / in use: 1 [19.51 GiB] / in no VG: 0 [0 ] |
/varのサイズをHDDサイズより若干少なめに変更したので、微妙な空き領域ができています。
それをすべて/varに割り当てます。
1 2 3 4 5 6 |
sh-4.1# lvextend -l +100%FREE /dev/vg_host01/lv_var Extending logical volume lv_var to 7.80 GiB Logical volume lv_var successfully resized sh-4.1# resize2fs /dev/vg_host01/lv_var resize2fs 1.41.12 (17-May-2010) Please run 'e2fsck -f /dev/vg_host01/lv_var' first. |
resize2fsの前にe2fsckを実行しなさいと言われました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
sh-4.1# e2fsck -f /dev/vg_host01/lv_var e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vg_host01/lv_var: 2729/390144 files (0.9% non-contiguous), 81294/1572864 blocks sh-4.1# resize2fs /dev/vg_host01/lv_var resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg_host01/lv_var to 2045952 (4k) blocks. The filesystem on /dev/vg_host01/lv_var is now 2045952 blocks long. |
/varをマウントして確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sh-4.1# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_host01-lv_root 9.7G 3.3G 6.0G 36% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 485M 34M 426M 8% /boot sh-4.1# mount /var sh-4.1# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_host01-lv_root 9.7G 3.3G 6.0G 36% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 485M 34M 426M 8% /boot /dev/mapper/vg_host01-lv_var 7.7G 224M 7.1G 3% /var |
この後に電源OFFで2台目のHDD切り離して電源ONしてOSが起動してくれば大丈夫と思います。
ログインしてエラーが無いか確認すればOKですね。