Free Space or Extend Space On Ubuntu

Saturday, July 11, 2020

Free Space or Extend Space On Ubuntu

當使用 ubuntu 系統時,發現出現下列訊息,則代表必須要做清理磁碟的動作

Low Disk space on "Filesystem root"
The volume "Filesystem root" has only 856.0 MB disk space remaining.



使用 bf 指令可以查看 目前 file system disk space 的使用情況
可以看到以下訊息,47 GB 大小的 /dev/sda2 使用率 99%

Sophie@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           794M  1.9M  792M   1% /run
/dev/sda2        47G   44G  501M  99% /
tmpfs           3.9G  216K  3.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/loop0      2.3M  2.3M     0 100% /snap/gnome-system-monitor/148
/dev/loop1      162M  162M     0 100% /snap/gnome-3-28-1804/128
/dev/loop3      256M  256M     0 100% /snap/gnome-3-34-1804/36
/dev/loop4      2.5M  2.5M     0 100% /snap/gnome-calculator/748
/dev/loop5       98M   98M     0 100% /snap/core/9289
/dev/loop2      584M  584M     0 100% /snap/intellij-idea-community/226
/dev/loop6      1.0M  1.0M     0 100% /snap/gnome-logs/100
/dev/loop8      161M  161M     0 100% /snap/gnome-3-28-1804/116
/dev/loop11     384K  384K     0 100% /snap/gnome-characters/550
/dev/loop10      55M   55M     0 100% /snap/core18/1705
/dev/loop7       55M   55M     0 100% /snap/gtk-common-themes/1502
/dev/loop9      141M  141M     0 100% /snap/gnome-3-26-1604/100
/dev/loop14     256M  256M     0 100% /snap/gnome-3-34-1804/33
/dev/loop17     2.5M  2.5M     0 100% /snap/gnome-calculator/730
/dev/loop12      97M   97M     0 100% /snap/core/9436
/dev/loop19     384K  384K     0 100% /snap/gnome-characters/539
/dev/loop18      63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop15     2.3M  2.3M     0 100% /snap/gnome-system-monitor/145
/dev/loop20     584M  584M     0 100% /snap/intellij-idea-community/232
/dev/loop13      55M   55M     0 100% /snap/core18/1754
/dev/loop22     1.0M  1.0M     0 100% /snap/gnome-logs/93
/dev/loop16     186M  186M     0 100% /snap/zaproxy/5
/dev/loop21     141M  141M     0 100% /snap/gnome-3-26-1604/98
/dev/sda1       946M  116M  765M  14% /boot
tmpfs           794M   16K  794M   1% /run/user/121
vmhgfs-fuse     224G  157G   68G  70% /mnt/hgfs
tmpfs           794M   32K  794M   1% /run/user/1000
Sophie@ubuntu:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x316dedfd

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048   2002943   2000896  977M 83 Linux
/dev/sda2         2002944 102006783 100003840 47.7G 83 Linux
/dev/sda3       102006784 104855551   2848768  1.4G 82 Linux swap / Solaris

以下列出三個方法來避免這個問題

Method 1: 清除不必要的套件、殘留檔

使用 autoclean 只會刪除 /var/cache/apt/archives/ 已經過期的 deb 套件檔

sudo apt-get autoclean

clean 會將 /var/cache/apt/archives/ 路徑內所有 deb 檔(安裝檔) 刪掉

sudo apt-get clean

不定時使用 autoremove,它會移除掉不再使用的 dependencies (指安裝某些軟體所需的 packages ),並且會顯示移除了哪些 packages

Sophie@ubuntu:~$ sudo apt-get autoremove
0 upgraded, 0 newly installed, 66 to remove and 0 not upgraded.
After this operation, 251 MB disk space will be freed.

Method 2: journalctl 指令

