文件服务器-存储配置:RAID还是LVM还是ZFS还有其他……?


35

我们是一家从事视频编辑等业务的小公司,并且需要一个地方来保存大型媒体文件的备份副本并使其易于共享。

我有一个装有Ubuntu Server和4 x 500 GB驱动器的盒子。目前,它们与Samba一起设置为Mac / Windows工作站可以看到的四个共享文件夹,但是我想要一个更好的解决方案。这样做的主要原因有两个:

  1. 500 GB确实不够大(某些项目较大)
  2. 管理当前设置非常麻烦,因为单个硬盘驱动器具有不同数量的可用空间和重复数据(用于备份)。这是混淆了现在,一旦有多个服务器只会变得更糟。(“该项目在share4中的sever2上”等)

因此,我需要一种组合硬盘驱动器的方式,以避免由于单个驱动器故障而导致完全数据丢失,因此用户在每个服务器上只能看到一个共享。我已经完成了Linux软件RAID5的使用,并且体验较差,但是会再次尝试。LVM看起来还不错,但似乎没人使用它。ZFS看起来很有趣,但是它相对“新”。

组合方便用户使用的硬盘的最有效,风险最小的方法是什么?


编辑:这里的目标基本上是创建包含任意数量的硬盘但限制最终用户复杂性的服务器。(即,每个服务器看到一个“文件夹”)在这里备份数据不是问题,但是每种解决方案如何响应硬件故障是一个严重的问题。这就是为什么我将RAID,LVM,ZFS和谁知道的东西混在一起的原因。

我以前在RAID5上的经验也是在Ubuntu Server机器上进行的,有一些棘手且不太可能的情况导致完全数据丢失。我可以再次避免这种情况,但是感觉是我正在向系统添加不必要的额外故障点。

我没有使用RAID10,但是我们使用的是商用硬件,每个盒中最多的数据驱动器几乎固定为6。我们有很多500 GB驱动器,而1.5 TB非常小。(不过,仍然为至少一台服务器提供一个选项)

我没有使用LVM的经验,并且阅读了有关如何处理驱动器故障的冲突报告。如果(非条带化的)LVM安装程序可以处理单个驱动器发生故障,并且仅松散该驱动器上存储了一部分文件的文件(并且大部分文件仅存储在单个驱动器上),我们甚至可以忍受。

但是,只要我必须学习全新的知识,我就可以一直学习ZFS。但是,与LVM不同,我还必须更改操作系统(?),以增加我所在的位置和想要成为的位置之间的距离。我在uni上使用过solaris版本,但并不介意。

在IT领域的另一端,我想我可能还会探索FreeNAS和/或Openfiler,但这并不能真正解决如何组合驱动器的问题。


4
实际上,ZFS仅在Solaris / OpenSolaris上被视为稳定的生产就绪选项(尽管有些人会争辩说,即使ZFS在那里已经准备就绪)。
Christopher Cashell

6
关于LVM的另一个说明。。。不要再考虑冗余和磁盘故障。LVM永远不应该知道磁盘故障,因为它应该在较低级别(RAID)进行处理。LVM使您能够以更清洁,更灵活的方式管理和分区磁盘,但是它不会增加冗余,并且可以像处理非LVM分区一样处理磁盘故障(它会崩溃)。
Christopher Cashell

Answers:


28

LVM实际上被大量使用。基本上,LVM位于硬件(驱动程序)层之上。它不会增加任何冗余或提高可靠性(它依靠底层存储系统来处理可靠性)。相反,它提供了许多附加的灵活性和附加功能。LVM永远都不会看到磁盘消失或发生故障,因为磁盘故障应由RAID(无论是软件还是硬件)来处理。如果您丢失了磁盘并且无法继续运行(重建RAID等),则应该进行备份。永远都不需要尝试从不完整的阵列中恢复数据(如果是这样,则需要重新评估整个设计)。

