首先需要知道创建文件时,需要满足两个条件:

1、磁盘上还有空间;

2、inode号还有剩余。

这两个条件可以分别使用"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

文件系统        容量  已用  可用 已用% 挂载点

/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命令,举一个例子:

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  //挂载一个分区

[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中磁盘还有空间,但创建文件时提示空间不足相关推荐

  1. Linux下通过rm -f删除大量文件时提示-bash: /bin/rm: Argument list too long的解决方法...

    Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long& ...

  2. linux删除文件退出,在Linux中用于在移动或删除文件时使`tail -f`退出的bash脚本

    目前删除,移动或重命名在其上运行tail -f的文件什么都不做,我希望它能够中止.我已经阅读了手册页,似乎-f应该在文件移动时中止,-F将跟随文件,但在Mac OS X上似乎-f和-F是相同的.如何编 ...

  3. linux vi打不开文件,在Linux中使用vi/vim打开一个文件时出现的的问题

    1.想想如何vim/etc/profile会出现这种情况,并解决掉这些问题 图一: 图二: 原因: 第一张:由于vi /etc/profile还没有编辑完成,保存退出,突然断电或其他原因导致编辑窗口关 ...

  4. MySQL导入几十G数据后创建索引时提示空间不足(Errcode: 28 - No space left on device)

    本周用ETL工具进行一系列数据入库操作,涉及到一些上几十G的大表的时候,总是会出现异常:Errcode: 28 - No space left on device. [load data local ...

  5. u盘计算机无法找到该项目,技术员教你win10系统删除文件时提示找不到该项目的方法...

    技术员教你win10系统删除文件时提示找不到该项目的方法? 很多朋友安装win10系统后,在使用的过程中会遇到win10系统删除文件时提示找不到该项目的情况,可能有很多用户还是不能自己处理win10系 ...

  6. Linux中磁盘的管理(格式化、分区、挂载)

    文章目录 Linux中磁盘的管理(分区.格式化.挂载) 一.认识磁盘 1.什么是磁盘: 2.磁盘运行机理: 3.磁盘的扇区.磁道.柱面: 4.磁盘的分类: 二.磁盘的分区 1.为什么要分区 (1)易于 ...

  7. Linux中的进程、线程和文件描述符

    说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案: 在 Linux 系统中,进程和线程几乎没有区别 . Linux 中的进程就是一个数据结构,看明白就可以理解文件描述符.重定向 ...

  8. linux设置组配置额步骤,linux 中磁盘配额设置

    linux 中磁盘配额设置 在一些linux文件服务器中需要限制某个用户的磁盘用量,防止磁盘爆满 1)首先设置磁盘某个分区需要是一个文件系统 需要在这个区添加用户和组 比如说/dev/sdb1分区 建 ...

  9. linux中systemctl命令理解以及.service文件参数解析

    linux中systemctl命令理解以及.service文件参数解析 一.systemctl介绍 二.利用.service文件管理程序的步骤 三..service配置文件参数详解 1. Unit 2 ...

最新文章

  1. iOS - 支持水平 / 垂直显示自动滚动的跑马灯控件 --- SKAutoScrollLabel 的使用和实现
  2. 【Android源码】AlertDialog 源码分析
  3. 直播协议HLS技术要点分析:分段生成与m2u8文件
  4. Java语言实现简单FTP软件------源码放送(十三)
  5. rust(50)-图像(3)
  6. python .py文件变为.so文件进行加密
  7. 四个小时不止是敲了30多行代码,还懂了好多
  8. Xcode4.4 import header 的问题解决方法
  9. 终止运行线程的注意事项
  10. matlab实现移位寄存器,Matlab移位寄存器的实现
  11. IPFS是创建DWeb应用程序中基础技术的领先者
  12. python填充nan_Python Pandas Dataframe填充NaN值
  13. cebemax hal库 stm32 OLED移植 解析
  14. 关于打麻将的高大上语言艺术
  15. winpe做服务器系统备份,转 在winPE系统下备份和恢复Raid5数据
  16. 模型高性能优化 | 两步数据预处理让Alphafold 提速一倍
  17. 亲测无限坐席在线客服系统源码+新UI版
  18. 远程服务器访问 JupyterLab
  19. 突然发现 ViewState,Linq 水火不容
  20. 首汽约车驶向极速统一之路!出行平台如何基于StarRocks构建实时数仓?

热门文章

  1. Mysql 索引-1
  2. 不变(Invariant), 协变(Covarinat), 逆变(Contravariant) : 一个程序猿进化的故事
  3. LocalDB 静默安装
  4. String 类型切割成数组-转int数组-升列排序-拼接字符串、需求 有如下一个字符串 91 27 46 38 50
  5. webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
  6. PostgreSQL数据库的注入
  7. HarmonyOS之深入解析图像的位图操作和属性解码
  8. 2017年第八届蓝桥杯C/C++ C组国赛 —— 第三题:表达式计算
  9. 【机器视觉】 dev_set_check算子
  10. 【MFC】滚动字幕的状态栏