如何在Linux下最好地使用亚马逊的“短暂”SSD设备?

亚马逊将“临时”SSD设备附加到大多数实例types – 这些都包含在虚拟机的成本中,速度很快,但是当虚拟机closures时,它们上的任何数据都会丢失。

如何充分利用它们? 我列举了以下三种可能性。 你拿什么? 有没有类似“最佳做法”的指导呢?

交换和tmpfs

最简单的方法是将所有这些设备初始化为swap:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdn 202:208 0 37.5G 0 disk [SWAP] xvdo 202:224 0 37.5G 0 disk [SWAP] xvde 202:64 0 75G 0 disk / 

然后在tmpfs上安装“discardable”文件系统(比如/ tmp)(大小设置为交换的100%)。 然后,可以将各种应用程序(varnish,rpmbuild,memcache,mysql)configuration为使用tmpfs支持的文件系统来存储任何可丢弃的数据。

这种方法的优点是简单,使所有的存储连接到一个虚拟机可用。 缺点是,应用程序可能没有足够的“可丢弃”数据来利用相当大比例的“短暂”存储 – 导致浪费。

镜像“短暂”和真正的存储

另一种方法是使用mdadm(8)将临时存储与镜像arrays(RAID1)中的实际(EBS卷)配对。 系统可以configuration为始终从镜像的快速“短暂”一侧读取,但等待双方写入时报告准备就绪。

这种方法在永久性和“短暂”设备上存储相同的数据,只有当存在更多的“临时”存储时才有意义,这比真正需要交换或直接使用应用程序更为重要。 快速SSD成为直写caching。

因为这样的arrays上的数据可以在重新启动后存活下来,并且可以用于所有的事情,而这些事情通常会被读取,但很less被写入,所以这似乎是一个很好的通用解决scheme 缺点是安装的复杂性和“成本” – 用这样一个镜像caching100Gb EBS卷,我们需要使用100Gb的临时存储。

使用ZFS

先进的ZFS (最初由Sun for Solaris开发并移植到FreeBSD和朋友)也可用于Linux 。 这将允许使用较小的SSD来caching较大EBS卷的最常用部分,从而解决上述镜像方法的缺点之一。

这种方法的优点是解决了另外两个问题 – 提供了一个更好的通用解决scheme。 使用ZFS还提供了其他function(如远程复制),稍后可能会对此有所了解。 缺点在于它是复杂的,据报道,内存饥饿。