使用LVM可以轻松扩展和缩小分区/文件系统,动态分配新分区的能力,对现有分区进行快照的能力以及将快照安装为只读或可写分区的能力。快照非常有用,尤其是对于备份之类的东西。

就个人而言,我在构建的每个盒子上的每个分区(/ boot除外)都使用LVM,并且在过去的四年中我一直在这样做。当您要添加或修改磁盘布局时,处理非LVM的盒子是一个巨大的痛苦。如果您使用的是Linux,则一定要使用LVM。 [注意:以上有关LVM的内容已更新,可以更好地说明它是什么以及如何将其适合存储方程式。

至于RAID,我不做没有RAID的服务器。由于磁盘价格便宜,我将选择RAID1或RAID10。更快,更简单,更强大。

不过,老实说,除非您已结识到Ubuntu(我通常会建议这样做),或者如果该框正在执行其他任务,则可能需要研究OpenFiler。它可以将您的设备变成具有Web界面的存储设备,并将为您处理所有RAID / LVM / etc,并允许您将存储导出为SMB,NFS,iSCSI等。


2
我赞同OpenFiler的建议。似乎永远无法满足所需的磁盘空间量,将服务器与数据分开将使最终用户的体验和管理变得如此轻松和美好。Netapp如此成功是有原因的。我建议遵循该模型。
2009年

1
我曾简要浏览过freeNAS ..有什么理由选择OpenFiler代替?
privatehuff

几年前,当我第一次与他们一起玩时,OpenFiler看起来更稳定,功能更丰富,具有更好的驱动程序支持,并且正在更积极地进行开发。我决定试一试,对我来说效果很好。老实说,我没有看过FreeNAS。FreeNAS可能赶上了OpenFiler,但我不知道。
Christopher Cashell

我一直在将FreeNAS用于SMB和iSCSI目标,这非常出色,从未错过任何机会。另一方面,我还没有评估过OpenFiler,所以我不知道它如何进行比较
Mark Henderson

13

ZFS确实可靠,并且确实可以使您的存储管理更加轻松。额外的好处是:smb与OpenSolaris中的ZFS集成在一起,并且可以很好地处理Raid。等待几天,下载当时发布的2009.6版本,然后在测试计算机上进行试用。我相信您会喜欢ZFS。

关于您的评论ZFS是新的:不再是新的!


“新”对我来说主要意味着,只是我多年以来一直没有听说过它,并且一直在玩它。等等。但是,我需要运行OpenSolaris才能使用ZFS吗?
privatehuff

我听说在其他UNIX上对ZFS有一些支持。
布拉德·吉尔伯特

1
如果需要ZFS,则需要在OpenSolaris上使用它。在Linux上的实现是通过用户空间完成的,因此会受到性能开销和高速缓存策略冲突的影响。
jldugger

3
其他操作系统上的ZFS支持严重缺乏功能。实际上,OpenSolaris是一个非常不错的操作系统,但是请使用真正的OpenSolaris。zfs在sharedmb = on backup / share1上设置了非常好的集成。
Wijnand

9

中心问题是:“这些数据有多重要?”

如果答案是“我可以轻松地重新创建它”,则您需要RAID5,可能在其顶部具有LVM,以简化管理。

如果答案是“我可以重新创建它,但是要花一些时间并且人们会抱怨”,则您需要RAID 6或更可能是RAID 1/10。

如果答案是“在我重新创建它时没有人做任何工作,并确保它是完美的”,则您需要ZFS / Raid-Z

请注意,您始终可以重新创建它。RAID不是备份。


1
“如果答案是“当我重新创建它时没有人做任何工作,并确保它是完美的”,那么您就需要ZFS / Raid-Z。每个涉及块冗余尝试的系统在重建期间都会遭受性能损失。
jharley,2009年

我追求的是数据的重要性,而不是相对的性能特征。重建期间的降级当然也很重要,但不是我要解决的问题。
user2108

RAID-Z或RAIDZ2如何提供比RAID6更好的冗余?两者最多可处理阵列中的任何2个故障磁盘。另外,RAID10处理的第二个故障磁盘不如RAID6出色,因为您需要正确的磁盘来进行故障,而不是其余任何磁盘。RAID10的性能比RAID6更好。旁注:Linux 2.6.30已发布,可让您从RAID1-> RAID5 <-> RAID6 ==迁移!
serverhorror

5

要在同一机箱中连接许多驱动器,硬件RAID控制器是最好的工具。它将为您的驱动器提供许多SATA连接器,通过RAID-5或最好是RAID-6进行冗余,并且也可能提供更好的性能。

在基准测试中,软件RAID性能通常比硬件RAID好,但是文件服务和软件RAID都占用大量CPU,并且在工作时会与您的处理器竞争。我的经验表明,除非您使用双四核系统,否则配置正确的硬件RAID将击败软件RAID。

良好的硬件控制器和良好的linux支持:

  • 槟榔
  • 3件
  • 新的Adaptec系列(旧版本)
  • LSI MegaRAID

2
我要在3ware卡上发出声音,它们在9650se和9690se上特别邪恶,在9650se上使用了最多16个驱动器的两种类型的卡,没有真正的问题和良好的稳定产品。

4

RAID不像LVM。您可以使用RAID进行容错分区,但是LVM用于简化磁盘分区和文件系统版本。您可以在LVM或ZFS上使用RAID(ZFS可以同时在RAID和LVM上工作)。在我看来,ZFS比LVM更好,但是:

  • 仅在Solaris 10/11 / OpenSOlaris上,不能在Linux上使用它
  • ZFS是磁盘管理和文件系统,LVM允许使用您需要的任何文件系统

在Ubuntu上,我更喜欢将RAID5 MD与LVM一起使用。


1
ZFS在FreeBSD 7.x和Nexenta上都可用。
jharley,2009年

4

看一看Nexenta和OpenSolaris提供了什么,我想您会为之无愧而感到非常高兴。有传言称,OpenFiler的下一发行版也将使用FreeBSD ZFS端口(尽管从功能角度来看,它们还是相当落后的)。

话虽这么说,我尽量避免在软件中进行RAID5,RAID6或RAID50,而更喜欢使用硬件控制器来卸载所有XOR工作。Linux软件中的RAID1和RAID10可以很好地工作,并且从那里开始,我将LVM放在它们之上,以便在冗余到位后对我拥有的块进行处理时具有更大的灵活性。RAID + LVM + XFS是我最喜欢的Linux配置。但是,我每天都会使用ZFS。


传统上,硬件RAID的性能不如软件RAID好-通常,它只有在多次写入(专用控制器可以复制(即不必通过PCI总线))可以复制专用控制器的情况下才具有优势。还有其他一些问题使用硬件RAID,例如固件的质量和无法(轻松)更新。最后,它增加了另一个故障点。由于这些原因,我倾向于避免使用硬件RAID。出于同样的原因,我还没有玩过新的硬件RAID选项!:)
Brian M. Hunt

