SSD和两个硬盘驱动器的raid建议

我有一台带有一个128GB SSD和两个1TB硬盘的新机器。 在SSD上是操作系统,我最初的想法是将两个HDD放在RAID 1中以获取用户数据。

经过一番思考后,我想出了另外两个设置,现在我有点怀疑:)有人可以建议什么是最好的设置?

1:RAID 1中的单个SSD和HDD(原始思想)

2:在HDD上创建2个分区(128GB和872GB)。 将两个872GB放入RAID 1,并使用SSD和一个128GB HDD分区创建另一个RAID 1。

3:在HDD(750/250)上创建2个分区,将705GB放入RAID 1并使用2 250GB作为备份,并将SSD自动快照到(其中一个)这些分区。

我认为这两个主要问题是:

是否建议仅使用部分驱动器创建raidarrays并主动使用该驱动器的其他部分,或者是否应始终使用完整磁盘?

是否建议使用SSD和HDD创建raid 1arrays,或者这会打破SSD的整体速度优势?

是否建议仅使用部分驱动器创建raidarrays并主动使用该驱动器的其他部分,或者是否应始终使用完整磁盘?

建议总是使用尽可能多的类似设备。 我不确定这个建议有多少是迷信,但让我们先看看这个:

是否建议使用SSD和HDD创建raid 1arrays,或者这会打破SSD的整体速度优势?

不。不要这样做,你会打击速度。 除了它们是不同的设备等之外,我非常肯定的一件事是你的速度会下降,因为你将以最慢的磁盘速度工作 – >你的ssd-hdd组合将是方式比你的SSD慢:

你不应该这样做你的SSD。 你的第一个选择是最好的选择。 只需给自己安全的用户空间和快速的系统磁盘。 备份那个磁盘。 (记住,RAID不是备份策略)

第一个选择并非完全愚蠢。 如果配置正确,“混合RAID1”确实有效。 我自己运行了这个设置,直到我的SSD开始表现得很奇怪并开箱即用。

请参阅这些文章以获取指导

http://tansi.info/hybrid/

http://www.vinsec.net/2012/05/hybrid-hdd-ssd-raid1.html

https://superuser.com/questions/293144/combining-ssd-and-hard-disk-in-software-raid1

第一个问题

出于性能原因,请不要这样做。 在其他分区上执行I / O时,会降低性能。 但是,如果性能不是您关注的问题,而是冗余,则可以考虑这一点。

第二个问题

不,不要这样做。 这条链与这里最薄弱的环节一样强大。 你的arrays将更像硬盘驱动器,你会浪费昂贵的SSD。

相反,使用……

dm-cache或flashcache (相当高级和实验性)。 它使您可以将SSD用作较慢硬盘的缓存(读取和写入)。 巨大的性能提升和可调整性,以在耐用性和性能方面找到平衡点。

另请参阅: 如何安装和使用flashcache / bcache将HDD缓存到SSD?

我想在可能的解决方案池中添加不同的建议。 我建议你将你的设置基于btrfs的子体积和快照function与btrbk cronjob相结合。

设置它不一定是微不足道的,但很大程度上取决于你的技能和以往的经验。 网上有很多文献可以帮到你。 最后,您将获得一种非常灵活,快速的方式来定期备份您的SSD,并提供许多选项,以创建完美满足您需求的解决方案。

注意事项:任何forms的raid都可以而且永远不应取代常规备份。 (幸运的是,btrbk可以很容易地扩展到外部驱动器或ssh可访问的主机,请参阅其手册 )

一般设置

我的建议的一般想法是使用SSD作为您的btrfs系统驱动器,其中包含您的根和相关子卷以及btrfs raid1中的两个HDD作为您的数据和备份驱动器。

与btrbk一起,这将允许您将系统SSD的自动增量备份执行到备份HDD。 由于HDD设置为镜像,因此所有备份也将保持镜像状态。

此外,btrfs发送和接收子卷的能力(这是btrbk用于进行备份的能力)允许您在系统和数据驱动器之间自由移动数据和备份。 这将允许您更改快速SSD上存储的数据,同时始终维护所有数据的版本化和镜像备份。

设置btrfs

要开始使用,您需要将Ubuntu重新安装到SSD上,并选择btrfs作为根文件系统或将现有的安装文件系统转换为btrfs。 这两种方式都在Ubuntu的社区帮助页面上描述了btrfs ,如果你刚刚开始使用Ubuntu上的btrfs ,这是一个很好的阅读。

接下来,您需要使用以下命令将HDD转换为btrfs raid1,其中/dev/sdx/dev/sdy是两个驱动器(这些驱动器上的所有数据都将丢失!)

 mkfs.btrfs -d raid1 /dev/sdx /dev/sdy 

如果您不熟悉快照或btrfs,我会建议您在熟悉文件夹,子卷和快照之间的区别,并在将任何实际数据写入raid1之前尝试一些命令。

您可以通过多种方式组织数据,还可以在btrfs内核wiki的系统管理员指南中找到一些示例。

一种方法是在某处安装btrfs root( subvolid 05 )并使用它来管理子卷和快照,并将所有数据存储在适当的子卷中,然后将其安装到文件系统中方便的位置。 这样您就可以随意快照,移动,恢复和替换任何数据。

