Linux的虛擬分區

某日碰上某企業的服務器i間歇性崩潰,一番檢查後發現/分區才30GB [1],並且已經被撐滿,最後連tab鍵的命令提示都在報錯。進一步定位問題後發現/var/log/佔了25GB [2]。服務器

既然是log,又沒有什麼關鍵信息,那就想辦法把其餘分區掛載到/var/log/上去吧。可是很惋惜,全部物理分區和邏輯分區都已被掛載而且已經被使用,又沒有其餘主機能夠用來掛載NFS,怎麼辦?好在其餘幾個分區都相對較大(幾百GB),並且都很空。因而就想到了這招:虛擬分區。日誌

作法很簡單,第一步是在某個比較空的分區上新建一個大文件code

fallocate -l 100G /data/log.img

這會在/data/下建立一個100GB的文件log.img。這條命令瞬間就完成了,這是由於它只是申領了一塊硬盤空間,並無去格式化它,也沒有把它的內容清零。im

第二步是格式化它img

mkfs -t ext4 /data/log.img

第三步,停掉那些會在/var/log/裏寫日誌的服務(這一步問題比較大,我不知道怎麼作到零宕機轉移日誌),而後把那些日誌該刪的刪,該備份的備份。tab

第四步,把剛剛建立出來的/data/log.img掛載到/var/log文件

mount /data/log.img /var/log

最後一步,讓這個改動永久化。先找到/data/log.img的UUID備份

blkid /data/log.img

而後在/etc/fstab里加一行co

UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx /var/log ext4 defaults 0 2

完工。data

[1] df -h
[2] du -sh /var/log/

相關文章
相關標籤/搜索