![Linux (debian 9) - 根分割區已滿:將目錄從/移至外部磁碟機](https://rvso.com/image/1711443/Linux%20(debian%209)%20-%20%E6%A0%B9%E5%88%86%E5%89%B2%E5%8D%80%E5%B7%B2%E6%BB%BF%EF%BC%9A%E5%B0%87%E7%9B%AE%E9%8C%84%E5%BE%9E%2F%E7%A7%BB%E8%87%B3%E5%A4%96%E9%83%A8%E7%A3%81%E7%A2%9F%E6%A9%9F.png)
我有一個 Debian 9 系統,安裝在單一儲存裝置上。
該裝置的大小略小於 4 GB,並且有一個分割區,其中已寫入 debian 映像。
我無法刪除該設備。它是嵌入式系統的一部分,並且是永久連接的。
不過,我可以在系統中新增 SD 卡,因為如果需要更大的 FS,可以為使用者擴充功能提供備用插槽。
我的目的是在 SD 卡上建立一個分割區,可能是 16 GB 的分割區。
我想知道哪些目錄可以安全地移動到SD卡上?我怎樣才能做到這一點?
例如,許多 Linux 系統將 /home 資料夾移至單獨的實體裝置或單獨的分割區。
所以我知道我可以在 SD 檔案系統的根目錄上建立一個 /home 目錄。我不知道該怎麼做是如何告訴Debian系統/home已經移動了?想必我需要將原始檔案系統上 /home 的所有內容複製到新的 SD 卡上,然後再告訴 Debian 它已移動?
我猜我也可以移動 /tmp 和 /var 資料夾。
還有其他我可以安全移動的東西嗎?我認為在任何情況下我都不應該移動 /bin、/sbin 或 /root 嗎?
我以前使用過這樣的系統,其中 /home 位於不同的磁碟上,但我從未在安裝完成後移動它。
我也不知道應該搜尋哪些關鍵字來尋找此資訊 - 如果這看起來有點不成熟,那麼我很抱歉。謝謝
答案1
事實上,這/home
並不是作業系統嚴格必要的部分,這使得這比遷移/usr
到新裝置更可行。如果您要移動重要的作業系統層次結構,您可能需要關閉並從其他rescue
或 Live CD 或 USB 檔案系統啟動。在您的嵌入式設備上,這可能是困難的,也可能是不可能的。
但既然你要搬家了/home
,我們就可以謹慎行事。
首先,啟動進入單一使用者模式。停止非必要的服務,尤其是任何可以寫入/home
.確保你的目錄pwd
不在/home下,然後取得root權限:
$ cd /tmp
$ sudo -i
然後:
1)插入SD卡並建立一個分割區。建立分割區後,在其上建立一個檔案系統來保存新的/home
層次結構。假設你的SD卡分割區是device/dev/sdc1
# mkfs.ext4 /dev/sdc1
2) 將新檔案系統掛載在/mnt
:
# mount /dev/sdc1 /mnt
3)複製(不要移動)或rsync
您的/home
等級制度到 SD 卡上(注意斜線)。完成後rsync
,卸載SD卡:
# rsync -HAXav /home/ /mnt/
# umount /mnt
4)備份你的/etc/fstab
# cp -p /etc/fstab /etc/fstab.safety
5) 識別 SD 卡檔案系統UUID
並編輯/etc/fstab
以新增一個條目以將其掛載UUID
到 上/home
。您可以找到UUID
使用blkid
:
# blkid /dev/sdc1
/dev/sdc1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"
鑑於上述輸出,您的新fstab
行將是:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults 0 0
這是一個 Ubuntu 範例,因為我手邊沒有 Debian 系統。您必須將 xxxxx... 部分替換為 SD 卡檔案系統的正確 UUID,並替換ext4
為您在編輯 SD 卡時使用的檔案系統類型mkfs
(並在 的輸出中確認blkid
)。
6)重新命名舊/home
目錄:
# mv /home /home.old
7) 為SD卡建立一個新的掛載點:
# mkdir /home
此時,您應該可以手動掛載 SD 卡:
# mount /home
並查看 下的內容/home
與 下的內容相同/home.old
。請仔細檢查內容,包括主目錄和.ssh
目錄的所有權和權限,否則系統重新啟動時可能無法遠端登入。如果可能,啟動 sshd 服務並測試非特權帳戶的遠端登入。
如果一切正常,請重新啟動。當系統恢復時,檢查已安裝檔案系統中的可用空間:
# df
您還沒有任何可用空間/
,因為/home.old
仍在閒逛。您應該會在以下位置看到大量可用空間/home
:
# du -h /
# du -h /home
一旦您對一切看起來都很好感到滿意,您就可以擺脫/home.old
:
# cd /; rm -rf home.old
你rm /etc/fstab.safety
也可以,但它可能足夠小,離開它也沒什麼壞處。