HDDの引越し

Fedora Core 4 テスト機のハードディスクが最近カッコンカッコンいってて今にも逝きそうなので、新しいHDDにお引越しすることにした。一からインストールしてもよかったんだけど、ちょこちょこといじって使いやすくなっていたから、古いHDDからOSもろとも新しいHDDにコピーする方法をとった。

古いHDDはMaxtor DiamondMax16 4R080L0 (80GB)で新しいHDDはWestern Digital WD Caviar WD2500JB (250GB)。容量は違うけど、古いHDDのパーティション情報もろとも新しいHDDに移してしまおう。

古いHDDは100MBのパーティションと残り(78GB)のパーティションで区切られているから、単純にコピーすると、100MB、78GB、残り(160GBくらい?)のパーティションができるはず。でも、後でLVMパーティションの拡張を行えば空いてしまっている160GBくらいのパーティションも78GBパーティションに組み込めるはずだ。

●新しいHDDを接続
まずは新しいHDDを接続する。Primary-Masterに古いHDD、Secondary-Masterに新しいHDD、Secondary-SlaveにDVDドライブを接続したから、古いHDD=hda、新しいHDD=hdcになる。

●HDDの内容をまるまるコピー
次にKNOPPIXで起動する。コピー元のHDDがライブ(起動中)のときにコピーしたくないからね。で、別にKNOPPIXじゃなきゃいけないわけじゃないけど、GUIも使えて色々と楽だからKNOPPIXにした。そして、折角だから現時点で最新のKNOPPIX 4.0.2を使ってみた。

とりあえずqtpartedでドライブを確認する。ドライブの認識を間違えると新しいHDDの内容を古いHDDにコピーしかねない(=まっさらなHDD2台のできあがり)からね。

HDDの内容をまるまるコピーするのにddコマンド使う。こんな感じのものを使って、ハードウェアで2つのHDDの内容をコピーするほうが簡単だと思うけど、今回の方法はなんといってもタダなのが取り得。ARAID99-2000でもできるけど、本番運用中だから拝借することもいかないし。

あ、あと、Acronis Partition Expert Personal を使ってみたけど、やはりLVMパーティションがあるためか、パーティションのコピーができなかった。実はコピーが出来ないパーティションは/bootのext3パーティションだったり、/のLinux LVMパーティションはコピーできそうだったりして。。。 とりあえず危なそうだったからAcronisは断念。Windows系のドライブコピーツールはことごとくLVMに対応していないねぇ~。

さて、今回の接続の場合は、コンソールにて、dd if=/dev/hda of=/dev/hdc conv=sync,noerror bs=65536と実行した。オプションは、ifはコピー元、ofはコピー先、conv=sync,noerrorはddコマンド実行中にエラーが出た場合でもスキップして処理するおまじないらしい。その後のbs=65536はスキップする幅らしい。実はあまり良く分かってない
(−_−;;)

この処理、ものすごく長い時間がかかる。実は1日弱かかった。お金とゆとりのある人はやはりARAID99-2000などを使ってハードウェア的にコピーしたほうがいいと思う。

これでコピーが終了したら、今度は78GBのパーティションを、160GBもの空きパーティションをつぶして拡張してみよう。

●事前準備
さて、一応念のために既存環境の最低限の設定をメモっておこう。普通にFC4を起動して、以下の情報をメモっておく。

[root@hoge ~]# fdisk -l

Disk /dev/hda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        9964    79931407+  8e  Linux LVM
[root@hoge ~]# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       72G   11G   58G  17% /
/dev/hda1              99M   32M   62M  34% /boot
/dev/shm              490M     0  490M   0% /dev/shm

●領域拡張
まずはfdiskでパーティションを拡張しないといけないので、再度KNOPPIXで起動する。ここではroot権限のコンソールで作業する。KNOPPIXでルート権限を得るには$ sudo -sとする必要がある。ちなみに、KNOPPIXではrootにパスワードは設定されていない。

