如何使用Btrfs for Linux启用存储池和镜像

如果Linux系统中有多个硬盘驱动器,则不必将它们全部视为不同的存储设备。借助Btrfs,您可以非常轻松地从这些硬盘驱动器中创建存储池。

在某些情况下,甚至可以启用镜像,这样就不会由于硬盘驱动器故障而丢失数据。完成所有设置后,您可以将所需的任何东西扔到池中,并充分利用您拥有的存储空间。

没有GUI配置实用程序可以使所有这些操作变得更加容易( ),但是使用命令行仍然非常容易。我将引导您完成一个简单的设置,以将多个硬盘驱动器一起使用。

什么是Btrfs?

Btrfs(称为B树文件系统,“ Butter FS"或“ Better FS") ")是即将发布的文件系统,该文件系统在文件系统级别上集成了许多不同的功能,这些功能通常仅作为单独的软件包提供。虽然Btrfs具有许多值得注意的功能(例如文件系统快照),但我们将在本文中介绍的两个功能是存储池和镜像。

如果不确定文件系统是什么,请查看对Windows几个文件系统的解释,以更好地了解现有文件系统之间的差异。

Btrfs仍然被许多人视为“不稳定",但是大多数功能已经足够稳定供个人使用-只有少数几个选择的功能可能会导致一些意想不到的结果。

虽然Btrfs打算在将来某个时候成为Linux的默认文件系统,但最好还是将ext4用于单个文件。硬盘驱动器设置或不需要存储池和镜像的设置。

池化驱动器

在此示例中,我们将使用四个硬盘驱动器设置。有两个硬盘驱动器(/ dev / sdb和/ dev / sdc),每个都有1TB,另外两个硬盘驱动器(/ dev / sdd和/ dev / sde)有500GB,总共四个硬盘,总计3TB

您还可以假定您有另一个任意大小的硬盘驱动器(/ dev / sda),其中包含引导加载程序和操作系统。我们不关心/ dev / sda,而只是将其他四个硬盘驱动器组合在一起以用于额外的存储目的。

创建文件系统

sudo mkfs.btrfs / dev / sdb

当然,您可以将/ dev / sdb替换为要使用的实际硬盘驱动器。从这里,您可以将其他硬盘驱动器添加到Btrfs系统,以使其成为一个单个分区,该分区跨越您添加的所有硬盘驱动器。首先,使用命令安装第一个Btrfs硬盘驱动器:

sudo mount / dev / sdb / mnt

然后,运行命令:

sudo mkfs.btrfs / dev / sdc mkfs.btrfs / dev / sdd mkfs.btrfs / dev / sde

现在,您可以将它们添加到第一个硬盘中使用以下命令驱动器:

sudo btrfs设备添加/ dev / sdc / mnt btrfs设备添加/ dev / sdd / mnt btrfs设备添加/ dev / sde / mnt

如果第一个硬盘驱动器上存储了一些数据,则需要文件系统在所有新添加的硬盘驱动器之间平衡它们。您可以使用以下命令执行此操作:

sudo btrfs文件系统平衡/ mnt

或者,如果您甚至在开始之前就知道需要Btrfs文件系统要跨越所有硬盘,您只需运行以下命令即可:

sudo mkfs.btrfs -d single / dev / sdb / dev / sdc / dev / sdd / dev / sde

当然这要容易得多,但是如果您不一次性添加所有内容,则需要使用上述方法。

您会注意到我使用了一个标志:“-d single"。这是必要的,因为我想要RAID 0配置(数据在所有硬盘驱动器中分割,但没有镜像),但是当硬盘驱动器大小不同时,需要“单个"配置文件。如果所有硬盘驱动器的大小均相同,则可以改用标志“ -d raid0"。顺便说一句,“-d"标志代表数据,并允许您指定所需的数据配置。还有一个“ -m"标志,它对元数据执行完全相同的操作。

除此之外,您还可以使用“ -d raid1"启用RAID 1,该RAID 1将在所有设备之间复制数据,因此使用在跨所有硬盘的Btrfs文件系统的创建过程中,如果将其标记为flag,则意味着您仅获得500GB的可用空间,因为其他三个硬盘用于镜像。

最后,您可以使用以下命令启用RAID 10: “ -d raid10"。这将同时混合RAID 0和RAID 1,因此将为您提供1.5TB的可用空间,因为两个1TB硬盘驱动器以镜像方式配对,而两个500GB硬盘驱动器以镜像方式配对。

sudo mount / dev / sdb1 / mnt

然后运行命令:

sudo < code> btrfs balance start -dconvert = raid1 -mconvert = raid1 / mnt

这会将配置更改为RAID 1,但是您可以将其替换为所需的任何配置(只要实际允许的-例如,如果您至少没有四个硬盘驱动器,则无法切换到RAID 10)。另外,如果只关心数据而不关注元数据,则-mconvert标志是可选的。

如果发生硬盘故障

如果硬盘发生故障,您将需要将其从文件系统中删除,以便其余合并的驱动器可以正常工作。使用以下命令挂载文件系统:

sudo mount -o降级的/ dev / sdb / mnt

然后使用以下命令修复文件系统:

sudo btrfs设备删除丢失的/ mnt

如果您没有启用RAID 1或RAID 10,则故障硬盘上的所有数据现在都将丢失。

从文件系统中删除硬盘驱动器

最后,如果要从Btrfs文件系统中删除设备,并且文件系统已挂载到/ mnt,则可以使用以下命令执行此操作:

sudo btrfs设备删除/ dev / sdc / mnt

当然,将/ dev / sdc替换为要删除的硬盘驱动器。此命令将花费一些时间,因为它需要将所有数据移出要删除的硬盘驱动器,并且如果其他剩余硬盘驱动器上没有足够的空间,同样会失败。

自动挂载

sudo / dev / sdb / mnt btrfs device = / dev / sdb,device = / dev / sdc,device = / dev / sdd,device = / dev / sde 0 0 <

安装选项

一个额外的提示!您可以在/ etc / fstab文件中的Btrfs文件系统的挂载选项下优化Btrfs的性能。对于大型存储阵列,最好使用以下选项: compress-force = zlib,autodefrag,nospace_cache 。具体来说,compress = zlib将压缩所有数据,以便您可以充分利用您拥有的存储空间。记录下来,SSD用户可以使用以下选项: noatime,compress = lzo,ssd,discard,space_cache,autodefrag,inode_cache 。这些选项与设备规格一起使用,因此/ etc / fstab中针对SSD用户的完整行如下所示:

sudo / dev / sdb / mnt btrfs device = / dev / sdb ,device = / dev / sdc,device = / dev / sdd,device = / dev / sde,
noatime,compress = lzo,ssd,discard,space_cache,autodefrag,inode_cache 0 0

您的存储池有多大?

Btrfs是用于存储池和镜像的绝佳选择,一旦被认为完全稳定,它肯定会变得越来越流行。有了GUI可以简化配置(在某些发行版安装程序中除外),这也没有什么坏处,但是您必须在终端中使用的命令易于掌握和应用。

您可以建立最大的存储池?您认为存储池值得吗?在评论中让我们知道!

标签: