【问题标题】:No space left on device even after increasing the volume and partition size on EC2即使在 EC2 上增加卷和分区大小后,设备上也没有剩余空间
【发布时间】:2018-09-25 12:14:45
【问题描述】:

我有一个带有 2 个 EBS 卷的 EC2 实例。在根卷上,我增加了卷大小。

首先我修改了volume size on console。然后按照这个指令到extended the partition following this instruction

但是,当运行任何命令时,我得到 No space left on device。

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

请告诉我如何解决此错误。

【问题讨论】:

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


    【解决方案1】:

    如果您使用的是 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

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

    【讨论】:

    • 我已经做到了。它不起作用。我认为这个问题与 inode 用完有关。请让我知道如何解决它。您认为使用 dd 命令减小块大小就足够了吗?
    • @JackDaniels 我已经更新了我对 inode 问题的回答,请检查并告诉我。
    • 我正在使用大量的小文件。我不应该删除它们。我需要一种在不耗尽 inode 的情况下使用大量小文件的方法。
    【解决方案2】:

    您的 /(根)目录中的 inode 已用完。所以要调试它,你需要:

    1. 查找指向或打开诸如for i in /*; do echo $i; find $i |wc -l; done之类的文件的inode是什么

    2. 现在查找需要更多时间的目录,然后删除该目录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-18
      • 2020-09-29
      • 1970-01-01
      • 2014-08-21
      • 2012-12-29
      • 2012-01-14
      • 2012-05-15
      • 2018-11-22
      相关资源
      最近更新 更多