对于您的具体示例,这可能意味着以下(所有命令应该以root身份运行/使用sudo):

  • 将系统btrfs root( subvolid=0subvolid=0/btrfs/system
  • 将数据btrfs raid1 root( subvolid=0subvolid=0/btrfs/data

不要手动安装这些卷,而是在安装之前将它们添加到fstab ( /etc/fstab ),因此它们也会在启动时安装。 我建议通过他们的UUID挂载它们,你可以通过运行sudo btrfs filesystem show来检索它们。

 UUID= /btrfs/system btrfs defaults,subvolid=0 0 0 UUID= /btrfs/data btrfs defaults,subvolid=0 0 0 

现在安装它们:

 sudo mkdir /btrfs sudo mkdir /btrfs/data sudo mount /btrfs/data sudo mkdir /btrfs/system sudo mount /btrfs/system 

现在,您可以为每个btrfs文件系统添加任何其他子卷。 Ubuntu通常subvol=@为你的root /subvol=@ )和home目录/homesubvol=@home )创建一个子卷。 通常将/var/tmp转换为自己的子卷或创建特定于应用程序的子卷,例如/var/www/

我个人更喜欢将所有子卷保留在btrfs根目录下,并使用mount和fstab条目将它们挂载到特定位置。

例如,要在HDD raid1上为您的音乐collections创建子卷,我会执行以下操作:

 btrfs subvolume create /btrfs/data/@music 

然后我将使用以下fstab条目将其挂载到/music

 UUID= /music btrfs defaults,subvol=@music 0 0 

btrbk的设置

其次,您必须为要快照并备份到HDD raid的子卷设置btrbk。

作为如何定期备份@@home并保持备份的常规间隔历史记录的简单示例,您可以将以下内容写入/etc/btrbk.conf

 # The long timestamp recommended for more then one snapshot a day timestamp_format long # Set time spacing of snapshots kept on SSD snapshot_preserve_min 2d snapshot_preserve 7d 4w 3m # Set time spacing of snapshots kept on HDD raid target_preserve_min no target_preserve 8w *m snapshot_dir /btrfs/system/snapshots volume /btrfs/system subvolume @ target send-receive /btrfs/data/backup/ subvolume @home target send-receive /btrfs/data/backup/ 

有关任何详细信息,请阅读btrbk文档 。 它还将说明如何从快照恢复数据。

最后,您必须使用sudo crontab -e将btrbk添加到您的crontab中 。 例如,每天中午运行btrbk快照和备份,添加以下行:

 0 12 * * * /path/of/btrbk run 

其他考虑

交换

虽然通常在具有至少8 GB RAM的现代个人计算机系统中对交换空间的需求越来越少,但仍然存在可以帮助您的用例,尤其是当位于SSD上时,其性能受到影响。交换并不明显。 因此,通常仍建议设置交换文件或分区。

话虽这么说, btrfs不支持交换文件 。 这意味着,如果您希望能够在系统上使用交换,则必须将一些SSD空间分配到单独的交换分区中。

btrfs SSD检测

Btrfs会自动检测安装的文件系统是否位于SSD上,并在此情况下启用耗损均衡。

然而,这不再是必要的,因为现代SSD自动磨损水平,同时导致自由空间碎片化的问题。 因此,我个人建议您使用nossd选项安装SSD。

更多细节可以在btrfs内核wiki中找到 。

文件系统压缩

Btrfs支持透明文件压缩。 通过将compress选项添加到mount标志,将为所有写入的新文件启用它。

例如,要为我之前用作示例的@music子卷启用压缩,我会将我的fstab条目更改为:

 UUID= /music btrfs defaults,compress,subvol=@music 0 0 

要应用此更改,请不要忘记重新安装(卸载并重新安装)受影响的子卷。

对于最新的计算机,在文件写入之前和读取文件之后压缩文件的开销通常可以忽略不计。 在启用压缩的情况下,将较大但可压缩的文件写入慢速磁盘可能会更快。

如果你担心速度,你也可以使用compress=lzo的更快但效率更低的LZO压缩。

可以在btrfs内核wiki中再次找到更多细节。

主文件夹的位置

默认情况下,Ubuntu将您的主文件夹放入系统驱动器上的@home子卷。 如果您搬家到您的硬盘镜子符合您的个人喜好。 您也可以将它保存在SSD上,并将其包含在您的btrbk备份中,如上所示。

备份的时间间隔

虽然我的示例为所有子卷设置了相同的保留时间,但btrbk允许您为每个子卷单独设置此时间。

您还可以在不同的时间间隔运行具有不同配置的btrbk(请参阅-c选项),以更好地控制何时对子卷进行快照和/或备份。

快速创建快照时,由于btrfs写时复制的特性,你甚至可以让btrbk每小时创建一个快照,但每天只能将它们传输到备份磁盘一次,对于经常更改的文件夹,比如你的家夹。

检测钻头腐烂

要利用btrfs位腐烂/数据损坏检测(以及raid1的情况下自动修复),您应该确保定期运行btrfs scrub,例如作为cron作业,使用:

 btrfs scrub start /btrfs/system btrfs scrub start /btrfs/data