【注意】各コマンドは何をしているのか理解の上で実行してください。1文字でも間違うと、ファイルが全て削除されたり、OSが起動しなくなったりして、OSインストールからやりなおさなければならない状況に陥ります。各コマンドを実行した際に発生する損失に対する責任は一切持ちません。
操作は全てrootで行います。
まず、新しいドライブをフォーマットしてfstabに追加してマウントしておいてください。
例えば、次のような操作です。
fdisk /dev/sdb
(対話式で新しいパーティションを作成する、今回は/dev/sdb1を作るとします)
mkfs.ext4 /dev/sdb1
mkdir /home2
echo "/dev/sdb1 /home2 ext4 defaults 0 0" >> /etc/fstab
mount /home2
mount
で正しくマウントされているかを確認してください。念のため、一度再起動して、マウントされているかを確認することをお勧めします。これで、新たに"/home2"が使えるようになりました。この領域は別のディスクになっています。この領域に、"user1"ユーザーのホームを移すという事で進めます。手段は、usermod
コマンドで自動でするか、手動で行うかです。
※ SELinuxが有効の場合は、context等を設定する必要があります。AppArmorの場合は、必要に応じてプロファイルを書き換えておいてください。
usermod
を使用(推奨)
※ 該当ユーザーがログインしているとうまくいかない場合があります。ご注意ください。
usermod user1 -d /home2/user1 -m
ホームにあったファイルはすべて新しいホームに移動しています。次回ログインから、新しいホームになっているはずです。(ファイルは移動のため、古いホームは削除されています。)
手動で/etc/passwdを変更
まずは、ホームの用意とコピーを行います。
cp -rip /home/user1 /home2/user1
つぎに/etc/passwdを操作しますが、vipw
を使います。
"user1"のエントリーにある"/home/user1"というのを"/home2/user1"に書き換えます。
これで完了です。該当ユーザーでログインして、正常に動作することを確認してください。古いホームは残ったままです。問題なければ、削除しても構いません。
/home全体を新しいドライブにする(上級者向け)
一人のユーザーだけではなく、全体を変えたい場合は、/home自体を変えた方が速いです。
root以外にログインしたユーザーがいると失敗する場合があります。
古いホームから新しいホームへ全てのファイルをコピーしておきます。容量が多い場合、rsyncを使うことをお勧めします。(二回走らせることを前提にすれば、一回目の最中も作業ができるから)
rsync -av --delete /home/ /home2/
/home2をアンマウントします。
/homeを/home_oldに変更し、/home2を/homeに変更します。
mv /home /home_old
mv /home2 /home
/etc/fstabについてマウント情報を書き換えます。
/dev/sdb1 /home ext4 defaults 0 0
/homeをマウントします。
一般ユーザーでログインして、動作を確認します。一度再起動して、ログインできるかも確認しておいてください。問題が無ければ、/home_oldは不要なので、削除しておいてください。