zfsjlll

zfsjlll

趁着年轻,好好犯病

清理VPS存儲空間

返回

問題#

最近在虛擬機上存儲文件時發現預留的 10G 虛擬磁盤竟然佔滿了,於是來清理一下空間。

步驟#

  1. 查看磁盤佔用情況
sudo df -h

圖片

可以發現 /dev/sda1 空間已經使用 7.4G, 這是清理後的容量。

/dev/sda1 是 Linux 中的一個塊設備文件,通常用於表示硬盤分區。在 Linux 中,硬盤通常被表示為 /dev/sd* 的形式,其中 * 表示一個小寫字母,例如 /dev/sda/dev/sdb 等。

當一個硬盤被分成多個分區時,每個分區都會被分配一個設備文件,用於表示分區。其中,/dev/sda1 表示第一個分區,/dev/sda2 表示第二個分區,以此類推。

  1. 查看硬盤中大文件
sudo du -ah . | sort -rh | head -n 10

du 命令可以查看指定目錄或文件的磁盤使用情況,包括文件大小和目錄大小等。可以使用 -h 選項以人類可讀的方式顯示文件大小。例如,以下命令將在當前目錄中查找並列出所有文件和目錄的大小,並按照大小排序:

在這個命令中,-a 表示列出所有文件和目錄的大小,-h 表示以人類可讀的方式顯示文件大小,. 表示當前目錄,可以改為你想查詢的目錄名,sort -rh 表示按照大小逆序排序,head -n 10 表示只顯示前 10 條結果。

圖片

  1. 分別使用命令清理大文件

發現/usr佔用較多,但是經過清理之後發現容量幾乎沒有變化,可以考慮跳過。同時目錄包含了大量的用戶安裝的程序、庫文件和其他資源,因此清理該目錄需要謹慎操作,以免意外刪除了重要文件,導致系統出現問題。接下來講解命令的使用。

  • 刪除不需要的語言文件:
sudo apt autoclean
  • 刪除所有不再需要的包:
sudo apt autoremove --purge
  • 刪除不再需要的依賴項和配置文件:
sudo apt clean

接下來清理 /var

varvariable(變量) 的縮寫,這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌文件。

. /lib/docker/overlay2 目錄是 Docker 存儲驅動程序中的一個重要目錄,用於存儲 Docker 鏡像和容器的文件系統層。在使用 Docker 時,該目錄的大小可能會逐漸增加,佔用大量磁盤空間。刪除不需要的 Docker 鏡像和容器,或者使用 Docker 的清理命令來清理無用的數據。以下是一些常用的 Docker 清理命令示例:

  • 列出所有已停止的容器:
sudo docker ps -a -q -f status=exited
  • 刪除所有已停止的容器:
sudo docker rm $(sudo docker ps -a -q -f status=exited)
  • 列出所有未被使用的鏡像:
sudo docker images -q -f dangling=true
  • 刪除所有未被使用的鏡像:
sudo docker rmi $(sudo docker images -q -f dangling=true)
  • 清理所有未被使用的數據:
sudo docker system prune -a --volumes

請注意,在清理 Docker 數據時,最好備份一下需要保留的 Docker 鏡像和容器,以防誤刪重要數據。

使用 logrotate 工具來自動輪換和刪除舊日誌文件。logrotate 工具可以配置為按時間、大小或其他條件來輪換和刪除日誌文件,以保持日誌文件的大小和數量在可控範圍內。

  • 刪除一個大文件,可以使用以下命令:
sudo truncate -s 0 /var/log/your_large_file.log
  • 此命令將把 /var/log/your_large_file.log 文件的大小截斷為零,即清空該文件。然後運行 logrotate 命令來輪換和歸檔舊日誌文件:
sudo logrotate -f /etc/logrotate.conf

-f 參數將強制 logrotate 立即執行輪換操作,即使當前不需要輪換文件。/etc/logrotate.conflogrotate 的默認配置文件路徑,可以根據需要使用不同的配置文件路徑。

請注意,在使用 truncate 命令時,最好備份一下將要清空的文件,以防萬一需要恢復文件內容。

使用 journalctl 工具來清理舊的日誌消息和數據。journalctl 工具可以按時間、優先級、來源和關鍵詞等過濾日誌消息,以及限制日誌消息的數量和時間範圍。以下是一些常用的 journalctl 命令示例:

  • 顯示最近的 100 條系統日誌信息:
sudo journalctl -n 100
  • 顯示某個服務的日誌信息:
sudo journalctl -u your_service_name
  • 顯示某個時間範圍內的日誌信息:
sudo journalctl --since "2022-01-01 00:00:00" --until "2022-02-01 00:00:00"
  • 顯示某個進程的日誌信息:
sudo journalctl _PID=your_process_id

清理舊的日誌消息和數據,可以使用以下命令:

sudo journalctl --vacuum-size=100M

該命令將清理所有不再需要的日誌消息和數據,並將日誌文件大小限制為 100M。您可以根據需要調整 --vacuum-size 參數的值。請注意,此命令僅清理系統日誌。

總結#

經過如上操作就可以為你的 VPS 或者虛擬機清理出一些空間了#

參考文獻#

Linux 系統目錄結構

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。