マシン全体にシンボリックリンクを作成しても安全ですか?

マシン全体にシンボリックリンクを作成しても安全ですか?

ストレージ容量が限られている仮想マシンがあり、それが問題になっています。ホーム ディレクトリをサーバー上の NFS ストレージにリンクしており、問題なく機能しています。しかし、ストレージが常に不足しているため、マシン全体を NFS にリンクする必要があります。

マシン全体(つまり、次の全体)をリンクしても安全かどうかが気になるだけです。/) を NFS に追加しますか?

それを実行するには、次のコマンドを使用します。

/storage/nfs基本的にはマウントされた NFS です。

$ mkdir /storage/nfs/myvmroot
$ sudo cp -rp /* /storage/nfs/myvmroot
$ sudo mv /* /old-root
$ sudo ln -s /storage/nfs/myvmroot /

答え1

シンボリック リンクを作成することはできませ/ん。不可能なのです。 は/ディレクトリである必要があります。 が/シンボリック リンクである場合、何らかのパスを指します。そのパスを解決するために、システムは を通過しますが、これはシンボリック リンクであるため、解決する必要があります... 自分自身を指すシンボリック リンクは、逆参照されると常にエラーが発生しますが、いずれにしても、すでに存在するディレクトリであるため、シンボリック リンクを/作成することはできません。/

あなたができること、そして望んだ効果を達成するには、マウント通常行われるようにローカルファイルシステムをマウントするのではなく、NFS ファイルシステムをルートファイルシステムとして使用します。これは Ubuntu で可能であり、サポートされています。UbuntuコミュニティWikiにチュートリアルがあります(完全なディスクレス インストールをカバーしており、ローカルに保持する場合は TFTP に関する部分をスキップできます/boot)。既存のシステムの移動は、初期インストールとは少し異なるため、チュートリアルに忠実に従うことは期待しないでください。

次のことを確認する必要があります。インストール必要なドライバが含まれています。initramfsはコマンドによって生成されますupdate-initramfs現在のシステム構成と以下の構成ファイルに基づいて決定されます/etc/initramfs-tools。NFS設定を明示的に追加する必要があります。/etc/initramfs-tools/initramfs.conf、少なくとも 1 行追加しますBOOT=nfs(他のパラメータは起動時に指定できると思いますが、BOOT=nfsNFS ドライバを含めるには が必要であり、DEVICE=…イーサネット ドライバを含めるためにも が必要になる可能性があります)。 を変更したら/etc/initramfs-tools/initramfs.conf、 を実行しますupdate-initramfs

まだ保存されていない場合は、/bootとは別のローカル パーティションとして保存することをお勧めします。/

cp -rp /* /storage/nfs/myvmrootファイルのコピーには使用しないでくださいでは動作しません。マウントされたファイルシステムをコピーから除外する必要があります。-xオプションを渡します。また、-aではなく を使用します。では保持されない-rp属性があります。-rp

cp -ax /* /storage/nfs/myvmroot

または、コピーが中断された場合

rsync -axAX / /storage/nfs/myvmroot

おそらくもっと簡単な別のオプションは、ルート ファイルシステムをローカルに保持し、その一部だけを移動することです。高速サーバーと高速ネットワークを使用している場合でも、通常、NFS よりもローカル ファイルシステムの方がパフォーマンスと信頼性が大幅に向上します。

どこでも簡単に切り取ることはできません。リモートで配置したものは、ブート プロセスの早い段階で必要になるものであってはなりません。 での切り取りは、/usr現在では Ubuntu では公式にはサポートされていないと思いますが、Ubuntu の親ディストリビューションである Debian ではサポートされているので、機能する可能性があります。 も機能する可能性が高い場所です/usr/share。 はお勧めしません/var。ログが保存される場所なので、何かが壊れた場合に面倒なことになりそうです。(NFS クライアントが何かに不満を持ち、 にログを書き込もうとして/var/log/var応答しない場合は、障害の診断は困難です。)

答え2

いいえ。その場合、仮想マシンは起動できなくなります。NFS システムは、起動プロセスの特定の時点でロードされます。この時点までは、NFS 上のファイルにアクセスできません。つまり、マシンは起動に必要なファイルにアクセスできません。これには、カーネル自体、デフォルトのシェル、および NFS 共有をマウントするために必要なコマンドを含む/bin/shすべてのものが含まれます (ただし、これらに限定されません)。/bin

したがって、これは良いアイデアではありません。さらに重要なのは、必要ではないということです。 のディレクトリのほとんどはそれほど/大きくありません。スペースを占有しているディレクトリを特定して、そこに配置してください。次のいずれかを大きな問題なく移動できるはずです。

  • /var/cache
  • /usr/local
  • /usr自体も通常は移動できますが、重要なものがないことを確認してください/usr/local/bin。おそらくそうではないでしょうが、確認してください。

いずれにしても、スペースを占有しているのはそれらでしょう。

関連情報