我想使用文件系统在两个镜像驱动器上(RAID 1),用于在桌面系统上存档数据(媒体文件等),以实现冗余/可用性,并在驱动器发生故障时实现潜在的自我修复功能。
这意味着我不需要任何额外的(面向服务器的)功能,例如文件系统上的重复数据删除、文件压缩或 ARC,与 NAS 或服务器系统相比,这应该会减少对具有更有限的 CPU 和 RAM 空间的常规桌面系统的资源需求。
如何在最新的 Ubuntu 系统 (18.04+) 上正确设置具有核心功能的 Btrfs,而不设置这些额外的、要求更高的功能?还可以配置哪些内容来减少系统资源的消耗?
我读过各种指南,思考我知道如何安装 Btrfs,并且大多数功能默认情况下未启用,但由于正确的初始设置在这种情况下非常重要,因此我想绝对确保在 Ubuntu 特定的设置中没有误解或差异。
详细问题:
安装 btrfs-tools 来完成这个设置是否足够,或者是否还需要其他东西,也用于清理和碎片整理?
您提到磁盘可以在有或无分区的情况下使用,这两种选择的优缺点是什么?
您是否知道默认情况下是否使用任何类型的 (L2) 自适应替换缓存?(我宁愿定期进行碎片整理,而不是为其留出 RAM。)
您写道 lzo 压缩将增加(读/写?)速度,但不必过多赘述,它是如何工作的?
答案1
使用 btrfs 时,您可以选择使用分区,也可以不使用分区。
首先在分区时在两个磁盘上创建分区表和分区。假设/dev/sdb1
和/dev/sdc1
。
然后btrfs
通过运行创建文件系统
sudo mkfs.btrfs -m raid1 -d raid1 /dev/sdb1 /dev/sdc1
你已经完成了。
笔记: 上述命令btrfs
在指定分区上创建文件系统。您无需在运行此命令之前或之后对其进行“格式化”。mkfs.btrfs
足以创建文件系统。
现在,你可以将此 raid 安装到你喜欢的任何目录,方法是:
sudo mount /dev/sdb1 /mount_directory
您可以安装任一磁盘,结果相同:RAID 将被安装。
您可以将其永久挂载在 中/etc/fstab
。如果您没有在那里设置特定选项(例如压缩),它们将不会被使用。
或者,您不必创建分区,而可以通过以下方式直接在设备上创建 raid:
sudo mkfs.btrfs -m raid1 -d raid1 /dev/sdb /dev/sdc
这两种方法没有太大区别,但我更喜欢传统的分区。
我不知道有任何设置可以“减少系统资源消耗”。内核模块本身消耗的资源并不多。如果您不需要重复数据删除或压缩等功能,就不要使用它们。
但请考虑到,lzo
在大多数情况下,压缩会加快磁盘速度并增加存储空间,因为解压缩比从磁盘读取更快。
回答详细问题:
btrfs-tools
是默认安装的,不需要任何其他东西来管理btrfs
文件系统。如果您计划仅将磁盘用于 RAID,则没有太大区别。它不会以任何方式影响性能。但是,如果您在磁盘上创建分区表,您将能够缩小一个或两个磁盘上的 btrfs RAID 分区,并在部分磁盘上创建其他文件系统。这为未来增加了一点灵活性。即使磁盘正在使用中,您也可以缩小 btrfs 分区。
我不知道有任何可供用户使用的有关 L2 缓存使用的设置。您可以进行手动或自动碎片整理。有
autodefrag
可用于自动碎片整理的安装选项。我没有注意到 RAM 使用量很大autodefrag
,但如果 RAM 确实存在问题,则需要进行测试。您可以使用选项安装 RAID
compress=lzo
。如果您在空 RAID 上执行此操作,则所有文件都将被压缩。您也可以稍后启用压缩,但在这种情况下,现有数据不会自动压缩,只有新数据才会压缩。但您始终可以使用-clzo
选项对现有数据进行碎片整理。这将压缩现有数据。
我一直使用它,lzo
因为它为 HDD 增加了一些性能,为 SSD 节省了一些读/写周期,并为两者提供了额外的空间。
fstab
带有autodefrag
和 的条目示例lzo
:
UUID=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx /mount_point btrfs compress=lzo,autodefrag 0 0
sudo blkid
UUID 可以从或中获取gparted
。
您可以使用以下方式压缩文件系统lzo
:
sudo btrfs fi defrag -r -v -clzo /mount_point