不幸的是,我的内置硬盘可能很快就要坏了,而我又没钱买新的。但我有一个外置硬盘,我用它来备份,所以我想到了一个解决方案:RAID
但我有一些问题,因为我想第一次就把事情做好。
my internal Hdd External Hdd (USB 2.0)
Seagate Seagate
500 GB 1 TB
5200 rpm 7200 rpm
我想在外部硬盘上镜像内置硬盘,并使用外部剩余的 500 GB 进行备份(软件 raid 1),这样当我的磁盘最终坏掉时,我就可以准备好另一张最新的磁盘。
首先:
1) 这有可能吗?我研究 raid 已经有一段时间了,但没发现为什么这行不通(只是较慢的硬盘会成为瓶颈,但我不在乎这个)但我读到过内置硬盘是“动态”的,而外置硬盘不是,所以它不能用于启动系统(我真的不知道这是怎么回事)
如果是,那么
2) 磁盘阵列中的分区是否需要位于完全相同的位置?我知道它们必须大小相同,但如果我要从例如 /dev/sda1 主部分创建 RAID,在磁盘开头,/dev/sdb5 逻辑部分在磁盘末尾,这有关系吗(例如,我不会这样做,因为我也想将我的 win 分区放在内置硬盘上,但我不想也创建它。它有大约 20 GB 的空间仅用于游戏,我不想把它放在磁盘末尾,因为磁盘磁头会移动,我宁愿将静态数据(电影、音乐、图像……)放在磁盘末尾(我在 VBox 中尝试过,效果很好)
3) 拥有一个大的 raid 分区并在其上设置 lvm 与每个分区都使用独立的 raid 1 之间有什么区别吗?(lvm 会增加 CPU 使用率吗?延迟吗?多个 raid 分区会比只有一个分区更安全吗?)
编辑:我发现我可以执行 cfdisk /dev/mdX 并创建另一个分区,所以这可能是最好的解决方案,对吗?(我也在运行 gentoo linux)
答案1
我认为理论上是可行的,但速度会非常慢。如果您的机器可以从 USB 启动,您应该能够从外部磁盘启动,但这可能会被额外的 USB 磁盘(在获取磁盘标签之前窃取磁盘标签)所干扰。
不在 Linux 软件 RAID 中。它会影响性能,但没有必要将其放在磁盘上的同一位置。
如果您有一个单独的 RAID 分区并且有坏扇区,则可能会出现问题,但这只是我的一种理论。我倾向于创建多个较小的 RAID 分区,因为该分区上的错误不会占用 raid 分区的一半,只会占用有错误的部分。
答案2
您有 2GiB 或更多 RAM 吗?如果有,请研究使用 ZFS 作为文件系统。
并使用两个以上的磁盘。
就我所读到的有关 ZFS 的内容(它允许动态压缩,也允许加密)而言,它还具有 RAID 无法做到的真正优点:动态完整性检查。
无论如何说法,都不能使用 RAID,如果您的数据确实很重要,RAID 不能保证数据正确写入磁盘(它无法知道扇区上的数据是否正确或是否已被更改,没有计算校验和,没有哈希值等)。
我个人使用带有三个磁盘的 RAID-0(PATA 大约 28MiB/s,每个 SATA 大约 45MiB/s),因此我得到大约 105MiB/s(添加 PATA 会达到瓶颈,因为 PCI-32 33MHz 无法维持三个 HDD 带宽(2xSATA+1xPATA 加上所有卡),添加 PATA 获得的增益只有 15MiB/s,但都算数),此外,添加 PATA 会导致 SATA 不会以最大带宽使用,因此它们会以放松的方式工作,而且 PATA 也会以放松的方式工作,因为瓶颈在 PCI 总线,因此 HDD 有时间自我冷却(大多数人并不关心这一点)...为什么我要使用速度如此之快的 HDD,以至于它们有一半的时间什么都不做?只是为了不要让它们过热,也不需要把它们放在冷藏室里!也是为了大大延长它们的寿命!
我测试了以下 diks:
- 内置 PATA 硬盘
- 内置 SATA 硬盘
- 内置 SATA 硬盘
迁移到 ZFS 不会让情况变得更好吗?哦,是也不是;由于压缩功能已打开,因此它获得了很多好处,现在(使用可压缩数据)我可以维持接近 105MiB/s(压缩数据),并且由于压缩率接近 2.5:1,在最佳情况下,我可以在超过 261MiB/s 的速度下读取/写入真正的未压缩数据。
不好的一面是,ZFS 占用了我的 1.3GiB RAM(我只有 2GiB,主板可能达到的最大值)。
经过一番思考和尝试大量调整后,我可以将一个 USB 2.0 HDD 添加到 zfs 池中(我希望在测试后可以将其移除,但这很难)...基本上我通过拆开所有 HDD 并将其他不使用的 HDD 放在桌子上来解决这个问题,然后在开启 ZFS 的情况下进行测试(所有都充当动态剥离,zfs 条带大小是动态的):
- 内置 PATA 硬盘
- 内置 SATA 硬盘
- 内置 SATA 硬盘
- 外部 USB 2.0 至 Sata HDD(仅一个 HDD,因为 USB 2.0 是该磁盘的瓶颈)
如果我在 Raid0 上进行该配置,我将获得 25MiB/s*4=100MiB/s,因此现在的限制不是由 PCI 达到 105MiB/s(视频、音频等,卡使用部分带宽),而是通过添加非常慢的 2.0 USB 最大速度,它降低了(在 Raid0 上)所有的速度(Raid0 需要所有条带大小相同,因此所有 HDD 的带宽都相同,与最低的一样高)。
如果在 ZFS 上完成,由于条带大小是动态的,如果根本没有压缩,我可以获得带宽总和 (28 PATA + 2*45 SATA + 25 USB = 142MiB/s)?不,不,再次强调,限制是 PCI 总线(因为所有其他卡都是 105MiB/s),所以我只能获得 105MiB/s 的未压缩数据传输... 因此添加 USB 不会有任何增益(速度),这是我在开始之前就知道的,PCI 总线是瓶颈。
我知道您在谈论 RAID 1(镜像),对于写入,Raid 1 需要在所有磁盘上写入相同数量的信息,因此速度是最慢的,但在读取时它可以从每个磁盘读取不同的东西(如果配置为这样)所以它可以达到与 Raid 0 一样多的速度,所以我在 Raid 0 上的测试可能会有些轻松,而且由于我针对 ZFS 测试了 Raid 0,...一切都说完了。
ZFS 的优点在于本机压缩(无论您放置文件还是放置分区,它都会压缩块)和数据验证。
因此,具有某种程度的 RAID 的 ZFS 比 mdadm 等要好得多,但是使用的 RAM 成本很高。
我建议不要在 ZFS 上使用 DeDup...它可能需要大量 RAM,1TiB 磁盘上需要超过 32GiB 的 RAM。
另外,我建议使用速度足够快的小型硬盘,不要倾向于使用大型硬盘。最好有 8 个 120GiB 的硬盘,而不是 2 个 500GiB 的硬盘;但要注意端口是否足够多,以及是否有足够的电量消耗。
答案3
1)这可能吗?
是的,这是可能的,但并非易事。
我已经研究 RAID 一段时间了,并没有发现为什么它不起作用(只是较慢的 HDD 会成为瓶颈,但我不在乎这个)
USB 总线将成为瓶颈。USB2 的平均速度约为 30 MB/秒。两个磁盘的速度可能都比这个快得多。
但是我在某处读到,内置硬盘是“动态的”,而外置硬盘不是,所以它不能用于启动系统(我真的不知道这是怎么回事)
动态磁盘这种方式?在 Gentoo 上?
如果是,那么
2)RAID中的分区是否需要位于完全相同的位置?
不是。只要两个卷的大小相同,Mdadm 就会很乐意创建具有两个卷的镜像。
3)拥有一个大的 RAID 分区并在其上设置 lvm 与每个分区都有独立的 RAID 1 之间有什么区别吗?
两种方法都可以。
创建覆盖整个磁盘的镜像是最简单的解决方案。创建多个较小的 mdX 设备需要更多工作,但可以更灵活。
(lvm 会增加 CPU 使用率吗?延迟吗?
任何额外的层都会增加延迟。
我不确定当您使用 USB 驱动器时这是否重要。
多个 RAID 分区会比一个分区更安全吗?
不会。如果磁盘发生故障,它就故障了。它不关心上面写了什么,也不关心你如何查看上面写的数据。
你没有问如何做,但最好的方法可能是:
- 备份未添加到 RAID 的磁盘上的所有数据。这可能需要第三个磁盘。
- 在外部驱动器上创建镜像。使用
missing
选项跳过内部驱动器。 - 在“1 磁盘/镜像/降级”上的新卷上格式化卷
- 将所有数据复制到其中。
- 测试它是否有效。(可能发现引导加载程序需要调整)
- 将内置硬盘添加到镜像。
如果您对任何步骤不确定,请首先进行完整的磁盘备份。克隆兹拉是一个可以执行此操作的免费工具。
最后,在你做所有这些之前:
- 你确定磁盘快坏了吗?你检查过 SMART 值了吗?重新分配的扇区数量增加了吗?
- 如果出现故障,是否只需更换 HDD 而不是使用第二个驱动器就更容易?
- 如果您买不起第二个驱动器,请考虑更换驱动器(例如,在计算机中使用速度更快的外部驱动器,并将可能出现故障的慢速驱动器移至 USB2 盒。