no space left on device 解決磁盤空間

今天在檢查gitlab備份狀況時,發現scp過程當中提示no space left on device,這意味着我安裝着gitlab的服務器沒有空間了html

方法

1. 使用命令 : du -sh * 它用來查看文件或目錄所佔用的磁盤空間的大小。
2. 進入佔用空間比較大的文件夾,刪除
複製代碼

命令

選項 做用
-h 以K,M,G爲單位,提升信息的可讀性
-a 顯示目錄中個別文件的大小
-s 僅顯示總計
-c 除了顯示個別目錄或文件的大小外,同時也顯示全部目錄或文件的總和
-l 重複計算硬件鏈接的文件

Linux下各個目錄的做用及內容

首先你得知道linux每一個目錄下的做用和內容,你才能夠刪除文件vue

選項 做用
/bin 可執行二進制文件的目錄,如經常使用的命令ls、tar、mv、cat等
/boot 放置linux系統啓動時用到的一些文件。/boot/vmlinuz 爲 linux 的內核文件,以及 /boot/gurb。建議單獨分區,分區大小100M便可
/dev 存放linux系統下的設備文件,訪問該目錄下某個文件,至關於訪問某個設備,經常使用的是掛載光驅 mount /dev/cdrom /mnt
/etc 系統配置文件存放的目錄,不建議在此目錄下存放可執行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X十一、/etc/sysconfig、/etc/xinetd.d修改配置文件以前記得備份
/home 系統默認的用戶家目錄,新增用戶帳號時,用戶的家目錄都存放在此目錄下,~表示當前用戶的家目錄,~edu 表示用戶 edu 的家目錄。建議單獨分區,並設置較大的磁盤空間,方便用戶存放數據
/lib 系統使用的函數庫的目錄,程序在執行過程當中,須要調用一些額外的參數時須要函數庫的協助,比較重要的目錄爲 /lib/modules
/lost+fount 系統異常產生錯誤時,會將一些遺失的片斷放置於此目錄下,一般這個目錄會自動出如今裝置目錄下。如加載硬盤於 /disk 中,此目錄下就會自動產生目錄 /disk/lost+found
/mnt: /media 光盤默認掛載點,一般光盤掛載於 /mnt/cdrom 下,也不必定,能夠選擇任意位置進行掛載
/opt 給主機額外安裝軟件所擺放的目錄。如:FC4使用的Fedora 社羣開發軟件,若是想要自行安裝新的 KDE 桌面軟件,能夠將該軟件安裝在該目錄下。之前的 Linux 系統中,習慣放置在 /usr/local 目錄下
/proc 此目錄的數據都在內存中,如系統核心,外部設備,網絡狀態,因爲數據都存放於內存中,因此不佔用磁盤空間,比較重要的目錄有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root 系統管理員root的家目錄,系統第一個啓動的分區爲 /,因此最好將 /root和 /放置在一個分區下
/sbin 放置系統管理員使用的可執行命令,如fdisk、shutdown、mount 等。與 /bin 不一樣的是,這幾個目錄是給系統管理員 root使用的命令,通常用戶只能"查看"而不能設置和使用
/tmp 通常用戶或正在執行的程序臨時存放文件的目錄,任何人均可以訪問,重要數據不可放置在此目錄下
/srv 服務啓動以後須要訪問的數據目錄,如 www 服務須要訪問的網頁數據存放在 /srv/www 內
/usr 應用程序存放目錄,/usr/bin 存放應用程序,/usr/share 存放共享數據,/usr/lib 存放不能直接運行的,倒是許多程序運行所必需的一些函數庫文件。/usr/local: 存放軟件升級包。/usr/share/doc: 系統說明文件存放目錄。/usr/share/man: 程序說明文件存放目錄,使用 man ls 時會查詢 /usr/share/man/man1/ls.1.gz 的內容建議單獨分區,設置較大的磁盤空間
/var 放置系統執行過程當中常常變化的文件,如隨時更改的日誌文件 /var/log,/var/log/message:全部的登陸文件存放目錄,/var/spool/mail:郵件存放的目錄,/var/run:程序或服務啓動後,其PID存放在該目錄下。建議單獨分區,設置較大的磁盤空間

排查

既然出現了問題,那麼就要去解決node

gitlab-backup@gitlabbackup-System-Product-Name:~$ df -h
文件系統        容量  已用  可用 已用% 掛載點
udev            3.9G     0  3.9G    0% /dev
tmpfs           785M  9.4M  776M    2% /run
/dev/sda1       103G   93G  4.5G   96% /
tmpfs           3.9G  192K  3.9G    1% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
tmpfs           785M   32K  785M    1% /run/user/108
tmpfs           785M     0  785M    0% /run/user/1000

複製代碼

進入var目錄下,查看每一個子目錄的大小,發現是僅僅是opt就佔有了72Glinux

gitlab-backup@gitlabbackup-System-Product-Name:/var$ sudo du -sh *
[sudo] gitlab-backup 的密碼: 
4.8M	backups
576M	cache
4.0K	crash
295M	lib
4.0K	local
0	lock
41M	log
4.0K	mail
4.0K	metrics
72G	opt
0	run
4.0K	snap
52K	spool
68K	tmp

複製代碼

