heyheytower

日々のメモです。誰かのお役に立てれば幸いです。

HDD150GB=>SSD32GB 引越し

先日の記事で、NFSで書き込み 60MB/s の SSD
使うことを断念したため、正直にブート領域に
利用することにしました。

小さい SSD 領域への引越しはWeb上の記事にあまり
なかったことに加え、SSD からのブートで一点悩んだ点が
ありましたので、同じ轍を誰かが踏まないよう記録します。

sdaがHDD
sdbがSSD
(この a,b,c というのは単にSATAつなぐとこで決まっている)

【現在の構成】
ubuntu10.04デスクトップ
160GB/3.5型/SATA1/7,200rpm(Express5800 RB 搭載HDD)
/dev/sda1 on / type ext4 (rw,,user_xattr)
/dev/sda5 on swap(だったかな…)
→全部ごっちゃの環境

【目的の構成】
32 GB/2.5型/SATA2(SP032GBSSDE20S25 (シリコンパワー)、2,400円)
/dev/sdb1 on / type ext4 (rw,noatime,discard,errors=remount-ro,user_xattr)
/dev/sda5 on /home type ext4 (rw,user_xattr)   => HDD の再利用
tmpfs on /tmp type tmpfs (rw,noatime,mode=1777) => メモリ上で展開
SSD 使いの人では当たり前の環境

今回 SSD 利用ということで、tmpをメモリ上に作るのと、
オプションつけてマウントするとこに注意。
またスワップ領域は作らない。*1 *2 *3

やることは

  1. HDD /dev/sda1 160 GB => 28 GB に領域縮小(SSD 32GB のため)
  2. HDD => SSD コピー(ddrescue)
  3. SSD からブートできるようにする。
  4. /home の HDD への引越し

HDD /dev/sda1 160GB => 28 GB に領域縮小

HDD /dev/sda1 160GB の状態で移行しようとした場合、
当然 32GB しかない SSD は容量が足りないとエラーを
吐き、失敗する。

なので/dev/sda1 を 28 GB に縮小する。

  1. SSDSATA で接続する。
  2. Ubuntu10.04ライブCDから起動する。(マウントしてるものはサイズを変えられないため)
  3. gparted で /dev/sda1 を 28GB に縮小し、適用する。

HDD => SSD コピー(ddrescue)

sudo cfdisk -z /dev/sdb

 「新規」で、「基本」の「ブート」可能で作成。

  • DDでコピーする。(DDを楽に実行できるddrescueを利用)

sudo apt-get install gddrescue
sudo ddrescue -v /dev/sda1 /dev/sdb1

 ※他サイトではよく下記のコマンドを見るが、今回は上でok。
  $ sudo ddrescue -v /dev/sda /dev/sdb
  約 30GB のコピーで20分程度待つ。

SSD からブートできるようにする。

  • /dev/sda1 をマウントし、/etc/fstab を変更する。

mkdir /mnt/hdd
mount /dev/sda1 /mnt/hdd
vi /mnt/hdd/etc/fstab

 ブート領域の記載で、下記のように変更し保存する。
 /dev/sda1 => /dev/sdb1

  • /dev/sdb1 の領域を最大にする。

 28 GB しか使わない設定なので
 gparted で /dev/sdb1 を目一杯およそ 30GB に拡大し、適用する。
 (使えない領域ができるともったいないですし)

  • 再起動し、ライブCDを取り外す。
  • /dev/sdb1 を / にマウントし、OS が立ち上がる。

 !注意!
 HDD の grub を利用し、/dev/sda1 から /etc/fstab を
 参照し、/dev/sdb1 から立ち上がっただけで、まだ設定は中途半端です。

  • SSD 単特でブートできるよう設定する。

 ここで自分は悩み、海水瓜さんに救われました。*4
 そう、grub のインストールだと気づきました。

sudo grub-install /dev/sdb
vi /mnt/hdd/etc/fstab

 ブート領域の記載で、下記のように変更し保存する。
 /dev/sda1 => /dev/sdb1
 オプションは
 rw,noatime,discard,errors=remount-ro,user_xattr

 また /tmp のために、下記一行を追加。
 tmpfs /tmp tmpfsdefaults,noatime,mode=1777 0 0

 これで SSD 単体で OS が起動するようになります。
 BIOSで優先ブートを SSD にしてください。

/home の引越し

 HDD を /home 領域として再利用するため、下記サイトを参照しました。
 また HDD はあらかじめフォーマットしておきました(gparted で ok)。
 http://www.ibm.com/developerworks/jp/linux/library/l-partplan/

所感

うまくいかない時、問題点をみつけるのが大変ですね。
grubなんて今まで名前しか知らなかった。)
ダメなときは粘らずすぐに検索に頼る
ということも大切で、粘りと検索のバランスですね。
このサイトで救われる人がいれば幸いです。


おまけ(Bフレッツ/マンションタイプのためのMTU設定)

NFSのチューニングの際に見つけたTipsです。
自分は下記設定で上下 3Mbps くらい早くなりました。

テストは下記コマンドを使用してください。

sudo ifconfig eth0 mtu 1454

上記設定が気に入り、再起動後も設定を反映させたい場合は
下記3行を実行してください。

sudo echo "#!/bin/sh" >> /etc/network/if-up.d/mtu
sudo echo "ifconfig eth0 mtu 1454" >> /etc/network/if-up.d/mtu
sudo chmod 744 /etc/network/if-up.d/mtu


以上。