web-dev-qa-db-ja.com

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

問題となっているストレージの量が限られている仮想マシンがあります。ホームディレクトリがサーバー上の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 /
6
zirodec

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

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

initramfs に必要なドライバーが含まれていることを確認する必要があります。 initramfsは、現在のシステム構成とupdate-initramfsの下の構成ファイルに基づいて、コマンド /etc/initramfs-tools によって生成されます。 NFS設定を /etc/initramfs-tools/initramfs.conf に明示的に追加する必要があります。少なくとも、行BOOT=nfsを追加します(他のパラメーターはブート時に指定できると思いますが、NFSドライバーを含めるにはBOOT=nfsが必要です。イーサネットドライバを含めるには、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によってサポートされているため、動作する可能性があります。働く可能性が高いもう1つの場所は、/usr/shareです。 /varはお勧めしません。ログが保持されるため、何かが壊れた場合は面倒になる可能性があります。 (NFSクライアントが何かに不満を抱いていて、ログを/var/logに書き込もうとしても/varが応答しない場合は、失敗を診断してください。

10
Gilles

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

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

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

とにかくそれらはおそらくスペースを占有するものです。

10
terdon