2

RAID与LVM不能很好地进行比较,因为它们分别执行不同的角色,并且经常一起使用。RAID用于驱动器冗余,LVM可用于将RAID设备分解为逻辑卷,可用于轻松调整大小和拍摄快照。


2

我为非常相似的公司/情况运行文件服务器。基本上是一个3人的图形部门,拥有30TB的存储空间和小公司的预算。我们的典型项目从0.5TB到6TB。文件服务器正在服务一个相当大的渲染服务器场,这确实可以发挥作用。

在我的设置中,我运行了3U服务器,该服务器运行Linux,并连接了外部硬件RAID6阵列。我使用LVM管理物理和逻辑卷,并运行XFS文件系统。我要做的是为每个项目创建一个逻辑卷,然后随着项目的增长对其进行扩展。项目完成后,我可以将作业存档到磁带上并销毁逻辑卷。这将使该空间返回到卷组,在该卷组中将其重新分配给下一个项目。

这是一种非常干净的方式来利用我们的存储,但是这种方法有两个缺点。您最终不得不对逻辑卷的大小进行微管理,以尝试平衡分配给逻辑卷的空间量,以便您有足够的空间来完成工作,但又不会过度分配它并最终浪费空间。我们的渲染场每天能够生成许多TB的数据,如果您不密切注意这一点,则会急忙用完空间。我最终设置了一些脚本,这些脚本监视逻辑卷上可用空间的趋势,并将自动增长它们。即使有了80个左右的逻辑卷,在所有逻辑卷中仍然存在大量未使用的空间。我已经暗示了第二个问题。...LVM没有 真正可以做精简配置,而XFS仅允许您扩展文件系统。因此,将空间过多分配给逻辑卷可能会增加很多不可用的空间。

