為整個機器做符號連結安全嗎?

為整個機器做符號連結安全嗎?

我有一個存儲量有限的虛擬機,這已成為一個問題。我的主目錄連結到伺服器上的 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,至少添加一行BOOT=nfs(我認為其他參數可以在啟動時指定,但BOOT=nfs為了包含 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 還沒有正式支援 cut at,但它是由 Ubuntu 的父親發行版 Debian 提供的,所以它有機會工作。另一個有很好工作機會的地方是/usr/share。我不建議/var,如果有任何問題可能會很麻煩,因為那是保存日誌的地方。 (如果 NFS 用戶端對某些事情不滿意並且嘗試寫入日誌/var/log/var沒有回應,那麼祝您診斷故障好運。)

答案2

不行。 NFS 系統在引導過程中的某個時刻會載入。在此之前,NFS 上的任何檔案都無法存取。這意味著機器將無法存取啟動所需的檔案。其中包括(但不限於)核心本身、預設 shell/bin/sh以及/bin其中包含掛載 NFS 共享所需的命令的所有內容。

所以不,這不是一個好主意。更重要的是,沒有必要。大多數目錄/都不是很大。只需找出佔用空間的那個並將其放在那裡即可。您應該能夠移動以下任一內容而不會出現重大問題:

  • /var/cache
  • /usr/local
  • /usr其本身通常也可以移動,但要確保裡面沒有任何重要的東西/usr/local/bin。可能不會,但是檢查一下。

無論如何,這些可能是佔據空間的。

相關內容