web-dev-qa-db-ja.com

fstabのドライブにフォルダーをマウントします。移動しますか?

fstabファイルを一時的に変更して、/homeが別のドライブにあるようにします。ただし、パーティション全体をマウントするのではなく、そのパーティション上のフォルダー(「ホーム」)だけをマウントする必要があります。残りのデータが利用できなくても大丈夫です。

これをfstabで表現する標準的な方法は何ですか? 1つのコマンドでそれを行う方法を考えることはできません(マウントしていないファイルシステム上のフォルダーを参照できないため)。最初にマウントしてから、フォルダを/homeに移動する必要があると思います。しかし、fstabで移動できるかどうかはわかりませんが、manでそれを見つけられませんでした(そして、私はsshにしかアクセスできないため、盲目的に試す気がしません。今すぐマシン)。

今のところ、fstabにバインドマウントがあります。

/dev/sdd1 /mnt/temphome ntfs defaults,errors=remount-ro 0 2
/mnt/temphome/home /home none bind

ただし、これにより、両方のポイントに/dev/sdd1がマウントされたままになります。

要約する:

  • fstabでマウントの移動操作を実行できますか?実行できる場合はどうすればよいですか?
  • それは正しいアプローチですか、そうでない場合は何ですか?

前もって感謝します。

4
Lev Levitsky

/etc/fstabからの移動はできないと思います。これを行う場合は、mount --move/etc/rc.localコマンドを追加します。そのため、ブートプロセスに、ホームディレクトリが最終的な場所で使用できない時間が残ります。これらはホームディレクトリであるため、起動プロセス中に使用することはほとんどないはずです。それで問題ありません。私が考えることができるのは、@rebootcrontabディレクティブです。これらのいずれかがある場合は、ホームディレクトリが使用可能である必要があるため、代わりにmount --moveの適切な場所(/etc/rc.sysinitの直後)にmount -aを追加する必要があります。

ただし、バインドマウントの使用はおそらく問題ありません。うまくいかない可能性があるのは、主にバックアップや更新など、ディスク全体をトラバースするプロセスです。バインドマウントを/etc/fstabに残すことは最もリスクの低いオプションですが、ディスクトラバーサルプロセスを/mnt/temphome/homeをスキップするように構成する必要があります。

さらに別の可能性は、/homeをシンボリックリンクにすることです。ただし、これにより、一部のプログラムがユーザーのホームディレクトリへの絶対パス(/mnt/temphome/home/bob)を記録する場合があります。バインドマウントまたはサブマウントの移動には、この問題はありません。

いいえ、あなたはあなたが求めていることをすることはできません。お気づきのように、まだマウントしていないファイルシステム内のファイルを参照することはできません。[*]

ただし、うまくいく可能性のあるスキームがあります。ループデバイスを介してマウントされたドナーパーティション上のファイルシステムです。考えてみましょう:

# cd /mnt/temphome
# chmod 700 .
# chown root.root .
# dd if=/dev/zero of=temphome bs=4k count=1M
# mke2fs -j temphome
(answer yes to the annoying question)
# mount temphome /home -o loop

これにより、/homeパーティションのルートにあるファイルに存在する4 GiB /mnt/temphomeファイルシステムが作成されます。ドナーパーティションをマウントしてそのままにしておく必要があります。マウントされましたが、ルートのみがマウントしたり、ループデバイスを介した/homeのマウントを含め、その内容を直接変更したりできます。ただし、新しい/homeをマウントすると、通常のユーザーはその新しいファイルシステムに書き込むことができます。彼らはそれを行う力を持っているカーネルを介してそうしているので、その力はパーミッションループファイルシステムによって制御されます。

何らかの理由で/mnt/temphomeパーティションが受け入れたいよりも多くのリスクにさらされている場合、私が考えることができる最善の代替策は、 gparted を使用してドナーパーティションを縮小し、スペースを使用することです。新しい一時的な/homeパーティションを作成するために開かれました。使い終わったら、gpartedに戻り、一時パーティションを削除し、解放されたスペースを使用するようにドナーパーティションを再拡張します。ただし、これには独自のリスクがあります。パーティションの変更は100%安全ではありません。


[*]まあ、それは完全に真実ではありません。時折、他のファイルシステム内のファイルの正確なディスク位置(セクター、ヘッド、トラック)の知識を伴うトリックを目にすることがあります。これは、ハイバネーション、スワップ、ブートなどの低レベルのアクティビティで最も一般的です。これを機能させるには、移動しない完全に連続したファイル(つまり、断片化なし)が必要です。これにより、から生のセクターの読み取りと書き込みを開始できます。マウントされていないパーティションに。

しかし、そのようなものの傾向を時間の経過とともに見ると、さまざまな結果のために、時間の経過とともにless人気になる傾向があることに気付くでしょう。一つには、デフラガーはそのような計画を破る傾向があります。 Linuxでは通常/bootswapが別々のパーティションである理由の1つです。

1
Warren Young