![AWS 实例中“/”磁盘空间不足](https://linux22.com/image/1077075/AWS%20%E5%AE%9E%E4%BE%8B%E4%B8%AD%E2%80%9C%2F%E2%80%9D%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E4%B8%8D%E8%B6%B3.png)
我在 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。以下是您可以遵循的三个步骤:
- 调整 EBS 卷大小
- 调整分区大小
- 调整分区大小 第一步,转到您的 AWS 控制台并单击 EBS,更改所需的大小,然后单击修改。
其余步骤请按照本文 如果您有任何问题,请随时提问。
谢谢!
答案4
我今天因为这个问题苦恼了好几个小时。下面是一个简单的指南,介绍当 AWS 上的文件系统已满时我如何解决该问题。
- 在 AWS 中创建新卷
- 将附加卷附加到实例
- 将卷格式化为所需的文件系统
- 寻找空的驱动器上已满的文件夹(例如 /mnt)
- 将新卷挂载到已满的驱动器(将新卷挂载到 /mnt)
- 将您能找到的最大文件移动到新卷
- 创建指向新文件的符号链接
这将在旧文件系统上创建空间,但您仍然可以访问所有文件。
玩得开心!