大型LVM磁盘(8 TB)的哪个文件系统?


21

我有一台Linux服务器,其中有许多2 TB磁盘,所有这些磁盘当前都在LVM中,因此大约有10 TB的空间。我在ext4分区上使用了所有这些空间,目前大约有8.8 TB的数据。

问题是,我的磁盘上经常出现错误,即使我替换了(也就是说,我用dd将旧磁盘复制到新磁盘,然后将新磁盘放入服务器),一旦出现错误,我经常收到大约100 MB的损坏数据。这使e2fsck每次都变得疯狂,并且通常需要一周的时间才能使ext4文件系统再次恢复正常。

所以问题是:您会建议我在LVM上用作文件系统吗? 还是您会建议我做什么(我真的不需要LVM)?

我的文件系统的配置文件:

  • 许多不同大小的文件夹(某些文件夹总计2 TB,某些文件夹总计100 MB)
  • 几乎200,000个具有不同大小的文件(其中3/4约为10 MB,1/4介于100 MB和4 GB之间;由于ext4分区已完全破坏了几天,我目前无法获得有关文件的更多统计信息)
  • 读很多但是写很少
  • 并且我需要容错(我停止使用mdadm RAID,因为它不喜欢在整个磁盘上出现一个错误,并且有时我的磁盘有故障,我会尽快更换,但这意味着我可能会损坏数据我的文件系统)

主要问题是磁盘故障。我可能会丢失一些文件,但我无法承受同时丢失所有文件的损失。

如果我继续使用ext4,我听说我最好尝试制作更小的文件系统并以某种方式“合并”它们,但是我不知道如何。

我听说btrfs会很好,但是在不复制数据(mkfs.btrfs -d single?)时,如何找到丢失一部分磁盘(或整个磁盘)的方法,我找不到任何线索。

对此问题的任何建议都将受到欢迎,谢谢!


1
究竟是什么磁盘错误。那应该提供一个线索
Soham Chakraborty 2012年

坏扇区,通常只是整个磁盘上的一个或两个坏扇区……
alphatiger 2012年

这意味着您的磁盘即将损坏。与文件系统几乎没有关系。如果磁盘坏了,无论您使用什么fs,都将很方便。正如其他人提到的那样,请购买RAID磁盘和/或购买企业磁盘。另外,也要寻找质量控制器。
Soham Chakraborty 2012年

是的,我知道,这就是为什么我要更换损坏的磁盘。对不起,如果我的问题不清楚。但是,我仍然认为某些文件系统在数据损坏的情况下会表现更好……
alphatiger 2012年

您确实应该更换硬件的故障部件。这就像在以200 km / h的速度将汽车撞到墙壁上之后看着碰撞测试假人。“哦,看!他的左腿几乎没事!测试成功!” ...如果基础硬件腐烂,没有文件系统可以为您提供帮助。XFS具有比ext *更快的fsck,并且经过足够的时间并且文件系统更成熟之后,也许btrfs也可以工作。然后是ZFS,但在Linux上它的状态有点令人难过。
Janne Pikkarainen,2012年

Answers:


22

这不是文件系统问题,而是磁盘的物理限制。这里是一些数据:

SATA驱动器通常指定不可恢复的读取错误率(URE)为10 ^ 14。这意味着即使磁盘工作正常,每12TB也会丢失1个字节

这意味着没有RAID,即使没有驱动器出现故障,您也将丢失数据 -RAID是您唯一的选择。

如果选择RAID5(总容量为n-1,其中n =磁盘数),则仍然不够。如果使用由6个2TB硬盘组成的10TB RAID5,您每年将有20%的机会发生一个驱动器故障,而单个磁盘发生故障,由于URE,您将有50%的机会成功重建RAID5并恢复100%的数据。

基本上,由于磁盘具有高容量和相对较高的URE,因此即使单个磁盘出现故障,也需要RAID6来确保安全。

阅读此:http : //www.zdnet.com/blog/storage/why-raid-5-stops-working-in-2009/162


3
等待,URE意味着不可恢复的错误,但是这并不意味着磁盘实际上HAS错误。下一次读取可能(并且可能会)返回正确的位。操作系统可能只是重新读取该扇区并获取正确的数据。您还忘了谈论SMART:在扇区永久损坏之前,SMART会尝试从中读取数据/向中写入数据。如果它检测到太多故障,SMART只会将扇区的内容移动到另一个位置,并将该扇区标记为BAD,并且没有人能够再次写入该扇区。
Avio 2012年

因此,您只是在建议购买大量磁盘,而不要问为什么他的磁盘如此故障。这可能是一个热点问题,它可能是一个错误的SATA控制器有问题,也可能是坏的SATA连接器,等等,等等等等的问题
阿维奥

@Avio我的意思是,即使所有磁盘,SATA控制器,SATA连接器等都处于完美状态并按照规范工作,由于硬盘的限制,拥有10TB数据也会出现读取错误。我还要说的是,即使您决定使用RAID来减轻RAID的负担,也应该使用RAID6,因为磁盘容量+ URE使RAID5甚至不够可靠。即使RAID5上的单个驱动器出现故障,也有很高的数据丢失机会(50%FFS!)。
c2h5oh 2012年

1
URE中的@Avio U代表不可恢复,因为它永远消失了。
c2h5oh 2012年

这可能是文件系统问题,如果在btrfs或xfs等写文件系统上使用副本,则很有可能会恢复该文件的先前版本,因此仅丢失对文件的最后更改。(如果曾经更改过)
詹斯·蒂默曼

