小樱 发表于 2016/5/12 01:20

阿里云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是动态分配的。

小樱 发表于 2016/5/12 01:29

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]
查看完整版本: 阿里云Linux云VPS服务器Inodes硬盘空间2.5M用满,有空间但是磁盘无法写入文件数据的解决方法 250W总数