所有这些都是大约5年前设置的,如果今天进行设置,我将使用OpenSolaris和ZFS。主要原因是ZFS池存储方法意味着较少的卷管理。您仍然可以将每个项目分成自己的文件系统,而不必对各个卷的大小进行微管理。ZFS还具有其他一些非常好的功能,使其成为更好的选择,但是在serverfault上还有其他问题。

我认为ZFS绝对是当今可用的最佳免费解决方案。


2

如果您仍然使用Linux,请考虑以下几点:

  • 也考虑一下文件系统。您的4x 500GB示例是关于ext3的最大容量,我会建议。我不建议创建更大的ext3文件系统,因为fsck时间可能非常长。创建几个较小的文件系统,而不是一个大的文件系统。
  • 正如您提到的视频数据:ext3 无法有效地处理大文件,因为它必须创建间接,双间接和三间接元数据块来存储大文件的数据,并且您将为此付出代价。如今,ext4支持扩展并更好地处理它。但是,那是相当新的东西,例如Red Hat Enterprise Linux 5尚不支持它。(某些企业发行版将支持XFS之类的替代产品)。
  • 如果任何数据块上都有数据损坏,您将很难用Linux文件系统注意到这一点。另一方面,ZFS 校验所有元数据数据,并在每次从磁盘读取数据时验证校验和。(还有后台清理)
  • 在Linux上,RAID 重建时间与磁盘大小成正比,因为RAID层不知道文件系统(层)的内容。ZFS的RAID-Z重建时间取决于故障磁盘上的实际数据量,因为只有用过的块才会在替换磁盘上复制/重建。
  • 您要快照文件系统吗?LVM快照甚至无法与ZFS的瞬时快照进行比较。后者也可以很容易地暴露给最终用户,例如为了方便恢复。
  • 对于大型磁盘(> 500GB),不仅要使用RAID6(RAID-Z2),而且要同时使用RAID5(RAID-Z),因为在重建过程中其他磁盘可能会发生故障。

我没考虑过关于ext3的优点。Ext4仍然是我的血液,但是我正在使用的Ubuntu Server应该支持XFS,为此您推荐它吗?
privatehuff

1

使用“ mdadm”实用程序从驱动器中创建RAID-5阵列。

这样可以提供所需的冗余,因此,如果某个驱动器出现故障,您可以进行更换而不会丢失数据,并且还可以使用4个驱动器中的3个。

我还建议您在RAID顶部创建LVM卷,以便可以根据需要对空间进行分区。


1

您可能需要看一下AFS。这将为您提供一些可用性(可以在网络内外访问这些文件)和冗余(可以复制文件)的度量。对于打开文件的工作流,将其处理一段时间然后保存,从网络角度来看,这比NFS(至少是较旧的NFS)更好(从网络角度来看)。


1

