amazon-web-services - 即使在 EC2 上增加卷和分区大小后,设备上也没有剩余空间

标签 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说,

If the increased available space on your volume remains invisible to the system, try re-initializing the volume as described in Initializing Amazon EBS Volumes.



所以我关注了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

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

最佳答案

如果您使用的是 M4、M5、T2 和 T3 等新一代 EC2 实例类型,则无需重新初始化卷。

您还必须在 EC2 实例上扩展您的卷:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

如我所见,您的 Inode 已满,请尝试使用以下命令查找目录:

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

之后使用以下命令删除这些文件:
rm -rf /path/to/fileorfoldername

由于您不想删除这些文件,因此您必须使用 mke2fs 和 -I 参数创建一个新的文件系统来确定 inode 大小,或者继续增加您的根卷。

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

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

关于amazon-web-services - 即使在 EC2 上增加卷和分区大小后,设备上也没有剩余空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52472467/

相关文章:

mysql - 如何使用 IP 直接从本地主机连接嵌套虚拟机?

amazon-web-services - 更改 sshd_config 文件后无法访问 Amazon EC2 实例(死锁)

amazon-web-services - 如何根据托管在亚马逊中的 EC2 实例获取 aws 帐号/id

ubuntu - 在 Docker 中运行 Qt5 GUI

python - celery.service : Failed with result 'signal'

消费者-生产者,断言失败

amazon-web-services - 无法启动 EC2 实例 - "Your quota allows for 0 more running instance(s)"

AWS 上的 MYSQL 或 PostgresQL

amazon-s3 - 有什么方法可以从 amazon s3 提供私有(private)静态文件

mongodb - EC2 安全组中的禁止规则不会影响已建立的 MongoDB 连接