問題となっているストレージの量が限られている仮想マシンがあります。ホームディレクトリがサーバー上の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 /
/
をシンボリックリンクにすることはできません。それは不可能です。 /
はディレクトリでなければなりません。 /
がシンボリックリンクである場合、それは何らかのパスを指します。そして、そのパスを解決するには、システムは/
を通過します。これは解決する必要があるためです...自身を指すシンボリックリンクは常にエラーを引き起こします間接参照されますが、いずれにしても、すでに存在するディレクトリであるため、/
をシンボリックリンクにすることはできません。
あなたができること、そしてあなたが望む効果を達成することは、通常行われているようにローカルファイルシステムをマウントする代わりに、ルートファイルシステムとして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
が応答しない場合は、失敗を診断してください。
いいえ。仮想マシンが起動できなくなります。 NFSシステムは、起動プロセスの特定の時点でロードされます。この時点までは、NFS上のファイルにはアクセスできません。これは、マシンが起動に必要なファイルにアクセスできないことを意味します。これらには、カーネル自体、デフォルトのシェル/bin/sh
、およびNFS共有をマウントするために必要なコマンドを含む/bin
の下のすべてが含まれます(ただし、これらに限定されません)。
いいえ、これは良い考えではありません。さらに重要なことは、それは必要ではありません。 /
のほとんどのディレクトリはそれほど大きくありません。スペースを占有しているものを特定し、そこに置きます。次のいずれかを大きな問題なく移動できるはずです。
/var/cache
/usr/local
/usr
自体も通常は移動できますが、/usr/local/bin
に重要なものがないことを確認してください。おそらくないでしょうが、確認してください。とにかくそれらはおそらくスペースを占有するものです。