在不使用RAID的多硬盘LVM中发生硬盘故障时,会丢失所有内容吗?


16

我正在讨论将LVM用于媒体/文件服务器,因为我想将多个物理硬盘合并为一个卷。我不希望在LVM中使用任何RAID,所以我的问题是:

如果卷中的多个硬盘之一发生故障,我会丢失所有数据还是会丢失存储在该单个磁盘上的数据?

另外,如果我只丢失单个磁盘上的数据,那么是否像更换该磁盘并从备份中还原其中的内容那样简单以进行恢复?

Answers:


11

如果卷中的多个硬盘之一发生故障,我会丢失所有数据还是会丢失存储在该单个磁盘上的数据?

不,您会丢失存储在整个LVM上的数据

另外,如果我只丢失单个磁盘上的数据,那么是否像更换该磁盘并从备份中还原其中的内容那样简单以进行恢复?

不,不是那么简单

您可以在此处阅读类似的问题LVM和灾难恢复


7

简单:您正在寻找mhddfs
它伪装成一个大文件系统,按照它们提到的顺序写入磁盘,如果第一个文件太满,则最终将大文件移动到另一个设备。实际上,它也可以使用磁盘上的子文件夹,以实现相同的功能。
必须先安装各个磁盘并保持可访问性。它根本不改变文件系统,也不在乎哪个文件系统就位(只要文件系统正确报告了可用空间)。万一磁盘丢失,您将不得不再次(动态)重新安装mhddfs,并且该磁盘上的数据都将丢失。
用法:

mhddfs /dir1,/dir2[,/path/to/dir3] /path/to/mount [-o options]

或在 /etc/fstab

 mhddfs#/path/to/dir1,/path/to/dir2 /mnt/point fuse defaults 0 0

复杂而强大:您需要unionfs
虽然mhddfs很好而且非常简单,但是在通过SSH授予其他人访问权限时,我在文件权限方面遇到了问题。我找不到任何解决方案,但找到了unionfs。
Unionfs还允许您将不同文件系统中的多个文件夹安装到一个文件夹中,但这确实对权限具有神奇作用。您可以将几个只读文件夹和一个可写文件夹合并在一起,因此它显示为一个。然后,与您共享合并文件夹的人员可以将其写入一个只读文件夹(如他们所看到的那样),但这些文件最终位于单个可写文件夹中。Linux引导CD的工作原理是这样的,可写磁盘是ramdisk。人们甚至可以删除只读文件夹中的文件,这实际上并不会删除文件,而是会在其写入目录中创建隐藏的白名单文件。如果您掌握了所有选项,则基本上可以将您的文件系统用作穷人SVN
如果过多使用类似于SVN的选项,则可能会错过两次存在的数据(在您的方案中是不可能的,但有可能),而可写文件夹则填充了微小的隐藏白名单文件。除此之外,它还可以使磁盘保持清洁并可以单独使用。如果文件对于磁盘来说太大了,那我会不知道怎么办。
用法:

 unionfs-fuse -o cow,max_files=32768 \
                 -o allow_other,use_ino,suid,dev,nonempty \
                 /path/to/dir1=rw:/path/to/dir2=ro:/dir3
                 /u/union/etc

where =rw使文件夹可读可写,并且=ro使其只读,即使权限另有规定也是如此。在etc/fstab这是

unionfs-fuse#/path/to/dir1=rw:/path/to/dir2=ro:dir3 /path/to/mount fuse cow,allow_other 0 0

这些如何处理未插入的可移动磁盘?
endolith

@endolith可移动磁盘上的mhddfs意味着不知道它将结束于何处,unionfs具有实际意义,但根据可移动设备的可用性,需要进行不同的重新安装。
DennisH,2015年

我不明白你的评论。如果您使用mhddfs组合了3个USB驱动器并将文件放到它们上,然后再删除其中一个,那么是否有永久性的坏事发生?如果重新插入,它会恢复到以前的状态吗?
endolith

