将/ var目录移动到EC2实例上的/ mnt

我正在尝试运行一组运行Ubuntu 12.04的EC2实例的标准configuration。 这些服务器将主要是Ruby on Rails应用程序的Web服务器。 当你configuration一个新的大型实例时,会给你一个8GB的主节点,然后挂载到/ mnt的临时存储为400GB。

对于将具有发展潜力的目录移动到/ mnt目录,我特别想到/var/www/var/log似乎是合乎逻辑的。

我的问题是双重的:

  1. 这是一个好主意,还是有我无法看到的陷阱?

  2. 如果这是一个好主意,我应该如何去configuration这个。 我有能力configuration新的实例和旧的实例。 我关心的是长期的configuration,我不一定关心停机时间。

我是一个在devops方面有一定经验的开发人员,但是装载驱动器是我以前没有面对过的,所以我们将非常感谢。

我不知道你在/var/www保留了什么,但是我的服务器上的内容绝对不能被描述为“短暂的”,我的理解是“随时可以离开,我不会介意”。 如果这不是“短暂的”亚马逊的意思,我很抱歉。

至于/var/log ,如果你根本不关心日志数据,不要把它放在第一位。

如果你真的关心它,但不能长时间保存在主存储器中,那么这不是一个日志pipe理问题。 我倾向于使用logrotate (如果它可用),并将其configuration为每周将旧日志移出到/mnt 。 这样,旧的日志在那里(直到临时存储消失),但当前日志在主存储上是安全的。

像一个logrotate食谱

 /var/log/foo { olddir /mnt compress weekly rotate 1000 postrotate /etc/rc.d/init.d/fooservice restart endscript } 

可能是有用的,至less作为一个模板。

你的计划与我所有的实例类似,但是我也包含了/ var / lib / mysql和大部分/ etc / {apache2,mysql,php}目录。 我这样做,所以当一个实例因为任何原因而终止时,我从来没有失去configuration。

  1. 这是一个很好的主意,你永远不会失去你的数据。 正如我所提到的,如果实例出现故障,您将保留该信息,只需将其挂载到新实例即可。

  2. 最简单的方法是简单地将这些目录移动到EBS卷,然后在原始位置为它们创build符号链接。

如果应用程序累积的数据(在文件系统上)有价值,则忽略400GB的免费存储并安装EBS卷。 除此以外…

答案取决于(a)你的申请,和(b)“现货”或“保留”实例,但是

1)是的,这是一个好主意,因为显然,你不太可能用光盘空间。 是否可能取决于你的Rails应用程序的function,但仅仅为了分离和明确定义什么是“你的”和“我的”,我倾向于把所有“我的”东西放在/mnt 。 没有必要手动安装它。 那只是cd mnt ,你离开了。 有一些权限摆弄你不会有任何问题克服。

但是,当然这个空间是“短暂的”,所以它在服务器的时候死掉,这导致我们获得了第二个资格。

2)“现货”还是“保留”实例?

如果你有一个现货实例,那么你必须接受这个机会,尽可能远,你的最高价格将会高出,服务器将意外终止。 如果服务器上的数据具有价值,那将会出现问题。

但! 如果您为“保留”实例支付溢价,那么(我没有读过所有罚款免责声明; – /)意味着您的服务器意外终止的威胁以及应用程序的数据累积是非常大的降低。 您可能可以安排定期备份(到S3?),并且可以非常容易地进行睡眠,而无需增加EBS费用。

如果说长期的话,最小的停机时间(和风险)是目标。 所以你宁愿多花一分钱来节约便士,然后忽略/mnt并且非常熟悉如何创build和安装EBS卷。 把你all的东西放在那里。 这样你可以重新启动服务器而不会失眠。 这些东西不会消失,不pipe什么样的灾难发生之前,都不会“花费一点时间”把事情回到原来的位置,从而需要循环服务器实例。