正如其他答复所言,LVM被广泛使用,并且可以将多个磁盘组合成一个看起来像一个巨大块设备的单个“卷组”。不过,值得记住的是,这样做会增加失败的可能性-卷组中只需一个磁盘发生故障即可取出整个文件系统,并且如果您将四个磁盘连接在一起,则发生的可能性是四倍。最好在RAID1或类似磁盘上使用LVM以减轻这种情况。Linux软件RAID足以满足此要求,尽管硬件RAID可能更方便。


您的声明“卷组中只需要一个磁盘就可以使整个文件系统失效”在很大程度上取决于您如何在卷组中创建和使用逻辑卷。如果您仅创建一个逻辑卷来填充整个卷组,那么您所说的是正确的。根据文件系统要求,甚至可以根据文件系统要求,在单个卷组中创建多个逻辑卷是完全可能的。
pgs

1

抱歉,这是一条评论,但我没有回复...

RAID-Z或RAIDZ2如何提供比RAID6更好的冗余?

ZFS 到处都有校验和

关于原始问题。无论使用哪种数据,我都会每10张光盘使用2个活动奇偶校验。我会使用优质的RAID卡,而3ware的RAID卡非常出色。我个人使用带有电池备份的硬件RAID。LVM只是为了让您可以在硬件寿命结束时轻松迁移数据。XFS作为文件系统。


0

为什么不使用磁盘或SSD卡来引导系统服务器,而仅使用500 GB作为存储。使用一个500GB磁盘,当磁盘完全耗尽时,请手动进行交换。您可以稍后在另一台计算机上进行备份。因为在硬盘旋转(旋转)时会损坏硬盘。无论如何,如果您同时连接所有磁盘,它们都在转动,如果不使用它,可能会造成损坏。当您打开更多磁盘时,发生故障的可能性就会增加。每次使用一个,并在充满或在一段时间内预见到故障时进行更换(也可以使用SMART功能来消除故障)。使用随身碟或使用某些外部SCSI / SATA磁盘适配器,这样您就不必在每次更换磁盘时都关闭计算机服务器。那是最安全和可靠的形式。使用RAID的成本更高,而且您只会浪费一些磁盘(因为仅通过打开磁盘就有可能被损坏,这是愚蠢的,还是没有?)。如果您想要更多的数据传输量,那么我想使用RAID配置是一个不错的选择,但是请不要信任计算机配置。必须始终由人(网络或服务器管理员)手动完成备份。那是管理员的工作之一。您可以使用磁带,DVD,BlueRay或其他磁盘来执行备份。但是,您始终将需要可靠的存储介质,而运行中的磁盘不是一个。关闭的磁盘并妥善保存(在新鲜无湿的地方)是可靠的存储介质。如果您想要更多的数据传输量,那么我想使用RAID配置是一个不错的选择,但是请不要信任计算机配置。必须始终由人(网络或服务器管理员)手动完成备份。那是管理员的工作之一。您可以使用磁带,DVD,BlueRay或其他磁盘来执行备份。但是,您始终将需要可靠的存储介质,而运行中的磁盘不是一个。关闭的磁盘并妥善保存(在新鲜无湿的地方)是可靠的存储介质。如果您想要更多的数据传输量,那么使用RAID配置是一个不错的选择,但是请不要相信计算机配置。必须始终由人(网络或服务器管理员)手动完成备份。那是管理员的工作之一。您可以使用磁带,DVD,BlueRay或其他磁盘来执行备份。但是,您始终将需要可靠的存储介质,而运行中的磁盘不是一个。关闭的磁盘并妥善保存(在新鲜无湿的地方)是可靠的存储介质。但是,您始终将需要可靠的存储介质,而运行中的磁盘不是一个。关闭的磁盘并妥善保存(在新鲜无湿的地方)是可靠的存储介质。但是,您始终将需要可靠的存储介质,而运行中的磁盘不是一个。关闭的磁盘并妥善保存(在新鲜无湿的地方)是可靠的存储介质。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.