journalctl 是一個用來檢索 systemd journal 的指令,並且可透過不同的 option 來篩選想要的內容 (詳見 man journalctl 在此不多綴述)
systemd journal 為 log 管理系統,其保存了許多來自 kernal space 和 user space 的內容。
使用的是 ubuntu 18.04 虛擬機,並且下 journalctl 之後,會將我使用的情況紀錄下來

sophie@ubuntu:~$ journalctl 
-- Logs begin at Thu 2020-04-23 22:28:31 CST, end at Mon 2020-07-13 21:32:06 CST. --
 四  23 22:28:31 ubuntu-for-ais3 systemd[2034]: Starting D-Bus User Message Bus Socket.
 四  23 22:28:31 ubuntu-for-ais3 systemd[2034]: Listening on GnuPG cryptographic agent and passphrase cache (restricted).
 四  23 22:28:31 ubuntu-for-ais3 systemd[2034]: Reached target Timers.
... (還有201344行...此部份做省略)
...
...
 七  13 21:30:36 ubuntu dbus-daemon[1037]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'13 21:30:36 ubuntu systemd[1]: Started Network Manager Script Dispatcher Service.
 七  13 21:30:36 ubuntu nm-dispatcher[31819]: req:1 'dhcp4-change' [ens33]: new request (1 scripts)13 21:30:36 ubuntu nm-dispatcher[31819]: req:1 'dhcp4-change' [ens33]: start running ordered scripts...
 七  13 21:32:06 ubuntu systemd[1]: dev-disk-by\x2duuid-e49f06ad\x2d0d3a\x2d4498\x2d82a9\x2d58b2c9db3015.device: Job dev-disk-by\x2duuid-e49f06ad\x2d0d3a\x2d4498\x2d82
 七  13 21:32:06 ubuntu systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-e49f06ad\x2d0d3a\x2d4498\x2d82a9\x2d58b2c9db3015.device.
sophie@ubuntu:~$ journalctl --disk-usage
Archived and active journals take up 840.3M in the file system.

由於佔用的空間實在太大,因此使用了 --vacuum-time=3d option,僅保留過去三天的紀錄
清除完成後,還是有 5000 行左右,真的很可怕 XD

sophie@ubuntu:~$ sudo journalctl --vacuum-time=3d
Vacuuming done, freed 792.2M of archived journals from /var/log/journal/0c1a867975654e11ab0fa8ab9b00dc0f.
Vacuuming done, freed 0B of archived journals from /var/log/journal.

清除完後,從原本 840 MB 減少成 48 MB

sophie@ubuntu:~$ journalctl --disk-usage
Archived and active journals take up 48.0M in the file system.

Method 3: Gparted 硬碟分割工具

Gparted (GNOME Partition Editor) 為硬碟分割軟體,ubuntu 系統有內建,因此無須額外下載。
假如檔案系統還有其他的額外空間,便可使用此工具來做空間延伸。

目前的硬碟分割配置

對 linux-swap 右鍵點選 Swapoff

對 linux-swap 右鍵點選 delete

在 /dev/sda2 (黃色區塊)右鍵點選 Resize/Move

在 New Size(MiB) 欄位輸入要改成多大的空間
每個人系統能夠使用的空間不同,這裡僅供參考。
在此以 76 GB 為例,也就是 76*1024 = 77824 建議所輸入的大小以 1024 MiB 為單位
切記要預留空間給原先的 linux-swap 使用,個人會留 3~4 GB 的大小
完成後點選 Resize

之後在 unallocated 點選右鍵 New 來新增分割配置

預設會幫你填入剩下所要分配的空間大小
切記 File System 選擇 linux-swap 在點選 add

查看下面的 information,確認是否前述步驟都有確實完成,
一旦分割不好容易發生不可復原的情況
最後在點選上面的綠色勾勾(Apply All Opeation) 即可完成硬碟分割

Reference

LinuxLinuxUbuntudisk management

MQTT 教學筆記

ASIS CTF 2020 pwn Full Protection Writeup