文件服务器 – 存储configuration:RAID与LVM vs ZFS的东西…?

我们是一家小公司,除了其他function之外,还进行video编辑,并且需要一个地方来保存大型媒体文件的备份副本并使其轻松共享。

我已经安装了Ubuntu Server和4 x 500 GB驱动器。 他们目前使用Samba作为Mac / Windows工作站可以看到的四个共享文件夹进行设置,但我想要一个更好的解决scheme。 这主要有两个原因:

  1. 500 GB不够大(有些项目比较大)
  2. pipe理当前设置很麻烦,因为单个硬盘驱动器具有不同数量的可用空间和重复的数据(用于备份)。 现在很混乱,一旦有多台服务器,情况就会变得更糟。 (“该项目在share4上的sever2”等)

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

什么是最有效率和风险最小的方式来结合我的用户方便的硬盘驱动器?


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

我以前使用RAID5的经验也在Ubuntu服务器上,而且有一些棘手的情况导致完全的数据丢失。 我可以避免这一点 ,但留下了一个感觉,我正在为系统添加一个不必要的额外故障点。

我没有使用RAID10,但是我们使用的是商品硬件,每个盒子的数据驱动器大多数都是固定的6.我们有很多500 GB的驱动器,而1.5 TB是非常小的。 (然而,至less还有一个服务器的选项)

我没有使用LVM的经验,并且阅读了有关如何处理驱动器故障的冲突报告。 如果一个(非条纹)LVM设置可以处理单个驱动器失败,只有松散的文件有一部分存储在该驱动器(并将大多数文件存储在一个驱动器上),我们甚至可以忍受。

但是只要我要学习一些全新的东西,我也可以一路走到ZFS。 与LVM不同的是,我也必须改变我的操作系统(?),以便增加我在哪里和我想要的位置之间的距离。 我在uni使用了solaris的一个版本,但不会介意它太可怕了。

