Linux中磁盘还有空间,但创建文件时提示空间不足
首先需要知道創(chuàng)建文件時(shí),需要滿足兩個(gè)條件:
1、磁盤上還有空間;
2、inode號(hào)還有剩余。
這兩個(gè)條件可以分別使用"df -h"以及"df -i"查看使用情況
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [xf@xuexi ~]$ df -h 文件系統(tǒng)??????? 容量? 已用? 可用 已用% 掛載點(diǎn) /dev/sda2??????? 10G? 4.7G? 5.4G?? 47% / devtmpfs??????? 975M???? 0? 975M??? 0% /dev tmpfs?????????? 991M???? 0? 991M??? 0% /dev/shm tmpfs?????????? 991M?? 11M? 980M??? 2% /run tmpfs?????????? 991M???? 0? 991M??? 0% /sys/fs/cgroup /dev/sr0??????? 4.2G? 4.2G???? 0? 100% /mnt /dev/sda1?????? 197M? 179M?? 19M?? 91% /boot tmpfs?????????? 199M? 8.0K? 199M??? 1% /run/user/42 tmpfs?????????? 199M?? 28K? 199M??? 1% /run/user/1000 [xf@xuexi ~]$ df -i 文件系統(tǒng)???????? Inode 已用(I) 可用(I) 已用(I)% 掛載點(diǎn) /dev/sda2????? 5242880? 168213 5074667?????? 4% / devtmpfs??????? 249532???? 410? 249122?????? 1% /dev tmpfs?????????? 253514?????? 1? 253513?????? 1% /dev/shm tmpfs?????????? 253514???? 956? 252558?????? 1% /run tmpfs?????????? 253514????? 16? 253498?????? 1% /sys/fs/cgroup /dev/sr0???????????? 0?????? 0?????? 0??????? - /mnt /dev/sda1??????? 38176???? 347?? 37829?????? 1% /boot tmpfs?????????? 253514?????? 7? 253507?????? 1% /run/user/42 tmpfs?????????? 253514????? 18? 253496?????? 1% /run/user/1000 |
如果所在的分區(qū)inode滿了,可以將一些沒用的文件或目錄刪除,釋放inode號(hào)。也可以將部分文件備份到一個(gè)新分區(qū),然后刪除這些文件,釋放inode號(hào),再將備份分區(qū)掛載到原來(lái)的位置。(軟鏈接也可以是試試)例如:/data/cache占用了大量的inode號(hào)。那么我可以添加一個(gè)新的空分區(qū)/dev/sdb1,格式化,掛載。然后將/data/cache下文件備份到/dev/sdb1分區(qū)下,接著再刪除原位置的文件。最后我們卸載分區(qū),重新掛載到/data/cache下。(沒有驗(yàn)證,僅供參考)
inode號(hào)在xfs文件系統(tǒng)前(ext4/ext3/ext2)都是在格式化之前就定下來(lái)的,例如ext4文件系統(tǒng)使用命令mkfs.ext4中的-N選項(xiàng)設(shè)置數(shù)量 。但是我們來(lái)到xfs文件系統(tǒng)時(shí),mkfs。xfs沒有-N這個(gè)選項(xiàng),不用擔(dān)心,這時(shí)使用-i maxpct=n來(lái)調(diào)整inode區(qū)占整個(gè)分區(qū)的比例(默認(rèn)n=25,即占用25%的空間大小)。而且似乎可以使用命令xfs_growfs在不重新格式化分區(qū)就可以增加inode區(qū)占整個(gè)分區(qū)的比例,從而增加inode總數(shù)。
? 下面我來(lái)使用xfs_growfs命令,舉一個(gè)例子:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | [root@xuexi ~]# mount /dev/sdb1 /sdb1 //掛載一個(gè)分區(qū) [root@xuexi ~]# df -i /sdb1 //看一下inode號(hào) 文件系統(tǒng)??????? Inode 已用(I) 可用(I) 已用(I)% 掛載點(diǎn) /dev/sdb1????? 524288?????? 3? 524285?????? 1% /sdb1 [root@xuexi ~]# touch /sdb1/File //在里面創(chuàng)建一個(gè)測(cè)試文檔 [root@xuexi ~]# echo aaaaa >> /sdb1/File [root@xuexi ~]# cat /sdb1/File aaaaa [root@xuexi ~]# xfs_growfs -m 30 /dev/sdb1 //擴(kuò)展inode占整個(gè)磁盤的容量 meta-data=/dev/sdb1????????????? isize=512??? agcount=4, agsize=65536 blks ?????????=?????????????????????? sectsz=512?? attr=2, projid32bit=1 ?????????=?????????????????????? crc=1??????? finobt=0 spinodes=0 data???? =?????????????????????? bsize=4096?? blocks=262144, imaxpct=25 ?????????=?????????????????????? sunit=0????? swidth=0 blks naming?? =version 2????????????? bsize=4096?? ascii-ci=0 ftype=1 log????? =internal???????????????bsize=4096?? blocks=2560, version=2 ?????????=?????????????????????? sectsz=512?? sunit=0 blks, lazy-count=1 realtime =none?????????????????? extsz=4096?? blocks=0, rtextents=0 inode max percent changed?from?25 to 30 [root@xuexi ~]# df -i /dev/sdb1 //可以發(fā)現(xiàn)inode總量增加 文件系統(tǒng)??????? Inode 已用(I) 可用(I) 已用(I)% 掛載點(diǎn) /dev/sdb1????? 629144?????? 4? 629140?????? 1% /sdb1 [root@xuexi ~]# ls /sdb1/ //并且測(cè)試文檔沒有損壞 File [root@xuexi ~]# cat /sdb1/File aaaaa |
? 我的/dev/sdb1分配大小為1G(df -h /dev/sdb1查看時(shí)顯示的是1014M),此時(shí)inode區(qū)占比25%,inode單個(gè)大小為512字節(jié),那么inode的數(shù)量就是1024M*1024K/M*1024B/K*25%/512B,算下來(lái)就是第一次顯示的524288。然后我調(diào)整了inode區(qū)占比到30%,inode單個(gè)大小別改還是512字節(jié),那么此時(shí)的inode數(shù)量應(yīng)該是1024M*1024K/M*1024B/K*30%/512B,算下來(lái)629145.6(NMD,WSM),居然差了1個(gè),不過(guò)影響不大。注意:在增加inode占比時(shí)需要注意有沒有空間啊,別沒有空間了還在死命加inode區(qū)。在加inode區(qū)前請(qǐng)計(jì)算一下空間啊
在格式化是更改我就寫一條命令了'mkfs.xfs -i size=num,maxpct=n /dev/sdb1'。-i選項(xiàng)代表我要對(duì)inode動(dòng)手了,size設(shè)置一個(gè)inode大小,maxpct設(shè)置iNode區(qū)占比。
總結(jié)
以上是生活随笔為你收集整理的Linux中磁盘还有空间,但创建文件时提示空间不足的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 「MySQL」 - SQL设计规范
- 下一篇: Linux 创建交换(swap)分区