Centos

如何將分區掛載更改為 var 並仍然啟動?

  • February 17, 2012

我的第一個問題是關於伺服器故障。匆忙中,我用 Centos 6.2 設置了一個本地伺服器,並讓 Centos 安裝程序處理分區。

大錯特錯,我知道。

無論如何,我唯一遇到的問題是大部分硬碟空間都分配給了 /home 掛載點。我們不會使用它……我們將使用 /var。我嘗試將掛載到 /home 的分區的掛載點更改為掛載到 /var… 但是,我敢肯定您已經在自嘲了,是的,它阻止了我的系統啟動。原來 /var 很重要;)

現在,我不是一個完全愚蠢的人,所以我能夠啟動到恢復控制台並將其改回。現在,這就是我來找你們的原因。

如何將掛載點更改為 /var 但仍保留正常執行的系統?我想我需要以某種方式將 /var 的內容複製到 /home,但我不確定從哪裡開始。

您的描述有點令人困惑 - 但聽起來您有一個 /var 分區和一個 /home 分區。

您希望在複製時保留權限 - 這很關鍵

如果您想要的只是能夠將 /home 掛載為 /var,那麼我會在原始環境中執行此操作:

# rsync -Wav /var/ /home

這將在 /home 中重新創建 /var/lib、/var/tmp 和其他目錄。完成此操作後,/home 將如下所示(偽造輸出範例):

# ls -m /home
agentx, backups, cache, charlie, crash, lib, local, lock, log, louie, mail, opt,
run, spool, tina, tmp, www

注意存在的三個(偽造的)主目錄:/home/charlie /home/louie /home/tina。

您應該能夠刪除所有主目錄而不會出現嚴重問題,除非有一個需要真正主目錄的守護程序。無論如何,為了保存它們(以防萬一),我會在複製 /var 之前這樣做:

# cd /home
# mkdir .sav
# mv charlie tina louie .sav

這會將選定的主目錄移開,但保留它們以備後用。

此外,當您將 /home 移動到 /var 時,這意味著現在必須在 /(根)上創建 /home。使用新設置啟動後(將 /home 移至 /var),然後執行以下操作:

# mkdir /home
# chmod 755 /home

確保創建您需要的任何 /home 目錄 - 或從 /var/.sav 目錄複製它們。要執行後者,請在環境中執行此操作:

# rsync -Wav /var/.sav/ /home

另請注意,原來的 /var 仍然存在。如果它在掛載的文件系統中,那麼它將被隱藏但仍會佔用空間。

**更新:**針對以下問題,以下是有關從以下位置恢復空間的一些想法/var

您可能不應該刪除這些文件,直到您使用更改的環境執行了一段時間並且對舊環境沒有任何要求。這只是為了安全起見。

同樣為了安全起見,您可能應該做兩件事。在舊環境中,執行以下操作:

# touch /var/var.old
# touch /home/var.new

這將使您可以看到兩個幾乎相同的坐騎,但一眼就能辨別出哪個是哪個坐騎。

要真正刪除數據,您需要能夠訪問舊/var. /var掛載新分區後,將無法直接訪問此數據。

有兩種方法可以做到這一點:

  1. 在原始環境中,創建指向 /var( ln /var /var.old) 的硬連結,然後在新環境中執行rm -rf /var.old/*. 我沒有嘗試過,但是通過硬連結,您仍然應該訪問舊的/var而不是新的。通過查找進行驗證var.old(如果您看到var.new則它不起作用)。
  2. 在恢復 shell 中,執行mkdir /var.old ; mv /var/* /var.old. 完成啟動到新環境後,訪問/var.old.

請注意,這兩個都保留了/var掛載所需的目錄。

引用自:https://serverfault.com/questions/361240