如何將分區掛載更改為 var 並仍然啟動?
我的第一個問題是關於伺服器故障。匆忙中,我用 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
掛載新分區後,將無法直接訪問此數據。有兩種方法可以做到這一點:
- 在原始環境中,創建指向 /var(
ln /var /var.old
) 的硬連結,然後在新環境中執行rm -rf /var.old/*
. 我沒有嘗試過,但是通過硬連結,您仍然應該訪問舊的/var
而不是新的。通過查找進行驗證var.old
(如果您看到var.new
則它不起作用)。- 在恢復 shell 中,執行
mkdir /var.old ; mv /var/* /var.old
. 完成啟動到新環境後,訪問/var.old
.請注意,這兩個都保留了
/var
掛載所需的目錄。