我正在使用一台 ubuntu 18.04 计算机,我想在其中拥有一个逻辑卷(将所有驱动器视为一个单元),但同时至少拥有 1 个驱动器故障恢复。
我有这个设置来存储家庭照片:
- NAS SYNOLOGY 配备 4 TB raid 1
- 台式电脑配有一堆用于备份的光盘。
NAS 的不同文件夹会定期备份到 PC 的不同磁盘上。然而,这是一个糟糕的解决方案,因为我必须将 NAS 的部分备份到不同的磁盘上,如果 NAS 完全故障/被盗,我就会剩下一堆杂乱无章的旧磁盘。
我最初想用计算机中的所有磁盘创建一个 LVM。这将解决必须创建部分备份的问题。但是,此解决方案增加了数据丢失的风险。就我而言,如果 LVM 的其中一个磁盘发生故障,则所有 LVM 都会丢失。
然后我想到用我拥有的异构磁盘创建 raid 1,但我无法找到合适的解决方案。
我目前用于备份的驱动器是:2x640GB 3x1TB 1x3TB
我想要至少有 1 个磁盘冗余的原因是有些驱动器有点旧并且很少使用。
是否有任何程序/分区(LVM/AUFS + RAID 1)方案可以允许这个 1 个逻辑卷和 1 个磁盘冗余?
注意:我知道购买新光盘是简单且安全的解决方案,但我想使用备用驱动器作为备份,我正在尝试使用当前拥有的硬件实现“尽可能最佳的设置”。
注意:我也读过有关使用 AUFS 和 snapRaid 的可能性,但无法计算最后剩下的总空间量。
答案1
我建议将所有 1 TB 磁盘和 3 TB 磁盘中的两个 1 TB 分区用作 RAID 6(两个磁盘冗余),并再使用 500G 分区组成另一个 RAID,然后将 2 个分区放入 3 TB 磁盘中(也使其成为 RAID 6),并使用每个磁盘上剩余的 140G 组成 RAID 1,然后使用 LVM 合并所有内容。这样,您就可以使用所有这些磁盘,并且不会因为 1 个物理磁盘故障而受到影响。
总结:
RAID 6 (#1):
1 TB 磁盘
1 TB 磁盘
- 1 TB 磁盘
- 3 TB 磁盘中的 1 TB 分区
- 3 TB 磁盘中的 1 TB 分区
RAID 6 (#2):
640G 磁盘 A 中的 500G 分区
640G磁盘B中的500G分区
- 3 TB 磁盘中的 500G 分区
- 3 TB 磁盘中的 500G 分区
RAID 1(#3)
640G磁盘A中的140G分区
从 640G 磁盘 B 中划分出 140G 分区
使用 LVM 连接一切
答案2
这是基本的数学知识,对于单磁盘冗余,最大磁盘的大小必须作为冗余的基础。
如果你只想存储家庭照片,性能(尤其是延迟)就不是问题,所以我们甚至可以在性能较差的解决方案之间进行选择,这样你就可以
- 要么使用 RAID1,将 3x1TB 与 4TB 磁盘上的 3 个分区(每个分区 1TB)和两个 640G 磁盘组合在一起
- 或者使用 RAID5,使用两个 640G 磁盘和 3TB 磁盘上的 640G 分区创建一个 RAID5,使用三个 1TB 磁盘和 3TB 磁盘上的 1TB 分区创建另一个 RAID5。您可以将大磁盘的剩余部分用作暂存空间
在这两种情况下,您都可以使用这些 MD RAID 作为 LVM 的 PV,这样就可以将整个空间合并为一个 LV
答案3
如果您打算使用现有磁盘,那么我可能会建议您:
- 2x 640 GB 磁盘 - 连接成单个 1280 GB 卷(使用 LVM)
- 使用 1 TB 作为阵列
- 剩余 280 GB 用于其他用途
/dev/Xda
及/dev/Xdb
以下
- 3 TB 磁盘
- 使用 1TB 作为阵列
- 剩余 2 TB 用于其他用途
/dev/Xdc
以下
- 1TB 磁盘
/dev/Xdd
以下
- 1TB 磁盘
/dev/Xde
以下
- 1TB 磁盘
/dev/Xdf
以下
这将允许您生成 4 TB(“RAID5“/1 个磁盘冗余)或 3 TB(“RAID6“/2磁盘冗余)。
我还建议使用像 ZFS 这样的系统来处理文件一致性(许多其他文件系统不这样做),允许检测和修复原本无声且无法检测到的文件损坏……它可以并且将要发生(个人经历)......这对于相对“重要”的事情(例如家庭照片)可能尤其重要。
设置看起来会像这样:
# setup LVM stripe over 2x 640 GB disks
pvcreate /dev/Xda
pvcreate /dev/Xdb
vgcreate ${vg_name} /dev/Xda /dev/Xdb
lvcreate --size 1TB --type striped ${vg_name} --name ${lv_name}
# make a 1TB partition on the 3TB disk, remove all others
sfdisk /dev/Xdc <<< "start=2048,size=+1T,type=0FC63DAF-8483-4772-8E79-3D69D8477DE4"
# make a ZFS raid Z2 filesystem on the stripe, 1TB partition, and 1TB disks
zpool create tank raidz2 /dev/${vg_name}/${lv_name} /dev/Xdc1 /dev/Xdd /dev/Xde /dev/Xdf
这应该会产生一个约 5 TB 的 ZFS 池,其中约 3 TB 可用...raidz1
而是使用将奇偶校验磁盘从两个减少到一个,并获得约 4 TB 可用。
之后,您可以返回并添加另一个逻辑卷 ( lvcreate
) 以使用 640 GB 磁盘上的剩余空间,并在/dev/Xdc
( fdisk
) 上添加另一个分区以使用 3 TB 磁盘上的剩余空间。
如果需要,您可以在 3 个 1 TB 磁盘上放置分区表,但这并不是绝对必要的。您还可以通过调整逻辑卷和分区的大小来更好地匹配实际大小,从而提高空间效率。1 TB 磁盘“。
如果您决定使用 ZFS,请确保zpool scrub tank
每月大约运行一次 scrupt () - 使用 cronjob 来自动执行它。
此外,我无法评论性能影响或“感觉“使用 LVM 来合并两个磁盘,然后将其呈现给 ZFS。