标签: btrfs

同时挂载两个 btrfs 子卷

这是最近的 linux 内核的假设设置:

/dev/sda1 is formatted as btrfs
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令在 /dev/sda1 的根目录上创建两个子卷:

$ mount /dev/sda1 /mnt
$ btrfs subvolume create /mnt/a
$ btrfs subvolume create /mnt/b
$ umount /mnt
Run Code Online (Sandbox Code Playgroud)

现在我希望在两个不同的挂载点上同时挂载这两个子卷:

$ mount -o subvol=a /dev/sda1 /a
$ mount -o subvol=b /dev/sda1 /b
Run Code Online (Sandbox Code Playgroud)

这就是问题所在。我用一个文件作为块设备(使用循环)尝试了这个,它工作正常(至少对于每个文件中的两个文件)。但是,在安装了一个完整的系统后,将根目录放在一个子卷中,将主目录放在另一个子卷中,在启动时都挂载,我收到一个错误,告诉我底层设备是“写保护的”,并且第一次尝试读取主目录目录内容导致内核崩溃。

我想知道我想要做什么(使用不同的挂载选项多次挂载一个块设备)实际上是否被 btrfs 或 os.

linux btrfs

4
推荐指数
1
解决办法
3927
查看次数

在 btrfs 文件系统上删除数千个文件的最快方法是什么?

目前我有一个 btrfs 挂载点,其结构如下:#

/mountpoint/month/day/hourAs24/

每个叶目录包含 5,000 到 20,000 个小文件。我在那里保存了两个月的文件。每天我都会使用命令删除超过 60 天的目录

rm -R /mountpoint/month/day/

此命令需要很长时间才能运行,并且该命令运行时服务器上的负载非常高。

/mountpoint/month/每天在下面创建 btrfs 子卷,然后在一个命令中清除子卷会更好吗?

有没有其他快速和轻量级的解决方案可以在单个命令中删除一个 btrfs 目录下的文件?

编辑: 澄清情况。在结构中,文件夹month,dayhourAs24是由当前日期时间的相应值替换的变量。

解决后编辑: 它在我的测试机器上运行顺利。并且以下所有作品都在安装了挂载点的情况下生效!首先,我为每个月创建普通目录

mkdir /mountpoint/month

然后我为每月的每一天创建 btrfs 子卷

btrfs subvolume create /mountpoint/month/day

然后我为一天中的每个小时创建普通目录

mkdir /mountpoint/month/day/hourAs24

60 天后,我可以轻松清除当天的目录

btrfs subvolume delete /mountpoint/month/day

(现在我必须等待 60 天才能看到生产服务器上的性能)

filesystems remove btrfs

4
推荐指数
1
解决办法
3530
查看次数

使用 LZO 压缩在 BTRFS 下寻求内部文件性能

我计划在 50 TB RAID6 阵列上使用 btrfs,并且我想启用 lzo 压缩。

这适用于生物信息学设置,其中会在大型 (1 TB - 20 TB) 文件中进行大量搜索。(该软件仅获取分散在文件中的小块数据)。

让我担心的是,我不明白如何在像 btrfs 这样的压缩文件系统上执行搜索。文件需要从头解压到抢手的位置吗?这将对我的设置产生巨大的负面影响。

或者一个更普遍的问题:文件大小的搜索时间比例是否与非压缩文件系统相同,还是变得更糟,例如 O(file_length)

performance compression btrfs

4
推荐指数
1
解决办法
1266
查看次数

BTRFS:“设备上没有剩余空间”,但 btrfs 命令另有说明

我正在使用 BTRFS 从 2 个磁盘创建 RAID0 卷。两者都在一个 AWS EC2 实例上,每个实例都有 30 GB 的可用空间。我用来创建文件系统的命令是:btrfs -d raid0 -L MYLABEL /dev/xvdf /dev/xvdg.

现在Ubuntu告诉我磁盘空间已满,就像BTRFS一样:

root@host:/var/docker-apps/prometheus# btrfs balance start -dconvert=raid0 .
ERROR: error during balancing '.': No space left on device
There may be more info in syslog - try dmesg | tail
root@host:/var/docker-apps/prometheus#
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我看到btrfs filesystem usage我得到这个:

