Linux中磁盘还有空间,但创建文件时提示空间不足
首先需要知道创建文件时,需要满足两个条件:1、磁盘上还有空间;2、inode号还有剩余。
这两个条件可以分别使用"df -h"以及"df -i"查看使用情况
[xf@xuexi ~]$ df -h 文件系统 容量 已用 可用 已用% 挂载点 /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 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 /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
如果所在的分区inode满了,可以将一些没用的文件或目录删除,释放inode号。也可以将部分文件备份到一个新分区,然后删除这些文件,释放inode号,再将备份分区挂载到原来的位置。(软链接也可以是试试)例如:/data/cache占用了大量的inode号。那么我可以添加一个新的空分区/dev/sdb1,格式化,挂载。然后将/data/cache下文件备份到/dev/sdb1分区下,接着再删除原位置的文件。最后我们卸载分区,重新挂载到/data/cache下。(没有验证,仅供参考)
inode号在xfs文件系统前(ext4/ext3/ext2)都是在格式化之前就定下来的,例如ext4文件系统使用命令mkfs.ext4中的-N选项设置数量 。但是我们来到xfs文件系统时,mkfs。xfs没有-N这个选项,不用担心,这时使用-i maxpct=n来调整inode区占整个分区的比例(默认n=25,即占用25%的空间大小)。而且似乎可以使用命令xfs_growfs在不重新格式化分区就可以增加inode区占整个分区的比例,从而增加inode总数。
下面我来使用xfs_growfs命令,举一个例子:
[root@xuexi ~]# mount /dev/sdb1 /sdb1 //挂载一个分区 [root@xuexi ~]# df -i /sdb1 //看一下inode号 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 /dev/sdb1 524288 3 524285 1% /sdb1 [root@xuexi ~]# touch /sdb1/File //在里面创建一个测试文档 [root@xuexi ~]# echo aaaaa >> /sdb1/File [root@xuexi ~]# cat /sdb1/File aaaaa [root@xuexi ~]# xfs_growfs -m 30 /dev/sdb1 //扩展inode占整个磁盘的容量 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 //可以发现inode总量增加 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 /dev/sdb1 629144 4 629140 1% /sdb1 [root@xuexi ~]# ls /sdb1/ //并且测试文档没有损坏 File [root@xuexi ~]# cat /sdb1/File aaaaa
我的/dev/sdb1分配大小为1G(df -h /dev/sdb1查看时显示的是1014M),此时inode区占比25%,inode单个大小为512字节,那么inode的数量就是1024M*1024K/M*1024B/K*25%/512B,算下来就是第一次显示的524288。然后我调整了inode区占比到30%,inode单个大小别改还是512字节,那么此时的inode数量应该是1024M*1024K/M*1024B/K*30%/512B,算下来629145.6(NMD,WSM),居然差了1个,不过影响不大。注意:在增加inode占比时需要注意有没有空间啊,别没有空间了还在死命加inode区。在加inode区前请计算一下空间啊
在格式化是更改我就写一条命令了'mkfs.xfs -i size=num,maxpct=n /dev/sdb1'。-i选项代表我要对inode动手了,size设置一个inode大小,maxpct设置iNode区占比。
相关文章
- linux下由带-开头文件想到的
- Linux下查看文件和文件夹大小
- Linux中的文件描述符与打开文件之间的关系
- Linux下校验下载文件的完整性(MD5,SHA1,PGP)
- linux shell 脚本攻略学习6-xargs详解
- Linux远程上传、下载文件的方法
- linux(centos8):安装prometheus服务端/node_exporter客户端(prometheus 2.18.1)
- Linux基础之linux服务器服务器间拷贝文件
- linux shell 脚本攻略学习2
- Linux - 查看文件信息的三个命令
- linux如deepin manjaro对笔记本电脑电池的伤害解决方案:TLP:一个可以延长 Linux 笔记本电池寿命的高级电源管理工具
- LinuxC语言读取文件,分割字符串,存入链表,放入另一个文件
- linux c 文件打开并创建代码分析
- linux 文件操作系统调用
- linux 中怎样返回上一层目录的命令?
- L74.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nmap和tcpdump
- L71.linux命令每日一练 -- 第十章 Linux网络管理命令 -- wget和mailq
- L31.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- uname和hostname
- Linux基础命令-ln创建链接文件
- nohup 输出到指定文件 Linux nohup 实现命令后台运行并输出或记录到指定日志文件 设置日志结果文件名称 重定向到某个文件 标准误 标准错误输出定向
- Linux文件查找
- linux定时任务的设置
- linux 文件标志位 setuid与setgid与stick bit 详解
- 云计算|OpenStack|社区版OpenStack安装部署文档(十三--- 自制镜像---Linux和Windows镜像)