我们是一家从事视频编辑等业务的小公司,需要一个地方来保存大型媒体文件的备份副本并便于共享。
我有一个装有 Ubuntu Server 和 4 个 500 GB 驱动器的盒子。他们目前将 Samba 设置为 Mac/Windows 工作站可以正常查看的四个共享文件夹,但我想要一个更好的解决方案。这有两个主要原因:
- 500 GB 还不够大(有些项目更大)
- 管理当前设置很麻烦,因为各个硬盘驱动器具有不同数量的可用空间和重复数据(用于备份)。现在很混乱,一旦有多个服务器,情况只会变得更糟。(“该项目在 share4 中的 sever2 上”等)
因此,我需要一种方法来组合硬盘驱动器,以避免由于单个驱动器故障而导致数据完全丢失,因此用户在每台服务器上只能看到一个共享。我已经完成了 linux 软件 RAID5 并且对它有不好的体验,但会再试一次。LVM 看起来不错,但似乎没有人使用它。ZFS 看起来很有趣,但它相对“新”。
什么是对我的用户方便的组合硬盘的最有效和风险最小的方法?
编辑:这里的目标基本上是创建包含任意数量硬盘但从最终用户角度限制复杂性的服务器。(即他们看到每台服务器一个“文件夹”) 备份数据在这里不是问题,但是每个解决方案如何响应硬件故障是一个严重的问题。这就是我将 RAID、LVM、ZFS 和 who-knows-what 放在一起的原因。
我之前使用 RAID5 的经验也是在 Ubuntu Server 机器上进行的,并且有一系列棘手且不太可能导致数据完全丢失的情况。我可以再次避免这种情况,但留下的感觉是我在系统中添加了一个不必要的额外故障点。
我没有使用 RAID10,但我们使用的是商用硬件,每盒最多的数据驱动器几乎固定为 6 个。我们有很多 500 GB 驱动器,而 1.5 TB 非常小。(但对于至少一台服务器来说仍然是一种选择)
我没有使用 LVM 的经验,并且阅读过关于它如何处理驱动器故障的相互矛盾的报告。如果(非条带化)LVM 设置可以处理单个驱动器故障并且只松动存储在该驱动器上的部分文件(并且仅将大多数文件存储在单个驱动器上),我们甚至可以忍受。
但只要我必须学习一些全新的东西,我还不如一路去 ZFS。不过,与 LVM 不同的是,我还必须更改我的操作系统(?),以便增加我所在位置和我想去的位置之间的距离。不过,我在 uni 使用了一个版本的 solaris 并且不会非常介意它。
在 IT 领域的另一端,我想我也可以探索 FreeNAS 和/或 Openfiler,但这并不能真正解决如何组合驱动器的问题。
LVM 实际上被大量使用。基本上,LVM 位于硬件(驱动程序)层之上。它不会增加任何冗余或增加可靠性(它依赖于底层存储系统来处理可靠性)。相反,它提供了许多额外的灵活性和附加功能。LVM 永远不会看到磁盘消失或故障,因为磁盘故障应该由 RAID 处理(无论是软件还是硬件)。如果您丢失了磁盘并且无法继续操作(重建 RAID 等),那么您应该进行备份。永远不需要尝试从不完整的数组中恢复数据(如果需要,您需要重新评估整个设计)。
使用 LVM 获得的功能包括轻松扩展和缩小分区/文件系统、动态分配新分区的能力、对现有分区进行快照以及将快照挂载为只读或可写分区的能力。快照非常有用,尤其是对于备份之类的事情。
就个人而言,我在我构建的每个盒子上的每个分区(除了 /boot)都使用 LVM,而且在过去的 4 年里我一直在这样做。当您想要添加或修改磁盘布局时,处理非 LVM 的盒子是一个巨大的痛苦。如果您使用的是 Linux,那么您肯定想要使用 LVM。 [注意:LVM 上的上述内容已更新,以更好地解释它是什么以及它如何适应存储方程。]
至于RAID,我不做没有raid的服务器。由于磁盘价格便宜,我会选择 RAID1 或 RAID10。更快、更简单、更健壮。
不过老实说,除非您与 Ubuntu(我通常会推荐)结婚,或者如果该机器正在执行其他任务,您可能需要查看OpenFiler。它将您的盒子变成带有 Web 界面的存储设备,并为您处理所有 RAID/LVM/等,并允许您将存储导出为 SMB、NFS、iSCSI 等。巧妙的小设置。
ZFS 非常可靠,它确实让您的存储管理变得更加容易。作为奖励:smb 与 OpenSolaris 中的 ZFS 集成,它可以很好地处理 Raid。等几天,下载当时发布的2009.6版本,在测试机上试一试。我相信你会喜欢 ZFS。
关于您的评论 ZFS 是新的:不再是新的了!
核心问题是:“这些数据有多重要?”
如果答案是“我可以轻松地重新创建它”,那么您需要 RAID5,为了简化管理,可能会在其上添加 LVM。
如果答案是“我可以重新创建它,但需要一段时间并且人们会抱怨”,那么您需要 RAID 6 或更可能的 RAID 1/10。
如果答案是“在我重新创建它并确保它有点完美时没有人做任何工作”你想要 ZFS/Raid-Z
请注意,您始终可以重新创建它。RAID 不是备份。
要在同一个机箱中连接许多驱动器,硬件 RAID 控制器是最好的工具。它将为您的驱动器提供大量 SATA 连接器,通过 RAID-5 或最好是 RAID-6 进行冗余,并且还可以提供更好的性能。
在基准测试中,软件 RAID 性能通常优于硬件 RAID,但是文件服务和软件 RAID 都是 CPU 密集型的,并且在工作时会争夺您的处理器。我的经验表明,除非您使用双四核系统,否则正确配置的硬件 RAID 将胜过软件 RAID。
具有良好 linux 支持的良好硬件控制器:
RAID 不像 LVM。您可以使用 RAID 来制作容错分区,但 LVM 用于轻松进行磁盘分区和文件系统编辑。您可以使用 RAID over LVM 或 ZFS(ZFS 可以同时工作 RAID 和 LVM)。在我看来,ZFS 比 LVM 效果更好,但是:
在 Ubuntu 上,我更喜欢将 RAID5 MD 与 LVM 一起使用。
看看 Nexenta 和 OpenSolaris 提供了什么,我想你会很高兴你可以免费获得。有传言说,OpenFiler 的下一个版本也将使用 FreeBSD ZFS 端口(不过,从功能的角度来看,它们已经落后了)。
话虽如此,我尽量避免在软件中执行 RAID5、RAID6 或 RAID50,并且更喜欢使用硬件控制器来卸载所有 XOR 工作。Linux 软件中的 RAID1 和 RAID10 运行良好,从那里我将 LVM 放在它们之上,以便在冗余到位后对我拥有的块所做的事情有更大的灵活性。RAID+LVM+XFS 是我最喜欢的 Linux 配置。但我随时都会使用 ZFS。
RAID 与 LVM 并不是一个很好的比较,它们执行不同的角色,并且经常一起使用。RAID 用于驱动器冗余,LVM 可用于将 RAID 设备分解为逻辑卷,用于轻松调整大小和拍摄快照。
我为一家非常相似的公司/情况运行文件服务器。基本上是一个 3 人的图形部门,拥有 30TB 的存储空间和一家小公司的预算。我们的典型项目从 0.5TB 运行到 6TB。并且文件服务器正在为一个相当大的渲染农场提供服务,这真的可以打击它。
在我的设置中,我运行了一个运行 Linux 的 3U 服务器,并连接了外部硬件 RAID6 阵列。我使用 LVM 管理物理和逻辑卷并运行 XFS 文件系统。我要做的是为每个项目创建一个逻辑卷,然后随着项目的增长对其进行扩展。项目完成后,我可以将作业归档到磁带并删除逻辑卷。这会将该空间返回到卷组,在该卷组中它将被重新分配给下一个项目。
这是一种利用我们的存储的非常干净的方法,但是这种方法有两个缺点。您最终不得不对逻辑卷的大小进行微观管理,试图平衡分配给逻辑卷的空间量,以便您有足够的空间来完成您的工作,但不会过度分配它并最终浪费空间。我们的渲染农场每天能够生成许多 TB 的数据,如果您不密切注意这一点,您将很快耗尽空间。我最终设置了一些脚本来监控逻辑卷上可用空间的趋势并自动增长它们。即使有 80 个左右的逻辑卷,所有逻辑卷中仍有大量未使用的空间。我已经暗示了第二个问题....LVM 没有 t 真正进行精简配置,XFS 只允许您扩展文件系统。因此,过度分配给逻辑卷的空间可能会增加很多不可用的空间。
这都是大约 5 年前设置的,如果我今天设置它,我会使用 OpenSolaris 和 ZFS。主要原因是 ZFS 池化存储方式意味着更少的卷管理。您仍然可以将每个项目分离到自己的文件系统中,而无需对各个卷的大小进行微观管理。ZFS 还有一些其他非常好的特性,使其成为更好的选择,但还有其他关于 serverfault 的问题。
在我看来,ZFS 简直就是当今最好的免费解决方案。
如果您继续使用 Linux,需要考虑的一些事项:
使用“mdadm”实用程序从您的驱动器中创建一个 RAID-5 阵列。
这提供了您需要的冗余,因此如果驱动器死机,您可以在不丢失数据的情况下更换它,并且还可以使用 4 个驱动器中的 3 个。
我还建议您在 RAID 之上创建一个 LVM 卷,以便您可以根据需要对空间进行分区。