2013年5月5日 星期日

硬碟空間快滿了 給它一個長大了還住得下的地方

050613取自硬碟空間快滿了 給它一個長大了還住得下的地方
最進有1台要依此方法執行,結果補上
...
可能最近在 ubuntu 11.10 安裝或下載 太多東西
常常出現 硬碟空間快滿了 的警示語
雖然 常把 一些 暫時無用的 檔案刪除 
但是 出現的頻率 太頻繁了
下決心 把 ubuntu 11.10 搬到一個大一點的 分割區

雖然 以前曾經 做過相同的 程序
但是 還是 需要 一面回憶 一面摸索
所以 這次 順便做個筆記 
也貼出來 跟大家分享

1. 假設 新舊 安裝 都只有 安裝在 一個分割區
/dev/sda5 # 原來的 分割區
/dev/sdb6 # 新的的 分割區
/dev/sdc7 # 暫時儲存備存檔的 分割區

2. 用 ubuntu 11.10 live CD 開機 進入 試用桌面

3. 查出上面 新舊分割區 的 UUID 查出來 備用
sudo ls -l /dev/disk/by-uuid/* | grep sda5 # 假設 查出來是 uuid_sda5
sudo ls -l /dev/disk/by-uuid/* | grep sdb6 # 假設 查出來是 uuid_sdb6

4. 安裝 fsarchiver # 備存程式套件
sudo apt-get install fsarchiver # universe 要打勾

5. 準備工作
sudo umount /dev/sda5 # 確保 /dev/sda5 沒被掛載
sudo umount /dev/sdb6 # 確保 /dev/sdb6 沒被掛載
sudo mount /dev/sdc7 /mnt # 準備把 暫時備存檔 儲存 在 /mnt

6. 開始從舊分割區備存
sudo fsarchiver savefs -v /mnt/1110backup.fsa /dev/sda5

7. 回存到新分割區
sudo fsarchiver restfs -v /mnt/1110backup.fsa id=0,dest=/dev/sdb6 # 注意 id=0 以後 均無空格

8. 卸載 /dev/sdc7 # /mnt 等一下 另有它用

9. 因 上面 7. 程序 把 /dev/sdb6 的 UUID 變成 與 /dev/sda5 一樣了 
....所以需要改回 uuid_sdb6
sudo tune2fs -U uuid_sdb6 /dev/sdb6 # 注意:-U 是 大寫

10. 以下 重新 安裝 grub 2 並且把 ubuntu 開機選單 改到 /dev/sdb6
10-1. sudo mount /dev/sdb6 /mnt # 把新分割區 掛載到 /mnt
10-2. sudo mount --bind /dev /mnt/dev
10-3. sudo mount --bind /dev/pts /mnt/dev/pts
10-4. sudo mount --bind /proc /mnt/proc
10-5. sudo mount --bind /sys /mnt/sys
10-6. sudo chroot /mnt # 把 根目錄換到 /mnt (即 /dev/sdb6)注意 此時是 root 權限
10-7. gedit /etc/fstab # 把掛載 / 目錄的 uuid 改爲 uuid_sdb6
10-8. grub-install /dev/sdb # 不必加 sudo 重新安裝 grub 2 到 /dev/sdb 可以是任何一顆硬碟
10-9. update-grub # 不必加 sudo 重建 ubuntu 開機選單 /boot/grub/grub.cfg 到 /dev/sdb6
10-10. update-initramfs -u -k all # 不必加 sudo 重建 新的開機程式檔案
10-11. exit # 回到 ubuntu 試用桌面 此時開始 要加 sudo
10-12. sudo umount /mnt/dev/pts
10-13. sudo umount /mnt/dev
10-14. sudo umount /mnt/sys
10-15. sudo umount /mnt/proc
10-16. sudo umount /mnt
10-17. sudo reboot # 重開機
10-18. 從 bios 設定 /dev/sdb 開機
10-19. 進入 ubuntu 桌面

11. 檢查
sudo df / # 如果出現 /dev/sdb6 表示成功
sudo df / # 如果出現 /dev/sda5 表示失敗

12. 以上程序 如果你發現 有疏漏或錯誤 歡迎更正

註1:有網友貼文
發現/dev/sda1與/dev/sdb1之uuid名稱相同
要兩個 裝置 uuid 相同 機率太小了
他沒說明如何得到的
如果 不是 回存檔案系統 造成 uuid 相同
那應該去買 樂透彩券 了

謝謝 sclo168 與 guestX 的貼文
讓我 不費吹灰之力 就抓到 恢復 uuid 的方法

註2. 如果你第一次安裝 ubuntu 11.10 後來發現 給它太大的空間了
也可以相同的程序 幫它搬到一個比較溫暖的 小空間

註3. 6. 與 7. 的指令 平常就可以拿來當 備存與回存的 用途

註4. 回存回原分割區的話 (即回存到 /dev/sda5 原來的 分割區)就不必更換 uuid
但是 重新安裝 grub 2 比較能夠 確保 開機沒問題 通常一定能開機

另參考取自目同作者
使用 fsarchiver 備存或回存 ubuntu
...
1. 假設 ubuntu 安裝在 三個分割區
"/boot" 掛載在 /dev/sda1 # 備存或回存時 不可掛載中
"/home" 掛載在 /dev/sda2 # 備存或回存時 不可掛載中
"/" 掛載在 /dev/sda3 # 備存或回存時 不可掛載中

備存檔案存到 /dev/sdb5 # 掛載到 /mnt
2. 用 ubuntu live CD 開機 # 最好版本與你安裝的 ubuntu 相同
3. sudo apt-get install fsarchiver # universe 套件庫 要打勾 #也可以從 軟體中心 安裝
4. sudo fdisk -l # 確認 1. 的分割區 代碼 無誤
5. sudo mount /dev/sdb5 /mnt
6. 備存:
sudo fsarchiver -v savefs /mnt/myBackup.fsa /dev/sda1 /dev/sda2 /dev/sda3
7. 回存:
7-1. 只回存 /home
sudo fsarchiver -v restfs /mnt/myBackup.fsa id=1,dest=/dev/sda2
7-2. 只回存 /boot 及 / 兩個
sudo fsarchiver -v restfs /mnt/myBackup.fsa id=0,dest=/dev/sda1 id=2,dest=/dev/sda3
7-3. 一次回存 三個 # 建議 三個都同時回存
sudo fsarchiver -v restfs /mnt/myBackup.fsa id=0,dest=/dev/sda1 id=1,dest=/dev/sda2 id=2,dest=/dev/sda3
7-4. 如果回存的原分割區 UUID 沒變更 也就是沒重新格式化過 回存後 就可以使用

沒有留言: