在这里,我正在谈论云服务器(来自任何供应商),其中有一些短暂的SSD存储。 使用标准映像时,默认情况下,这个短暂的SSD存储空间被浪费了,没有被利用。
在这样的虚拟机上部署LAMP堆栈时,使用临时SSD存储的一些显而易见的方法是什么?
一个明显的例子是将swapfile和/ tmp放在临时表上。
还有什么是低悬的水果? 事情如此明显,只有无能的系统pipe理员才会错过?
/tmp和swap的确是明显的低挂果。
我能想到的任何其他东西,我build议,将是非常特定于应用程序。
不pipe是这样,还是你我都是比较无能的系统pipe理员,因为我们都忽略了一些明显的东西。
临时存储是免费且快速的,并且在用户启动的实例重新启动的情况下仍然存在,所以最终“一次性”的任何东西都可以(自动地)从其他地方(也许从代码存储库克隆出来或从S3中存储的压缩包中提取)当一个实例启动或以其他方式派生时。
当你完全“思考云”时,很多人会争辩说,在许多或大多数服务器上的一切都应该是一次性的……我build议我们中的许多人或大多数人认识到这一趋势只是在我们的路上 – 完全抵达。
如果您的系统日志正在被远程收集,那么您的本地系统日志可以被认为可以进入临时磁盘。 对于Web服务器或代理日志也是如此,因为日志的内容不被认为是特别有价值的,或者您主要是因为可以收集它们。
说到“仅仅因为可以”,在某种情况下,我在物理数据中心有一个带有SANarrays的旧式服务器,其中有大量的静态资产最终将被迁移到S3。 在此之前,除了计划的备份之外,在临时驱动器没有特别明确的用途的某些情况下,这些文件也会同步到临时驱动器。 这些作为在线备用副本,并且在发生灾难性事件时比从备份中恢复要快得多。
我们有一个应用程序,每天两次从头开始(从其他来源)完全构build一个实质的SOLR索引,然后将其推送到主服务器。 这不是经典意义上的“临时”空间,但是,是build立在临时磁盘上的。
我的一个临时数据库服务器设置是作为一个特定于应用程序的例子来考虑的……它仅用于testing针对生产数据库克隆的代码。 整个MySQL后备存储位于临时磁盘上。 我已经定制了initscript,所以“sudo服务mysql resync”会停止MySQL服务器守护进程,移动当前目录(在文件名中用date和时间重命名),拷贝(从EBS)一个新鲜的后台存储MySQL安装,符号链接/usr/local/mysql/data到新的临时目录,启动MySQL,获取生产数据库的实时副本,加载它…和开发人员现在有一个相同的生产数据库克隆…这当然是一次性的,因为它立即“陈旧”,只用于testing代码。 如果你从AMI启动一个新的AMI,它就会醒来,意识到它没有数据库,并立即抓取主DB的新副本。
另一种情况可能是集群数据库,其中所有节点都有一个所有数据的副本,并作为仲裁(如MariaDB Galera集群)运行。 这样的群集,尤其是在地理上分布的情况下,在正常操作下需要适当select(通常是奇数)的节点,因为在隔离事件(分区)中整个群集将变得不可用,作为保护措施,除非单个分区仍然存在包含分裂发生之前在线的节点数量的一半以上。 当分割中间时,2节点群集或4节点群集变得毫无用处,因为没有剩下多数。 这有时会通过一个“仲裁者”节点来解决,仲裁者节点投票在法定人数中,但实际上并没有数据的副本。 它的整个存在是为了保持集群的快乐。 更进一步,充分利用该节点上的临时存储,使其成为一个完整的节点,为其提供数据的完整副本,而不仅仅是使其成为一个仲裁者。
一个潜在的有趣的想法将涉及在RAID-1configuration中组合一个临时卷与EBS卷。 取决于您相信的人,当同时读取多个文件时,读取I / O的可能性几乎翻一番。
我担心这个答案让我有些沉重地向DBA土地发泄,但是这些是我在世界上使用短暂卷的东西……除了你已经确定的显而易见的东西。