この場合、hdc2パーティションを拡張するわけだから、fdiskでhdc2を一旦削除(fdiskにて、d,2)して、新たにhdc2パーティションを最大容量で確保(n,p,2)すればよい。もちろん、ファイルシステムをLVMにする(t,2,8e)必要もある。設定をディスクに書き込めば(w)終了。

●PV拡張
今度はPVを拡張する。ここで必要となってくるのがFC4 Rescue CDで、KNOPPIXではLVM系のコマンドが使えない。ちなみに、FC4 Rescue CDはISOファイルをダウンロードしてCDに焼くだけ。くれぐれもISOファイルをそのまま焼かないように。分からない人はここで調べてね。ちなみに、ISOファイルは本家にもあるけど、ミラーのほうが圧倒的に早くダウンロードできるから、ミラーからDLすることをお勧めする。

Rescue CDで起動(ネットワークなし、続行)して、sh-3.00# pvresizeしてみたけど、pvresizeはFC4でも実装されていない。やはり地道にコツコツと設定していくしか方法はなさそう。

気を取り直して、VolumeGroup情報を取り出そう。sh-3.00# vgcfgbackup -f vgbackupなんかエラーが出るけど、問題なくvgbackupは作成されている。次にdev_sizeを確認する。sh-3.00# pvs -o +dev_size --units s
PV VG Fmt Attr PSize PFree DevSize
/dev/hda2 VolGroup00 lvm2 a- 159842304S 65536S 488183220S
dev_sizeは488183220。偶然にも前回と同じ。

pe_start(=384), extent_size(=65536)はvgbackupに書いてある。sh-3.00# vi vgbackupで値を確認する。dev_sizeは前述の488183220を使う。
pe_countを計算すると(前回と同じだけど)、pe_count ≦ (dev_size - pe_start) / extent_size
↓(この環境では・・・)
pe_count ≦ (488183220 - 384) / 65536
≦ 7449.07891845703125

なので、pe_count=7449としよう。

そのままviエディタでvgbackupを修正しよう。pe_count = 3574 # 111.688 Gigabytes(ここの値は当然環境によって違う)

pe_count = 7449 # 238.371 Gigabytes

注意しないといけないのは、英語キーボードの設定になっているから、+ はShift + ^
: はShift + ;
_ はShift + -
となっている。

あとは、修正したvgbackupを書き戻しておしまい。sh-3.00# vgcfgrestore -f vgbackup VolGroup00

●LV拡張
そして次にLVの拡張。lvdisplayでLVを確認しよう。とりあえず確保できないと思われる大きな容量を確保する設定をしてみる。sh-3.00# lvextend -L 250GB VolGroup00/LogVol00
Insufficient allocatable logical extents (7387) ・・・
とでるので、最大エクステントは7387だと分かったから、今度はエクステントで指定して設定してみる。sh-3.00# lvextend -l 7387 VolGroup00/LogVol00これでちゃんと最大容量までLVは拡張されるはず。

●ファイルシステムの拡張
最後にresize2fsを使ってファイルシステムの拡張を行う。そのままの状態ではresize2fsは使えないから、マウントを解除する。sh-3.00# umount /mnt/sysimage/boot
sh-3.00# umount /mnt/sysimage/sys
sh-3.00# umount /mnt/sysimage/proc
sh-3.00# umount /mnt/sysimage/dev
sh-3.00# umount /mnt/sysimage

いきなりresize2fsを行っても、どうせe2fsckせよと言われるだけだから、怒られる前にe2fsckしておく。sh-3.00# e2fsck -f /dev/VolGroup00/LogVol00そして、sh-3.00# resize2fs /dev/VolGroup00/LogVol00うまく行ったらこれで終了!
リブートしてみよう。

うまくいけば、古いHDDの内容をコピーした直後の新しいHDDのこの状態

のものが、こんなふうに

すべての領域を使い切っている状態になるはずである。

そして今回も大成功!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>