LinuxでLVMのデータを抜き出す方法
keyword: Linux,LVM,HDD,抜き出し
最近久しぶりにLinux(CentOS)をインストールする機会がありまして、いつの間にかLinuxにもLVM(論理ボリュームマネージャ)が導入されていることを知りました。LVMを使うとソフトウェアRAIDが組めたりパーティションのサイズを変えられたりできるので便利といえば便利です。が、最近ちょっとした事件がありました。オペミスでOSが死亡してしまい、データだけでも救出しようとしたときの話しです。旧来の方法であれば、別HDDにLinuxを入れて、OSが死亡したHDDのデータ用パーティションをmountすれば簡単にデータが抽出できたのですが、LVMだとちょっと面倒くさいです。そこで今回はLinuxでLVMのデータを抜き出す方法をまとめてみました。(今回は多分一部ケアレスミスが含まれていると思います。その場合ご指摘いただけたら幸いです)
【LVMについて】
これからやろうとする作業がちんぷんかんぷんにならないためにも、まずはLVMが何かを知っておいたほうがよいです。とは言えここをご覧になっている方の多くは緊急事態なときでしょうから簡単に触れておきます。
まずLVMには3つの構成要素、PV(PhysicalVolume),VG(Volume Group),LV(Logical Volume)があるのを押さえましょう。意味は読んで字のごとくです。scanしてみるとこんな感じです。
# pvscan
PV /dev/sda2 VG VolGroup00 lvm2 [279.34 GB / 32.00 MB free]
Total: 1 [279.34 GB] / in use: 1 [279.34 GB] / in no VG: 0 [0 ]
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
# lvscan
ACTIVE '/dev/VolGroup00/LogVol00' [277.38 GB] inherit
ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit
dfを実行してみるとこんな感じです。
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00 286285288 21927512 249815340 9% /
/dev/sda1 101086 19070 76797 20% /boot
none 512528 0 512528 0% /dev/shm
LVMは「/dev/mapper/VolGroup00-LogVol00」のように見えます。すなわちLVMでは、PV作って、VG作って、LVまで作らないとmountできないというわけですね。
【同じVG名がついてしまっている場合】
さて、OS用HDDとデータ用HDDをそれぞれ取り付けてLinux起動し、vgscanをしてみると本来であれば両HDDのVG情報が認識されてくるんですが、もし「VolGroup00」1つしか認識されてこないとしたら、それは両HDDでそれぞれ同じボリュームグループ名が付いてしまっている状態です。OSインストール時に何も考えずにインストールしてしまっている多くの人は大抵ここで問題となります。そのような場合はどちらかのボリュームグループ名を変更してあげる必要があります。
この場合よく行われるのはFedoraCoreのレスキューCDを使う方法です。データ用HDDだけを取り付けレスキューCDを立ち上げます。そして
# vgchange -an VolGroup00" <- VGを無効化する
# vgrename VolGroup00 VolNewGroup00 <- 名前を変更する
# vgchange -ay VolNewGroup00" <- VGを有効化する
とします。
【LVMのマウント】
OS用HDDとデータ用HDDをそれぞれ取り付けてLinux起動し、vgscanをしてみてうまくVG情報が見えれば成功です。そうしたら
# vgchange -ay VolNewGroup00" <- VGを有効化する
# mkdir /mnt/data
# mount /dev/VolNewGroup00/LogVol00 /mnt/data
# ls /mnt/data
でデータが見えたら大成功です。LVM、便利だけど面倒ですね。
Recent Comments