LINUX.ORG.RU

Линукс съел место на SSD

 , , ,


0

4

Привет, ЛОР. Я новичок, сильно не пинайте.

Я сейчас переношу файло с одного SSD на другой, и у меня 26 гигов магически превращаются в 35, если смотреть df. Если смотреть du, то объем данных идентичен.

И источник, и приемник под XFS. Источник - не живая система, а смонтированный с ro раздел.

Дело не в sparse-файлах. Пробовал cp --sparse=auto, rsync -S, xfsdump/xfsrestore, один хрен 26 -> 35. Продолжаю с любопытством тратить TBW.

0       /mnt/new/bin
0       /mnt/new/boot
4.0K    /mnt/new/dev
7.7M    /mnt/new/etc
8.5G    /mnt/new/home
0       /mnt/new/lib
0       /mnt/new/lib64
0       /mnt/new/mnt
996M    /mnt/new/opt
0       /mnt/new/proc
4.5M    /mnt/new/root
0       /mnt/new/run
0       /mnt/new/sbin
0       /mnt/new/srv
0       /mnt/new/sys
0       /mnt/new/tmp
13G     /mnt/new/usr
3.8G    /mnt/new/var

Не выходит 35 гигов же. Что, куда, почему? Это df кривой? Это SSD как-то по-богатому хранит данные? Какую кнопку мне нажать, чтобы стало хорошо?

P.S. Если раздел-приемник перемонтировать в ro, то du показывает те же 26 гигов. При этом раздел-источник показывает 26 гигов занятого места вне зависимости от ro|rw. Как же утомил люлепс этими сраными приколами над живыми людьми.

P.P.S.

xfs_db -c 'agresv' /dev/nvme0n1p2
AG 0: length: 10397034 free: 9044941 reserved: 199083 used: 228
AG 1: length: 10397034 free: 9906135 reserved: 199083 used: 315
AG 2: length: 10397034 free: 9822489 reserved: 199083 used: 333
AG 3: length: 10397034 free: 10171823 reserved: 199083 used: 312
AG 4: length: 10397034 free: 10029453 reserved: 199083 used: 299
AG 5: length: 10397034 free: 9970124 reserved: 199083 used: 292
AG 6: length: 10397034 free: 10018607 reserved: 197916 used: 217
AG 7: length: 10397034 free: 10103035 reserved: 199083 used: 237
AG 8: length: 10397034 free: 10083369 reserved: 199083 used: 355
AG 9: length: 10397034 free: 8954469 reserved: 199083 used: 267
AG 10: length: 10397034 free: 9917121 reserved: 199083 used: 240
AG 11: length: 10397034 free: 9905376 reserved: 199083 used: 239

Это оно, что ли? Откуда это, почему столько, это динамическое или насовсем? Какой мудак это выдумал? Почему этого нет в mkfs.xfs?

★★★★★

Последнее исправление: thesis (всего исправлений: 2)

Йопт, а ведь похоже, что df врет.

Размер приемника 124764416 сектора, xfs_spaceman говорит, что свободных осталось 117927013 блока, блок и сектор равны 4096, т.е. занято 6837403 блока по 4096 байт, что дает нам примерно то, что нужно, а никаких не 35.

Черт знает что.

thesis ★★★★★
() автор топика

Симлинки, точки монтирования, дедупликация, sparse файлы

Лучше не делать себе мозг, а переносить через dd

Ещё лучше, если у тебя lvm и понимание, как он работает. Перенос через pvmove идеален. Еще можно создать зеркало и разорвать его на 2 части через lvcovert

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

Имеется в виду, копировать по одной директории, или что? Я копировал все полностью и сравнивал занятый объем, отображаемый du - все поровну, выхлоп в топике. А df при этом откуда-то берет 35 гигов на одном разделе и 26 на другом.

thesis ★★★★★
() автор топика

Объем данных и объем занятых ячеек не одно и то же. Если сектора не совпадают, то и получится запросто каша со съеденным местом полагаю. На жестких дисках сектора также выравнивают.

anonymous
()

Почему этого нет в mkfs.xfs?

Выдержка из man mkfs.xfs:

mkfs.xfs [ -b block_size_options ] [ -c config_file_options ] [ -m global_metadata_options ] [ -d data_section_options ] ...

Section Name: [data]
These options specify the location, size, and other parameters of the data section of the filesystem. The valid data_section_options are:

agcount=value
This is used to specify the number of allocation groups.


Package name:
core/xfsprogs
Version:
6.13.0-1
greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 2)
Ответ на: комментарий от anonymous

Похоже на то, что reflink=1 приводит к резервированию, и заметнее на больших дисках.

Плюс

https://www.reddit.com/r/linuxquestions/comments/nf3xse/xfs_more_empty_space_when_mounted_readonly/

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

