LINUX.ORG.RU
ФорумAdmin

Как работает уменьшение заполненной ext4

 ,


0

3

Добрый день. Подскажите, пожалуйста. Ext4 при уменьшении может писать new size smaller than minimum ( при этом минимальный размер - это почти размер самого раздела) или спокойно уменьшить. От чего это зависит я так и не понял. Например

Файловая система            Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sdb2                     920M         502M  363M           59% /ext4

root@debian:/# resize2fs /dev/sdb1 820M
resize2fs 1.44.5 (15-Dec-2018)
resize2fs: New size smaller than minimum (243884)

243884 (4k block) это 952MB

Заполнял файлами по типу

dd if=/dev/zero of=/ext4/disk.img count=150 bs=1M								

Потом пересоздал, заполнил на 31% и уменьшил сразу до минимума

Файловая система            Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sdb2                     524M         151M  336M           31% /ext4

root@debian:/# resize2fs /dev/sdb2  -M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sdb2 to 45560 (4k) blocks.
The filesystem on /dev/sdb2 is now 45560 (4k) blocks long.

Уменьшилось.

Далее попробовал на 56% заполнить и уменьшить до минимума:

Файловая система            Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sdb2                     524M         271M  216M           56% /ext4

/dev/sdb2                     402M         271M  103M           73% /ext4

Затем снова пересоздал на больший размер, заполнил и глянул минимальный размер

root@debian:/# df -h
Файловая система            Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sdb2                    1020M         601M  350M           64% /ext4

root@debian:/# e4defrag -v -c /dev/sdb2
e4defrag 1.44.5 (15-Dec-2018)
<File>                                         now/best       size/ext
[1/6] "/ext4"
        File is not regular file
[2/6]/ext4/disk3.img                             2/1          76800 KB
[3/6] "/ext4/lost+found"
        File is not regular file
[4/6]/ext4/disk1.img                             3/1          51200 KB
[5/6]/ext4/disk2.img                             4/1          38400 KB
[6/6]/ext4/disk4.img                             3/1          51200 KB

<Fragmented files>                             now/best       size/ext
1. /ext4/disk2.img                               4/1          38400 KB
2. /ext4/disk4.img                               3/1          51200 KB
3. /ext4/disk1.img                               3/1          51200 KB
4. /ext4/disk3.img                               2/1          76800 KB

 Total/best extents                             12/4
 Average size per extent                        51200 KB
 Fragmentation score                            0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This device (/dev/sdb2) does not need defragmentation.
 Done.

root@debian:/# umount /dev/sdb2
root@debian:/# resize2fs -P /dev/sdb2  -M
resize2fs 1.44.5 (15-Dec-2018)
Estimated minimum size of the filesystem: 274171

Как это работает?При каком проценте заполненности ФС можно уменьшать?

На ext2 и ext3 попробовал, там без проблем уменьшается вплоть до 100% занятого пространства..

Попробуй дефрагментацию перед этим сделать.

А ещё есть подозрение что оно не рассчитано на такие мелкие фс и может чего-то не мочь на них рандомно.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

В man'е ведь написали: ″The minimum size of the file system as estimated by resize2fs may be incorrect, especially for file systems with 1k and 2k blocksizes″.

Можете добавить ″-d 32″ и попытаться понять, почему такой размер получается, но гуглится такое: https://bugzilla.redhat.com/show_bug.cgi?id=506740 , типа даже если очевидное неправильное поведение, то править не будем, как-то уменьшает и хорошо :)

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

Повезло - уменьшил. Не повезло - ну бывает? :)

Ну именно так весь софт и работает. Повезло, отправил сообщение на форум, не повезло, твоё сообщение потерялось, бывает :)

В приниципе, у resize2fs есть ключ -f, тогда уж точно будет повезло/не повезло.

Я особо ФС не уменьшал. Подоздреваю, что там не процент, а, допустим, 1 Гб должно оставаться свободным и тогда нормально.

Вобще, задача уменьшения ФС достаточно редкая, и, если уж для каких-то специальных целей нужно как можно сильнее уменьшить, то имеет смысл создавать ФС с нуля под этот размер и по минимуму инодов.

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

btrfs используй. Так то задача довольно сложная, надо перемещать куски файлов из мест которые надо освободить в начало раздела, неудивительно что никто не хочет этим заниматься.

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

надо перемещать куски файлов из мест которые надо освободить в начало раздела, неудивительно что никто не хочет этим заниматься.

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

i-rinat ★★★★★
()
Ответ на: комментарий от mky

Не. Там же есть размеры раздела, который хранится в gpt и размер файловой системы как ее атрибут (просто по какому-то смещению указан). Должно быть свободное место не на разделе, а на диске вообще (с учетом всех разделов), чтобы новые ячейки записать и пометить старые как неиспользуемые.

anonymous
()