在Linux中分区磁盘的最佳方法是什么? (RAID,分区或LVM)

有几种方法可以在Linux中分割磁盘:raid,分区和LVM。 如何select?

我们有一个10 +以上的磁盘服务器。 我们系统中的一些数据是暂时的,我们希望使用RAID 0。 有些是重要的,所以我们使用RAID 1.当然有操作系统和应用程序,但是我们可以负担得起他们,所以没有计划他们的突袭。

这里是他们的文件列表和计划的RAID:

/ : no raid /opt/app/logs : raid 0 /opt/data/tmp : raid 0 /opt/data/database/data : raid 1 /opt/backup : raid 1 

有几种方法来分配磁盘:

1)使用RAID:

 one disk without RAID 2 RAID 0 2 RAID 1 

2)使用分区:

 one disk without RAID one RAID 0 with 2 partitions one RAID 1 with 2 partitions 

3)使用LVM:

 one disk without RAID one RAID 0 with 2 logvols one RAID 1 with 2 logvols 

请问,有人可以弄清楚,从行业实践或个人经验或专家/书籍的参考?

我们正在一个真正的生产项目。 对不起,我们没有足够的知识,但我们必须执行。

英文不好,请让我知道,如果你需要更多的信息。

谢谢! XM

编辑:Linux设置2个分区(其中之一是/ boot),其中一个在其磁盘上有2个logvols(swap,/); 我们不关心他们。

我的首选布局是:

 2 disks for the OS in RAID1 (protected against a HDD failure) 2n disks for the RAID10 (protected against a HDD failure) rest of the disks for RAID0 (no redundancy, maximum speed) 

如果你真的坚持有一个单一的系统磁盘,它不会改变布局。

在(每个)系统磁盘上,我都有一个独立的/ boot文件系统分区。 剩下的磁盘我已经变成了LVM物理卷。 我喜欢有可以填充在单独的逻辑卷上的操作系统文件系统(/ tmp,/ var,/ opt,如果有东西写入日志的话)。 因此,这将导致/ boot(镜像,无LVM)和/,/ tmp,var和可能的/ opt文件系统,每个文件系统都位于镜像磁盘上的单独逻辑卷上。

在其他每个磁盘上,我都会创build一个Linux raidtypes的单个分区,并创build相应的RAIDarrays(一个RAID 10,一个RAID 0)。 在每个arrays上,我都会创build一个types为Linux LVM的分区,并创build两个独立的卷组,一个用于冗余,一个用于非冗余数据。 然后对于每个文件系统你打算做一个逻辑卷。

在每个卷组中,我都build议留出一些未使用的空间,以便您可以执行LVM快照并在不closures服务器的情况下执行文件系统的fsck。 我也会禁用所有文件系统的自动fsck(tune2fs -i 0 -c 0 / device / name)。

合理

1)镜像操作系统磁盘。

系统硬盘坏掉整个机器。 您的数据是受保护的,但是您的生产将停止,直到您可以携带replace磁盘并重新安装/恢复操作系统。 在生产环境中,安装一个磁盘通常更便宜。

2)为RAIDarrays分区磁盘。

我使用的所有服务器都有分区表。 你可以使用整个磁盘作为RAID / LVM卷,但是最后你会得到一些有分区表的机器(在/ dev / sdX1上)和一些没有(在/ dev / sdX上)的机器。 如果出现故障并需要在压力下恢复,我喜欢在环境中减less一个variables。

3)RAIDarrays上的LVM

LVM具有两个优点:文件系统大小的简单更改和fsck文件系统的function,而不会导致整个服务器停机。 无声的数据损坏是可能的,并发生。 检查它可以为你节省很多的兴奋。

4)tune2fs -i 0 -c 0

在重新启动之后有一个大文件系统的惊喜fsck是一个耗时和令人神经兮兮的事情。 禁用它并定期执行文件系统的LVM快照。

一个问题:/ opt / backup是您计划保留生产环境备份的地方吗?

别。

在机器的其他地方备份备份。 恶意程序,拼写错误的命令(例如rm -rf / tmp/unimportant/file )或者某些水溢出/淹没错误的地方将使您无法使用系统和备份。 如果一切都失败了,有两个外部USB磁盘进行备份,仍然比同一个盒子里面的分区要好。

你没有提供关于各个领域的大小以及它们如何使用的信息。 假设tmp需要快速的随机访问和存储较小的文件,数据库具有事务性工作负载,并且日志主要是只写的,并且备份相对不常恢复,我可能会使用:

  /opt/data/database/data 4 (maybe 6) dedicated disks as RAID 1+0 

这大概是服务器的价值所在 – 所以你希望它尽可能快/尽可能安全。

TMP文件系统的Raid 0只能让你在那里存储很多非常大的文件,并使用顺序访问。 通常这不是我期望看到的临时文件的访问模式。 您的日志可以使用RAID 0,但是您是否真的想为日志专用两个磁盘? 我会proabably去两个磁盘拆分成2个分区,一个从每个磁盘作为日志的RAID 0,一个从每个磁盘作为TAM的RAID 1。

我强烈build议根文件系统镜像容错。 因此,2个磁盘在这里,再次在2个分区中,镜像为根文件系统,并为交换条带化。

根据tmp空间和虚拟内存之间的关系,如果他们没有做同样的事情来将tmp和swap的2个分区合并成4个磁盘条带集的arrays,可能是明智的。

….你有2个磁盘备份。 但我build议你在别处保留备份。 如果是我,我会使用这些作为数据库raid集的临时成员 – 然后破坏集合,并以独立集的forms启动它们,并在其上启动一个新的DBMS实例,以最less的停机时间获取备份。

至于是否使用分区或LVM – 没有太多的select – 我会倾向于分区,因为它使configuration一个非常混乱的交叉依赖关系更困难。

可能你应该做的是做任何你的存储厂商build议。 据推测,你有一个硬件电池备份RAID控制器系统,所以你可以使用供应商的工具,以最优化的方式进行configuration。

在这些系统中这是非常重要的,而不是做“太怪异”的事情。