热插拔文件系统,像 Btrfs 一样流畅
文件系统,就像文件柜或抽屉,控制着您的操作系统如何存储数据。它们还保存元数据,例如文件类型、附加到数据的内容以及谁有权访问该数据。对于 Windows 或 macOS 用户
老实说,没有足够的人考虑为他们的计算机使用哪个文件系统。
Windows 和 macOS 用户没有充分的理由去研究文件系统,因为他们已经有一个自问世以来就被广泛使用的文件系统。对于 Windows 来说是 NTFS,对于 macOS 来说是 HFS+。对于 Linux 用户来说,有很多不同的文件系统选项可供选择。Linux 领域当前的默认设置是第四代扩展文件系统,即 ext4。
目前,Linux 文件系统领域正在讨论变革。就像几年前默认 init 系统和切换到 systemd 的变化一样,人们一直在推动将默认 Linux 文件系统更改为 Btrfs。不,我不是在用俚语或试图侮辱你。Btrfs 代表 B 树文件系统。许多 Linux 用户和系统管理员对最初的更改不太满意。这可能是因为人们通常不愿改变,或者是因为改变可能过于突然。一位朋友曾经说过:“我了解到恐惧限制了你和你的视野。它就像眼罩一样,让你看不到可能就在前方几步远的东西。” 在本文中,我想帮助大家轻松理解 Btrfs,并使过渡像黄油一样顺滑。让我们先回顾一些事情。
文件系统是做什么的?
为了清楚起见,我们可以总结一下文件系统的作用和用途。就像之前提到的,文件系统用于控制程序不再使用数据后如何存储数据、如何访问数据、数据位于何处以及附加到数据本身的内容。作为系统管理员,众多任务和职责之一是维护备份和管理文件系统。文件系统分区有助于分隔业务环境中的不同区域,并且是数据保留的常用做法。一个例子是将 3TB 硬盘分区,其中 1TB 用于您的生产环境,1TB 用于您的开发环境,1TB 用于公司相关文档和文件。当特定分区发生意外时,只有存储在该分区中的数据会受到影响,而不是本例中的整个 3TB 驱动器。一个有趣的例子是用户在开发应用程序中测试脚本,该脚本开始填满开发分区中的磁盘空间。意外填满文件系统,无论是来自应用程序还是用户的脚本还是系统上的任何东西,都可能导致整个系统停止运行。如果数据被分区到不同的分区,则只有该分区中的数据会被填满或受到影响,因此生产和公司数据分区是安全的。
例如,Linux 系统中使用的 ext4 文件系统是一种日志文件系统,这意味着它保留了驱动器上文件位置的日志,并记录驱动器上发生的更改。
Ext4 文件系统的优点
例如,Linux 系统中使用的 ext4 文件系统是一种日志文件系统,这意味着它保留了驱动器上文件位置的日志,并记录驱动器上发生的更改。ext4 分区的一些优点是您可以执行以下操作
- 在特定卷上进行加密
- 您可以按需挂载卷
- 您可以独立于其他卷对卷进行快照、格式化或碎片整理
ext4 的一些缺点是
- 隔离会增加填满磁盘分区的机会
- 对于管理这些磁盘的人来说,管理开销增加
- 为在不同分区上运行的应用程序创建一致的快照存在困难
- ext4 比其他文件系统使用更多资源。
- 不支持透明压缩
- 不支持透明加密
- 不支持数据去重
为了 BTR... 我的意思是更好的改变
Btrfs,发音为 Butter FS、Better FS 或 B 树 FS,尽管我认为人们不使用后者。它是一个从头开始重写的 CoW(写入时复制)文件系统。开发人员希望扩展文件系统的功能,以包括用于更好快照和池化卷的附加功能。Btrfs 的作者表示,Btrfs 的目标是“让 Linux 能够扩展到可用的存储空间”。Btrfs 扩展了 ext4 的功能,并添加了诸如跨多个硬盘驱动器拥有看似连续的文件系统以整合大型分区数据等功能。Btrfs 的一些最佳功能是
- 数据镜像
- 数据和元数据的自愈和校验和
- 可自定义的保留策略
- 安全的数据备份一致性
- 向已满的存储驱动器添加新驱动器以进行数据保留
数据去重可以减少数据可能占用的实际空间量,数据镜像也可以通过 Btrfs 变得更容易。文件是硬盘驱动器上数据最重要的部分。Btrfs 具有其他功能,例如擦洗、自愈数据以及其他用于数据完整性和安全性的功能。RAID 功能可用于在线删除设备,在文件系统创建后自由地在 RAID 级别之间转换,并在大型设备之间镜像。能够更新和更改 raid 级别或验证校验和以及修复损坏的文件副本可能足以考虑进行切换。
示例
一些示例和一些与 BTRFS 一起使用的命令是
平衡文件系统平衡文件系统以均匀的方式将数据分散在不同的磁盘上。如果磁盘大小不相等,则相等性将按已用容量的百分比计算(所有磁盘的利用率百分比将相同)。添加更多磁盘到卷后,这是一个执行此操作的好时机。
$ btrfs balance start [btrfs mount point]
平衡命令可能需要很长时间。使用以下命令检查进度
$ btrfs balance status /path/to/mount更改 RAID 级别
更改 RAID 级别就像平衡文件系统。在大多数情况下,在 ext4 系统上,您需要格式化和备份文件系统才能将其设置为 RAID 功能。使用 BTRFS,您可以更轻松地设置 RAID。
* 注意:如果您不确定 RAID 是什么或者对设备存储和镜像的高级概念知之甚少,我不建议这样做。
要在多个设备上设置 RAID,您可以运行此命令
(在本例中,sda1 和 sdb1 是正在设置的两个设备。)
$ mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sdb1
目前可接受的 RAID 级别是 RAID0、RAID1 和 RAID10。Raid10 需要 4 个或更多磁盘。
RAID10在 Btrfs 中创建 RAID10 条带化镜像将如下所示。
$ mkfs.btrfs -m RAID10 -d RAID10 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1碎片整理
碎片整理文件或目录以检查其健康状况,键入此命令
$ Btrfs filesystem defragment /dev/sda1擦洗
擦洗文件系统可以帮助消除设备上的错误。要擦洗 /dev/sda1 上可能存在的错误,您可以运行此命令
$ sudo btrfs scrub start /dev/sda1
擦洗在文件系统的后台完成,因此您仍然可以在擦洗进行时使用文件系统。您可以通过运行此命令来检查擦洗状态
$ sudo btrfs scrub status /dev/sda1添加设备
您可以通过运行此命令添加设备以帮助扩展 btrfs 上的存储
$ btrfs device add -f /dev/sda1
添加设备后的经验法则是平衡文件系统。
移除设备$ btrfs device delete /dev/sda1删除丢失的设备
如果您想删除丢失的设备或可能发生故障的设备,您可以运行这些命令。第一个命令将在降级模式下挂载设备,然后再删除它。
$ sudo mount -o degraded /dev/sda1 $ btrfs device delete missing子卷和快照
子卷是 BTRFS 等效的“数据集”。它们是可以用于快照/恢复的独立卷。您可能希望为您创建的任何 KVM 虚拟机或其中包含关键数据的挂载点创建子卷。
创建子卷$ btrfs subvolume create拍摄快照
$ btrfs subvolume snapshot删除子卷
$ btrfs subvolume delete
结论
有很多文件系统可供选择来完成正确的工作,借助 Linux,您可以选择和挑选。Btrfs 自 2013 年左右以来一直是 Linux 内核的一部分,并不断增强对数据保留和保护的改进。大多数发行版仍然使用 ext4 作为其默认文件系统,但如果您正在寻找迁移到已经使用它的操作系统,您可以研究 OpenSUSE。OpenSUSE 现在使用 btrfs 作为其 /root 分区的默认文件系统,目前为 /home 分区使用 XFS 文件系统。对于大多数人来说,ext4 可能已经过时,但仍然具有弹性和可靠性。但是,有一种新的扩展添加到您的文件系统中,可以帮助在多个驱动器和分区上实现更好的弹性和可靠性。Btrfs 之于黄油,就像您的文件系统/存储之于面包。约翰·肯尼迪曾经说过:“变革是生活的规律。那些只看到过去或现在的人肯定会错过未来。” 亲自尝试 Btrfs,并告诉我您对它的看法。