読者です 読者をやめる 読者になる 読者になる

異国見聞私書録

異国から見たこと感じたこと気になったこと。そして時折テクノロジーのお話。

Linuxの/homeをSSDに移行しよう

 久々にシステム関連の話題。メインLinuxマシンのHDDをSSDに変えてみました。(以下はUbuntuベースのLinuxを基準に記載していきます。)

Partitioning/Home/Moving - Community Help Wiki

mv: cannot move `/home' to `/old_home': Device or resource busy - Ask Ubuntu

 今までもSSDをシステムディスクとして使用していたが、/homeのパーティションはHDDのままであった。この度、/homeもSSD化し高速化に挑戦。

 当初、HDDにあった元/homeをSSDへrsyncするだけで行けるかと思ったが、コトはそんなに単純ではなかった。/etc/fstabに新しい/homeを記載して再起動したら、/homeが失われた形で認識され少し痛い目を見ることに・・・。気を取り直して上記のサイトを参考にして行ったら、比較的苦労せずに移行は完了した。ざっと手順を示すと以下のようになる。

1. SSDをext4でフォーマット

フォーマットにはgpartedを使用した。パーティション作成と同時にフォーマットもext4で行う。

2. /etc/fstabの編集

fstabのバックアップを取得後、viで内容を編集。geditやnanoといったエディタはどうも好きになれない。漢ならやはりviである。テンポラリのマウントポイントをfstabに記載する。

UUID=???????? /media/home ext4 defaults 0 2

ちなみに「????????」にあたるUUIDは以下のコマンドから調べることができる。予め追加したSSDのUUIDを調べておく。

 ls -l /dev/disk/by-uuid

予め/media/homeのマウントポイントとなるディレクトリも作成しておく。

sudo mkdir /media/home

そしてマウント。

sudo mount -a

3. rsyncでデータをコピー 

その後/media/home以下にユーザディレクトリを作成し、先に作成したマウントポイントへrsyncを行う。

 rsync -av --delete --progress --stats /home/<USER>/  /media/home/<USER>/

4. さらにまた/etc/fstabを編集

rsyncが終了したら、今度はfstabの内容を/homeに戻しておく。

UUID=????????  /home  ext3  defaults  0  2

5. 元/homeをリネーム

ここからがちょっと悩んだ場所。以下のコマンドをいきなり実行してもすでに元/homeはマウントされているのでリネームできない。

cd / && sudo mv /home /old_home && sudo mkdir /home

まずこのコマンドを実行する前にマウントを外す必要がある。

  a. log outする

  b. コマンドラインモードにするため、

[Ctrl] + [Alt] + [F1]を同時押し

   c. rootにユーザ変更

sudo su -

   d. /homeが使用されていないかチェック。何も出力されなければOK。

lsof -n | grep \/home\/

  e. /homeをアンマウント

umount /home

  f. そしてようやく/homeをリネーム

cd / && sudo mv /home /old_home && sudo mkdir /home

  g. 新しい/homeをマウントする

sudo mount -a

  h. グラフィカルモードへ戻り、通常ユーザで再ログイン

[Ctrl] + [Alt] + [F7]を同時押し

 

 さてこれで新しいSSDへの移行は済みました。しかし、SSDは通常HDDと比べて高価であり、かつあまり容量がありません。VMなどの巨大ファイルを載せるにはあきらかに役不足。そこで、元あったHDDはVMイメージ保管用ディスクとして再利用します。またfstabをいじります。ここでもマウントポイント「/mnt/hdd」は予め作成しておきます。

sudo mkdir /mnt/hdd

fstabを編集し、以下を追加。

UUID=???????? /mnt/hdd ext4 defaults 0 2
※「????????」部分は元あったHDDのUUIDを記入。 

再度「sudo mount -a」でマウントを行い、VMイメージファイルが保管されているHDDの場所にシンボリックリンクを張る。

ln -s /mnt/hdd/xxxx/VMware /home/<USER>/VMware 

こうしておけばHDDも無駄なく使え、SSDの速さも活かせます。もっともVMを起動するときは少し遅くなってしまいますが、これについてはSSDが安くなるまで待ちませう。