目的

CentOS6の起動ディスクのLVMを縮小して、現在より小容量のSSDに交換する。
具体的には250GB HDDを120GB SSDに交換する。 このHDDはOS起動にしか使っていない。
/homeもあるが、他のディスクをマウントしているのでスカスカ状態である。 ほかのシステムはあるが、/は50GBあれば余裕な状態。

絵でイメージするとこんな感じ。

上が元のHDD

partition.jpg

下が新しいSSD

/homeはもっと小さくでもよく、その分/を拡張することもできる。
しかし、現状で/も余裕で足りているので、/homeを削って新SSDの120GBに収まるようにすることを目的とした。

まずは実機での作業

シングルユーザーモードで起動して作業することを推奨。
sshでリモート作業する場合は一般ユーザで繋ぐとできない。
rootでsshできる環境ならrootでログインして作業を行う。

現在のHDD

sda1	    512,000KB	/boot
sda2	243,685,376KB	LVM (/, /home, swap)

/bootはそのまま512MiB
/はそのまま50.00GiB
/homeは50GiBに縮小したい

/homeをumountする

umount /home

/homeにマウントしていたLVのファイルシステムサイズを縮小する

vg_godzilla-lvは、host名がgodzilaだから。

e2fsck -f /dev/mapper/vg_godzilla-lv_home
resize2fs /dev/mapper/vg_godzilla-lv_home 50G

/homeにマウントしていたLVの論理ボリュームサイズを縮小する

lvreduce -L 50G /dev/mapper/vg_godzilla-lv_home

処理後の論理ボリュームサイズを確認

lvdisplay	/dev/mapper/vg_godzilla-lv_home

物理ボリュームサイズを確認

pvscan

論理ボリュームサイズを確認

lvscan

サイズ縮小後の物理ボリュームと論理ボリュームの関係

|/		|/home	|空き				|swap	|

このままでは末尾にswapが作成されているので切りなおせない。
swapを/homeの直後に配置するように設定しなおし、空きが後ろにまとまるようにする必要がある。

|/		|/home	|swap	|空き				|

こんな配置関係に。

swapを削除して作り直して、空きが後ろになるようにする

swapを止めて、swap用LVを削除して、swap用LVを作り直して、swap用にフォーマットして、swapを有効にする。

swapoff /dev/vg_godzilla/lv_swap
lvremove /dev/vg_godzilla/lv_swap
lvcreate -L 4G lv_swap vg_godzilla
mkswap /dev/vg_godzilla/lv_swap
swapon /dev/vg_godzilla/lv_swap

物理ボリュームのサイズを確認

pvscan

物理ボリュームをリサイズ

pvresize -- setphysicalvolumesize 110G /dev/sda2

/が50GB、/homeが50GB、swapが4GBなのでトータル104GB
少し多めにして110GBとした。(試行錯誤して空き0まで詰めても良い)

物理ボリュームがリサイズできたか確認

pvscan

ここから、Live CDで起動して作業を行うか、別PCに接続して作業を行う。

私は別マシンに繋ぎなおして作業を行った。
Windows機のVMware上に構築したCentOS7にHDDをSATA-USB変換で接続
 →/dev/sdcに接続された

パーティション状態の確認

fdisk /dev/sdc

コマンド:p

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdc1   *        2048     1026047      512000   83  Linux
/dev/sdc2         1026048   488396799   243685376   8e  Linux LVM

パーティションを削除する

ここまでの処理で、実データはパーティションの先頭に寄せ集められている。
パーティションを一度削除して、先頭を変えずに後ろを縮める処理をする。
間違えるとデータを飛ばすので注意。

コマンド:d
パーティション番号:2

パーティションを作成する

コマンド:n
Partition Type:p
パーティション番号:2
最初セクター:(デフォルトでOKなのを確認してEnter)
Last Sector:+111G(目標サイズより1GB多くしておいた)

容量を決めるときは十分な余裕をもって切ると安全です。
SSDは120GB、パーティションは512MBと110MBをターゲットにした。

つまり、指定容量はPVサイズより大きくする。
このとき、GBとGiBの違いに注意。1000倍と1024倍の違い。

パーティションの種類を8eに変更する

コマンド:t
パーティション番号:2
Hex code:8e

パーティションを確認

コマンド:p

Disk /dev/sdc: 250.1 GB, 250059350016 bytes, 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: 0x0000d3ae
	
デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdc1   *        2048     1026047      512000   83  Linux
/dev/sdc2         1026048   233809919   116391936   8e  Linux LVM

パーティション情報を書き込む

コマンド:w

/dev/sddにコピーする

dd if=/dev/sdc of=/dev/sdd bs=512 count=233809920
233809920+0 レコード入力
233809920+0 レコード出力
119710679040 バイト (120 GB) コピーされました、 7798.68 秒、 15.4 MB/秒

最小ブロックサイズ単位(512バイト)でコピーすると時間がかかる。
bs=1M、count=[233,809,920÷( (1,024×1,024) ÷512)]でやると早いと思う。

コピー先のSSDをマシンに戻して起動を確認


添付ファイル: filepartition.jpg 213件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-27 (月) 23:39:35