AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 13192
Accepted
privatehuff
privatehuff
Asked: 2009-05-28 10:04:35 +0800 CST2009-05-28 10:04:35 +0800 CST 2009-05-28 10:04:35 +0800 CST

文件服务器 - 存储配置:RAID vs LVM vs ZFS 还有什么……?

  • 772

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

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

  1. 500 GB 还不够大(有些项目更大)
  2. 管理当前设置很麻烦,因为各个硬盘驱动器具有不同数量的可用空间和重复数据(用于备份)。现在很混乱,一旦有多个服务器,情况只会变得更糟。(“该项目在 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,但这并不能真正解决如何组合驱动器的问题。

linux ubuntu raid file-server
  • 14 14 个回答
  • 31773 Views

14 个回答

  • Voted
  1. Best Answer
    Christopher Cashell
    2009-05-28T10:21:41+08:002009-05-28T10:21:41+08:00

    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 等。巧妙的小设置。

    • 30
  2. Wijnand
    2009-05-28T10:09:21+08:002009-05-28T10:09:21+08:00

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

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

    • 14
  3. user2108
    2009-05-28T10:35:19+08:002009-05-28T10:35:19+08:00

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

    如果答案是“我可以轻松地重新创建它”,那么您需要 RAID5,为了简化管理,可能会在其上添加 LVM。

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

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

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

    • 9
  4. wazoox
    2009-06-25T12:15:45+08:002009-06-25T12:15:45+08:00

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

    在基准测试中,软件 RAID 性能通常优于硬件 RAID,但是文件服务和软件 RAID 都是 CPU 密集型的,并且在工作时会争夺您的处理器。我的经验表明,除非您使用双四核系统,否则正确配置的硬件 RAID 将胜过软件 RAID。

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

    • 槟榔
    • 3洁具
    • 新的 Adaptec 系列(旧的很慢)
    • LSI MegaRAID
    • 5
  5. Paul Rudnitskiy
    2009-05-28T10:23:07+08:002009-05-28T10:23:07+08:00

    RAID 不像 LVM。您可以使用 RAID 来制作容错分区,但 LVM 用于轻松进行磁盘分区和文件系统编辑。您可以使用 RAID over LVM 或 ZFS(ZFS 可以同时工作 RAID 和 LVM)。在我看来,ZFS 比 LVM 效果更好,但是:

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

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

    • 4
  6. jharley
    2009-05-28T10:45:37+08:002009-05-28T10:45:37+08:00

    看看 Nexenta 和 OpenSolaris 提供了什么,我想你会很高兴你可以免费获得。有传言说,OpenFiler 的下一个版本也将使用 FreeBSD ZFS 端口(不过,从功能的角度来看,它们已经落后了)。

    话虽如此,我尽量避免在软件中执行 RAID5、RAID6 或 RAID50,并且更喜欢使用硬件控制器来卸载所有 XOR 工作。Linux 软件中的 RAID1 和 RAID10 运行良好,从那里我将 LVM 放在它们之上,以便在冗余到位后对我拥有的块所做的事情有更大的灵活性。RAID+LVM+XFS 是我最喜欢的 Linux 配置。但我随时都会使用 ZFS。

    • 4
  7. Zoredache
    2009-05-28T10:09:09+08:002009-05-28T10:09:09+08:00

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

    • 2
  8. 3dinfluence
    2009-06-25T12:40:58+08:002009-06-25T12:40:58+08:00

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

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

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

    这都是大约 5 年前设置的,如果我今天设置它,我会使用 OpenSolaris 和 ZFS。主要原因是 ZFS 池化存储方式意味着更少的卷管理。您仍然可以将每个项目分离到自己的文件系统中,而无需对各个卷的大小进行微观管理。ZFS 还有一些其他非常好的特性,使其成为更好的选择,但还有其他关于 serverfault 的问题。

    在我看来,ZFS 简直就是当今最好的免费解决方案。

    • 2
  9. knweiss
    2009-06-25T13:49:36+08:002009-06-25T13:49:36+08:00

    如果您继续使用 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),因为在重建过程中另一个磁盘可能会发生故障。
    • 2
  10. ph.
    2009-05-28T10:09:55+08:002009-05-28T10:09:55+08:00

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

    这提供了您需要的冗余,因此如果驱动器死机,您可以在不丢失数据的情况下更换它,并且还可以使用 4 个驱动器中的 3 个。

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

    • 1

相关问题

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

  • RAID 控制器通常是否存在 SATA 驱动器品牌兼容性问题?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve