web-dev-qa-db-ja.com

異なるドライブ間のファイルシステムディレクトリ上のシンボリックリンク?

次の回答のとおり、24Gb統合SanDisk iSSDにUbuntu 16.04を別のセカンダリ500Gbドライブにインストールしようとしています: ブートデバイスとして選択できないSSDドライブからUbuntuをブートする方法?

Gertvdijkの答えは素晴らしいものの、彼が言及しているシンボリックリンクを理解することはできません。

代わりに、より大きなドライブに情報を保存する/sbin/など、多くのスペースを使用するフォルダーを作成したいと思います。 /sbin//folder/on/large/drive/へのシンボリックリンクにするとします:ln -s /sbin/ /folder/on/large/drive

これでうまくいきますか? apt-get installを使用してプログラムをインストールし、aptが/sbin/にファイルを配置する場合、代わりに/folder/on/large/driveに自動的に配置されますか?

または、mount --bind /sbin/ /folder/on/large/driveの方がうまくいくでしょうか?

3
kung

簡単な答え:どちらかがうまく動作するはずです。

より長い答え:すべてが機能する限り、それらはほとんど同じように機能するはずです。唯一の違いは、何らかの理由でが機能しない場合に何が起こるかです。

「ショートカット」ファイルのようなシンボリックリンクを考えてください。基本的に、次に進むべき場所を示す小さなファイルであり、OSは(通常)そのリダイレクトを自動的に処理します。

一方、マウントはファイルシステムのビューを直接変更します-マウントされたディレクトリからファイルを要求するたびに、カーネルはactualファイルを静かに渡します。

ターゲットファイルシステムが利用できなくなった場合、シンボリックリンクとマウントは異なる動作をします。シンボリックリンクは、存在しない場所を指します-そして、物事はおそらくエラーをスローし始めます。ただし、マウントするファイルシステムがないため、マウントはすぐに失敗します。それから、読み書きしようとすると、想定されたマウントで覆われた(おそらく空の)ディレクトリに直接移動します。

マニュアルページ: ln(1)mount(8)

そうは言っても、システムクリティカルなファイル(/sbinなど)をメインドライブから移動しないよう個人的にアドバイスします。ただし、/home(またはそのサブディレクトリの一部)を2番目のドライブに移動することは、非常に一般的で受け入れられている方法です。

1
Ethan Marmaduke