LINUX.ORG.RU

На файле в XFS на /home в 2 раза больше данных, чем туда пишет dd, AlmaLinux 8

 , , ,


0

1

Сильно прошу простить за то, что скриншотом, но это изолированная виртуалка, и иначе никак не скопировать:

https://wampi.ru/image/RjVnpDt

Вопрос простой: почему и что это такое? При этом на CentOS 7 и AlmaLinux 9 тоже на XFS в /home поведение совершенно обычное, если dd пишет в файл столько-то гигабайт, то файл потом столько-то и весит.

★★★★★

Последнее исправление: Vsevolod-linuxoid (всего исправлений: 4)

Ответ на: комментарий от greenman

Сработало, теперь файл занимает сколько должен. А что это было и почему не проявляется на CentOS 7 и AlmaLinux 9?

https://wampi.ru/image/RjVsbTY

Vsevolod-linuxoid ★★★★★
() автор топика
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)

Это особенность XFS, при записи в файл для него автоматически выделяется место наперед для избежания фрагментации. При окончании записи лишнее выделенное место автоматически отбрасывается, однако не всегда это происходит сразу.

Глянь /proc/sys/fs/xfs/speculative_prealloc_lifetime. Через промежутки времени, указанные в этом параметре, размеры файлов автоматически возвращаются к нормальному значению.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от Kron4ek

Да мне не нужно, просто я был удивлен неожиданным поведением ОС.

К слову, speculative_prealloc_lifetime имеет значение 300 и на CentOS 7, и на AlmaLinux 9, но там я такого эффекта не наблюдал.

Vsevolod-linuxoid ★★★★★
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Может в ядрах что-то отличается касательно XFS, может опции монтирования отличаются. Я у себя на XFS сейчас проверил, у меня для файла выделятся 4.7 GB (вместо 8 как у тебя), видимо еще и от скорости записи зависит.

Kron4ek ★★★★★
()
Ответ на: комментарий от Kron4ek

при записи в файл для него автоматически выделяется место наперед для избежания фрагментации

А на ssd это не создаёт дополнительной нагрузки, типа сокращает срок жизни?

В торрентах я всегда отключаю всякую преаллокацию.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

А на ssd это не создаёт дополнительной нагрузки, типа сокращает срок жизни?

Нет, оно просто помечает это место как занятое файлом, но данные туда заранее не пишет, так что никакой дополнительной нагрузки нет.

Kron4ek ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Это, скорее, некорректная работа statvfs() после перехода xfs на iomap. В el7 xfs еще не использовала iomap, в el8 внедрили, но криво интегрировали с VFS, в el9 поправили.

Это вангование, в редхатовские сорцы не полезу. Попробуйте повторить тот же тест с dd на el8, посмотрев изменение количества свободных блоков так (в обход VFS):

xfs_spaceman -c "freesp -s" /home

Если покажет правильное изменение, то, скорее всего, я наванговал правильно.

i586 ★★★★★
()
Последнее исправление: i586 (всего исправлений: 1)
Ответ на: комментарий от i586

Хм, та же AlmaLinux 8.6, но теперь поставленная в minimal с дефолтной разметкой и обновленная по максимуму:

[user@localhost ~]$ cat /etc/almalinux-release
AlmaLinux release 8.6 (Sky Tiger)
[user@localhost ~]$ pwd
/home/user
[user@localhost ~]$ df -hT .
Filesystem                 Type  Size  Used Avail Use% Mounted on
/dev/mapper/almalinux-home xfs    50G  383M   49G   1% /home
[user@localhost ~]$ xfs_spaceman -c "freesp -s" /home
   from      to extents  blocks    pct
      2       3       1       2   0.00
2097152 3217920       4 12865341 100.00
total free extents 5
total free blocks 12865343
average free extent size 2.57307e+06
[user@localhost ~]$ dd if=/dev/urandom of=test0 bs=4M count=256
256+0 records in
256+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 22.3072 s, 48.1 MB/s
[user@localhost ~]$ du -sh test0 
1.0G    test0
[user@localhost ~]$ df -hT .
Filesystem                 Type  Size  Used Avail Use% Mounted on
/dev/mapper/almalinux-home xfs    50G  1.4G   48G   3% /home
[user@localhost ~]$ xfs_spaceman -c "freesp -s" /home
   from      to extents  blocks    pct
      2       3       1       2   0.00
2097152 3217920       4 12603213 100.00
total free extents 5
total free blocks 12603215
average free extent size 2.52064e+06
[user@localhost ~]$ 

Нет такого эффекта… может дело в том, что прошлая виртуалка была изолирована от сети, и поставлена с полного .iso, то есть без обновлений? Там был Server with GUI, но разметка тоже по умолчанию.

Vsevolod-linuxoid ★★★★★
() автор топика