在 USB 上合併來自不同 dev/sdb 的兩個分區
所以我在我的 USB 上安裝了 Kubuntu,但問題是我錯誤地格式化/分割了磁碟空間。這導致我的 Linux 安裝幾乎沒有可用的磁碟空間,而我剩餘的磁碟空間被浪費在我並沒有真正使用的“USB 儲存”分區上。
所以我想知道重新格式化 sdb1 分區的最佳方法是什麼,以便我可以用作 sdb2 分區的額外空間。
移動分區將是下層區域的一大痛苦。這裡的問題是引導是如何發生的。我懷疑這是 SDB5 512 兆區域在做的。可能還有一些引導程式碼告訴系統從 sdb5 啟動。
但這意味著該引導塊中的某些內容“知道”Linux 安裝在 sdb6 中,因此您不敢更改它。
最簡單的出路(兩個 USB 設備)
獲取一個新的 USB 密鑰並插入兩者。從 Linux 啟動。以相同的方式格式化新的 USB 密鑰,但使用“更好”的分區。然後將數據從舊密鑰複製到新密鑰。驗證它是否有效。你完成了!
您可以做什麼(僅使用一個 USB 設備)
如您所知,Linux 有掛載點!你可以混合搭配這些!所以:
- 備份任何重要的內容
- 在 Linux 中啟動並以單一(“恢復”)模式以root身份登錄
- 通過將其重新格式化為 ext4 來破壞 sdb1 分區的內容:
mkfs.ext4 /dev/sdb1
- 現在檢查您的 Linux 安裝並查看佔用空間的內容:
du -sk /*2> /dev/null | 排序 -n
例如,在我的測試系統上(經過幾秒鐘的磁碟掃描):
...smaller fry removed... 12220 /run 13320 /sbin 18992 /etc 125244 /boot 873108 /home 873324 /lib 1154900 /opt 1537488 /root 4648100 /usr 15088048 /var
所以我主要將我的系統用於/var。完美的。我將移動 /var。
- 將新格式化的 sdb1 掛載到 /mnt
掛載 /dev/sdb1 /mnt
- 將“/var”複製到“/mnt”(所以,在開始之前檢查你是否安裝了rsync)
rsync -a /var /mnt
- 現在(這是在“單一模式”、文本模式啟動、所有服務停止的情況下應該做的;可能你甚至無法做到這一點)
mv /var /oldvar # 所以如果需要可以返回,將 oldvar 恢復為 var
- 重新創建一個新的 /var
mkdir /var
- 檢查 oldvar 的權限並將它們複製到新的 /var
- 在 /etc/fstab 的掛載點列表中添加一行 sdb1:
echo “/dev/sdb1 /var ext4 auto 0 2” >> /etc/fstab
現在每次啟動時,sdb1 分區都會連結到 /var,您將能夠在上面儲存多達 17 GiB 的數據。
如果你現在重新啟動,一切都應該像以前一樣工作,你會看到一個完整的 /var,並且 sdb6 上根本沒有可用空間,因為它被 oldvar 佔用了。徹底檢查一切正常。確定後,刪除 oldvar 目錄及其所有子目錄。
注意:我的範例使用 /var。您可能會看到您需要移動 /home。一樣。或者您可以更深入地了解/var中佔用空間的內容:
du -sk/var/*2>/dev/null | 排序 -n
就我而言,我看到 /var/www 佔據了 90% 的空間。所以我不需要重新定位整個/var,我可以使用“/var/www”完成上述步驟,仍然可以獲得90%的好處。現在我也不需要登錄到單一模式或重新啟動,因為在我的系統上 /var/www 肯定只由 Apache HTTP 伺服器使用,我可以在不重新啟動的情況下停止和重新啟動(而 /var/log、/var /run、/var/mail 等可能正在使用並且需要單一模式):
apache2ctl stop rsync -a /var/www /mnt mv /var/www /var/oldwww mkdir /var/www # Set up the same ownership and permissions of the old /var/www chown www-data:users /var/www chmod 775 /var/www # Compare the two ls lines ls -la /var | grep www # If ownership and pemissions are OK go on echo "/dev/sdb1 /var/www ext4 auto 0 2" >> /etc/fstab # Free up sdb1 from mnt umount /mnt # Check whether the automount from fstab works mount /var/www # Now everything is as before, www is there and useable, it's just on sdb1. apache2ctl start # Now verify everything works again. IF it works, oldwww is useless. rm -rf /var/oldwww # kill the original www
(我也可以直接在新的 /var/www 上創建,安裝它,然後將 oldww 同步到 www,根本不涉及 /mnt)。