模拟LINUX磁盘分区有可用空间无可用Inodes时报错:No space left on device

参考:磁盘文件系统
1.创建测试脚本:

[oracle@ocm1 ~]$ vi touchfile.sh

#!/bin/bash
for abc in {1..9}
do
      touch /boot/test/$abc
done
"touchfile.sh" 5L, 66C written                                
2.创建测试目录、测试脚本
[root@ocm1 oracle]# cd /boot
[root@ocm1 boot]# mkdir test
[root@ocm1 boot]# ls
config-2.6.18-308.el5              symvers-2.6.32-300.10.1.el5uek.gz
config-2.6.32-300.10.1.el5uek      System.map-2.6.18-308.el5
grub                               System.map-2.6.32-300.10.1.el5uek
initrd-2.6.18-308.el5.img          test
initrd-2.6.32-300.10.1.el5uek.img  vmlinuz-2.6.18-308.el5
lost+found                         vmlinuz-2.6.32-300.10.1.el5uek
symvers-2.6.18-308.el5.gz
[root@ocm1 boot]# cd -
/home/oracle
[root@ocm1 oracle]# sh touchfile.sh
[root@ocm1 oracle]# cd -
/boot
[root@ocm1 boot]# cd test
[root@ocm1 test]# ls
1  2  3  4  5  6  7  8  9

3.查看当前/boot目录可用Inodes数量
[root@ocm1 test]# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda3            7318528  185460 7133068    3% /
/dev/sda1              26104      50   26054    1% /boot
tmpfs                 128334       1  128333    1% /dev/shm
4.修改脚本,直接将可用Inodes用光
[root@ocm1 boot]# cd /home/oracle/
[root@ocm1 oracle]# vi touchfile.sh
#!/bin/bash
for abc in {10..26110}
do
      touch /boot/test/$abc
done
~
"touchfile.sh" 5L, 71C written
5.执行脚本,脚本未执行完,即报错:No space left on device,

事实上此时用df -h可以看到目录下有可用空间,可是因为没有Inodes,已经无法新建文件了,报错为:No space left on device

[root@ocm1 oracle]# sh touchfile.sh
[root@ocm1 oracle]# sh touchfile.sh
touch: cannot touch `/boot/test/26064': No space left on device
touch: cannot touch `/boot/test/26065': No space left on device
………………………………………………
touch: cannot touch `/boot/test/26109': No space left on device
touch: cannot touch `/boot/test/26110': No space left on device
[root@ocm1 oracle]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              28G   11G   15G  43% /
/dev/sda1              99M   21M   73M  23% /boot
tmpfs                 502M     0  502M   0% /dev/shm
[root@ocm1 oracle]# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda3            7318528  185460 7133068    3% /
/dev/sda1              26104   26104       0  100% /boot
tmpfs                 128334       1  128333    1% /dev/shm
手动执行创建目录和文件命令报同样错误:
[root@ocm1 oracle]# cd /boot/
[root@ocm1 boot]# mkdir a
mkdir: cannot create directory `a': No space left on device
[root@ocm1 boot]# touch abc
touch: cannot touch `abc': No space left on device

### 解决 VSCode 中因磁盘空间不足导致的写入错误 当遇到 `ENOSPC: no space left on device` 错误,表明操作系统认为存储设备已无可空间用于写操作。此问题不仅限于 VSCode,在其他应用程序中也可能发生。 #### 诊断方法 为了确认具体是哪种资源耗尽引起的问题,可以采取以下措施: - **检查磁盘使用情况**:利用命令 `df -h` 查看各分区的空间占用状况;如果接近或达到100%,则可能是物理存储空间不够[^4]。 - **检测 Inode 使用率**:有即使硬盘还有剩余空间,但由于创建了大量小文件而使 Inodes 耗尽也会引发相同错误。此应运行 `df -i` 来评估 inode 的消耗程度[^3]。 一旦确定问题是由于实际存储空间或者 inode 数量不足引起的,则需针对性地解决问题。 #### 处理策略 对于由物理存储空间不足造成的错误: - 清除不必要的大文件和旧备份; - 卸载不常用的应用程序; - 将部分数据迁移至外部驱动器或其他服务器位置。 针对因过多的小型文件造成 inode 不足的情况: - 定位并清理产生大量小型文件的服务日志或是临工作目录。例如 Docker 镜像构建过程中产生的中间层文件可能会迅速填满 inode 表格。 ```bash find /path/to/check -type f -name "*.log" -exec truncate -s 0 {} \; ``` - 对特定应用(如Docker)实施定期维护任务来释放不再需要的对象。可以通过执行 `docker system prune -a` 命令移除所有未使用的容器、网络以及悬空镜像等资源。 完成上述调整之后再次尝试保存文件,通常情况下应该能够恢复正常功能。不过需要注意的是,长期解决方案应当考虑增加硬件容量或者是优化现有系统的资源配置以防止此类事件频繁发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值