Похоже на то, что reflink=1 приводит к резервированию, и заметнее на больших дисках.

Не только, там и другие новые фичи отъедают место. Видел пост на реддите с разбором, что сколько, хотя у меня не всё подтвердилось в аналогичных экспериментах. В Btrfs такого резервирования почти нет, но там и дизайн не унаследован из дремучих времён.

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

В Btrfs такого резервирования почти нет

Нет, но

«All filesystems for best performance should have some minimum percentage of free space, usally 5-10%. Btrfs, using a two-level space manager (chunks and blocks within chunks) plus being based on (nearly) copy-on-write, benefits from more space to be kept free, around 10-15%, and in particular from having at least one or a few chunks fully unallocated.»

https://archive.kernel.org/oldwiki/btrfs.wiki.kernel.org/index.php/SysadminGuide.html

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

Почему RPM, я арчик копирую. Иди ты про какой-то другой rpm?

Впрочем, вроде сообразили уже, что это за явление.

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

All filesystems for best performance should have some minimum percentage of free space, usally 5-10%.

На практике оно и с околонулевым свободным местом работает, но этой рекомендации лучше следовать, чтобы не было необходимости запускать balance. И если говорить о ситуации, когда обычно места много, но иногда надо выжать всё, что есть, то подход XFS мне не нравится. У меня вот сейчас как раз есть диск под торренты на ней, и я думаю, надо заменить на ext4 или Btrfs. Ext4 тоже аллоцирует служебные области статически, но там нет рефлинков, и с правильным(¿) выбором числа inode можно получить почти весь объём раздела.

anonymous
()

Это оно, что ли? Откуда это, почему столько, это динамическое или насовсем? Какой мудак это выдумал? Почему этого нет в mkfs.xfs?

The following command can get/set the reserved block count on an active mount:

xfs_io -x -c "resblks" <mnt>

Источник: https://lore.kernel.org/all/CAJtCNH2irjpu3T57XPHPXHZ0FXm7V-diaA4g3DtjAmcRV2xmWA@mail.gmail.com/T/

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

mkfs.xfs + reflink=0?

Тогда зачем нужна XFS? :) Там и без рефлинков много места резервируется под inodes. Да, это тоже вроде можно подкрутить, но я как-то пришёл к подходу, что если не Btrfs, то ext4. XFS ни туда, ни сюда.

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

Ага, я вчера находил это, но там по ссылкам что-то на компетентном, поэтому я мало что понял. И особенно не понял главное - изменяется ли резервированный объем в процессе работы, или нет. Я имею в виду, самостоятельно, а не пинком с моей стороны. Похоже, что нет.

Чорт, надо переосмыслить выбор ФС. Или вот нафига мне на десктопе рефлинки, тоже занимательный вопрос.

С третьей стороны, для накопителя это все равно означает свободные сектора, так что получится маленький резерв для wear leveling на случай забитого места.

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

Или вот нафига мне на десктопе рефлинки, тоже занимательный вопрос.

Например (бтрфс, но суть та же):

compsize /var/lib/flatpak/
Processed 161840 files, 32748 regular extents (87346 refs), 74133 inline.
Type       Perc     Disk Usage   Uncompressed Referenced  
TOTAL      100%      6.3G         6.3G          14G       
none       100%      6.3G         6.3G          14G 
compsize .local/share/Steam/steamapps/compatdata/
Processed 70180 files, 83400 regular extents (129515 refs), 11824 inline.
Type       Perc     Disk Usage   Uncompressed Referenced  
TOTAL       71%       12G          17G          21G       
none       100%       10G          10G          10G       
zstd        29%      2.1G         7.0G          10G 
altwazar ★★★★★
()
Ответ на: комментарий от thesis

Понаставят фиг пойми каких ФС, а потом линуксы обвиняют. Не бы слушать валенки использовать ext4 и не делать себе голову. Имхо для десктопа ничего другого нет смысла использовать.

PS: XFS пробовал 15 лет назад, после того как она мне ломала данные при каждом(не каждом конечно, 1 из 3) горячем ресете(а тогда линукс с моим железом и 12309 зависал частенько), я убежал на EXT4 и волосы сразу стали шелковистыми.

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

Видимо пришлись на сжимаемые данные (стандартное вайновское наполнение префиксов, которое копированием для каждой игры создается). А остальное на всякие сохранёнки.

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

Или вот нафига мне на десктопе рефлинки, тоже занимательный вопрос.

Зачем на десткопе xfs? xfs оно как бы для другого. Ежель ты хочешь шоб усё было просто понятно и в целом средне по больнице, то нужно выбрать ext4 и расслабить булки.

vtVitus ★★★★★
()