root@host:/var/docker-apps/prometheus# btrfs filesystem usage .
Overall:
    Device size:          60.00GiB
    Device allocated:     60.00GiB
    Device unallocated:   2.00MiB
    Device missing:       0.00B
    Used:                 25.26GiB
    Free (estimated):     34.22GiB    (min: …
Run Code Online (Sandbox Code Playgroud)

ubuntu filesystems btrfs

4
推荐指数
1
解决办法
7865
查看次数

Postgresql 9.6 通过 BTRFS。好主意还是坏主意?

我正在准备一台 VM 机器(在 Proxmox 上运行)来在 Ubuntu 16.04 LTS 上运行 postgresql 9.6。这个 postgres 将用于处理一家小公司的 Jira/FisheEye/Confluence 数据库。通常我们同时有几个用户,所以我们不需要调整它以获得极端的性能/可扩展性。

嗯,情况是,我们在服务器上使用 BTRFS 来帮助我们处理在必要时向虚拟机添加额外空间的问题,此外我们还启用了 lzo 压缩。此外,我们使用 btrok 来处理 BTRFS 子卷到另一台机器的备份。

我怀疑使用 BTRFS 处理 postgresql 数据库文件是否是一个好主意,因为我们在需要扩展虚拟硬盘空间的情况下会非常有帮助,但我读到了有关 postgresql 性能比 BTRFS 差的信息(在特殊情况下) datacow 未被禁用。

有人有这种情况的经验吗?

postgresql ubuntu btrfs ubuntu-16.04

3
推荐指数
1
解决办法
5100
查看次数

btrfs 余额操作期间继续工作安全吗?

我有一个 Rocks 集群系统,带有 NAS,在 RAID 10 配置中使用 btrfs 文件系统。最近,我们一直面临“设备上没有剩余空间”错误,我最终发现元数据几乎完全用完。所以我希望执行平衡操作来解决这个问题。

我不清楚的是,在进行平衡操作时,我们的用户是否可以继续工作并访问他们在 nas 上的目录?平衡手册指出:

“文件系统的磁盘状态始终保持一致,因此意外中断(例如系统崩溃、重新启动)不会损坏文件系统。平衡操作的进度会暂时存储,并将在挂载时恢复,除非挂载选项指定了skip_balance。”

这让我认为数据块只有在该块的平衡完成后才会被重新分配,但我在任何地方都没有找到我的问题的明确答案:用户继续工作、在 nas 上读取/写入数据是否安全在平衡操作期间,或者是否有必要在此过程中使系统离线,这对于我们的 TB 数据可能需要数小时或数天的时间?

network-attached-storage outofmemoryerror memory-usage btrfs

3
推荐指数
1
解决办法
1125
查看次数

将 btrfs 设备添加到 raid1 阵列,增加总大小

我有一个 btrfs 阵列,它由 raid 1 中的两个 2TB 磁盘组成。我的空间不足,我想添加两个闲置的 3TB 磁盘。最终设置将是 2x2TB+2x3TB 驱动器。一个驱动器故障冗余对我来说就足够了(数据也备份到了其他地方)。

我不确定如何继续:btrfs wiki清楚地说明了如何添加新设备,但我不确定这最终会如何看待可用磁盘空间。我会得到:

  1. 2TB 空间,4 倍冗余或
  2. 4TB 空间,2x 冗余或
  3. 还有什么?

根据一些研究(例如这个答案),我认为结果应该是 2,这就是我想要的。这样对吗?

另一种可能性是我切换到 raid 10 设置,如果这对不同大小的磁盘是可能的。如果这是可取的,我应该如何在不临时将数据托管在外部存储上的情况下这样做?

raid1 raid10 btrfs

3
推荐指数
1
解决办法
1160
查看次数

btrfs 检查显示即使在清理后校验和验证也失败

运行btrfs check显示几个类似这样的错误(总共 13 个):

checksum verify failed on 369098752 wanted 0x0000000000000000000000000000000000000000000000000000000000000000 found 0x6290e6592047ec80140a1252d31a8ba8a33a34cf578b5c8c4a081706b9416fa6
Run Code Online (Sandbox Code Playgroud)

所有想要的校验和都是零,这显然很可疑。

运行后,btrfs scrub我在元数据中纠正了 13 个错误,在数据块中纠正了多个不可纠正的错误(通过从备份恢复受影响的文件来修复)。

但是,btrfs check再次运行会显示相同的 13 个校验和错误。

我有两个问题:错误中的数字指的是什么?所有提及此问题的搜索结果都没有答案。我的猜测是它是一个逻辑地址,但是btrfs inspect-internal logical-resolve number /path给出了ERROR: logical ino ioctl: No such file or directory,而且它显然也不是一个索引节点(dmesg 实际上明确地将这些数字称为逻辑地址,指向元数据叶子,但它没有指定哪种类型)。

第二个问题,我可以对这些校验和做什么?所有 btrfs 问题都可以通过运行立即得到解答,btrfs check --init-csum-tree但我的理解是这将完全重置 csum 树,我想首先了解问题到底出在哪里。

文件系统信息:

[root@ls-fedora ArchiMedia]# btrfs filesystem usage .
Overall:
    Device size:          27.28TiB
    Device allocated:         12.02TiB
    Device unallocated:       15.27TiB
    Device missing:          0.00B
    Used:             11.84TiB
    Free (estimated):         15.44TiB …
Run Code Online (Sandbox Code Playgroud)

btrfs

3
推荐指数
1
解决办法
2798
查看次数

Linux-on-Linux KVM:我应该为来宾和主机使用哪个文件系统?

我正在尝试使用 KVM 并在 linux 服务器上设置 linux,所以我可以

  • 重新启动(来宾)服务器
  • 加密来宾的 rootFS,而无需执行 initramfs-tricks 即可使远程重启工作。

我正在考虑btrfs用作文件系统,因为它是单个 ssd 磁盘且没有 RAID。

以下想法:

  • 如果我在主机上使用 btrfs,我将拥有出色的数据完整性、所有校验和等。
  • 所以我可以使用一些快速而简单的东西,甚至可以在来宾上使用 ext2?

还是我应该反过来做?

raid filesystems btrfs kvm-virtualization

2
推荐指数
2
解决办法
8294
查看次数

NFS 导出 ext4 和 btrfs 的叠加

我有 2 个数据源。一种是 btrfs(raid),一种是简单的 ext4 分区。那些应该透明地显示为一个。这是一个简单的只读示例,但是lower/upper/workdir 版本产生了同样的问题,btrfs 为upper,ext4 为lower。

手动安装:

mount -t overlay overlay -o lowerdir=/mnt/raid/folder1/:/mnt/ext4/folder1 -o comment=merge  -o nfs_export=on /data/merged
Run Code Online (Sandbox Code Playgroud)

fstab 挂载:

overlay /data/merged overlay defaults,lowerdir=/mnt/raid/folder1/:/mnt/ext4/folder1,comment=merge,nfs_export=on 0 0
Run Code Online (Sandbox Code Playgroud)

这是我的 nfs 导出:

/data/merged 192.168.0.0/255.255.255.0(ro,fsid=1,async,insecure,crossmnt)
Run Code Online (Sandbox Code Playgroud)

exportfs -ra 产生: exportfs: /data/merged does not support NFS export

我的配置:Ubuntu 18.04 LTS with HWE kernel 4.18.0-13-generic 这是我的主要配置来源:https ://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt

也许我错过了一些 NFSv4 的东西(这是 nfs 导出overlayfs 所需要的)?

编辑:根据要求,我为 sourcecs 安装:

UUID=d138b8fa-83e1-4df7-80dc-c1ed7d866f77       /mnt/raid       btrfs   defaults        0       2
UUID=6bb8f391-0872-40cf-8aff-8bdb32632098       /mnt/ext4        ext4    errors=remount-ro 0 2
Run Code Online (Sandbox Code Playgroud)

编辑2:

grep -H . /sys/module/overlay/parameters/* …
Run Code Online (Sandbox Code Playgroud)

nfs btrfs overlayfs

2
推荐指数
1
解决办法
2858
查看次数

没有 RAID 的 ZFS 有意义吗?

是否可以在没有 RAID 的情况下使用 ZFS?与使用 BTRFS 相比,这样做有什么优势吗?

zfs btrfs

1
推荐指数
1
解决办法
2492
查看次数

Ubuntu 文件服务器上的 btrfs 与 ZFS

我有一台运行 Ubuntu(服务器版)的服务器,它的主要工作是通过 FTP(vsftpd)和 AFP(netatalk)提供文件。我的 /srv 目录开始填满,我需要添加更多硬盘驱动器。因为它的技术对于我的需要来说已经过时了,所以不考虑 RAID。

对于它的价值,现在,我应该选择更成熟的 ZFS,使用内核模块或 FUSE 扩展,还是尝试使用更新但更像 Linux 的 btrfs?在这种情况下,每种方法的优缺点是什么?

TIA。

raid zfs storage file-server btrfs

0
推荐指数
1
解决办法
4950
查看次数