BTRFS 上有一个 Postgres 数据库。我需要在数据库运行时对其进行备份。我应该btrfs filesystem sync
在快照之前做还是btrfs subvolume snapshot
自动为我做?
我在 btrfs raid1 阵列中有一对 3TB 磁盘。
其中一个磁盘开始出现故障(smartd 显示坏扇区),因此我购买了一对新的 8TB 驱动器来替换阵列中的两个磁盘。
我将两者都替换为btrfs replace
,然后运行了btrfs balance
- 失败并显示以下消息:
[ 5063.136378] BTRFS error (device sdc): parent transid verify failed on 5153170751488 wanted 1433374 found 1417912
[ 5063.140428] BTRFS error (device sdc): parent transid verify failed on 5153170751488 wanted 1433374 found 1417912
现在,我在更换磁盘之前就已经看到了这些消息,但是现在由于两个磁盘都已更换,我相信它与btrfs
.
我的数据已完全备份,文件系统在线且工作正常,但由于此错误,我无法进行平衡。运行清理会产生少量无法纠正的错误,就像我更换磁盘之前一样。
我想知道我怎么能,也许:
- 找出损坏的文件并从备份中恢复它们
- 重置文件系统上的事务以消除错误
- 平衡时忽略错误
...或任何其他合理的解决方案。
谢谢!
我正在尝试缩小 BTRFS 分区并使用该可用空间创建新的 EXT4 分区。
我做了btrfs filesystem resize -5g /
现在我有了这个(注意 Device slack 等于我缩小的):
orangepiplus2e:~:# btrfs device usage /
/dev/mmcblk2p2, ID: 1
Device size: 14.15GiB
Device slack: 5.00GiB
Data,single: 7.66GiB
Metadata,single: 768.00MiB
System,single: 32.00MiB
Unallocated: 725.00MiB
如何释放 5 GB 的 Device slack 以供使用?谷歌没有帮助我。
一位室友向我建议,我应该使用 btrfs,而不是到目前为止我一直在做的事情,即使用带有克隆驱动器的 mdadm,并在阵列中添加一个额外的驱动器来“克隆”备份。该系统具有三个驱动器,它们都是物理上不同的型号:
- /dev/sda: 东芝 HDWQ140
- /dev/sdb: HGST HUS724040AL
- /dev/sdc:WDC WDS250G2B0B
好吧,我已经安装了 btrfs,但现在它已经运行了将近一年,我发现我应该每周运行一个 cron 作业来“清理”它。我开始尝试为此设置一个脚本,尽管它看起来像是一个愚蠢的 DIY 系统,需要你在谷歌上搜索一个脚本(我发现的热门脚本来自 2014 年之类的东西)并安装它以保持你的文件系统运行。
当我在做所有这些管理工作时,我发现了一些需要移动的文件......我将跳过血淋淋的细节,但是将文件从一个 btrfs 文件系统移动到另一个文件系统并再次返回会产生各种“输入/输出”错误”(在 ext4 中从未见过),甚至这个 gem:
Jan 4 21:19:19 host kernel: [9771285.171522] attempt to access beyond end of device
Jan 4 21:19:19 host kernel: [9771285.171522] sda1: rw=1, want=70370535518208, limit=7814035087
Jan 4 21:19:19 host kernel: [9771285.171529] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 1, rd 0, flush 0, corrupt 5, gen 0
我假设这些是相关的。但这是真正愚蠢的事情。我不仅在已经存在一年的文件上遇到校验和错误,而且在我几个小时前从字面上复制到不同物理驱动器的文件上也遇到了校验和错误。此外,几乎所有这些文件都在巨大的文件中(例如 DVD iso 图像),如果这有任何迹象吗?
所以是的,我可能会同时看到三重驱动器故障,或者 btrfs 是否只是为我破坏我的文件?
此外,知识渊博的 btrfs 人员的每篇文章都包含一个可爱的小字“嗯,你应该从备份中恢复它......你确实有备份,不是吗”。所以告诉我,你们到底用什么来备份 4TB 硬盘?因为我不能确切地,你知道,把它写到 DVD 上,如果硬盘驱动器这么不可靠,那么备份到硬盘驱动器有什么好处呢?
这么严肃的问题:
- 这些校验和错误真的正常吗?
- 为什么我会在今天才复制的文件上看到它们?
- 定期磨砂足以防止这种情况发生吗?
- 我是否应该购买新的硬盘并丢弃机器中当前所有的硬盘,因为它们真的出现故障?
- 您建议如何备份多 TB 数据驱动器?
2022-01-07 更新:我smartctl
在所有驱动器上运行,并且这些驱动器都没有报告任何问题。所有驱动器的原始 UDMA_CRC_Error_Count 为 0。试图恢复损坏的文件...复制到机器的 tar 文件在几个文件出现 I/O 错误后失败。真的不知道这里发生了什么:
- 如果驱动器或电缆坏了,这会出现在 SMART 中,对吗?
- 如果CPU或内存不好,系统就不会完美运行吗?(目前 115 天没有明显问题)?
- 如果这是 btrfs 的一个全面的错误,它不会遍布整个互联网吗?
那么问题究竟出在哪里呢?
我有一台运行 6 磁盘 BTRFS RAID 配置的服务器。现在我的服务器由于(可能)PSU 问题而拒绝启动。我有一个新的 NAS 盒,我想将其用于此目的,但我想从旧设置中获取我的数据。
所以虽然我可以去买一个新的 PSU 并尝试让旧系统重新站起来,但我真的不想在上面花钱,因为无论如何我一得到它就会退役那里的数据。
所以我有一个想法,这可能是不可能的,但这就是我在这里问的原因。
您是否认为有任何方法可以获取这 6 个单独的磁盘,为所有磁盘创建映像,然后挂载映像并以这种方式重建 BTRFS 文件系统?
我有一台可以安装一个大驱动器的计算机,然后单独连接 6 个以创建 6 个 RAID 驱动器的映像,但我没有一台可以安装所有 6 个驱动器的计算机。
另一个问题是如何创建这些磁盘映像。我必须只使用 dd 还是有某种方法可以创建小于磁盘完整大小的图像文件?如果我必须有 6 个 4TB 磁盘映像文件,这可能会出现问题。
希望有人可以帮助解决这个问题......要么向我指出一些(希望是正确的)方向,要么只是说它无法完成。
我想我对当前的服务器设置有点迷失了。它是 HP Proliant dl160 gen 6,我放置了 4 个旋转磁盘,其设置具有 mdmadm + luks + lvm 和 btrfs(也许我走得太远了?),它读取的 IO 速度确实受到了影响50MB/s 和 2MB/s 左右的写入速度,我感觉我搞砸了。
我注意到的一件事是我在块设备(sbd)上而不是在分区(sdb1)上设置了 mdadm,这会影响什么吗?
在这里可以看到fio --name=randwrite --rw=randwrite --direct=1 --bs=16k --numjobs=128 --size=200M --runtime=60 --group_reporting
机器上几乎没有用的时候fio的输出。
randwrite: (groupid=0, jobs=128): err= 0: pid=54290: Tue Oct 26 16:21:50 2021
write: IOPS=137, BW=2193KiB/s (2246kB/s)(131MiB/61080msec); 0 zone resets
clat (msec): min=180, max=2784, avg=924.48, stdev=318.02
lat (msec): min=180, max=2784, avg=924.48, stdev=318.02
clat percentiles (msec):
| 1.00th=[ 405], 5.00th=[ 542], 10.00th=[ 600], 20.00th=[ 693],
| 30.00th=[ 760], 40.00th=[ 818], 50.00th=[ 860], 60.00th=[ 927],
| 70.00th=[ 1011], 80.00th=[ 1133], 90.00th=[ 1267], 95.00th=[ 1452],
| 99.00th=[ 2165], 99.50th=[ 2232], 99.90th=[ 2635], 99.95th=[ 2769],
| 99.99th=[ 2769]
bw ( KiB/s): min= 3972, max= 4735, per=100.00%, avg=4097.79, stdev= 1.58, samples=8224
iops : min= 132, max= 295, avg=248.40, stdev= 0.26, samples=8224
lat (msec) : 250=0.04%, 500=2.82%, 750=25.96%, 1000=40.58%, 2000=28.67%
lat (msec) : >=2000=1.95%
cpu : usr=0.00%, sys=0.01%, ctx=18166, majf=0, minf=1412
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,8372,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=2193KiB/s (2246kB/s), 2193KiB/s-2193KiB/s (2246kB/s-2246kB/s), io=131MiB (137MB), run=61080-61080msec
使用 dd 更新 1 次顺序写入
root@hp-proliant-dl160-g6-1:~# dd if=/dev/zero of=disk-test oflag=direct bs=512k count=100
100+0 records in 100+0 records out 52428800 bytes (52 MB, 50 MiB) copied, 5.81511 s, 9.0 MB/s
内核:5.4.0-89-generic
操作系统:Ubuntu 20.04.3
mdadm:4.1-5ubuntu1.2
lvm2:2.03.07-1ubuntu1
blkid 输出
/dev/mapper/dm_crypt-0: UUID="r7TBdk-1GZ4-zbUh-007u-BfuP-dtis-bTllYi" TYPE="LVM2_member"
/dev/sda2: UUID="64528d97-f05c-4f34-a238-f7b844b3bb58" UUID_SUB="263ae70e-d2b8-4dfe-bc6b-bbc2251a9f32" TYPE="btrfs" PARTUUID="494be592-3dad-4600-b954-e2912e410b8b"
/dev/sdb: UUID="478e8132-7783-1fb1-936a-358d06dbd871" UUID_SUB="4aeb4804-6380-5421-6aea-d090e6aea8a0" LABEL="ubuntu-server:0" TYPE="linux_raid_member"
/dev/sdc: UUID="478e8132-7783-1fb1-936a-358d06dbd871" UUID_SUB="9d5a4ddd-bb9e-bb40-9b21-90f4151a5875" LABEL="ubuntu-server:0" TYPE="linux_raid_member"
/dev/sdd: UUID="478e8132-7783-1fb1-936a-358d06dbd871" UUID_SUB="f08b5e6d-f971-c622-cd37-50af8ff4b308" LABEL="ubuntu-server:0" TYPE="linux_raid_member"
/dev/sde: UUID="478e8132-7783-1fb1-936a-358d06dbd871" UUID_SUB="362025d4-a4d2-8727-6853-e503c540c4f7" LABEL="ubuntu-server:0" TYPE="linux_raid_member"
/dev/md0: UUID="a5b5bf95-1ff1-47f9-b3f6-059356e3af41" TYPE="crypto_LUKS"
/dev/mapper/vg0-lv--0: UUID="6db4e233-5d97-46d2-ac11-1ce6c72f5352" TYPE="swap"
/dev/mapper/vg0-lv--1: UUID="4e1a5131-cb91-48c4-8266-5b165d9f5071" UUID_SUB="e5fc407e-57c2-43eb-9b66-b00207ea6d91" TYPE="btrfs"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop5: TYPE="squashfs"
/dev/loop6: TYPE="squashfs"
/dev/loop7: TYPE="squashfs"
/dev/loop8: TYPE="squashfs"
/dev/loop9: TYPE="squashfs"
/dev/loop10: TYPE="squashfs"
/dev/sda1: PARTUUID="fa30c3f5-6952-45f0-b844-9bfb46fa0224"
猫 /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid5 sdb[0] sdc[1] sdd[2] sde[4]
5860147200 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
bitmap: 2/15 pages [8KB], 65536KB chunk
unused devices: <none>
lshw -c 磁盘
*-disk
description: SCSI Disk
product: DT 101 G2
vendor: Kingston
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 1.00
serial: xxxxxxxxxxxxxxxxxxxx
size: 7643MiB (8015MB)
capabilities: removable
configuration: ansiversion=4 logicalsectorsize=512 sectorsize=512
*-medium
physical id: 0
logical name: /dev/sda
size: 7643MiB (8015MB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: guid=6c166e3e-27c9-4edf-9b0d-e21892cbce41
*-disk
description: ATA Disk
product: ST2000DM008-2FR1
physical id: 0.0.0
bus info: scsi@1:0.0.0
logical name: /dev/sdb
version: 0001
serial: xxxxxxxxxxxxxxxxxxxx
size: 1863GiB (2TB)
capabilities: removable
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096
*-medium
physical id: 0
logical name: /dev/sdb
size: 1863GiB (2TB)
*-disk
description: ATA Disk
product: ST2000DM008-2FR1
physical id: 0.0.0
bus info: scsi@2:0.0.0
logical name: /dev/sdc
version: 0001
serial: xxxxxxxxxxxxxxxxxxxx
size: 1863GiB (2TB)
capabilities: removable
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096
*-medium
physical id: 0
logical name: /dev/sdc
size: 1863GiB (2TB)
*-disk
description: ATA Disk
product: WDC WD20EZBX-00A
vendor: Western Digital
physical id: 0.0.0
bus info: scsi@3:0.0.0
logical name: /dev/sdd
version: 1A01
serial: xxxxxxxxxxxxxxxxxxxx
size: 1863GiB (2TB)
capabilities: removable
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096
*-medium
physical id: 0
logical name: /dev/sdd
size: 1863GiB (2TB)
*-disk
description: ATA Disk
product: WDC WD20EZBX-00A
vendor: Western Digital
physical id: 0.0.0
bus info: scsi@4:0.0.0
logical name: /dev/sde
version: 1A01
serial: xxxxxxxxxxxxxxxxxxxx
size: 1863GiB (2TB)
capabilities: removable
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096
*-medium
physical id: 0
logical name: /dev/sde
size: 1863GiB (2TB)
您在设置中看到任何可能有问题的地方吗?您认为添加带有 PCI 卡的 nvme 并将其用于缓存会有所帮助吗?
我有一对 RAID1 中的磁盘,格式为btrfs
.
磁盘会定期清理,我会收到结果通知。他们已经运行了大约 2-3 年,没有任何问题。
但是,我最近添加smartd
到我的安装中,它立即抱怨其中一个驱动器中有少量不可读的扇区:
Device: /dev/sdc [SAT], 4 Currently unreadable (pending) sectors
我对该驱动器进行了清理,发现并纠正了相同数量的错误,但智能错误消息并没有消失。同一磁盘上的后续清理显示没有错误。
我不确定这些工具中的哪一个最准确 -smartd
显示误报,或者btrfs
缺少坏扇区,或者我可能误解了结果?
验证磁盘运行状况的最佳方法是什么?
谢谢!
语境
我最近安装了 RHEL 8 却没有意识到它不再支持 BTRFS。
不幸的是,我在 BTRFS RAID10 中有 4 个磁盘。我的其他磁盘上没有足够的空间来保存 BTRFS 磁盘上的数据,因此在从 USB 驱动器启动时将其全部复制到其他地方是不可能的。
我有我最初的问题,然后是一些关于我采取的方法失败的后续问题。随意只关注这个问题的“如何让 BTRFS 工作”部分,尽管如果你有任何部分的答案,我很想了解其他问题。
问题 1
- 是否有一种(相对)简单的方法可以让 BTRFS 在 RHEL8 上工作?
用户空间 btrfs-progs
我的第一次尝试是btrfs-progs
使用以下内容进行编译和安装:
# Install deps
sudo dnf install libuuid-devel libblkid-devel lzo-devel zlib-devel libzstd-devel e2fsprogs-devel e2fsprogs-libs e2fsprogs libgcrypt-devel libsodium-devel libattr-devel
# Install deps for doc gen
sudo dnf install asciidoc xmlto source-highlight
# Shallow-clone latest release
git clone --depth 1 --branch v5.14.1 https://github.com/kdave/btrfs-progs.git
cd btrfs-progs
git switch -c v5.14.1
# Build
# --disable-zoned since that feature needs kernel >=5.10
export CFLAGS="-O3 -pipe -frecord-gcc-switches -mtune=native -march=native"
export CPPFLAGS=$CFLAGS
export SODIUM_CFLAGS=$CFLAGS
export ZSTD_CFLAGS=$CFLAGS
export ZLIB_CFLAGS=$CFLAGS
export UUID_CFLAGS=$CFLAGS
export PYTHON_CFLAGS=$CFLAGS
./autogen.sh
./configure --with-crypto=libsodium --disable-zoned
make -j12
sudo make install
它似乎安装正确并且我的用户可以访问:
$ which btrfs
/usr/local/bin/btrfs
$ ls -1 /usr/local/bin/ | grep btrfs
btrfs
btrfsck
btrfs-convert
btrfs-find-root
btrfs-image
btrfs-map-logical
btrfs-select-super
btrfstune
fsck.btrfs
mkfs.btrfs
$ btrfs version
btrfs-progs v5.14.1
但是,默认情况下,root 显然没有/usr/local/bin
在其路径中。我添加了export PATH+=":/usr/local/bin" to
/etc/profile and
/root/.bash_profile , but neither of them seem to get sourced automatically when using
sudo or when dropping into a root shell with
sudo su`。
当指定二进制文件的完整路径时,它会抱怨它 can't open /dev/btrfs-control
。查询我的本地搜索引擎,有人建议需要 udev,但已经安装(可能配置错误?)
$ sudo btrfs version
sudo: btrfs: command not found
$ sudo /usr/local/bin/btrfs device scan
Scanning for Btrfs filesystems
WARNING: failed to open /dev/btrfs-control, skipping device registration: No such file or directory
WARNING: failed to open /dev/btrfs-control, skipping device registration: No such file or directory
WARNING: failed to open /dev/btrfs-control, skipping device registration: No such file or directory
WARNING: failed to open /dev/btrfs-control, skipping device registration: No such file or directory
ERROR: there were 4 errors while registering devices
其他 BTRFS 命令似乎有效:
$ sudo /usr/local/bin/btrfs filesystem show /dev/sda
Label: 'wdred' uuid: aaaa-bbbb-cccc-dddd-eeee
Total devices 4 FS bytes used 2.13TiB
devid 1 size 5.46TiB used 1.07TiB path /dev/sda
devid 2 size 5.46TiB used 1.07TiB path /dev/sdc
devid 3 size 5.46TiB used 1.07TiB path /dev/sdb
devid 4 size 5.46TiB used 1.07TiB path /dev/sdd
但是,鉴于上述错误,我一直害怕挂载分区或对它们执行任何操作,因为担心它缺少的组件会导致它破坏我的数据。
问题 2、3、4
- 鉴于上述错误,尝试使用 btrfs 挂载磁盘是否安全?
- 上的
/dev/btrfs-control
错误是btrfs device scan
怎么回事? - 默认情况下,我怎样才能获得
sudo
并sudo su
拥有/usr/local/bin
它的路径?
BTRFS 内核模块
我想知道编译内核模块是否会更好,但是几乎没有内核黑客经验,结果很糟糕。
看来我需要CONFIG_BTRFS_FS=m
在我的内核配置中设置才能启动。它目前不存在,我似乎记得能够在menuconfig
.
$ grep "BTRFS" /boot/config-4.18.0-305.19.1.el8_4.x86_64
# CONFIG_BTRFS_FS is not set
RHEL 文档提到了如何加载内核模块等,但没有提到如何构建它们。我咨询了 archwiki,并尝试从 Red Hat 站点下载 RHEL8 内核。RHEL8 的下载页面有一个带有 20G .iso 文件的“Sources”选项卡。我下载了它,安装了它,发现里面塞满了 .rpm 文件,看起来一点也不像 linux 内核源代码库。我有点失落。
然后我去了/usr/src/kernels/
,初始化了一个 git repo,因为害怕我会破坏一些重要的东西,然后继续试图弄清楚如何构建内核模块或更改 menuconfig 中的内容。
$ cd /usr/src/kernels/4.18.0-305.19.1.el8_4.x86_64
$ sudo su
# git init
# git add -A
# git commit -m "Unmodified kernel"
# make mrproper
HOSTCC scripts/basic/bin2c
scripts/kconfig/conf --syncconfig Kconfig
arch/x86/Makefile:184: *** Compiler lacks asm-goto support.. Stop.
make: *** [Makefile:1361: _clean_arch/x86] Error 2
由于缺乏 asm-goto 支持,互联网建议我可能需要elfutils-libelf-devel
,但我似乎已经有了。
对于 funzies,我尝试使用clang
和 with构建它gcc-toolset-10
,但两者都有相同的错误。
问题 5
- 任何想法为什么
Compiler lacks asm-goto support
? - 关于如何构建内核模块/修补内核/修改系统内核的好资源是什么?
系统信息
$ uname -a
Linux rhel 4.18.0-305.19.1.el8_4.x86_64 #1 SMP Tue Sep 7 07:07:31 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
$ gcc --version
gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1)
$ scl run gcc-toolset-10 'gcc --version'
gcc (GCC) 10.2.1 20201112 (Red Hat 10.2.1-8)
$ clang --version
clang version 11.0.0 (Red Hat 11.0.0-1.module+el8.4.0+8598+a071fcd5)
感谢您阅读到这里!任何帮助表示赞赏。
我有一个远程 linux 系统,昨天变得超级慢。由于我设置的远程 luks 解锁似乎工作不可靠,并且在接下来的 10 天内我将无法物理访问机器,我正在尝试调试它而不是重新启动。
我习惯使用的系统状态工具是htop
,dstat
并且由于我dstat
在 ssh 会话中运行,我可以看到从昨天 2021-09-09 08:51:42 开始,“sys”始终完全使用一个 cpu 核心 - 我猜测意味着内核?
我看不到任何罪魁祸首进程或线程htop
。
我已经停止了所有用户服务并卸载了所有非必要的东西,这使系统再次响应更好,但仍然没有达到应有的速度(使用带有 SSD 的 Intel i7 CPU)。
我找到了https://tanelpoder.com/posts/high-system-load-low-cpu-utilization-on-linux/并安装了引用的https://0x.tools/以获得以下结果psn -G syscall,wchan
:
=== Active Threads ========================================================================================
samples | avg_threads | comm | state | syscall | wchan
-----------------------------------------------------------------------------------------------------------
100 | 1.00 | (btrfs-cleaner) | Running (ON CPU) | [running] | 0
100 | 1.00 | (dpkg) | Disk (Uninterruptible) | fsync | btrfs_commit_transaction
100 | 1.00 | (systemd-journal) | Disk (Uninterruptible) | ftruncate | wait_current_trans
1 | 0.01 | (sshd) | Running (ON CPU) | [running] | 0
1 | 0.01 | (thermald) | Disk (Uninterruptible) | [running] | ec_guard
1 | 0.01 | (thermald) | Running (ON CPU) | [running] | 0
这个dpkg
过程可以解释为我试图以apt upgrade
你通常期望的速度的 1/1000 运行哪个运行(只是一种感觉,没有测量它)。
也许我的 btrfs 根文件系统有问题...?我找不到btrfs-cleaner
in htop
,我想我会研究更多关于那是什么..
我昨晚确实跑了btrfs scrub
一个,它完成得非常快,没有发现任何问题:
# btrfs scrub status /
UUID: 2f38e0ad-7f16-4a36-8096-b7981d47b4ff
Scrub started: Thu Sep 9 23:59:00 2021
Status: finished
Duration: 0:00:24
Total to scrub: 53.09GiB
Rate: 1.78GiB/s
Error summary: no errors found
但是当我使用 nano 修改根分区上的配置文件时,加载和保存它现在超级慢。
我只是偶然发现了这一点:https ://www.reddit.com/r/btrfs/comments/fmucrq/btrfs_snapshots_make_entire_system_lag_cpu_usage/其中有一条听起来与我的问题相似的评论:
每次启动时和快照后 btrfs-transacti 和 btrfs-cleaner 都会完全用完一个核心,从而导致巨大的延迟
只是这表示它在启动和创建快照时只持续了几分钟,但是btrbk
几天前我在这个系统上禁用了我的备份设置,当时其中一个连接的磁盘开始出现问题。
我不确定我的 btrfs 根文件系统是否正在使用qgroups
,但我只是运行btrfs quota disable /
了大约 10 秒并且没有给出任何反馈。
有人对我有任何其他提示如何调试/解决这个问题吗?
我正在尝试追踪我的 btrfs 文件系统上的一些空间正在使用什么。和之间有很大的区别,btrfs fi du -s /
而且btrfs fi usage /
区别似乎<ERROR>
在运行时的部分btdu
。
我如何追查导致这种<ERROR>
用法的原因?
# btrfs fi du -s /
Total Exclusive Set shared Filename
5.50GiB 5.50GiB 0.00B /
# btrfs fi usage /
Overall:
Device size: 20.00GiB
Device allocated: 12.28GiB
Device unallocated: 7.72GiB
Device missing: 0.00B
Used: 11.59GiB
Free (estimated): 8.22GiB (min: 8.22GiB)
Data ratio: 1.00
Metadata ratio: 1.00
Global reserve: 16.00MiB (used: 0.00B)
Data,single: Size:12.00GiB, Used:11.50GiB
/dev/sda2 12.00GiB
Metadata,single: Size:256.00MiB, Used:89.03MiB
/dev/sda2 256.00MiB
System,single: Size:32.00MiB, Used:16.00KiB
/dev/sda2 32.00MiB
Unallocated:
/dev/sda2 7.72GiB
相关btdu输出:
--- / --------------------------------------------------------------------------------
~12.0 GiB [##########] /<DATA>
~253.1 MiB [ ] <METADATA>
~32.0 MiB [ ] <SYSTEM>
--- /DATA ----------------------------------------------------------------------------
~6.5 GiB [##########] /<ERROR>
~2.1 MiB [ ] /<ROOT_TREE>
~5.5 GiB [######## ] /@
--- /DATA/ERROR ----------------------------------------------------------------------
~6.0 GiB [##########] logical ino (Inappropriate ioctl for device)
~509.9 MiB [ ] logical ino (No such file or directory)
所以我的结论是我系统上的实际文件占用了大约 5.5GB,其余的使用来自 btdu 报告为错误的东西。
笔记/我尝试过的事情:
- 我已经运行了 在任何网站上都能找到的各种口味的
balance
,rescue
, 。没运气。check --repair
scrub
- 我已卸载所有其他磁盘 / nfs 驱动器 / 等。(安装下没有隐藏文件。)