systemd系のLinuxの/homeを別のドライブに移行する方法

この記事は公開から4年以上経過しています。

システムドライブが肥大化したarchlinuxの/homeディレクトリを、別のデータドライブへ移行した際の作業手順メモです。

root権限で作業を行います。問題が発生しても回復ができるようにバックアップを取るなど、充分注意して作業してください。

作業手順

1. シングルユーザモードでログイン


システムに誰もログインしていない状態で

sudo systemctl isolate rescue.target

または

sudo systemctl emergency

コマンドでシングルユーザモードに切り替え、rootでログインします。
グラフィカルログインの場合はログイン画面でCtrl+Alt+F2を押下するなどで仮想コンソールに切り替えてログインしてください。
※以降はrootでの作業となります。

2. /homeディレクトリを移行先にコピー


現在の/homeディレクトリを丸々新しいドライブへコピーします。
下記の例では/homeをコピー先ドライブdrive_x直下のhomeディレクトリにコピーしています。
rsyncのパラメータはバックアップ時の定番パラメータ-auvと、スパースファイルを維持したままコピーするためのオプションSを指定していますが、Sの指定については任意です。

2021.8.14追記:
rsyncコマンドオプションにACLや拡張ファイル属性を利用している場合を考慮するオプションAXを追加しました。

rsync -auvSAX /home/ /mnt/drive_x/home/

3. マウントポイントの作成


/homeディレクトリの名称を変更(バックアップ)して、マウントポイント用に新しい空の/homeディレクトリを作成します。

mv /home /home.bak
mkdir /home

4. fstabの更新


vim等で/etc/fstabファイルを開き、移行先のhome/homeにマウントするための情報を追記します。
本例では既にマウントされているディスク上のツリーへのマウントのため、バインドマウントである点に注意してください。

/mnt/drive_x/home           /home               none    bind    0 0

5. fstabを反映


上記手順でfstabに追記したマウント情報をシステムに反映します。

mount -a

6. 移行結果の確認


移行先の/mnt/drive_x/home/homeからアクセスできるかを確認します。ここでは簡易的にユーザ毎のホームディレクトリが存在するかどうかのみを確認していますが、可能な限りコピー前後のディレクトリに差異がないかをチェックしておくことをオススメします。

ls -al /home


以上で/homeの移行作業は終了です。このままGUIにログインしたい場合は

systemctl isolate graphical.target

でグラフィカルターゲットに切り替えてログインすることも可能です。

/homeをリネームしてバックアップした/home.bakについては、移行に問題がないかどうか暫く様子を見てから必要に応じて削除して下さい。

参考ウェブサイトなど

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする