前言
服務(wù)器Centos操作系統(tǒng),空間不足的問題處理了三次了,決定把它的解決思路和處理過程記錄下來。服務(wù)器空間不足是一個經(jīng)常會遇到的問題,尤其是在大型應(yīng)用程序和網(wǎng)站上。當(dāng)服務(wù)器空間不足時,應(yīng)該采取一些步驟來處理和解決這個問題。以下記錄最近這次的解決方案和思路(原因:docker占用空間太大了)
現(xiàn)象
服務(wù)器空間不足會導(dǎo)致以下一些現(xiàn)象:
- 應(yīng)用程序無法運(yùn)行:當(dāng)服務(wù)器空間不足時,某些應(yīng)用程序可能會無法正常啟動或運(yùn)行,因?yàn)檫@些程序需要在硬盤上讀取或?qū)懭霐?shù)據(jù)。
- 文件上傳失敗:如果服務(wù)器的空間已經(jīng)耗盡,用戶可能會無法上傳文件,因?yàn)闆]有足夠的空間可供存儲。
- 數(shù)據(jù)庫出錯:當(dāng)服務(wù)器空間不足時,數(shù)據(jù)庫可能會出現(xiàn)錯誤,因?yàn)閿?shù)據(jù)庫需要寫入和讀取數(shù)據(jù)到磁盤上。
- 日志文件無法寫入:當(dāng)服務(wù)器空間不足時,系統(tǒng)和應(yīng)用程序的日志文件可能無法寫入,這將使得故障排查和系統(tǒng)運(yùn)行監(jiān)控變得困難。
- 系統(tǒng)崩潰:如果服務(wù)器的空間不足并且無法處理數(shù)據(jù)和任務(wù),可能會導(dǎo)致系統(tǒng)崩潰或宕機(jī)。
因此,保持足夠的服務(wù)器空間是確保服務(wù)器運(yùn)行穩(wěn)定和高效的重要因素。
解決過程
一、服務(wù)器空間不足問題定位
- 登錄服務(wù)器 ,可以通過運(yùn)行一些命令,如
df -h
和du -h
來檢查服務(wù)器上的磁盤使用情況,查看哪些目錄或文件夾占用了大量的空間。 - 拓展命令
df -hT
還可以看到文件系統(tǒng)的Type類型,比如:-
ext2/ext3/ext4
: Linux 的擴(kuò)展文件系統(tǒng),分別為第二、三和第四個擴(kuò)展文件系統(tǒng)的版本。它們提供了可靠的磁盤存儲和文件系統(tǒng)功能。 -
tmpfs
: 提供了基于內(nèi)存的臨時文件系統(tǒng),數(shù)據(jù)存儲在內(nèi)存中而不是磁盤上,用于臨時存儲臨時文件。 -
xfs
:一種高性能的文件系統(tǒng),廣泛用于許多 Linux 發(fā)行版。支持較大的文件系統(tǒng)和文件的快速訪問。 -
btrfs
:全稱 B-tree 文件系統(tǒng),是一個現(xiàn)代的復(fù)制文件系統(tǒng),具有快照、壓縮、回滾等高級功能。 -
nfs
: Network File System 的簡稱,一種用于在網(wǎng)絡(luò)上共享文件的分布式文件系統(tǒng)協(xié)議。它允許在不同的計算機(jī)之間共享文件和目錄。 -
overlay
:是一種特殊的文件系統(tǒng)類型,它通常用于 Docker 容器等容器化環(huán)境中。等等~
-
1 [root@luntek tmp]# df -h
2 Filesystem Size Used Avail Use% Mounted on
3 devtmpfs 7.8G 0 7.8G 0% /dev
4 tmpfs 7.8G 0 7.8G 0% /dev/shm
5 tmpfs 7.8G 827M 7.0G 11% /run
6 tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
7 /dev/vda1 40G 38G 0 100% /
8 /dev/vdb 656G 154G 469G 25% /mnt
9 tmpfs 1.6G 0 1.6G 0% /run/user/0
10 overlay 40G 38G 0 100% /var/lib/docker/overlay2/0e4870d22fb 1c79fd3c0b8ad2023475715a5a56c05b1900de76070d0a80e3001/merged
...
- 抓住主要的物理設(shè)備,不用關(guān)心其他邏輯設(shè)備, 物理設(shè)備?般掛載在/dev目錄下
/dev/vda1 40G 38G 0 100% /
/dev/vdb 656G 154G 469G 25% /mnt
overlay 40G 38G 0 100% /var/lib/docker/overlay2/0e4870d22fb 1c79fd3c0b8ad2023475715a5a56c05b1900de76070d0a80e3001/merged
觀察到/
根目錄空間已經(jīng)使用100%, 雖然名義上還有2G空間 ,但是這些空間可能是被內(nèi)存交換分區(qū)占 用 ,所以不用拘泥于具體數(shù)字, 如果出現(xiàn)100%即可以確認(rèn)。
注意
:如果設(shè)備空間嚴(yán)重不足, 可能會導(dǎo)致正常命令?也無法執(zhí)?, 此時可以先試試下面的釋放空間思路
二、分析空間占用的原因
使用du
命令來逐層分析文件夾所占用的空間大小。其中,-d 1
表示只分析當(dāng)前目錄下的一級子目錄,-h
表示以易讀的方式顯示結(jié)果(例如使用KB、MB等單位),還可以額外添加參數(shù)-p L
表示只分析L級子目錄,-u
則表示使用M來顯示結(jié)果,即以MB為單位。
du -d 1 -h
例如 ,從上述分析看到, 目錄/var/docker/overlay2
?個目錄就占用了28G
,Docker Overlay2
是?種容器存儲驅(qū)動程序,它使用了?個特殊的文件系統(tǒng)來管理Docker容器和鏡像的存儲 。Overlay2
驅(qū)動程序?qū)⒍鄠€鏡像層堆疊在?起,以便對這些層進(jìn)行讀取和寫?操作時只需要查找最上面的層 。因此 ,在使用Overlay2
驅(qū)動程序時,Docker會為每個容器創(chuàng)建?個單獨(dú)的目錄,該目錄包含容器所需的所有文件系統(tǒng)內(nèi)容。分析結(jié)果
:這基本上無解了,不能刪除Overlay2
文件夾釋放空間,此時所能做的就只能是把docker安裝環(huán)境移到有空間的/mnt
分區(qū)去。
三、釋放空間
- 首先最安全的可以釋放的空間往往在
/home
目錄下,在一般情況下,用戶上傳的臨時文件和安裝包等往往會存儲在/home目錄下,因此這些文件可以首先被刪除或轉(zhuǎn)移到其他有空間的分區(qū)中來釋放空間。但是需要注意的是,如果這些文件是某些應(yīng)用程序的必要文件,刪除可能會導(dǎo)致應(yīng)用程序無法正常運(yùn)行,因此在刪除前需要進(jìn)行確認(rèn)。此外,如果/home目錄下存在用戶的個人數(shù)據(jù)(例如文檔、音樂、圖片等),則不應(yīng)該輕易刪除或轉(zhuǎn)移這些文件,而應(yīng)該尋找其他的空間釋放方案。 -
/md
目錄下的一些文件可能可以刪除,但是有一些文件可能記錄了當(dāng)前正在運(yùn)行的進(jìn)程的登錄和臨時狀態(tài)數(shù)據(jù),如果不熟悉這些服務(wù),不建議刪除這些文件。 - 可以通過清理無用的文件和目錄,以及刪除過期的日志和備份文件來釋放空間。另外,可以通過壓縮和歸檔文件來減少文件占用的磁盤空間。在釋放空間之前,需要確保不會誤刪除重要的文件和目錄。
- 重啟一些進(jìn)程和常見的服務(wù),可以釋放掉這些進(jìn)程所生成的臨時文件占用的空間。在重啟之后,這樣做可以基本保證會有一定的磁盤空間回收。
- 清理無用的進(jìn)程鏡像或者刪除的
Docker
容器。 - 清理進(jìn)程的緩存,可以運(yùn)行進(jìn)程的系統(tǒng)命令,清除所有未被使用的對象(包括鏡像、容器、網(wǎng)絡(luò)和卷),以及所有未標(biāo)記的鏡像和構(gòu)建緩存。這可以幫助釋放更多的磁盤空間。
四 、Docker遷移
將Docker目錄 ( 默認(rèn)為/var/lib/docker) 移到其他磁盤, 可以通過以下步驟實(shí)現(xiàn):
- 停止所有正在運(yùn)行的Docker容器:運(yùn)行
docker stop $(docker ps -aq)
命令停止所有正在運(yùn)行的容器。
docker stop $(docker ps -aq)
- 停止Docker服務(wù):運(yùn)行
systemctl stop docker
命令停止Docker服務(wù)。
systemctl stop docker
- 復(fù)制Docker目錄到新的位置:使用cp或rsync等工具將Docker目錄復(fù)制到新的位置 。例如,將 Docker目錄從/var/lib/docker復(fù)制到/new/path/docker, 可以運(yùn)行
sudo rsync -aqxP /var/lib/docker/ /mnt/var/lib/docker
命令。
sudo rsync -aqxP /var/lib/docker/ /mnt/var/lib/docker
- 更新Docker配置文件:修改Docker服務(wù)配置文件
/etc/docker/daemon.json
,修改data-root
值,將舊的Docker目錄路徑替換為新的位置 。如果該文件不存在,請創(chuàng)建它 。示例配置文件如下所示:(注意
:registry-mirrors
、dns
兩個值填你自己的鏡像倉庫和DNS 服務(wù)器地址配置即可)
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"],
"dns": ["100.xxx.1.20", "100.xx.1xx.250"],
"data-root": "/mnt/var/lib/docker"
}
- 啟動Docker服務(wù):運(yùn)行
systemctl start docker
命令啟動Docker服務(wù), 并檢查是否已成功加載新的 Docker目錄。
systemctl start docker
- 啟動Docker容器:運(yùn)行
docker start <container_id>
命令啟動之前停止的所有容器。注意
:如果docker容器設(shè)置了restart ,則這些docker本身就會自動啟動,這?步不是必須得。
docker start <container_id>
重點(diǎn)注意
:完成遷移后,不要立即刪除原來的docker目錄,可以先通過修改目錄名的方式隔離原來的docker目錄,要反復(fù)確認(rèn)啟動沒有問題后,再進(jìn)行刪除。
cd /var/lib/docker/
mv docker docker2
mv docker2 /mnt/
總結(jié)
拓展
:如果docker資源太大,可以將其遷移至其他服務(wù)器或者外部存儲設(shè)備??梢允褂胐ocker鏡像導(dǎo)出和導(dǎo)入的方式來實(shí)現(xiàn)遷移。另外,也可以使用其他工具,如rsync或scp來遷移文件和目錄。需要注意的是,遷移過程中需要保證數(shù)據(jù)的完整性和可用性。文章來源:http://www.zghlxwxcb.cn/news/detail-719070.html
總之
,當(dāng)服務(wù)器空間不足時,需要采取一些步驟來處理和解決這個問題。首先,需要定位空間不足的原因,并盡可能地釋放空間。如果問題仍然存在,需要進(jìn)一步分析空間占用的原因,并考慮調(diào)整相關(guān)設(shè)置或者進(jìn)行遷移。最后,需要在處理問題的同時保證數(shù)據(jù)的完整性和可用性。文章來源地址http://www.zghlxwxcb.cn/news/detail-719070.html
到了這里,關(guān)于Centos系統(tǒng)磁盤占用:/dev/vda1占用100%空間不足處理與解決思路(實(shí)戰(zhàn)docker占用空間太大)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!