У меня есть система NixOS с файловой системой btrfs RAID1 на двух твердотельных накопителях NVMe емкостью 1 ТБ, где существует огромное несоответствие между тем, что сообщает об использовании файловой системы btrfs, и тем, что на самом деле находит du:
- [/b]: сообщает, что использовано 900 ГБ из 928 ГБ (заполнено на 97 %).
Код: Выделить всё
btrfs filesystem usage / - всего[/b]: всего ~37 ГБ фактических данных.
Код: Выделить всё
du - Отсутствует: ~860 ГБ «фантомного» пространства.
- Влияние: Kubernetes отмечает загрузку диска на уровне 98 % и отказывается планировать модули.
- ОС: NixOS 25.05
- Ядро: 6.12.41 (из dmesg)
- Хранилище: 2 NVMe по 1 ТБ в RAID1 btrfs
- Конфигурации файловой системы: space_cache=v2, ssd, ignore=async
- Параметры монтирования: стандартные настройки NixOS по умолчанию (без явного space_cache в fstab)
- [/b] (полный баланс): завершено примерно через 11 минут, перемещено всего 933 фрагмента, освобождено только 20 ГБ в распределении.
Код: Выделить всё
btrfs balance start /- До: выделено 928 ГБ, использовано 900,39 ГБ.
- После: выделено 912 ГБ, использовано 900,41 ГБ.
- Результат: Нет освобождено значимое пространство
- [/b]: каждое завершено мгновенно с перемещением минимального количества фрагментов.
Код: Выделить всё
btrfs balance start -dusage=10/30/50 /- До: устройству выделено 928 ГБ.
- После: устройству выделено 912 ГБ.
- Результат: незначительное улучшение.
- [/b]: В dmesg подтверждено принудительное очищение кэша диска, но без изменения места
Код: Выделить всё
mount -o remount,clear_cache,space_cache=v2 / - Проверена целостность файловой системы:
- Нет снимков корневой файловой системы (пуст)
Код: Выделить всё
/.snapshots - Snapper управляет только подтомами /cold-data (92 снимка, но du показывает 0 байт из-за COW)
- Жестких ссылок не найдено
- Проверены открытые файлы и процессы
- Нет снимков корневой файловой системы (
Код: Выделить всё
$ sudo btrfs filesystem usage /
Overall:
Device size: 1.82TiB
Device allocated: 1.77TiB
Device unallocated: 53.96GiB
Device missing: 0.00B
Device slack: 0.00B
Used: 1.76TiB
Free (estimated): 28.56GiB (min: 28.56GiB)
Free (statfs, df): 28.56GiB
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Multiple profiles: no
Data,RAID1: Size:902.00GiB, Used:900.42GiB (99.82%)
/dev/nvme0n1p2 902.00GiB
/dev/nvme1n1p2 902.00GiB
Metadata,RAID1: Size:2.00GiB, Used:1.86GiB (92.85%)
/dev/nvme0n1p2 2.00GiB
/dev/nvme1n1p2 2.00GiB
System,RAID1: Size:32.00MiB, Used:160.00KiB (0.49%)
/dev/nvme0n1p2 32.00MiB
/dev/nvme1n1p2 32.00MiB
Unallocated:
/dev/nvme0n1p2 26.98GiB
/dev/nvme1n1p2 26.98GiB
Код: Выделить всё
$ sudo du -sh / --exclude=/cold-data --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run
43G /
$ sudo du -sh /data /nix /var /home /boot /etc
27G /data
14G /nix
2.3G /var
61M /home
228M /boot
628K /etc
# Total: ~44GB
Код: Выделить всё
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 931.5G 0 disk
├─nvme0n1p1 259:3 0 512M 0 part /boot
└─nvme0n1p2 259:4 0 931G 0 part /var/lib/kubelet/pods/(omited)
/home
/nix/store
/
nvme1n1 259:1 0 931.5G 0 disk
├─nvme1n1p1 259:2 0 512M 0 part
└─nvme1n1p2 259:5 0 931G 0 part
Код: Выделить всё
$ mount | grep btrfs
/dev/nvme0n1p2 on / type btrfs (rw,relatime,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@)
/dev/nvme0n1p2 on /nix/store type btrfs (ro,nosuid,nodev,relatime,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@)
/dev/nvme0n1p2 on /home type btrfs (rw,relatime,ssd,discard=async,space_cache=v2,subvolid=257,subvol=/@home)
/dev/sda on /cold-data/gitea type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=2168,subvol=/@gitea)
/dev/sda on /cold-data/booklore type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=6019,subvol=/@booklore)
/dev/sda on /cold-data/immich type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=256,subvol=/@immich)
/dev/sda on /cold-data/sftpgo type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=257,subvol=/@sftpgo)
/dev/nvme0n1p2 on /var/lib/kubelet/pods/31de2085-4ef8-4da3-9572-bc4d988b268b/volumes/kubernetes.io~local-volume/pvc-3f20f84a-de1f-4232-85be-98df32fdec82 type btrfs (rw,relatime,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@)
Я также нашел ссылки на известные проблемы и ошибки, связанные с space_cache=v2, особенно связанные с неправильным учетом свободного пространства и поведением распределителя, но я не нашел четкого объяснения того, является ли эта конкретная ситуация с «фантомным пространством» RAID1 известным ограничением, ошибкой или чем-то, что можно исправить без воссоздания файловой системы.
На этом этапе Честно говоря, я совершенно растерян и все больше в отчаянии, поскольку это фактически блокирует планирование Kubernetes на этом узле, несмотря на то, что на этом узле достаточно свободного места.
Любая помощь, объяснения или указатели будут очень признательны.
Большое спасибо.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -37gb-actu
Мобильная версия