LVMで使っていたドライブからデータを救出する
起動しなくなったCentOSのドライブを、同じマシンでCentOS再インストールした環境に接続してみる。
USBコンバータで接続したら、パーティションは見える。
# fdisk -l /dev/sda Disk /dev/sda: 20.4 GB, 20496236544 bytes 255 heads, 63 sectors/track, 2491 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 2491 19904535 8e Linux LVM
データはLVMの配下のパーティションに入っているので、内容まではすぐには見えない。
見ているsda1は/bootだ。
# pvscan WARNING: Duplicate VG name VolGroup00: Existing NfXxQs-lPIp-v5lD-77PG-rlAS-ZBJx-rEw06o (created here) takes precedence over 3TAHdQ-Ay8B-daPR-yVCf-vKQM-55J6-S908aL PV /dev/sda2 VG VolGroup00 lvm2 [18.97 GB / 0 free] PV /dev/hda2 VG VolGroup00 lvm2 [465.66 GB / 0 free] Total: 2 [484.62 GB] / in use: 2 [484.62 GB] / in no VG: 0 [0 ]
VG nameが重複していると怒られた。
sda2だけ名前変更ってできるのかな?
vgrenameのmanなんかを見ても、デバイス名渡しとかはできなさそう。
指定はVG nameだけなので、重複しているともう手も足もでないか。
# vgscan Reading all physical volumes. This may take a while... WARNING: Duplicate VG name VolGroup00: Existing NfXxQs-lPIp-v5lD-77PG-rlAS-ZBJx-rEw06o (created here) takes precedence over 3TAHdQ-Ay8B-daPR-yVCf-vKQM-55J6-S908aL Found volume group "VolGroup00" using metadata type lvm2 Found volume group "VolGroup00" using metadata type lvm2 # lvscan WARNING: Duplicate VG name VolGroup00: Existing NfXxQs-lPIp-v5lD-77PG-rlAS-ZBJx-rEw06o (created here) takes precedence over 3TAHdQ-Ay8B-daPR-yVCf-vKQM-55J6-S908aL ACTIVE '/dev/VolGroup00/LogVol00' [465.16 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [512.00 MB] inherit
sdaのVGだけを変更したいが、このままオンザフライではできなさそう。
ぐぐったら、FedoraのレスキューCDでやるようにと書いてあった。
CentOSのCDでも同じだろうとテスト。
VIA C3なFTS-NASでは起動できない。
kernelロード後にリブートしてしまう。
kernelがi686なのに違いない... orz
そういうディストリビューションは嫌いだよ。
しょうがないので、再びマシンをバラして新しいドライブを外す。
サルベージHDDがUSBの場合は、インストーラーでは後でドライバを組み込んで認識させるのがめんどくさいので、自動認識するように最初から挿し込んでおく。
インストーラーCDで起動。
起動プロンプトにはlinux rescueと入力し、レスキューモードで起動。
言語選択は英語に。日本語で設定しても「ない」といわれてどうせ英語になってしまう。
キーボード選択はjp106に。これは日本語にしておかないとあとでやっかい。
もっとも、すでに手が覚えているので、わたしの場合は英語でも困らない。
"Setup Networking"はNo。
"Rescue"ではSkipを選ぶ。ここで他のを選ぶと、勝手にLVM領域をマウントされてしまい、アンマウントできなくなってしまうので、vgrenameができない。
小さいファイルだけなら、この状態で自動マウントさせてどこかにコピーすればいい。
プロンプト画面に落ちるので、そこからコマンド操作する。
VGの名前を確認して、名前変更、変更が反映されているのを確認。
# lvm vgscan Reading all physical volumes. This may take a while... Found volume group "VolGroup00" using metadata type lvm2 # lvm vgrename VolGroup00 VG01 /dev/hdc: open failed: Read-Only file sysytem Attempt to close device '/dev/hdc' which is not open Volume group "VolGroup00" successfully renamed to "VG01" # lvm vgscan Reading all physical volumes. This may take a while... Found volume group "VG01" using metadata type lvm2
変更されたのが確認できた。
exitすると、マシンが再起動されるので、そこで強制終了する。
新しいハードディスクを再接続してマシンを組み上げ、起動する。
古いハードディスクをUSBコンバータ経由で接続する。
# pvscan PV /dev/sda2 VG VG01 lvm2 [18.97 GB / 0 free] PV /dev/hda2 VG VolGroup00 lvm2 [465.66 GB / 0 free] Total: 2 [484.62 GB] / in use: 2 [484.62 GB] / in no VG: 0 [0 ] # vgscan Reading all physical volumes. This may take a while... Found volume group "VG01" using metadata type lvm2 Found volume group "VolGroup00" using metadata type lvm2 # lvscan inactive '/dev/VG01/LogVol00' [18.47 GB] inherit inactive '/dev/VG01/LogVol01' [512.00 MB] inherit ACTIVE '/dev/VolGroup00/LogVol00' [465.16 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [512.00 MB] inherit
ちゃんと見えている。
領域をアクティブにする。
# vgchange -ay VG01 2 logical volume(s) in volume group "VG01" now active # lvscan ACTIVE '/dev/VG01/LogVol00' [18.47 GB] inherit ACTIVE '/dev/VG01/LogVol01' [512.00 MB] inherit ACTIVE '/dev/VolGroup00/LogVol00' [465.16 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [512.00 MB] inherit
領域をマウント。目的のデータをコピー。
# mount /dev/VG01/LogVol00 /mnt/ # cp /mnt/root/Desktop/kernel_build.txt /root/Desktop/
このメモだけ助けたかったので、こんな大げさな話でなくてもよかったのだけど。
後始末。
# umount /mnt/ # vgchange -an VG01 0 logical volume(s) in volume group "VG01" now active # lvscan inactive '/dev/VG01/LogVol00' [18.47 GB] inherit inactive '/dev/VG01/LogVol01' [512.00 MB] inherit ACTIVE '/dev/VolGroup00/LogVol00' [465.16 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [512.00 MB] inherit
USBを抜いて作業完了。