在IT频谱的另一端,我想我也可以探索FreeNAS和/或Openfiler,但这并不能真正解决如何解决组合驱动问题。

    LVM实际上使用得相当繁重。 基本上,LVM位于硬件(驱动程序)层之上。 它不会增加任何冗余或增加可靠性(它依靠底层存储系统来处理可靠性)。 相反,它提供了很多额外的灵活性和附加function。 LVM不应该看到磁盘消失或失败,因为磁盘故障应该由RAID(无论是软件还是硬件)来处理。 如果你丢失了磁盘,无法继续操作(重buildRAID等),那么你应该去备份。 试图从一个不完整的数组恢复数据不应该是需要的(如果是的话,你需要重新评估你的整个devise)。

    使用LVM可以轻松扩展和缩小分区/文件系统,dynamic分配新分区的能力,快照现有分区的能力,以及将快照安装为只读或可写分区。 快照可以是非常有用的,特别是像备份的东西。

    就我个人而言,我在每一个盒子上都使用LVM(除了/ boot),过去4年我一直这么做。 处理非LVM的框是一个巨大的痛苦,当你想添加或修改你的磁盘布局。 如果你使用Linux,你一定要使用LVM。 [注意:上面这个关于LVM的东西已经更新,以便更好地解释它是什么以及它如何适合存储方程。]

    至于RAID,我不做没有RAID的服务器。 随着磁盘价格便宜,我会去与RAID1或RAID10。 更快,更简单,更健壮。

    老实说,除非你喜欢Ubuntu(我通常会推荐),或者如果这个盒子正在执行其他任务,你可能会想看看OpenFiler 。 它将您的盒子变成一个带有networking界面的存储设备,并且可以为您处理所有的RAID / LVM /等,并允许您将存储设备导出为SMB,NFS,iSCSI等。

    ZFS是非常可靠的,它确实会让你的存储pipe理变得更容易。 作为奖励:smb与OpenSolaris中的ZFS集成在一起,它可以很好地处理Raid。 等几天,下载当时发布的2009.6版本,并放到testing机上。 我相信你会喜欢ZFS。

    而关于你的评论ZFS是新的:不再是新的了!

    核心问题是:“这个数据有多重要?”

    如果答案是“我可以轻松地重新创build”,那么您希望使用RAID5,为了简化pipe理,可能会将LVM置于其上。

    如果答案是“我可以重新创build它,但这需要一段时间,人们会抱怨”你想RAID 6或更可能RAID 1/10。

    如果答案是“没有人做任何工作,而我重新创build它,确保它是完美的”你想要ZFS / Raid-Z

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

    要连接同一机箱中的很多驱动器,硬件RAID控制器是最好的工具。 它将为您的驱动器提供大量SATA连接器,通过RAID-5或最好是RAID-6进行重新调整,并可能提供更好的性能。

    软件RAID性能通常比基准testing中的硬件RAID好,然而文件服务和软件RAID都是CPU密集型的,并且在工作时竞争处理器。 我的经验表明,除非您使用双核四核系统,否则正确configuration的硬件RAID将会胜过软件RAID。

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

    • 槟榔
    • 3Ware的
    • 新的Adaptec系列(旧的是slooooow)
    • LSI MegaRAID

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

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

    在Ubuntu上,我更喜欢使用带有LVM的RAID5 MD。

    看看Nexenta和OpenSolaris提供什么,我想你会很高兴,你可以得到什么。 据传,OpenFiler的下一个版本也将使用FreeBSD ZFS端口(尽pipe从function的angular度来看,它们相当落后)。

    这就是说,我试图避免在软件中使用RAID5,RAID6或RAID50,并且宁愿使用硬件控制器来卸载所有XOR工作。 Linux软件中的RAID1和RAID10工作得非常好,从那里我把LVM放在了最上面,以便在冗余到位之后的块中做更多的灵活性。 RAID + LVM + XFS是我最喜欢的Linuxconfiguration,但是我会在任何一天使用ZFS。

    RAID与LVM并不是一个很好的比较,它们执行不同的angular色,并经常一起使用。 RAID用于驱动器冗余,LVM可用于将RAID设备分解为逻辑卷,用于轻松resize和拍摄快照。

    我跑了一个非常相似的公司/情况的文件服务器。 基本上是一个3人的graphics部门与30TB的存储和小公司的低廉的预算。 我们典型的项目从0.5TB到6TB。 文件服务器正在服务一个大型的渲染农场,真的可以击中它。

    在我的设置中,我运行了一个运行Linux的3U服务器,并附加了外部硬件RAID6arrays。 我使用LVMpipe理物理卷和逻辑卷,并运行XFS文件系统。 我要做的是为每个项目创build一个逻辑卷,然后随着项目的增长进行扩展。 当项目完成后,我可以将作业归档到磁带上,并吹走逻辑卷。 这会将该空间返回到将被重新分配给下一个项目的卷组。

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

    这一切都是在5年前设置的,如果我今天设置它,我会使用OpenSolaris和ZFS。 主要原因是ZFS池式存储方式意味着less量的pipe理。 您仍然可以将每个项目分离到自己的文件系统中,而无需对单个卷的大小进行微观pipe理。 ZFS有其他一些非常好的function,使它成为一个更好的select,但有其他问题在serverfault进入。

    在我看来,ZFS只是当今最好的免费解决scheme。

    使用“mdadm”实用程序从驱动器中创buildRAID-5arrays。

    这提供了所需的冗余,所以如果一个驱动器死了,您可以将其replace为不丢失数据,并且还可以使用4个驱动器中的3个。

    我也build议你在RAID上创build一个LVM卷,这样你就可以根据需要划分空间了。

    你可能想看看AFS。 这将为您提供一些可用性的衡量标准(您可以在networking上和networking外访问这些文件)和冗余(文件可以复制)。 对于打开一个文件的工作stream,在一段时间内处理一下,然后保存它,从networking的angular度来看,这会比NFS更好,至less是更老的NFS。

    正如另一个答复所说,LVM被广泛使用,可以将多个磁盘组合成一个看起来像一个巨大块设备的单个“卷组”。 但值得记住的是,这样做会增加失败的可能性 – 在一个卷组中,只有一个磁盘失败,无法取出整个文件系统,而如果有四个磁盘连接在一起,则这个可能性会增加四倍。 最好在RAID1或类似设备上使用LVM来缓解这一点。 尽pipe硬件RAID可能会更方便,但是Linux软件RAID足够了。

    有些事情要考虑,如果你留在Linux上:

    • 也考虑一下文件系统。 你的4x 500GB的例子大概是我为ext3build议的最大容量。 我不build议创build更大的ext3文件系统,因为例如fsck时间可能是巨大的。 创build几个较小而不是一个大文件系统。
    • 正如你提到的video数据:ext3处理大文件效率低下,因为它将不得不创build间接,双间接和三重间接元数据块来存储大文件的数据,你会付出代价。 现在,ext4支持范围和处理这个好多了。 但是,这是相当新的,例如红帽企业Linux 5不支持它。 (一些企业发行版将支持像XFS这样的替代品)。
    • 如果在任何数据块上都有数据损坏 ,那么使用Linux文件系统就很难注意到这一点。 另一方面,ZFS对所有元数据数据进行校验和,并且每次从磁盘读取数据时都会validation校验和。 (也有背景洗涤)
    • Linux上的RAID 重build时间与磁盘大小成正比,因为RAID层不知道文件系统(层)的内容。 ZFS的RAID-Z重build时间取决于发生故障的磁盘上的实际数据量,因为只有使用过的块才会在replace磁盘上复制/重build。
    • 你想快照你的文件系统? LVM快照甚至不能与ZFS的即时快照比较。 后者也可以容易地暴露给最终用户,例如为了容易恢复。
    • 使用RAID6(RAID-Z2)而不是RAID5(RAID-Z)与大磁盘(> 500GB),因为在重build期间另一个磁盘可能会失败。

    对不起,这将是一个评论,但我没有代表…

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

    ZFS在各地都有校验

    关于原来的问题。 无论数据是什么,我将使用每10张光盘2个有效的奇偶校验。 我会使用质量好的RAID卡3ware的是优秀的。 我个人使用硬件RAID备份电池。 LVM就是这样,您可以在硬件生命周期结束时轻松迁移数据。 XFS作为文件系统。

    为什么不使用磁盘或SSD卡来启动系统服务器,而只使用500 GB存储。 使用一个500GB的磁盘,当它变满时手动交换。 您可以稍后在另一台电脑上做冷静的备份。 因为在硬盘转动(旋转)的时候,可能会损坏硬盘。 无论如何,如果你连接所有的磁盘,同时他们都转动,如果你使用它可能会造成损害。 打开更多磁盘时,失败的概率会上升。 每次使用一个,在满的时候或者在一段时间内预料到失败时使用它(也使用SMARTfunction来摆脱这个问题)。 使用随身磁盘或使用某些外部SCSI / SATA磁盘适配器,因此每次更换磁盘时都不需要拆卸计算机服务器。 这是最安全可靠的forms。 使用RAID更加昂贵,你只是浪费了一些磁盘(因为你让它打开有损坏的风险,只让它打开?愚蠢的,或不?)。 如果你想要更多的datatroughtput然后使用RAIDconfiguration,我想这是一个不错的select,但不要信任计算机configuration。 备份必须始终由一个人(networking或服务器pipe理员)手动完成。 这是pipe理员的作品之一。 您可以使用磁带,DVD,BlueRay或其他磁盘来进行备份。 但是你总是需要一个可靠的存储介质,一个运行的磁盘不是一个。 一个closures的磁盘,并保存(在一个新鲜的,没有湿度的地方)是一个可靠的存储介质。