由於年少無知,在安裝ubuntu系統的時候,以為/temp是軟件包安裝時解壓的緩沖,所以給/temp留了10G,而以為/var只是記錄一些log而已,因此把僅存的1G分配給了它。隨后在安裝軟件時出現“設備空間不夠”的報錯,看了log才知道解壓的路徑是在/var里。進入/var目錄,發現/var目錄里也有/temp和/cache。
https://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html
http://blog.leanote.com/post/jesse/Linux%EF%BC%9A%E5%88%86%E5%8C%BA%E6%8C%87%E5%8D%97
因此需要擴大/var的分區大小,df -h命令可知/var掛載在/dev/sda8下,我當時也是把sda剩下的區域分配給它,所以是最后這一塊分區sda8。在網上查詢的話,大部分推薦的是一個工具Gparted(https://gparted.org/)。該工具可以在電腦運行時打開,也可以像啟動盤、winPE那樣從光盤或者u盤進入。電腦運行時打開的缺點在於一些磁盤正在被使用,因此可能某些分區存在數據讀寫的過程,尤其像/var這樣的目錄。因此我決定制作一個U盤版的。
1、首先是下載鏡像文件(https://gparted.org/download.php)
2、然后使用一個工具Tuxboot,來將鏡像文件燒錄進U盤中。因為Tuxboot不支持win10,因此我是在ubuntu中操作的。(https://gparted.org/liveusb.php#linux-setup)
在ubuntu中安裝Tuxboot很簡單(https://tuxboot.org/download/)。安裝完后打開的界面大致如下。因為已經下載了鏡像文件,所以選擇下面的diskimage,然后選擇iso文件,接着選擇要寫入的已格式化的U盤,然后點擊ok即可。但是值得注意的是,u盤必須被格式化為FAT32格式,否則即使寫入了鏡像文件也沒用。
最后將鏡像文件寫入U盤中成功的界面如下。
3、制作好U盤后,像平時裝系統那樣,U盤插入電腦,開機進入Gparted Live。前面是一些鍵盤映射和語言設置等等,我都使用默認的,即英語。(https://gparted.org/display-doc.php?name=gparted-live-manual)
界面如下圖所示,顯示了各個分區。
4、接下來開始對分區進行操作,已知最后一塊分區/dev/sda8被我掛載了/var,計划將/dev/sda3(90+G)保留50G,剩下的45G左右給/var。
接下來的操作主要是參考:https://gparted.org/display-doc.php?name=help-manual
①首先是選擇/dev/sda3,然后點擊Resize/Move。preceding是釋放前面的空間,而following是釋放后面的空間。
確定之后即可看到出現了一個45G的未分配分區,並且操作隊列多了Shrink(收縮)這個操作。
②接着選擇/var所在的分區/dev/sda8,點擊Copy,然后再選擇這個未分配的分區,選擇Paste。/sda8中的內容主要就是/var目錄。
復制到未分配分區后,再點擊Resize/Move,得到如下。現在Copy of /dev/sda8中的內容與/dev/sda8的內容是相同的,只是空間變為了45G。並且可以看到操作隊列多了Copy和Grow兩個操作。點擊Apply后操作隊列才會執行,上述操作才會生效,並且可以看到Copy of /dev/sda8會被命名為/dev/sda9。
(注:以Gparted Live形式進入,所有的分區都是not mounted狀態的,方便操作)
③由於/dev/sda8和它的復制副本內容相同,因此可以預見到進入系統會出現/var,會起沖突,因此應該需要將/dev/sda8的內容刪除。
刪除/var原來所在的/dev/sda8分區,然后得到一個未分配的分區(unallocated),在那里創建(create)一個分區,如下圖所示,在這里,分區的名字和label我都沒有輸入,然后創建出來。點擊上方的Apply(應用后),操作隊列中(如圖中紅框處)的操作便會執行。新分區(New Partition #1)便會變成/dev/sda8。
因為涉及到刪除分區,因此會彈出下圖提示,即刪除會使該分區的數據丟失。因此實際上最好是先做備份,可能會安全一些。但是我當時是沒有備份/var的。
④ 上述執行完后,關閉該窗口,然后雙擊桌面的Exit,關機(Shutdown)。
⑤Gparted分區后重啟,命令行輸入df -h,可看到/var的分區已經變為45G。
因此基本成功了,但是后面我發現了一個小缺陷,就是新創建的1.3G分區(也即原來的/var刪除后的那個分區)沒有掛載在哪個目錄下,因此像一個驅動器插在電腦上那樣,應該是還沒有mount上來,后面再去弄一下吧。