場景介紹
最近公司的項目出現無響應的問題,排查后發現是磁盤已滿導致的,df -h 顯示已占用達到了100%。幸好服務器還有一塊數據盤,之前已作為mysql的數據目錄,現在打算再把docker也遷移至數據盤。
在這里和大家分享下經歷,難免會有些許錯誤,請各位看官不吝賜教。
方案介紹
考慮了下,決定采用軟連接的方式解決,好處是能保證docker原有配置的情況下將數據目錄遷移至數據盤,不修改配置文件也意味着降低誤操作的概率。更好的是相比於直接掛載磁盤方案,一個數據盤可以為多個應用服務,管理十分方便,而且實際操作只需幾條命令即可。
理論上任何軟件的數據遷移都可以用軟連接的方式解決。在這之前的mysql也是使用軟連接解決的。
方案實施
默認情況下Docker的存放位置為:/var/lib/docker
可以通過下面命令查看具體位置:
docker info | grep "Docker Root Dir"
- 首先停掉Docker服務:
systemctl stop docker
- 然后根據上面查到的路徑,移動整個/var/lib/docker目錄到數據盤的目的路徑:
mv /var/lib/docker /home/docker
必須使用mv命令,cp會丟失權限信息,可能會導致意想不到的bug。
3. 加入軟連接
ln -s /home/docker /var/lib/docker
先看下/home/docker下的目錄,確定掛載成功在啟動docker,即使掛載有問題,無礙,也可停止停止docker后重新操作
4. 啟動docker
systemctl start docker
這時候啟動Docker時發現存儲目錄依舊是/var/lib/docker,但是實際上是存儲在數據盤的。