LinuxでSSDからHDDに特定のディレクトリを移行する(Btrfs)
はじめに
家のデスクトップPCにHDDを追加しました。今までSSD(256GB)に全システムを構成していましたが、HDDが増えたので/home(ユーザーデータ)と/var(ログ・キャッシュファイル)をそちらに移すことにしました。
システムファイルとユーザーデータを分けておくと、OSの再インストールや更新の際に特定ディレクトリだけ残して作業できるので、単純に構成として楽になるだろうという判断です。それでは実際の手順を書いていきます。
手順
新しいドライブ(/dev/sdb2)に@homeと@varという名前でBtrfsサブボリュームを作成します。
sudo mkdir /mnt/newhdd
sudo mount /dev/sdb2 /mnt/newhdd
sudo btrfs subvolume create /mnt/newhdd/@home
sudo btrfs subvolume create /mnt/newhdd/@var
既存の/homeと/varの内容を新しいサブボリュームに移行します。
su -l
rsync -avxHAX /home/ /mnt/newhdd/@home
rsync -avxHAX /var/ /mnt/newhdd/@var
3. バックアップ・既存ディレクトリの削除
念のため退避してから削除します。/varを削除する前に、必ずシステムで動いているアプリケーションを停止しておいてください。
mkdir home_old; cp -r /home /home_old
mkdir var_old; cp -r /var /var_old
rm -rf /home/*
rm -rf /home/.*
rm -rf /var/*
rm -rf /var/.*4. fstabの更新
# /dev/sdb2のUUIDを確認
blkid
# fstabに以下を追記
vim /etc/fstab
UUID=yourUUID /home btrfs subvol=@home,defaults,noatime 0 0
UUID=yourUUID /var btrfs subvol=@var,defaults,noatime 0 0
※/homeと/varの既存のfstab行はコメントアウトしておいてください。
5. 再起動・確認
sudo reboot
# 起動後、正しくマウントされているか確認
df -h
...
/dev/sdb2 464G 1.6G 461G 1% /home
/dev/sdb2 464G 1.6G 461G 1% /var
/homeと/varが/dev/sdb2としてマウントされていれば完了です。
まとめ
mv(実質rsyncでのコピー)→ サブボリューム作成 → 移行 → fstab書き換えという流れで、作業自体はそこまで複雑ではありませんでした。
/homeと/varを分離しておくと、今後OSを入れ直すときにもユーザーデータやログをそのまま残せるので、そのあたりの運用のしやすさが一番のメリットだと感じています。
おわり