阿里云Linux云VPS服务器Inodes硬盘空间2.5M用满,有空间但是磁盘无法写入文件数据的解决方法 250W总数
找了半天问题,空间还有几百G,就是无法写入文件,最后尼玛是Inodes的问题。。inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。
一般情况不需要特殊配置,如果存放文件很多,需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode节点数量不做了。
# df -i
Filesystem Inodes IUsedIFree IUse% Mounted on
/dev/xvda1 2621440 2621440 0100% /
tmpfs 127325 1 127324 1% /dev/shm
# df -hi
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 2.5M2.5M 24100% /
tmpfs 125K 1125K 1% /dev/shm
# df -h
Filesystem SizeUsed Avail Use% Mounted on
/dev/xvda1 400G 140G 250G36% /
tmpfs 498M 0498M 0% /dev/shm
大概1M Inodes=100W总数文件
看图,很明显,Inodes空间已经使用到了百分百,然后就提示下面这种错误。
mkdir: cannot create directory `swapfile': No space left on device
解决方法如下
创建一个1G的文件。128byte(这个是linux内核限制的最小inode大小),制定inode数量为5000000,制定块大小为1024byte。因为这个文件不是真正的块文件,所以需要增加-o loop参数。
cd /home
dd if=/dev/zero of=/home/disk.img bs=1024KB count=1024
mkfs -t ext4 -N 5000000 -b 1024 -I 128 /home/disk.img
mkdir /home/disk
mount -o loop disk.img /home/disk
这样,这个就可以在这个块文件上创建大量的软链接了,这个1G的文件上有500w的inode,对于软链接这种基本不占空间,但是狂占inode的,非常适合。当然,更好的方法,是更换文件系统使用像ext4这样的新文件系统,这些文件系统中inode是动态分配的。
mkfs -t ext4 -N 100000000 /dev/xvda1
直接格式化1亿个Inodes,需要11G磁盘额外磁盘空间,创建后你磁盘空间会降低24G
一共96M Inodes,随便艹
# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 7.0M 19K7.0M 1% /
tmpfs 4.0M 14.0M 1% /dev/shm
/dev/sda1 50K 38 50K 1% /boot
/dev/sda3 76K 11 76K 1% /home
/dev/sdb 96M 11 96M 1% /data
#
页:
[1]