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


28

我在AWS云上为Web服务器运行Ubuntu 11.04实例,现在我得到服务器的/分区中没有磁盘空间。df -ah说这个

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.large,具有8GB EBS。现在我得到/ dev / xvdb中有足够的磁盘空间。

有没有一种办法可以分配一些磁盘空间到/的/ dev / xvdb或任何其他方式。请为我建议可能的解决方案,是否可以将相同的/ dev / xvdb分区用于另一个实例。


1
2017年更新:Amazon现在允许即时调整驱动器(甚至引导驱动器)的大小!看到我的SO答案在这里:stackoverflow.com/a/42791031/7022062
德米特里·谢夫科普利亚斯

Answers:


26

答案是双重的。

解决方法:将/ dev / xvdb(/ mnt)用于临时数据

这就是您的Amazon EC2实例的临时存储,其特征与在其他地方使用的持久性Amazon EBS存储的特征有很大不同。特别是,这种临时存储会在停止/启动周期中丢失,并且通常会消失,因此您绝对不希望在其中放置任何持久价值的东西,即,只在其中放置临时数据就可以轻松丢失或重建,例如交换文件或在计算过程中使用的严格临时数据。当然,例如,您可能在此处存储了巨大的索引,但是必须准备好在由于某种原因(实例重新启动,硬件故障等)清除存储之后重建这些索引。

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

这就是您的Amazon EBS支持的 EC2实例的所谓的“ 根设备存储 ” ,它特别有利于Amazon EBS的灵活性和持久性,即,存放在那里的数据相当安全,并且可以在实例故障中幸免;您可以通过定期对存储在Amazon S3上的EBS卷进行快照来提高灵活性和耐久性,该快照具有众所周知的99.999999999%的耐久性。

此快照功能使您可以依次解决问题,在此范围内,可以用所需的更大或更少的容量来替换当前的8GB EBS根存储(/ dev / xvda1)。Eric Hammond的出色文章“正在运行的EBS Boot EC2实例上调整根磁盘的大小”概述了该过程:

只要您对EC2实例的停机时间感到满意(几分钟),就可以使用更大的副本来更改根EBS卷,而无需启动新实例。

如果您正确准备了他描述的步骤(我强烈建议您先使用一个废弃的EC2实例对其进行测试,以熟悉该过程,或者甚至通过定制的脚本将其自动化),那么您应该能够完成其中的一些步骤分钟停机时间确实如此。

也可以通过AWS管理控制台执行大多数概述的步骤,从而避免使用Amazon EC2 API Tools;归结为:

  • 停止(不终止!)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个EBS卷,且大小不同(1-15GB)。

但是,您需要意识到潜在的网络性能问题,因为所有这些EBS卷都使用相同的LAN进行I / O,这甚至可能产生各自的性能提升,或者在极端情况下会使网络饱和-因此,这通常取决于关于用例和手头的工作量。


我正在使用/ dev / xvdb来保存我的数据库,该数据库现在的大小接近16GB,正在运行一个后台进程以使其保持最新状态。因此,对于该数据库而言,最好的永久存储是什么。我应该去Amazon RDS还是Amazon DynamoDB。你有什么建议。我在此实例上运行PHP服务器。
Sumant 2012年

2
@Sumant:不好,所以您确实做了危险的事情,即将数据持久保存在基本上可以随时消失的磁盘上(通常不会,应该这样对待)?我希望我没有误导蜜蜂在这方面-请过程(你在为了减轻这种以避免数据丢失时要格外小心?有数据库备份不管,你)!
斯特芬欧宝

@Sumant:关于您的问题-您根本不需要更改应用程序体系结构(或相应的数据库)来解决存储问题,只需调整根磁盘的大小或按建议附加更多EBS卷即可。但是,如果您也想改善和分离数据库层,那么考虑到未来的增长,这在原则上是一件好事(但从一开始就附带相应的成本),并假设您当前正在运行MySQL,那么Amazon RDS将是完美和便捷的选择。Amazon DynamoDB需要全新的应用程序架构,并且仅适用于特定用例。
斯特芬欧宝

1
@Sumant:但请注意,将数据库迁移到m1.small RDS实例实际上可能会比在EC2上运行的当前MySQL的性能慢,后者正在运行m1.large并具有各自的CPU和I / O性能优势-无论是否适用,但是取决于您当前的数据库工作量。当然,您也可以使用较大的RDS实例来解决此问题,但是您的成本将相应增加。
斯特芬欧宝

1

是一种简单的方法来fstab,然后将其挂载为/ var / www / html / files2 /

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


使用UUID通过命令blkids挂载分区,并且fdisk说'/ dev / vxds /'来创建分区。使用午夜指挥官的文件与F6从一个文件夹移动到另一个,请确认您选择安装位置在正确的文件夹哦,当然你会加入到fstab文件后需要用mount -a“
丹尼尔斋

0

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

  1. 调整EBS大小
  2. 调整分区大小
  3. 调整分区大小首先,请转到您的AWS控制台,然后单击EBS并更改所需的大小,然后单击“修改”。

对于其余的步骤, 如果您有任何疑问,请遵循本文

谢谢!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.