進入opt/gitlab目錄下,查看每一個子目錄的大小,發現backups就佔有了66Gnginx

gitlab-backup@gitlabbackup-System-Product-Name:/var$ cd opt/
gitlab-backup@gitlabbackup-System-Product-Name:/var/opt$ sudo du -sh *
72G	gitlab
gitlab-backup@gitlabbackup-System-Product-Name:/var/opt$ cd gitlab/
gitlab-backup@gitlabbackup-System-Product-Name:/var/opt/gitlab$ sudo du -sh *
4.0K	auto_recovery_backup.sh
4.0K	auto_remove_backup.sh
66G	backups
4.0K	bootstrapped
8.0K	gitaly
6.1G	git-data
8.0K	gitlab-ci
8.0K	gitlab-monitor
5.9M	gitlab-rails
8.0K	gitlab-shell
12K	gitlab-workhorse
8.0K	log
40K	logrotate
48K	nginx
8.0K	node-exporter
12K	postgres-exporter
265M	postgresql
126M	prometheus
4.0K	public_attributes.json
124K	redis
4.0K	trusted-certs-directory-hash
複製代碼

進入backups目錄下,查看每一個子目錄的大小,發現tmp就佔有了60G,其中1560290789_2019_06_12_10.7.2-ee_gitlab_backup.tar是備份包git

gitlab-backup@gitlabbackup-System-Product-Name:/var/opt/gitlab/backups$ sudo du -sh *
6.2G	1560290789_2019_06_12_10.7.2-ee_gitlab_backup.tar
112K	log
60G	tmp
複製代碼

進入tmp目錄下,發現default-repositories好多好大github

gitlab-backup@gitlabbackup-System-Product-Name:/var/opt/gitlab/backups/tmp$ sudo du -sh *
4.0K	artifacts.1558513269
4.0K	artifacts.1559544302
4.0K	artifacts.1559545677
4.0K	artifacts.1559551247
4.0K	artifacts.1559552081
4.0K	artifacts.1559552605
4.0K	artifacts.1559553987
4.0K	artifacts.1559644786
4.0K	artifacts.1559869515
4.0K	artifacts.1560131969
4.0K	artifacts.1560307146
4.0K	builds.1558513269
4.0K	builds.1559544302
4.0K	builds.1559545677
4.0K	builds.1559551247
4.0K	builds.1559552081
4.0K	builds.1559552605
4.0K	builds.1559553987
4.0K	builds.1559644786
4.0K	builds.1559869515
4.0K	builds.1560131969
4.0K	builds.1560307146
4.0K	default-repositories.old.1558513131
6.1G	default-repositories.old.1559544154
6.1G	default-repositories.old.1559545520
6.1G	default-repositories.old.1559551023
6.1G	default-repositories.old.1559551872
6.1G	default-repositories.old.1559552402
6.1G	default-repositories.old.1559553774
6.1G	default-repositories.old.1559644571
6.1G	default-repositories.old.1559869258
4.7G	default-repositories.old.1560131753
6.1G	default-repositories.old.1560218544
33M	default-repositories.old.1560306929,QCON,雲棲社區,騰訊雲,架構分享資料

4.0K	lfs.1558513269
4.0K	lfs.1559544302
4.0K	lfs.1559545677
4.0K	lfs.1559551247
4.0K	lfs.1559552081
4.0K	lfs.1559552605
4.0K	lfs.1559553987
4.0K	lfs.1559644786
4.0K	lfs.1559869515
4.0K	lfs.1560131969
4.0K	lfs.1560307146
4.0K	pages.1558513269
8.0K	pages.1559544302
8.0K	pages.1559545677
8.0K	pages.1559551247
8.0K	pages.1559552081
8.0K	pages.1559552605
8.0K	pages.1559553987
8.0K	pages.1559644786
8.0K	pages.1559869515
8.0K	pages.1560131969
8.0K	pages.1560307146
4.0K	uploads.1558513269
5.7M	uploads.1559544302
5.7M	uploads.1559545677
5.7M	uploads.1559551247
5.7M	uploads.1559552081
5.7M	uploads.1559552605
5.7M	uploads.1559553987
5.7M	uploads.1559644786
5.7M	uploads.1559869515
5.7M	uploads.1560131969
5.7M	uploads.1560307146

複製代碼

鑑於tmp存放的臨時文件,那麼就乖乖放進垃圾箱中吧,給gitlab騰位子面試

sudo rm -rf tmp
複製代碼

避免gitlab恢復過程產生tmp,就寫個定時刪除tmp的命令redis

# 仇飛鴻編輯於2019-6-12 添加定時任務,天天上午10點,自動刪除var/opt/gitlab/backups/tmp
0  10   * * *   root    rm -rf /var/opt/gitlab/backups/tmp

複製代碼

大功告成sql

參考文獻

Linux 下各個目錄的做用及內容

no space left on device 磁盤空間不足緣由及排查方法

Linux du命令

最後,別忘了給這個項目點一個star哦,謝謝支持。

blog

下面是小編的公衆號

一個學習編程技術的公衆號。天天推送高質量的優秀博文、開源項目、實用工具、面試技巧、編程學習資源等等。目標是作到我的技術與公衆號一塊兒成長。歡迎你們關注,一塊兒進步,走向全棧大佬的修煉之路

相關文章
相關標籤/搜索