/home 区画は、最も頻繁に移動される区画の 1 つです。時々、/home 内のスペースが全部使い果たされてしまい、追加のハード・ディスクが必要になることがあります。また場合によっては、/home がルート区画の一部としてセットアップされるために、パフォーマンスを上げたり、バックアップをやりやすくするために、それを移動しなければならなくなることがあります。これらのどの場合についても、/home を安全かつ効率的に移動する方法をご紹介しましょう。
注意
以下のテクニックは、区画の移動方法を説明したものです。確かにこのテクニックは、区画移動の失敗をバックアウトできるように設計されてはいますが、ユーザー・エラーから保護してくれるわけではありません。つまり、区画をフォーマットしたり、多数のファイルをコピーしたりするときはいつでも、間違った情報を入力して多くのデータを壊してしまう可能性があります。このため、重要なファイルは、必ずすべてのバックアップを取ってから処理する ことを強くお勧めします。
準備が整ったら、/home の移動を開始します。実行ステップは、正確には、現在 /home がそれ自身の別個の区画に常駐しているかどうか、あるいはルート区画に常駐しているかどうかによって異なります。ステップを進めるときは、このことに留意してください (必要な場合は、その旨お知らせします)。/home を新しいハード・ディスクに移動する場合は、そのハード・ディスクがシステムに物理的にインストールされていなければなりません。
/home を既存の区画に移動する場合 (ターゲットのプライマリー区画または拡張区画が存在していれば、その既存の区画は ext2 でなくても構いません)は、ステップ 2 へ進んでください。
新しい区画がまだない場合は、cfdisk (優先) または fdisk を使ってそれを作成する必要があります。その区画が最初のドライブに常駐していない場合は、デバイスの名前を最初の引数として cfdisk または fdisk に指定することを忘れないでください。適切なプライマリー区画または拡張区画を作成したら、リブートして区画テーブルを正しく再読み取りできるようにする必要があります。システムのリブートが必要になるのは、このときだけです。
新しい区画でファイル・システムを作成するには、まず、新しい区画の正確なデバイス名を知っていなければなりません(たとえば、/dev/sda5)。正確なデバイス名が分からない場合は、すぐ停止して、ダブル・チェックしてください! そして次のように、ルートとして入力します。
# mkfs.ext2 /dev/??? |
上記および以下のコード・サンプルで、??? は、ターゲットの区画名と置き換えてください。このコマンドを実行すると、ターゲットの区画には空の ext2 ファイル・システムが入ります。
/mnt/newpart という名前のディレクトリーを作成してから、そこに以下の新しい区画をマウントします。
# mount /dev/??? /mnt/newpart |
システムの可能性を最大化するために、このステップをできるだけ遅らせましたが、ここで、単一ユーザー・モードにドロップし、ファイル を /home から /mnt/newpart にコピーする必要があります。/home では、どのファイルもオープンすることはできませんが、次のようにして単一ユーザー・モードに入ることにより、その恐れはなくなります。
# init 1 |
プロンプトが出たら、ルート・パスワードを入力してシステム・メインテナンスを実行してください。これで、ルート・シェルが入手できるはずです。
5. /home へのディレクトリーの変更およびファイルのコピー
次のように入力してください。
# cd /home
# cp -ax * /mnt/newpart
|
cp -ax コマンドは、/home の内容を /mnt/newpart に繰り返しコピーして、すべてのファイル属性を保存し、どのマウント・ポイントも越えたりしないようにします。このコマンドが完了すると、/mnt/newpart には、現在 /home に入っているすべてのファイルとディレクトリーの正確なコピーが含まれています。古い /home がそれ自身の別個の区画 (/etc/fstab の中の別個の行にリストされている)に含まれていた場合は、ステップ 6a へ進んでください。それ以外の場合は、ステップ 6b へ進んでください。
6a. 新しい区画の使用 (古い /home が区画である場合)
以下の手順は、古い /home がすでにそれ自身の専用区画に含まれているシステムで使用するものです。これに該当しない場合は、アイテム 6b を参照してください。
次のように入力して、古い区画をアンマウントします。
# cd /
# umount /home
|
次に、新しい区画をアンマウントし、さらに再マウントします。
# umount /mnt/newpart # mount /dev/??? /home |
これで、新しい区画が /home に作成され、使用可能になります。最後の数ステップをマルチユーザー・モードで実行することができます。単一ユーザー・モードを終了して、CTRL-D を押すと、システムが復帰し、実行に入ります。
重要: システムが正常に始動したら、ルートとしてログインし、/etc/fstab を編集すると、/dev/??? が、古い区画ではなく、/home に自動的にマウントされます。たとえば、次の行を、
/dev/hda3 /home ext2 defaults 1 2 |
次のように変更します。
/dev/??? /home ext2 defaults 1 2
|
6b. 新しい区画の使用 (古い /home が区画でない場合)
以下の手順は、前に /home がそれ自身の別個の区画に入っていなかった場合に使用します (たとえば、/home がルート区画に常駐するディレクトリーであった場合)。以下のようにします。
# mv /home /home.old
# mkdir /home
# mount /dev/??? /home
|
ここで、CTRL-D を押して単一ユーザー・モードを出ます。システムが復帰し、実行に入ったら、/etc/fstab を編集し、次のような 1 行を追加します。
/dev/??? /home ext2 defaults 1 2 |
こうしておけば、次回にシステムをリブートするときに、新しい区画が正しくマウントされるようになります。
ファイル・コピーの問題が発生する場合のことを考えて、古い /home ディレクトリー/区画を意図的に残しておきました。システムがスムーズに稼動していることを確認したら、古い /home 区画を何か別のことに使用するか、または /home.old ディレクトリーを除去するかのどちらかを行うことができます。
おめでとうございます。これで、/home の移動が完了しました。次回のヒントでは、システムを再構成して、/tmp と /var がそれぞれの共用区画に含まれるようにします。そこでまたお会いしましょう。
- わたしの第 1 回のdeveloperWorks ヒント、 最大スワップ・ページ: スワップを最大限に活用するにはでは、Linux のもとでスワップ・パフォーマンスを大幅に向上させる方法を示しています。
- 第 2 回のヒント、 パーティション計画上のヒント: ディスク上のデータの編成方法もdeveloperWorks に関するものですが、そこでは、区画レイアウトを効果的に編成する方法をいくつか説明しています。
ニューメキシコ州のアルバカーキーに住む Daniel Robbins は、Gentoo プロジェクトのチーフ・アーキテクトであり、かつ Gentoo Technologies, Inc. の CEO であり、かつ Linux Advanced Multimedia Project (LAMP) のよき助言者です。彼は、マクミラン・ブックCaldera OpenLinux Unleashed、SuSE Linux Unleashed、およびSamba Unleashed の著者です。Daniel は、小学校 2 年生のころから曲がりなりにもコンピューターにのめり込み、当時彼は、危険性を潜めたパック・マンのほか、Logo プログラム言語にも初めて出会いました。これで、彼がなぜ、それ以来 SONY Electronic Publishing/Psygnosis のリード・グラフィック・アーティストを務めているかが分かるでしょう。Daniel は、奥さんの Mary(今度の春に出産の予定です)と一緒に時間を過ごすのが楽しいそうです。彼の電子メール・アドレスはdrobbins@gentoo.org です。