AWS 实例中“/”磁盘空间不足

AWS 实例中“/”磁盘空间不足

我在 AWS 云上运行 Ubuntu 11.04 实例作为我的 Web 服务器,现在我发现没有磁盘空间/我的服务器的分区。DF-啊说这个

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  7.8G   97M  99% /
proc                     0     0     0   -  /proc
none                     0     0     0   -  /sys
fusectl                  0     0     0   -  /sys/fs/fuse/connections
none                     0     0     0   -  /sys/kernel/debug
none                     0     0     0   -  /sys/kernel/security
none                  3.7G  112K  3.7G   1% /dev
none                     0     0     0   -  /dev/pts
none                  3.7G     0  3.7G   0% /dev/shm
none                  3.7G   80K  3.7G   1% /var/run
none                  3.7G     0  3.7G   0% /var/lock
/dev/xvdb             414G   16G  377G   4% /mnt

现在我已经尝试过这些东西来获得一些额外的空间/分割

  • 清理 Apache 的所有日志文件。
  • 从服务器中删除所有不必要的文件。
  • 主目录清理。

但我仍然没有足够的空间。此实例类型是m1.大8GB EBS。现在我得到了足够的磁盘空间/dev/xvdb

有没有办法可以分配一些磁盘空间给//dev/xvdb或任何其他方式。请建议我解决这个问题的可能方法。是否可以使用相同的方法/dev/xvdb与另一个实例进行分区。

答案1

答案是双重的。

解决方法:使用 /dev/xvdb (/mnt) 存储临时数据

这就是所谓的临时存储亚马逊 EC2实例及其特征与持久性有很大不同亚马逊 EBS存储正在其他地方使用。特别是,这个临时存储将在停止/启动周期中丢失一般可以消失,所以你肯定不想在那里放任何有持久价值的东西,即只放暂时的您可以承受丢失或轻松重建数据,例如交换文件或计算期间使用的严格临时数据。当然,例如,您可能在那里存储大量索引,但必须准备好在存储因任何原因(实例重启、硬件故障等)被清除后重建这些索引。

解决方案:调整 /dev/xvda1 (/) 的大小以获得所需的存储空间

这就是所谓的根设备存储你的Amazon EBS 支持EC2 实例,它有助于亚马逊 EBS尤其是灵活性和耐用性,即存放在那里的数据是相当安全的,并且可以在实例故障后继续存在;你可以通过定期拍摄 EBS 卷的快照来进一步提高灵活性和耐用性,这些快照存储在亚马逊 S3,具有众所周知的 99.999999999% 耐用性。

此快照功能可让您依次解决问题,因为您可以将当前的 8GB EBS 根存储 (/dev/xvda1) 替换为一个大小与您想要的大小相等的存储。该过程在 Eric Hammond 的优秀文章中概述调整正在运行的 EBS Boot EC2 实例上的根磁盘大小

只要您可以接受 EC2 实例的短暂停机时间(几分钟),就可以用更大的副本更改根 EBS 卷,而无需启动新实例。

如果您正确准备了他描述的步骤(我强烈建议先用一次性 EC2 实例对它们进行测试以熟悉该过程,或者甚至通过定制的脚本自动执行该过程),您应该能够在几分钟的停机时间内完成该过程。

大部分概述的步骤都可以通过AWS 管理控制台也避免了处理Amazon EC2 API 工具;这可以归结为:

  • 停止(不是终止!)EC2 实例
  • 从已停止的实例中分离 EBS 卷
  • 创建分离的 EBS 卷的快照
  • 从创建的快照创建一个新的(更大的)EBS 卷
  • 将新的 EBS 卷附加到 EC2 实例(重要的!如果这是您的根设备,请确保将其命名为与实例的根设备完全相同的名称,例如 (/dev/sda1) 或 (/dev/xdva1),否则它将作为块设备而不是根设备连接,并且您将无法启动实例,因为实例没有列出根设备。)
  • 通过 SSH 进入正在运行的实例,并通过以下方式确认一切正常df -ah
    • 如果你的系统没有自动调整文件系统的大小,你需要按照 Eric 的文章中的说明手动执行此操作

祝你好运!


选择

鉴于这些 EBS 卷的多功能性和易用性,另一个选择是将更多的 EBS 卷附加到您的实例并将明显可分离的关注区域移到那里。

例如,我们正在使用几个非常重量级的 Java 应用程序,每个版本消耗 1-2GB 的存储空间;为了简化版本升级,并且通常能够根据我的判断将这些应用程序移动到不同的实例,我将它们分别放在专用的 EBS 卷上,将它们安装到一个实例并将它们软链接到所需的位置,例如通常/var/lib/<app>/<version>/usr/local/<app>/<version>

使用此方法,我们目前正在运行 EC2 实例,其根设备存储仍为其默认大小 8GB(与您的一样),但有时也会附加最多 8 个大小各异(1-15GB)的 EBS 卷。

不过,您需要注意潜在的网络性能问题,因为所有这些 EBS 卷都使用同一个 LAN 进行 I/O,这甚至可能带来各自的性能提升,或者在极端情况下使您的网络饱和 - 所以通常这取决于用例和手头的工作负载。

答案2

是的,一个简单的方法就是将其 fstab 然后将其挂载到 /var/www/html/files2/

然后 mkdir /var/www/html/files2/website 然后 ln -s -d /var/www/html/website /var/www/html/files2/website

答案3

今天我遇到了同样的问题,当您创建新的 ec2 实例时,默认情况下 EBS 为 8GB。您可以修改附加 EBS 的大小,而无需创建新实例或拍摄快照或分离 EBS。以下是您可以遵循的三个步骤:

  1. 调整 EBS 卷大小
  2. 调整分区大小
  3. 调整分区大小 第一步,转到您的 AWS 控制台并单击 EBS,更改所需的大小,然后单击修改。

其余步骤请按照本文 如果您有任何问题,请随时提问。

谢谢!

答案4

我今天因为这个问题苦恼了好几个小时。下面是一个简单的指南,介绍当 AWS 上的文件系统已满时我如何解决该问题。

  1. 在 AWS 中创建新卷
  2. 将附加卷附加到实例
  3. 将卷格式化为所需的文件系统
  4. 寻找空的驱动器上已满的文件夹(例如 /mnt)
  5. 将新卷挂载到已满的驱动器(将新卷挂载到 /mnt)
  6. 将您能找到的最大文件移动到新卷
  7. 创建指向新文件的符号链接

这将在旧文件系统上创建空间,但您仍然可以访问所有文件。

玩得开心!

相关内容