2009/02/18(水)UbuntuでHDD交換
早速X200sに取り付けです。X200sは初期は160GBのHDDでVistHomeがインストールされていましたが、購入直後に取り外して保管。余っていた250GBのHDDを取り付けてUbuntuをインストールして使っていました。まだ取り替えて2週間しか経っていませんので、容量的には余裕ありまくりで換装する必要性はないのですが、この250GBのHDDは別のPCに取り付ける予定の物だったので、そっちに戻す予定です。
というわけでHDDの交換をしてみることにしました。Ubuntuもインストールしただけの状態で、カスタマイズなどほとんどしていないので再インストールする方が間違いなく早いのですが、Ubuntuでのデータ移行は初めてなのでチャレンジということでやってみることにします。
UNUX系OSなのでddでコピーすればいいかな、とも思いましたが、google先生で適当に下調べをしました。注意事項は以下の3点でしょうか?
- ddrescueというツールがある
- デバイスの管理はUUID
- 起動してるHDDの操作は×、LiveCDなどで起動して操作
インストール済みUbuntuのクローンを新しいハードディスクに作成する
http://www.itmedia.co.jp/enterprise/articles/0811/20/news019.html
X200sはCDドライブ搭載ではない&USB接続のドライブも持っていないので、USBメモリにインストールしたUbuntuで起動して操作してみることにしました。いくつか入ってないものがあるのでまずはそれらのインストールから。ちなみにGPartedはLiveCDだと入っているそうです。
$ sudo apt-get install gparted ddrescue
X200s本体内には旧250GBのHDD、USB接続で新500GBのHDDを接続した状態で、USBメモリからブートします。新500GBのHDDはSATA→USB接続にする変換するケーブルを使っています。fdiskで確認すると以下のようになりました。sdaが本体内HDD、sdbがUSBメモリ、sdcが外付けしたHDDです。
$ sudo fdisk -l Disk /dev/sda: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes Disk identifier: 0x0002b94a デバイス Boot Start End Blocks Id System /dev/sda1 * 1 29164 234259798+ 83 Linux /dev/sda2 29165 30401 9936202+ 5 拡張領域 /dev/sda5 29165 30401 9936171 82 Linux swap / Solaris Disk /dev/sdb: 8050 MB, 8050966528 bytes 255 heads, 63 sectors/track, 978 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes Disk identifier: 0x0000a113 デバイス Boot Start End Blocks Id System /dev/sdb1 * 1 978 7855753+ 83 Linux Disk /dev/sdc: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 ディスク /dev/sdc は正常な領域テーブルを含んでいません
ddではなくddrescueを使ってコピーしてみることにします。ちなみにddresucueだとブロックサイズの調整もautoでやってくれるらしいです。コマンドはdd_rescueなので注意。時間がかかるそうなので、お昼寝して起きたら終わってました。
$ sudo dd_rescue -v /dev/sda /dev/sdc
1回電源を落として、本体内旧HDDと外付けにしていた新HDDを交換して起動確認。UUIDとか変更いらないのかしら、と思いましたが、とりあえずは起動したので後回しにします。次に容量の大きいHDDに移行したので、GPartedを使ってパーティションサイズの変更です。メインのsda1を増やします。手順が結構面倒で、以下の順で操作しました。
- sda5がswapなので後ろに動かしたいところだがsda2の中にあるので、sda2を最大
- sda5を後ろに移動する
- sda2を最小にする
- sda1を最大にする
Ubuntu Tips/その他/ギビバイトとメビバイト
https://wiki.ubuntulinux.jp/UbuntuTips/Others/GibibyteMebibyte
もう1度再起動しましたが、問題なく起動するようです。まったくトラブルなくきましたが、UUIDの変更とかまったくしていないのに大丈夫なの?と気になってちょっと検索。grubのmenu.lstとfstabをチェックすべし、というのがあったので見てみることにします。/boot/grub/menu.lstの中身を見るとUUIDが指定されています。UUIDは以下のコマンドで確認できるようです。
$ sudo vol_id /dev/sda1/dev/sda1のUUIDと、menu.lstのUUIDはまったく同じで問題なさそうです。これは勝手に変えてくれるのかな、とも思いましたがそのままfstabのチェックをすると、こちらも問題なさそうです。fstabにはswapの指定もあるので、そっちもチェックしてみることにします。
$ sudo vol_id /dev/sda5swapの方は一致しませんでした。これは古いままなのかな。
less /proc/swapsたしかにswapが動作していません。動作しなくても問題なさそうですが、一応fstabのswapのところをvol_idで出てきた数字に直してみたらきちんと動作しました。
他にも気づいていないだけで、問題があるかもしれませんが、少しずつチェックしていく予定です。久々にLinuxでデータ移行をしましたが、昔に比べるとGUI(GParted)で操作できる分だいぶ難易度は下がったと思いますが、同じUNIX系OSだとMacOSがめちゃくちゃ簡単なので、もう少しかな、とも思います。WindowsはTrueImage入れると楽に移行できるけど、有償パッケージだし値段もそこそこするので×