自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何解決服務(wù)器存儲(chǔ) inode 耗盡的問題

系統(tǒng)
當(dāng)你已有的文件系統(tǒng)上出現(xiàn) inode 不足的問題時(shí),除了備份數(shù)據(jù)、重建分區(qū)并恢復(fù)分區(qū)數(shù)據(jù)外,還有兩種臨時(shí)解決方案。

今天群里一朋友遇到這樣一個(gè)問題,明明硬盤只用了 30% 左右的空間,但是卻無(wú)法寫入文件。使用 df -iT 命令查看文件系統(tǒng)使用情況時(shí),發(fā)現(xiàn)根目錄的 inode 使用率竟然是 100%。后來(lái)通過(guò)聊天得知,原來(lái)他的服務(wù)器主要用于存儲(chǔ) 1KB 左右的小文件,這一下就破案了。

inode 主要用來(lái)記錄文件的屬性,及此文件的數(shù)據(jù)所在的塊編號(hào)。每一個(gè)文件會(huì)占用一個(gè) inode,因此如果都是小文件的話,那么就會(huì)出現(xiàn) inode 已經(jīng)耗盡,但文件系統(tǒng)還有很大的空閑空間,從而無(wú)法寫入新文件。

如何獲得更多的 inode

其實(shí)在創(chuàng)建 ext4 文件系統(tǒng)時(shí),我們可以使用 -T small 參數(shù)來(lái)獲得更多的 inode,從而優(yōu)化對(duì)小文件的存儲(chǔ)。接下來(lái)我們通過(guò)一個(gè)示例來(lái)看看效果。

這是兩塊相同大小的硬盤:

root@debian:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0    1G  0 disk
└─sdb1   8:17   0 1023M  0 part
sdc      8:32   0    1G  0 disk
└─sdc1   8:33   0 1023M  0 part

首先使用默認(rèn)參數(shù)給 /dev/sdb1 創(chuàng)建文件系統(tǒng):

root@debian:~# /sbin/mkfs.ext4 /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 261888 4k blocks and 65536 inodes
Filesystem UUID: 8935c902-df71-4808-b547-c85b6fd37a46
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

從輸出中可見,該文件系統(tǒng)有 261888 個(gè) 4KB 大小的塊和 65536 個(gè) inode。

然后使用 -T 參數(shù)對(duì) /dev/sdc1 創(chuàng)建文件系統(tǒng):

root@debian:~# /sbin/mkfs.ext4 -T small /dev/sdc1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 1047552 1k blocks and 262144 inodes
Filesystem UUID: f521096d-a5a1-41c9-bbf7-e6102e74e87a
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
        1024001
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

從輸出中可見,該文件系統(tǒng)有 1047552 個(gè) 1KB 大小的塊和 262144 個(gè) inode。

也可以通過(guò)以下方式對(duì)比兩個(gè)文件系統(tǒng)的 inode 數(shù)量:

root@debian:~# mkdir default small
root@debian:~# mount /dev/sdb1 default/
root@debian:~# mount /dev/sdc1 small/
root@debian:~# df -iT
Filesystem     Type      Inodes IUsed   IFree IUse% Mounted on
/dev/sdb1      ext4       65536    11   65525    1% /root/default
/dev/sdc1      ext4      262144    11  262133    1% /root/small

從以上示例中我們可以看出,在使用 -T small 參數(shù)后,inode 數(shù)量多了近 20 萬(wàn)個(gè)!

注意: 這樣做也是有代價(jià)的。在使用默認(rèn)參數(shù)創(chuàng)建 ext4 文件系統(tǒng)時(shí),默認(rèn)數(shù)據(jù)塊大小為 4KB,而使用 -T small 參數(shù)后,數(shù)據(jù)塊大小為 1KB。這就意味著我們存儲(chǔ)一個(gè)同樣大小的文件,使用 -T small 參數(shù)創(chuàng)建的文件系統(tǒng)存儲(chǔ)該數(shù)據(jù)時(shí),占用的數(shù)據(jù)塊更多,數(shù)據(jù)更分散,如果文件較大,會(huì)直接影響文件的讀取速度。

mke2fs(mkfs.ext4)的 -T 參數(shù)指定了如何使用該文件系統(tǒng),以便 mke2fs 可以為該用途選擇最佳的文件系統(tǒng)參數(shù),其支持的使用類型在配置文件 /etc/mke2fs.conf 中定義,可以使用逗號(hào)分隔指定一個(gè)或多個(gè)使用類型。

inode 不足的解決方法

當(dāng)你已有的文件系統(tǒng)上出現(xiàn) inode 不足的問題時(shí),除了備份數(shù)據(jù)、重建分區(qū)并恢復(fù)分區(qū)數(shù)據(jù)外,還有兩種臨時(shí)解決方案:

(1) 刪除文件大小為 0 的空文件,可以使用如下命令查找:

find PATH -name "*" -type f -size 0c 

注意: 使用 -size 參數(shù)時(shí),不要用 -size 1k,這個(gè)表示占用空間為 1KB,而不是文件大小為 1KB,應(yīng)該使用 -size 1024c 才表示文件大小為 1KB。

(2) 可以定期對(duì)歷史小文件進(jìn)行打包、歸檔,以減少文件數(shù)量。

責(zé)任編輯:趙寧寧 來(lái)源: Linux中國(guó)
相關(guān)推薦

2009-01-09 23:01:24

2009-06-29 19:20:05

刀片服務(wù)器機(jī)架服務(wù)器

2015-07-14 10:54:50

PHP數(shù)據(jù)循環(huán)內(nèi)存耗盡

2013-10-30 17:34:51

Nginx服務(wù)器軟中斷XEN虛擬

2009-01-05 18:12:47

BalancePoin災(zāi)備虛擬化

2010-08-02 10:55:27

服務(wù)器制冷

2011-07-28 09:54:44

服務(wù)器

2015-04-22 10:49:29

Windows AzuAzure Stora共享存儲(chǔ)

2019-12-27 11:13:24

高并發(fā)服務(wù)器邏輯

2009-01-19 18:11:01

2009-02-27 16:53:00

服務(wù)器虛擬化虛擬化

2012-04-05 10:10:33

服務(wù)器虛擬化存儲(chǔ)管理

2012-06-27 07:50:20

虛擬化

2010-05-19 10:40:19

虛擬機(jī)備份

2021-09-03 13:36:40

冷存儲(chǔ)數(shù)據(jù)ZB數(shù)據(jù)

2012-09-05 11:09:15

SELinux操作系統(tǒng)

2010-08-13 15:06:01

2011-07-28 14:49:40

2010-08-13 10:52:12

思科路由器崩潰

2010-07-29 09:47:22

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)