Btrfs RAID1: `использование файловой системы` сообщает об использовании 900 ГБ, но `du` показывает только 37 ГБ фактичесLinux

Ответить
Anonymous
 Btrfs RAID1: `использование файловой системы` сообщает об использовании 900 ГБ, но `du` показывает только 37 ГБ фактичес

Сообщение Anonymous »

Проблема
У меня есть система NixOS с файловой системой btrfs RAID1 на двух твердотельных накопителях NVMe емкостью 1 ТБ, где существует огромное несоответствие между тем, что сообщает об использовании файловой системы btrfs, и тем, что на самом деле находит du:
  • Код: Выделить всё

    btrfs filesystem usage /
    [/b]: сообщает, что использовано 900 ГБ из 928 ГБ (заполнено на 97 %).
  • всего[/b]: всего ~37 ГБ фактических данных.
  • Отсутствует: ~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)
Что я пробовал
  • Код: Выделить всё

    btrfs balance start /
    [/b] (полный баланс): завершено примерно через 11 минут, перемещено всего 933 фрагмента, освобождено только 20 ГБ в распределении.
    • До: выделено 928 ГБ, использовано 900,39 ГБ.
    • После: выделено 912 ГБ, использовано 900,41 ГБ.
    • Результат: Нет освобождено значимое пространство
  • Код: Выделить всё

    btrfs balance start -dusage=10/30/50 /
    [/b]: каждое завершено мгновенно с перемещением минимального количества фрагментов.
    • До: устройству выделено 928 ГБ.
    • После: устройству выделено 912 ГБ.
    • Результат: незначительное улучшение.
  • Код: Выделить всё

    mount -o remount,clear_cache,space_cache=v2 /
    [/b]: В dmesg подтверждено принудительное очищение кэша диска, но без изменения места
  • Проверена целостность файловой системы:
    • Нет снимков корневой файловой системы (

      Код: Выделить всё

      /.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:

Код: Выделить всё

$ 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
Монтаж BTRFS:

Код: Выделить всё

$ 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»