Linux ext3 inode如何調(diào)整大小?

Linux ext3等分區(qū)是具有inode table的,用于存儲文件的位置等信息。一般來講,一個(gè)文件將占用1~2個(gè)inode值。在WEB系統(tǒng)中,如果采用生稱html方式,會產(chǎn)生大量的小文件,這樣會暫用大量的inode值。所以,常常出現(xiàn)文件空間還剩余很多,但是由于inode滿了,LINUX也會報(bào)警說沒有空間了,不允許增加文件。
根據(jù)這一狀況,你可能需要對磁盤的inode大小進(jìn)行調(diào)整。
如果磁盤中主要為小文件,你可以適當(dāng)?shù)脑黾觟node值。
如果大文件居多,可以適量減少inode空間,當(dāng)然這并不是很必要,inode也暫用的空間并不是很大,節(jié)省不了很多。
可以使用 mkfs來調(diào)整inode數(shù)值。
具體方法&案例:
0. 預(yù)熱,準(zhǔn)備一些數(shù)據(jù)和資料
我目前需要將我的分區(qū) /dev/sda9 (mount at /var/www)的inode值增加到2500000(原值為2000640)。
我的系統(tǒng): ubuntu 8.04 Desktop
df #獲得目前磁盤加載情況己使用情況
df -i #獲得目前磁盤inode使用情況,便于估計(jì)目標(biāo)inode將要調(diào)整為多少
cat /etc/fstab #輸出當(dāng)前fstab,修改inode之后,uuid會被修改。因此,該文件也需要作相應(yīng)調(diào)整。需要記錄一下,最好的,cp備份一下
cp -aR /var/www /home/bak/ #備份所有數(shù)據(jù)到另一個(gè)分區(qū)/home,調(diào)整inode會格式化整個(gè)分區(qū),分區(qū)將被刪除
1. umount
sudo umount /var/www #www是我準(zhǔn)備調(diào)整inode的磁盤。當(dāng)然,umount之前你需要關(guān)閉一些使用它的進(jìn)程。比如apache,或者其他service
2. mkfs.ext2,調(diào)整inode
注意!!!!!!!!!!該操作將刪除整個(gè)分區(qū)數(shù)據(jù),在進(jìn)行此操作之前,請?jiān)俅未_認(rèn)你已經(jīng)對該分區(qū)的信息做好了備份。
請?jiān)俅未_認(rèn)你的數(shù)據(jù)已經(jīng)全部備份完畢。
sudo mkfs.ext2 -N 2500000 /dev/sda9 # 2500000 是我需要的inode值 /dev/sda9是我 /var/www的磁盤。
會有類似于這樣的一些輸出,具體含義不表:mke2fs 1.40.8 (13-Mar-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2503680 inodes, 3905795 blocks
195289 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4001366016
120 block groups
32768 blocks per group, 32768 fragments per group
20864 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
3. 更新分區(qū)
sudo tune2fs -j /dev/sda9
4. 更新系統(tǒng)uuid。
sudo udevtrigger
5. 獲取新的uuid,記錄它
sudo vol_id -u /dev/sda9
6. 修改fstab,將新的uuid替換進(jìn)去
[geshi]
sudo vi /etc/fstab
[/geshi]
有可能,你也需要相應(yīng)調(diào)整 /dev/sda1的uuid值或其他,你可以通過下列語句來檢查并更新uuid,直到mount -a 不報(bào)錯(cuò)。
sudo umount -a
sudo mount -a
7. 最終,在mount -a通過之后,使用預(yù)熱階段的命令查看一下新的設(shè)置。rollenc@rollenc-Kubuntu:~$ df -i
文件系統(tǒng) Inode (I)已用 (I)可用 (I)已用% 掛載點(diǎn)
/dev/sda9 2503680 11 2503669 1% /var/www
inode值已經(jīng)增加了。