3
@endolith在写入过程中拔出插头永远是不好的。如果在写入后拔出插头,则USB驱动器都可以正常运行,没问题。您可以拔出驱动器,将其插入PC2,使用它,再将其重新插入PC1,然后重新安装以继续使用它们。在通常PC1上的安装点之间,需要告知您已卸下驱动器(重新安装)。但是,假设您与PC2共享2个文件,则无法确定它们最终将位于mhddfs挂载的哪个驱动器中,或者甚至是相同的驱动器。仍然可以单独访问驱动器以检查/确定位置,但这不再涉及mhddfs。
DennisH

4

如果只是将多个设备连接在一起,则不会有任何冗余,因此可能会丢失数据。但是,如果您将媒体/文件服务器用于企业,则不应丢失任何东西,因为您已将所有内容备份到备份服务器/磁带驱动器中。

为什么要避免使用RAID?RAID的重点是可用性。如果您不想由于磁盘故障而浪费时间,可以使用RAID 1配置,这也可以加快读取速度。它们不是太贵,可以在第一次出现磁盘故障时自己购买,如果您真的避免为购买卡而付费,则可以将Linux设置为使用软件RAID,尽管在安装过程中需要多加注意和故障排除,以确保您更换正确的驱动器。

否则,您将不得不经历一些麻烦,以尝试从剩余磁盘中恢复什么数据。可能,但您的确要比实际需要的麻烦更多。获得适当的备份,然后重新考虑RAID。


1
我避免使用RAID,因为我不关心可用性。这是供个人使用。我正在尝试避免使用RAID,因为我一直在寻找可靠性。RAID中有一件小事出了问题,您丢失了整个阵列,我不希望对此进行处理。我宁愿拥有一个大文件存储库,也可以备份几个。
富锦

1
我不确定我是否理解。如果发生错误,RAID不会使您丢失阵列。不使用RAID是指一次失败会杀死整个事情。
JOTN 2011年

4
@ user72630:您对RAID的工作方式有严重的误解。首先,存在不同的RAID级别,其中大多数级别旨在避免磁盘故障时丢失数据。然后,您可以将RAID配置为在多个磁盘上只有一个文件系统,就像使用LVM进行计划一样。请阅读en.wikipedia.org/wiki/RAID
Sven

其他人怎么说。使用RAID的全部目的是保持可用性...即驱动器出现故障,仍然可以访问数据。有了合适的档位就可以热插拔故障驱动器,而无需担心宕机在所有
Bart Silverstrim'3

3

如果您使用一个跨所有LVM卷的文件系统,则整个文件系统将被损坏,因为FS不了解基础物理卷,也不会创建与其对齐的结构。可以挽救工作磁盘上的某些部件,但是不能保证。

同样,出于同样的原因,仅恢复损坏磁盘的文件也无法正常工作。


2

我认为更简单的方法是为媒体分区配置mdadm。如果您没有用于“真实RAID”的硬件,则mdadm路由会容易得多,并且似乎可以满足您对冗余和简单磁盘更换的要求。

# Format your drives first
# Create your MD
mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2

# In the event that a drive fails do the following
mdadm /dev/md1 --fail /dev/sda1
# Format the new drive
mdadm --add /dev/md1 /dev/sda1

有关更多信息:http : //en.wikipedia.org/wiki/Mdadm

如果卷中的多个硬盘之一发生故障,我会丢失所有数据还是会丢失存储在该单个磁盘上的数据?

如果您使用mdadm和RAID 5,则可能会丢失一个驱动器并具有阵列功能,但性能会下降。


1

我认为没有被提及的重要事情是文件系统中的文件不一定位于磁盘上的某个位置。它被分解成块,可以驻留在文件系统内的任何位置。如果文件可能在disk1上,则第一个4K;在下一个disk2上,等等。您可以想像如果丢失了一部分文件系统,尝试恢复任何内容的麻烦。


0

Btrfs是一个不错的选择。您可以使元数据具有抵御丢失一个磁盘的能力(“ raid1”块配置文件);其他磁盘上的数据仍然可以访问(我们很清楚,无论在哪里引用丢失的磁盘,都将转换为充满孔的文件)。这是通过运行带有过滤器的btrfs balance来完成的:

sudo btrfs balance start -m convert=raid1 /mnt/point
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.