Linux

將分區重新映射到新磁碟的正確方法?

  • December 25, 2011

我目前執行一個執行 Debian 的網路伺服器。我有一個 1GB 磁碟,一個 ext4 分區映射到/8GB 磁碟,一個 ext4 分區映射到/var/www.

在未安裝數據庫的情況下,1GB 磁碟已滿 70%。一旦我裝上 psql,我/var可能會填滿 1GB 磁碟。

所以我想做的就是將 8GB 磁碟上的 ext4 大小調整為 4GB,並使用可用空間創建另一個分區。

現在,在我看來,我想出了以下一組步驟:

  1. umount並使用resize2fs(或parted)調整 8GB 磁碟上的分區大小。
  2. parted在可用空間上創建一個新的 4 GB 分區。
  3. mount要說的新分區/media/new
  4. cp -a``/var將我從 1GB 分區復製到新的 4GB 分區。(或者我應該tar為此使用嗎?)
  5. 為新分區添加一個條目fstab
  6. /var從我的 1GB 磁碟和/var/www新分區中刪除多餘的東西。

我以前從來沒有做過這樣的事情,所以有人可以驗證我的步驟,看看我是否遺漏了什麼?

PS。我做了一個du --max-depth=1,看起來除了佔用的200MB之外/var,還有一個300MB分配給/usr和200MB給/lib。我也應該移動這些嗎?

您實際上不必重新分區磁碟即可完成此操作。另一種解決方案是使用mount -o bind.

  1. 停止伺服器上執行的所有服務,並確認沒有打開 /var 的句柄lsof | grep /var- 如果有,則終止持有它們的程序。
  2. 解除安裝 8GB 驅動器 (/var/www) 並將其安裝在其他位置 (例如 /mnt)
  3. 在您的 8GB 磁碟上,將全部內容移動到一個文件夾中 - 我們稱之為“www”。
  4. 將 /var/ 移動到 8GB 驅動器(為了安全起見,您可能想要複製並重命名原始驅動器)(因此,您現在有兩個文件夾 /mnt/www 和 /mnt/var)
  • (由於 /var/www 在 var 中,此時將其移動到那裡更簡單(即mv /mnt/www /mnt/var/,儘管我應該能夠設置嵌套安裝)
  1. 掛載綁定/var:mount -o bind /mnt/var /var
  2. 附加到 fstab:
/mnt/var /var 綁定預設值,noatime,綁定 0 0
  1. 檢查一切是否正常,並恢復正常操作

這種方法應該提供相同的功能,風險更小(無需重新分區/調整文件系統大小)和更大的靈活性 - 如果您想再添加兩個或三個文件夾,則不必繼續創建新分區。

順便說一句,將整個 /var 移動到第二個磁碟不是我的首選,我更傾向於移動儲存數據的目錄而不是儲存程序的目錄,例如:(您可能會發現/var/log 和 /var/lib 使用 /var 中的大部分空間)。

  • /var/日誌
  • /var/lib/pgsql
  • /var/spool/mail(和/或 /var/vmail)
  • /var/www (你已經移動了)

相同的過程可以應用於大多數目錄(除了 /boot 之類的目錄)。此外,您可以考慮使用 rsync 代替 cp,如果某些文件被鎖定等,並且您必須再次執行它,它可能會更寬容。

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