即使增加了EC2的音量和分区大小,设备上也没有剩余空间

时间:2018-09-24 03:51:44

标签: amazon-web-services ubuntu amazon-ec2

我有一个具有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

请让我知道如何解决此错误。

2 个答案:

答案 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大小的新文件系统,或者继续增加根卷的大小。

这是一个类似的问题: https://unix.stackexchange.com/questions/26598/how-can-i-increase-the-number-of-inodes-in-an-ext4-filesystem

此外,您可以将文件移动到辅助驱动器。

答案 1 :(得分:0)

您的/(根)目录上的inode用尽了。因此要对其进行调试,您需要:

  
      
  1. 查找指向或打开诸如for i in /*; do echo $i; find $i |wc -l; done

  2. 之类的文件的inode。   
  3. 现在查找需要更多时间的目录,然后删除该目录

  4.