SATAのSSDからLVMのVGをまるまるコピーする
作業は、SystemRescueCDで起動したデスクトップ機で行った。
なお、引っ越し先は /dev/sda (メーカー表記1TB)で、引っ越し元は /dev/sde (メーカー表記128GB)。
sde は、マザーボードのSATA端子に接続すると認識しないが、外付けUSBケースに入れると中身が見える。電気的に壊れかけているのか?
- 引越し先SSD /dev/sda に、空き領域を作る。未使用領域では足りない。大きなLVMのPV sda2 があるので、縮める。
現在、865GB使っているところ、150GBほしいので、
pvresize --setphysicalvolumesize 715G /dev/sda2
なお、VGはこのPVしか含んでおらず、もともと FreeなExtent が600GB以上あることがわかっていた。(pvs と vgs の結果から) - sda2 のサイズを縮める
parted を使用した。サイズの表記が lsblk と違う (係数1000と1024の違いか)ため、1度縮めすぎるものの、試行錯誤で完了。 - 引っ越し元のSSDのパーティション構成を確認する。lsblkとfdisk -lより。
デバイス名 サイズ 摘要 sde 119.2G SSD全体 sde1 200M /boot sde2 1K 拡張パーティション sde3 1.5G / sde5 92.8G LVM sde6 17.2G swap
GPTでなく、DOS disklabel形式、旧式のパーティションテーブルを使っている。
中身をコピーする必要があるのは、1 と3 と 5 と 6。6 は、Linuxでハイバネーションしたときの記録用になっている。
- sda に空いた領域に新しいパーティションをする。上の 4つ用。/ と /boot と swap と PV。fdisk を使用する際に、LVMがアクティブだと警告が出るので、念の為落としておく。
vgchange -an VG名 - fdiskでパーティションを作成する。タイプ設定で swap というエイリアスが使えるのは知らなかった。
- 中身をコピーする。/ と /bootは普通のパーティションをコピーするのと同様、mkfs.ext4 -m 1 でフォーマットし、マウントして cp -ax を使う。
- swapパーティションのコピーは partclone.dd を使う。あとで UUIDの変更が必要になるかもしれない。
- 新しいLVMパーティションを新しいPVとする
pvcreate /dev/sda10 - このPVを元のVGに追加する
vgextend 元のVG名 /dev/sda10 - 外したい PV (sde5) の中身を追い出す。
pvmove /dev/sde5
今はVGの中に2つしかPVがないので、さきほど追加した sda10に出ていく - 中身を追い出したPVを外す
vgreduce /dev/sde5
pvremove /dev/sde5
SSDの中身はコピーできたはずなので、ブートローダを使えるようにする。
手でやるなら、grub-install, update-grub が必要だと思う。
ただ、ひとつまづきしたので、結局 Debian インストールメディアの レスキューモードに頼った。グラフィカルな方。
進んでいくと、ルートパーティションをマウントして、GRUBを再インストールできるので、とても便利。
- MBRからGPTに変わったことで、従来の Embedded install ができなくなったとエラーが出た。
- ならばと、grub を EFIに合わせてインストールしようとしたのだが、対応するパッケージが入っていなかった。
もう一点、気づくのに時間がかかったミスがある。
- なおかつ、System Rescue CD を UEFIモードで起動していなかった。
- 実はDebian インストーラー レスキューモードでも同じミスをしていた。



最近のコメント