Docker no space left on device

Docker 啓動拋出異常:設備空間不足

Error response from daemon: Cannot start container xxx: write /var/lib/docker/containers/xxxxx/hash281480960: no space left on device
Error: failed to start containers: [xxx]

1.開始排查:df -h

[root@iZbp13ks1ssZ root]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   40G     0 100% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/vdb1       493G  289G  179G  62% /mnt

如圖系統盤40G被佔用完,基本可以確定啓動異常原因和系統盤有關係

2.繼續排查:docker info

[root@iZbp13ks1ssevbZ bin]# docker info
Containers: 1
Images: 28
Storage Driver: devicemapper
 Pool Name: docker-252:1-787932-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.225 GB
 Data Space Total: 107.4 GB
 Data Space Available: 16.78 MB
 Metadata Space Used: 2.073 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 16.78 MB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.117-RHEL6 (2016-12-13)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-573.22.1.el6.x86_64
Operating System: <unknown>
CPUs: 8
Total Memory: 15.58 GiB
Name: iZbp13ks1ssevb4354g66kZ
ID: CYHH:DY6E:AMHX:YIR5:J4ZZ:NVPV:MRFI:REPX:CYOV:CAY6:PCU3:3ZTA

如圖可以分析出可用磁盤容量 Data Space Available、 Metadata Space Available 僅剩 16.78 MB,所有導致沒有足夠的空間進行加載啓動docker鏡像。

3.解決辦法

a.清理無效數據文件,釋放磁盤空間(我這邊採用的清除日誌,大概35G日誌)

  找到容器位置,查看容器下文件夾總大小,大概34G,很明顯不正常

[root@iZbp13ks1ssevb4354g66kZ docker]# cd /var/lib/docker/containers/xxxxx/
[root@iZbp13ks1ssevb4354g66kZ xxxxx]# du -h
34G	.

 具體查看哪一個文件佔用的較大空間

[root@iZbp13ks1ssevb4354g66kZ xxxxx]# ll -H
總用量 35472804
-rw------- 1 root root 36324085760 1月  10 10:07 xxxxx-json.log
-rw-r--r-- 1 root root           0 1月  10 10:20 config.json
-rw------- 1 root root           0 1月  10 10:18 hash021440780
-rw------- 1 root root           0 1月  10 10:20 hash281480960
-rw------- 1 root root           0 1月  10 10:10 hash330376280
-rw------- 1 root root           0 1月  10 10:13 hash415263050
-rw------- 1 root root           0 1月  10 10:19 hash741158942
-rw------- 1 root root           0 1月  10 10:09 hash834270948
-rw------- 1 root root          71 1月  10 10:09 hash942917046
-rw-r--r-- 1 root root         658 1月   7 09:16 hostconfig.json
-rw-r--r-- 1 root root          13 1月   7 09:16 hostname
-rw-r--r-- 1 root root         177 1月  10 10:20 hosts
-rw-r--r-- 1 root root           0 1月  10 10:09 resolv066146547
-rw-r--r-- 1 root root           0 1月  10 10:13 resolv093990945
-rw-r--r-- 1 root root           0 1月  10 10:09 resolv319454621
-rw-r--r-- 1 root root           0 1月  10 10:10 resolv568725975
-rw-r--r-- 1 root root           0 1月  10 10:18 resolv593039099
-rw-r--r-- 1 root root           0 1月  10 10:19 resolv620168933
-rw-r--r-- 1 root root           0 1月  10 10:20 resolv716462175
-rw-r--r-- 1 root root          86 1月   7 09:16 resolv.conf
-rw------- 1 root root          71 1月   7 09:16 resolv.conf.hash

最終定位到xxxxx-json.log文件,經 vi 查閱該日誌可清除,rm 清除後 docker info

[root@iZbp13ks1ssevb4354g66kZ xxxxx]# docker info
Containers: 1
Images: 28
Storage Driver: devicemapper
 Pool Name: docker-252:1-787932-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.225 GB
 Data Space Total: 107.4 GB
 Data Space Available: 36.34 GB
 Metadata Space Used: 2.073 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.145 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.117-RHEL6 (2016-12-13)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-573.22.1.el6.x86_64
Operating System: <unknown>
CPUs: 8
Total Memory: 15.58 GiB
Name: iZbp13ks1ssevb4354g66kZ
ID: CYHH:DY6E:AMHX:YIR5:J4ZZ:NVPV:MRFI:REPX:CYOV:CAY6:PCU3:3ZTA

 如圖可以磁盤可以空間爲 36.34 GB,查看系統磁盤使用率 df -h

 

[root@iZbp13ks1ssevb4354g66kZ xxxxx]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  5.5G   32G  15% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/vdb1       493G  289G  179G  62% /mnt

 如圖系統盤使用率達到15%,足夠空間啓動容器,docker start xxxxx 正常。

此方法比較low,但也是及時恢復系統的一個辦法,系統恢復正常之後可再進行目錄更換,增加磁盤空間等

b.修改docker配置文件,修改data路徑

  待後續...

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章