如何在外部 USB 硬盘上使用带压缩的 Btrfs?

如何在外部 USB 硬盘上使用带压缩的 Btrfs?

我想利用 Btrfs 的透明压缩在外部驱动器上。

  1. 哪种工具最适合格式化驱动器?磁盘工具或者分区
  2. 如何激活压缩?在格式化期间或安装驱动器时?我猜是在安装时。我正在使用usb安装自动挂载新连接的设备,因为桌面上没有人登录。我是否必须在系统配置文件中的某个位置设置常规默认选项才能使用压缩挂载 Btrfs,或者我是否应该通过 /etc/usbmount/usbmount.conf 中的 FS_MOUNTOPTIONS 指定这一点,以及如何指定?

谢谢!

答案1

格式化并启用 LZO

我会避免使用任何 GUI 来格式化;-)

mkfs.btrfs device就足够了,这取决于你想如何使用 Btrfs 功能:

  1. 将外部 USB HDD 用作 1 个分区/块设备
  2. 创建 2 个分区(2 个块设备)并组成 raid1 或 raid0 用于数据(-d),默认情况下元数据在所有设备上复制,除非您手动指定更改

您可以在挂载时添加选项来使用压缩,例如:

sudo mount -o compress=lzo /dev/sdd /mnt/btrfs

Btrfs 的好处是,还可以根据需要启用 LZO 压缩subvol,非常灵活;-) 例如

/* Create a subvolume named subvol1 */

# btrfs subvolume create /mnt/btrfs/subvol1

/* Mount the subvolume and enable compression */

# mount -o compress=lzo,subvol=subvol1 /dev/sdd /mnt/subvol1

注意:您可以随时向现有的 Btrfs 文件系统添加压缩,只需在挂载时添加选项并执行将defragment压缩应用于现有数据即可。

顺便说一句:有 2 个最好的 Btrfs 文档:

http://www.funtoo.org/wiki/BTRFS_Fun

http://docs.oracle.com/cd/E37670_01/E37355/html/ol_btrfs.html

使用 LZO 压缩:

http://www.oracle.com/technetwork/articles/servers-storage-admin/advanced-btrfs-1734952.html

USB 自动安装

我不太确定这一点,会让其他人来回答;-)

我更愿意编写一个简单的 shell 脚本来进行挂载,因为我不会一直将 USB HDD 连接到计算机上。

答案2

由于格式化和启用 LZO 压缩问题已经得到解答,这里是如何在自动挂载上自动设置压缩挂载选项的问题的答案。

如果您在 LUKS 加密磁盘上有 btrfs,此解决方案也有效。

USB 自动挂载

  1. 连接磁盘并让自动挂载程序挂载文件系统
  2. 用于lsblk -o UUID,MOUNTPOINT查找文件系统所在块设备的 UUID,例如6e642696-3cb4-4d4e-86a6-2fae2b9295cc
  3. 在 /etc/fstab 中添加一行引用 UUID 并指定附加挂载选项:

    UUID=6e642696-3cb4-4d4e-86a6-2fae2b9295cc /media/user/backupdrive btrfs noauto,subvol=/,compress=zstd
    
  4. 卸载并重新安装驱动器,并检查选项是否已使用mount

相关内容