[Ubuntu]ZFSでディスク構成見直し

TIPS

Ubuntu 24.04のインストール時に「ZFS」を選択すると、スナップショット機能などが使えて便利ですが、ディスク容量が少ないとすぐに「空き容量不足」に陥ることがあります。

今回は、
 OSを入れたNVMe(120GB)が満杯になり、手元に未使用のSSD(500GB)がある
という状況を想定し、再インストールなしで /home を丸ごと大容量ディスクへ引っ越す手順を解説します。

1. 現状の把握と原因の特定

まず、どのディスクがどれくらい使われているかを確認します。

# ディスクの物理的な接続確認
lsblk

# ZFSプールの状態確認
zpool list
zfs list

UbuntuのZFSデフォルト設定では、/ (ルート) や /home が同じプール(rpool)を共有しているため、どちらかが肥大化するとシステム全体が動かなくなります。

2. 新しいディスクの準備(ZFSプールの作成)

未使用のディスク(例:/dev/sda)を、新しいデータ保存用のプールとして初期化します。

# 新しいプール「tank」を作成(既存のNTFS等がある場合は -f で強制上書き)
sudo zpool create -f tank /dev/sda1

# 移動先となるデータセットを作成
sudo zfs create tank/home

# 一時的なコピー先としてマウント
sudo zfs set mountpoint=/home_new tank/home

3. データの同期(rsync)

既存のユーザーデータを、新しいディスクへ属性を保持したままコピーします。

# 権限やリンクを維持してコピー(スラッシュの有無に注意)
sudo rsync -avPX /home/ /home_new/

4. マウントポイントの切り替え(ここが肝!)

UbuntuのZFS管理(zsys)が干渉しないよう、慎重にマウントポイントの設定を書き換えます。

# 1. カレントディレクトリを /home 以外に移動
cd /

# 2. 新しいディスクを次回の起動で /home になるよう設定
sudo zfs unmount tank/home
sudo zfs set mountpoint=/home tank/home

# 3. 古いディスク(rpool側)の /home を退避させる
# 使用中のためエラーが出ることがありますが、-u を使って設定だけ書き換えます
sudo zfs set canmount=noauto rpool/USERDATA/username_xxxx
sudo zfs set mountpoint=/home_old -u rpool/USERDATA/username_xxxx

5. 再起動と後処理

設定を反映させるために再起動します。

sudo reboot

再起動後、容量を確認して大容量ディスクが割り当たっていれば成功です!

df -h /home
# 400G以上の空きが表示されればOK

最後に、システムディスク(120GB側)を圧迫していた古いデータを削除して、空き容量を完全に確保します。

# 動作確認後、古いデータセットを削除
sudo zfs destroy rpool/USERDATA/username_xxxx

まとめ

今回の手順のポイントは以下の通りです:

  • OS(システム):高速なNVMe(120GB)で快適に動作
  • データ(/home):大容量なSSD(500GB)で広々と使用
  • ZFSの恩恵:パーティションのサイズ変更に悩まされることなく、マウントポイントの変更だけでディスクを差し替え可能

ディスクが溢れても、ZFSなら「後出し」で容量を拡張できます。ぜひ試してみてください!

コメント

タイトルとURLをコピーしました