我有一个具有2个EBS卷的EC2实例。在根卷上,我增加了卷大小。
首先,我修改了volume size on console。然后按照此说明操作extended the partition following this instruction。
但是,运行任何命令时,设备上都没有剩余空间。
echo "Hello" > hello.txt
-bash: hello.txt: No space left on device
df -h正确显示,总空间正确。
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 395M 596K 394M 1% /run
/dev/xvda1 30G 19G 9.6G 67% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/xvdg 10G 6.2G 3.9G 62% /data2
tmpfs 395M 0 395M 0% /run/user/1001
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 30G 0 disk
└─xvda1 202:1 0 30G 0 part /
xvdg 202:96 0 31G 0 disk /data2
guide的底部说,
如果卷上增加的可用空间对 系统,请尝试按中所述重新初始化该卷 初始化Amazon EBS卷。
所以我关注了the instruction to reinitialize the volume。
我用dd重新初始化。
sudo dd if=/dev/xvda of=/dev/null bs=1M
30720+0 records in
30720+0 records out
32212254720 bytes (32 GB, 30 GiB) copied, 504.621 s, 63.8 MB/s
但是,我仍然收到“设备上没有剩余空间”错误。我完成了实例的多次重启,但仍然看到相同的错误。
更新1:我有大量的小文件4-10KB。因此,我用尽了inode。请让我知道如何增加inode(在ext4分区上)?谢谢。
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 497270 371 496899 1% /dev
tmpfs 504717 539 504178 1% /run
/dev/xvda1 1966080 1966080 0 100% /
tmpfs 504717 1 504716 1% /dev/shm
tmpfs 504717 4 504713 1% /run/lock
tmpfs 504717 18 504699 1% /sys/fs/cgroup
/dev/xvdg 5242880 39994 5202886 1% /data2
tmpfs 504717 10 504707 1% /run/user/1001
请让我知道如何解决此错误。
答案 0 :(得分:0)
如果使用的是新一代的EC2实例类型(例如M4,M5,T2和T3),则无需重新初始化卷。
您还必须在EC2实例上扩展音量:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html
我可以看到您的Inode已满,请尝试使用以下命令查找目录:
MainBusinessObject
然后,在找到目录后,执行以下操作:
for i in /*; do echo $i; find $i |wc -l; done
之后,使用以下命令删除这些文件:
for i in /path/to/directory/*; do echo $i; find $i |wc -l; done
由于您不想删除文件,因此必须使用mke2fs和-I参数来创建inode大小的新文件系统,或者继续增加根卷的大小。
此外,您可以将文件移动到辅助驱动器。
答案 1 :(得分:0)
您的/(根)目录上的inode用尽了。因此要对其进行调试,您需要:
- 之类的文件的inode。
查找指向或打开诸如
for i in /*; do echo $i; find $i |wc -l; done
现在查找需要更多时间的目录,然后删除该目录