今天跑過來加班,剛寫好一個接口,準備啟動服務測試的時候,結果報錯啟動不了。報錯說是redis服務no space left on device(redis是測試環(huán)境,使用docker管理。
1.進測試服務器中,使用
docker logs --tail="200" ${實例id}
命令查看redis終端日志,結果依然是打印了一堆no space left on device,無果,沒有定位到任何問題點。
2.既然是磁盤空間不夠,那么使用
df -h
查看一下所有掛載的磁盤空間使用情況。
發(fā)現(xiàn)/var/lib/docker/overlay2把根目錄掛載的磁盤全部寫滿了,類似下面這種
image-20201018141737092.png
也就是說,/var/lib/docker這個路徑下的文件把咱們的根目錄寫滿了。定位到了問題點。
那么咱們就可以開始制定對應的解決方案了。
首先,咱們看到根目錄下的Size是16G,明顯是不能繼續(xù)支撐后續(xù)服務運行的,而且還會影響操作系統(tǒng)的運行。/root掛載的磁盤還有很大的余量,63G足夠保障docker服務的后續(xù)增長。那么就決定把/var/lib/docker挪到/root下面。
3.停止docker服務
systemctl stop docker
4.創(chuàng)建新的docker工作目錄
mkdir -p /root/dockerlib
這個目錄可以自定義,但是一定要保證在/root里面
5.遷移/var/lib/docker
rsync -avz /var/lib/docker /root/dockerlib/
6.配置devicemapper.conf
# 不存在就創(chuàng)建
sudo mkdir -p /etc/systemd/system/docker.service.d/
# 不存在就創(chuàng)建
sudo vi /etc/systemd/system/docker.service.d/devicemapper.conf
在文件中添加
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/root/dockerlib
7.重啟docker服務
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
8.確認是否配置成功
docker info

image-20201018143022117.png
9.重新啟動所有容器后,確認無誤。即可刪除/var/lib/docker里面所有文件。
10.處理完畢后,執(zhí)行
df -h

image-20201018143336504.png
根目錄和/root磁盤空間都處于一個相對理想狀態(tài)。