我正在试图find从用户文件中分离操作系统文件的最佳实践方法。 我想把我的新实例(创build时)硬盘分成多个分区(为了更好的性能和安全性)。
如何确保以下文件系统安装在c4.xlarge实例中的单独分区上,Ubuntu Server 14.04 LTS(HVM),SSD卷types:
单独的分区为:
/usr /var /tmp /boot /home Separate partition for Apache
非常感谢
实际上,有一个令人信服的理由不会在EC2中分割你的分区:
… 3 IOPS / GiB的基准性能
一般用途的固态硬盘容量 – 往往提供最好的性价比 – 可以处理更多的I / O操作,每秒更大。
通用(SSD)卷的性能受卷大小的控制,这决定了卷的基准性能级别以及它累积I / O信用的速度; 更大的卷具有更高的基准性能水平,并更快地累积I / O信用额度。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html#EBSVolumeTypes_gp2
单个体积越大,performance越好。 这是云服务器(至less在EC2)和物理服务器之间的重大差异之一。 让这些不同的文件系统在不同的磁盘上直观地意味着改进的性能,但事实certificate正好相反。 一个大的音量performance比两个大一半,除非有一些机会,你的工作量是平均分布在两个…这是不可能的。
如果你的多个分区是在同一个卷上,而不是在同一个卷上,这样可以消除性能方面的问题,但是同一卷上的多个分区没有多大意义,因为这最终会让你在一个分区上留下空闲的空间,在另一个嘎吱嘎吱的空间。
当然,您可以为预设的IOPS支付额外费用,但似乎只有合理的才能“抵制”系统。
当你在EC2上做一个“全新安装”的时候,当然,你不是按常规的意义“安装”操作系统,而是克隆一个由特定的Linux发行版制作的基本安装,而你可以从此基准设置每个新虚拟机,或者您可以创build自己的基准映像(Amazon Machine Image / AMI),其中包含一些元数据和指向磁盘卷快照的指针,这些快照将被克隆到新卷中以构build每台新机器…这意味着你必须支付存储与你想要的分区和大小的快照…或者在你构build每台机器之后调整它们的大小。 另一方面,如果使用单个文件系统,则主映像可以很小,并在第一次启动时自动增长文件系统,以便将磁盘填充到已configuration为特定机器的任何大小。
当然,这是部分意见,但我的标准做法是使用单个文件系统, 除非我有一个单一目的需要大量存储,例如数据库或应用程序需要一个非常大的临时/工作目录。 (我有几个系统需要2TB的临时空间 – 他们需要 – 以及一个20GB的root / boot / everything – 其他的磁盘卷…没有意义存储2TB快照来克隆机器。)
所以,假设你没有被说服。 你怎么做你问的? 用手。
您将需要2个实例,在相同的可用区域。 在第一个基地安装。 你会暂时使用它。 无论出于何种目的,都可以启动第二个磁盘卷,并附加所有要连接的磁盘卷。 安装操作系统,然后记下卷到设备的映射。 然后停止第二个实例,分离所有卷,并将其附加到已经运行的第一个卷。 根据需要格式化额外的磁盘( 可以对它们进行分区,但不是必须的 – 使用整个块设备,而不使用分区表,例如/dev/xvdf而不是/dev/xvdf1 ,以后可以更容易地扩展文件系统,挂载你所有的文件系统,重新安排你的文件,编辑/etc/fstab (不是临时实例上的/etc ,而是临时实例上其他地方连接的根卷上的一个),以便额外文件系统将从正确的卷装载到正确的位置,然后卸载所有的文件系统,分离卷,按照正确的顺序重新连接,然后重新启动。
一旦你确认它启动了,并且所有的东西都在正确的地方,那就从它里面创build一个AMI,然后从那里克隆你的将来的机器,然后你将拥有你的磁盘卷和文件系统以及(可选的)分区要他们。 如果没有,你可能最终不得不查看控制台日志,并分离卷并将其挂回到临时机器,直到find你错过的东西……但原则上,这是完全可行的,也许比听起来更直接。 无论如何,有一点点。