13

帮个忙,为磁盘使用RAID,甚至可以是带有mdadm的软件RAID。还请考虑一下为什么“经常在磁盘上出错”-这是正常现象,除非您使用廉价的台式机级SATA驱动器而不是RAID级磁盘。

在那之后,文件系统不再那么重要-ext4,xfs都是不错的选择。


1
我同意我应该;),但出于多种原因,我不使用RAID。主要之一是价格,因为它们要贵2-3倍,我实在负担不起。第二个原因是上次使用RAID 5时,我很幸运能够获得两个坏磁盘,然后才能连接一个新磁盘并重新同步(当时我没有任何备用磁盘,我不得不等待一个新的;我同意使用RAID类磁盘,我会遇到这个问题)。第三个原因是,随着我必须存储的数据不断增长,我逐渐添加了更大容量的新磁盘,这是RAID配置无法实现的。
alphatiger 2012年

因此,我试图查看是否存在有人建议我在不依赖未损坏数据的配置中使用的文件系统。不过,谢谢您的回答!
alphatiger 2012年

4
因此,您是说您的数据不值得额外付费吗?如果您负担不起至少拥有两个数据副本,那么您应该考虑将其丢失。没错,RAID5可能不是一个好选择,您应该查看RAID6或RAID10。
Zoredache

@alphatiger:仅当您的时间和数据太便宜时,光盘才太贵。
恢复莫妮卡-M.Schröder'12

8

我对ZFS感到很幸运,您可以检查一下它是否可以在所使用的任何发行版中使用。合理的警告,它可能意味着重建整个系统,但是它确实提供了良好的性能和容错能力。


我目前使用Debian GNU / Linux,似乎有FUSE实现,但没有软件包(由于许可问题)。我可能会尝试一下(从源进行编译之后,因为使用FUSE不能很好地实现高输出),我不必担心必须重建整个文件系统。谢谢 !
alphatiger 2012年

ZFS +1。传统的RAID将静默破坏数据,因为它不够智能,无法知道何时出现错误或如何修复它们。另一方面,ZFS将检测损坏的块(通过校验和)并从已知的良好镜像副本中修复它们。在FUSE下运行ZFS并不是很理想,但是对于许多工作负载而言,它们的性能都很好。话虽如此,您应该在生产环境中使用它之前对应用程序进行负载测试。
巴哈马特2012年

1
ZFS的另一个+1。这里几乎所有的服务器都运行Linux,我是Linux的忠实拥护者,但是事实证明ZFS在过去3年中对我是如此有用,我实际上已经在学习和设置FreeBSD上进行了努力。大型存储计算机可以使用ZFS,而不会出现任何许可或性能问题。
ssc 2012年

我在旧的Sun工作站上的Solaris下运行它,并且考虑到硬件(单核Opteron @ 2.2GHz,具有3G内存和一对250G SATA驱动器)的性能也令人赞叹不已。
TMN 2012年

8

我逐渐添加更大尺寸的新磁盘

由于您对使用LVM感兴趣,并且希望处理多个驱动器,因此简单的答案就是仅使用LVM的镜像功能。只需将所有物理卷添加到您的LVM。创建逻辑卷时,请通过该--mirrors选项。这将复制您的数据。

另一种选择是仅设置几个RAID1对。然后将所有RAID1卷作为PV添加到您的VG。然后,每当您要扩展存储时,只需购买一对磁盘即可。


7

请参阅我对SvenW答案的评论,以了解为什么我并不真正想要RAID。(实际上,我已经在一家负担得起的公司中设置了多个软件RAID……)不过,谢谢!
alphatiger 2012年

我一直将商品驱动器用于RAID,从未使用过额定用于RAID的驱动器,并且从未遇到过任何问题,只要您选择其中具有足够冗余性的RAID(RAID 6或RAID 60)即可。使用RAID 6时,您需要一个偶数。通过用较大的磁盘替换现有成员,然后扩展到较新的磁盘空间,您可以相当轻松地扩展RAID。
slm 2012年

4

如果您真的担心数据损坏,我建议您使用校验和的文件系统,例如zfs和btrfs -尽管请注意,btrfs仍被认为是在开发中,尚不能投入生产。

没有保证从磁盘读取(甚至成功读取)的数据将是正确的。块具有校验和,但是它们是简单的校验和,并不总是捕获错误。像ZFS这样的较新文件系统将更强大的校验和附加到文件上,并且可以(并且据说可以)捕获和修复硬盘或RAID控制器未注意到的数据错误。


1

就像@ c2h5oh所说Unrecoverable至关重要-这意味着磁盘已经尝试重新读取扇区失败。

以我的经验,一旦磁盘开始产生不可恢复的读取错误(URE),某些数据将永远丢失,并且您唯一的希望是立即使用GNU ddrescue备份所有数据,这可以重试失败的扇区并跳过不可恢复的扇区。

假设您有备份,它们很可能由于URE而失败,并且肯定会有一些损坏的文件,因此您必须将来自同一文件系统的各种备份的完整数据组合在一起。

推荐ZFS的其他答案值得一读,因为ZFS的连续数据清理和RAID功能将有助于使您的数据在将来更安全-尽管仍不能替代备份,这也可以防止用户和管理员错误。

我只会在不需要快照的情况下使用LVM-它与RAID的集成度不高,不包含数据清理/数据校验和,并且您仍需要备份,因此ZFS之类的存储可能是更好的选择。有关LVM问题和风险的更多信息,请参见此答案

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.