あれのーと

らくがきちょうです。

/homeの移行

年末で、やっと時間ができたので、HDDの換装もかねて、
/homeを別パーティションに移行することにした。

用意したHDDは320GのWDのもの。元のHDDは160Gのやつ。2倍の容量だ。。。

さて、なんかのLiveCD(なんでもよい)で起動。
換装先のhddをusbドライブ(ここでは/dev/sdb)に入れて、dd。まるごと移す。

$sudo dd if=/dev/sda of=/dev/sdb bs=65536 conv=sync,noerror

全部移すのに2時間弱。終わったら、HDDを入れ替えて新HDDで起動。
当然ながら無事起動。当然ながら空き領域が残る。
/以下は81%。ほとんどが/home以下。なので、/homeを新パーティションに
移行しよう。

まずはfdisk

$ sudo fdisk /dev/sda

このディスクのシリンダ数は 38913 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): p

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x8f800100

デバイス Boot Start End Blocks Id System
/dev/sda1 1 6 48163+ de Dell ユーティリティ
/dev/sda2 * 7 7757 62259907+ 7 HPFS/NTFS
/dev/sda3 7758 14131 51199155 83 Linux
/dev/sda4 14132 38913 199061415 5 拡張領域
/dev/sda5 14132 14593 3710983+ 82 Linux swap / Solaris

コマンド (m でヘルプ): n
利用可能フリーセクタがありません

む、できない。確かにPrimaryは4つだが、、拡張領域を増やすだけなのに。。
ちょっと調べてcfdiskでいけるんちゃうってことで、

$ sudo LANG=C cfdisk /dev/sda

で/dev/sda6を増やすことができた。
その後、/dev/MAKEDEVではうまく/dev/sda6が認識できなかったので、
やむを得ずudevのお力をかります。再起動(別の方法があるんだろうな。。)。

再起動後、うまく認識。

デバイス Boot Start End Blocks Id System
/dev/sda1 1 6 48163+ de Dell ユーティリティ
/dev/sda2 * 7 7757 62259907+ 7 HPFS/NTFS
/dev/sda3 7758 14131 51199155 83 Linux
/dev/sda4 14132 38913 199061415 5 拡張領域
/dev/sda5 14132 14593 3710983+ 82 Linux swap / Solaris
/dev/sda6 14594 38913 195350368+ 83 Linux

で、mkfs.ext3。

$sudo mkfs.ext3 /dev/sda6

終わった。マウント。

$sudo mount /dev/sda6 /mnt

できてる。では、既存の/homeと同期。

$sudo rsync -av /home/ /mnt

待つ、ひたすら待つ。。。。
終わったら、recovery modeでrootにdropして起動。
起動したら、最初の/homeは移動。

$sudo mv /home /home.bak

終わったら、fstabの追加なのだが、その前に/dev/sda6のuuidを引っ張っておく。

$sudo vol_id --uuid /dev/sda6

で1行のuuidが出るので、この値を/etc/fstabにある/dev/sda6の(new-uuid)に入れる。

# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda3
UUID=(uuid) / ext3 errors=remount-ro 0 1
# /dev/sda1
UUID=(uuid) /media/sda1 vfat utf8,umask=007,gid=46 0 1
# /dev/sda2
UUID=(uuid) /media/sda2 ntfs defaults,umask=007,gid=46 0 1
# /dev/sda6
UUID=(new-uuid) /home ext3 defaults 0 2
# /dev/sda5
UUID=(uuid) none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
## usbfs is the USB group in fstab file:
none /proc/bus/usb usbfs devgid=125,devmode=664 0 0

ひとまず、/homeなのでdefaultでよいか。

再起動。/homeがマウントで来ていたら、ログイン時にいつも通りに入れるはず。
(ダメな時はパスワード入力後にエラーメッセージが出ます。)

で、問題がなければ、/home.bakは削除。
結果、こんな感じが、

$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 49G 37G 9.1G 81% /
varrun 1013M 228K 1013M 1% /var/run
varlock 1013M 0 1013M 0% /var/lock
udev 1013M 56K 1013M 1% /dev
devshm 1013M 24K 1013M 1% /dev/shm
lrm 1013M 39M 974M 4% /lib/modules/2.6.24-23-generic/volatile
/dev/sda1 47M 124K 47M 1% /media/sda1
/dev/sda2 60G 42G 18G 71% /media/sda2
gvfs-fuse-daemon 49G 37G 9.1G 81% /home/kazken/.gvfs

こういった感じになりました。/がすっきり。

$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 49G 4.7G 41G 11% /
varrun 1013M 228K 1013M 1% /var/run
varlock 1013M 0 1013M 0% /var/lock
udev 1013M 56K 1013M 1% /dev
devshm 1013M 24K 1013M 1% /dev/shm
lrm 1013M 39M 974M 4% /lib/modules/2.6.24-23-generic/volatile
/dev/sda1 47M 124K 47M 1% /media/sda1
/dev/sda2 60G 42G 18G 71% /media/sda2
/dev/sda6 185G 33G 143G 19% /home
gvfs-fuse-daemon 49G 4.7G 41G 11% /home/kazken/.gvfs