LINUX.ORG.RU
ФорумTalks

Файловые системы с быстрым удалением


1

1

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

★★★★★

NTFS, емнип, только записи в MFT правит. Про ext4 не знаю, но по ощущениям от использования, удаляет почти моментально, даже папки с кучей объектов.

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

Заметил у нас на рабочем серваке перед сборкой релиза папка target у мавена удаляется минут 5. Негодовал

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

Имхо, это не возможно. Разве что костылём: помещать инод удаляемой директории в специальный список удаленных, и затем в фоне вычищать.

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

Да-да, а что не так? Это решение в лоб. Но может быть все намного хитрее. Какой-то reclaim при потребности

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

Удаляет долго. reiserfs Увы не могу попробовать все файловые системы.

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

можно же сразу все пространство разметить, как в FAT

плюс отменить права доступа (rw for all), чтобы не надо было оббегать дерево с целью понять, можешь ли ты его удалить.

и журнал тоже отменить

и барьеры

вот тогда всё будет мгновенно

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

В ZFS написано что поддерживает constant time directory operations. Интересно входит ли remove

Что-то мне подсказывает, что под этим имеются ввиду операции по добавлению/удалению одиночного инода, а не вычищению всей директории...

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

И ничего не будет мгновенно, потому что все иноды надо занести в списки свободных инодов, а все блоки пометить как свободные.

Даже простой перебор элементов как бы намекает нам на O(N)

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

А что если в фоне колбасить тихонько. Только необходимо разобраться с синхронизацией и сбоями

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

Вот-вот. Даже прежде чем «тихо занести в список удалённых», всё равно сначала надо рекурсивно обойти дерево.

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

в порядке бреда

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

все адресуемые элементы положить в хэш. Поиск по хэшу - константный.

с бешеной фрагментацией бороться тем, что показывать в 3 раза места на диске, чем есть на самом деле, оставшееся место юзать как пространство для дефрагментации

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

получится оооочень медленный write, так себе read и очень быстрый delete

есть read-only fs, а это будет delete-only fs =)

stevejobs ★★★★☆
()

как ты себе это представляешь?
да и с каких пор это стало узким местом?
это занимает 0 целых, хрен сотых секунды

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

Файловые системы с быстрым удалением

tmpfs же.

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

поэтому там специально написано было «отменить права доступа» //К.О

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

все адресуемые элементы положить в хэш. Поиск по хэшу - константный.

o___o. Это в какой такой структуре данных?

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

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

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

o_O?

[ root@desktop ] megabaks # time rm -rf /usr/src/linux-3.6.1-pf/

real	0m3.128s
user	0m0.111s
sys	0m1.285s
[ root@desktop ] megabaks #
с минимальным приоритетом на ввод-вывод + фоновое компеляние
АПВС?

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

в виртуальной

а я toolchain этой зимой конпелял полтора суток. Поставил вечером конпеляться, утром пришел - а оно всё еще конпеляется. Кстати, то была виртуальная Солярка, а вот файловую систему уже не помню

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

Что поделаешь, что есть, то есть ) Хотя проблема не в мавене, а в том что все class файлы и javadoc к ним в распакованом виде в папке.

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

Это виртуалка с неясными настройками. Но наш воображаемый contstant-time помог бы сильно

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

коллизий не будет точно

будут. Но у нас есть преимущество, размер жесткого диска - конечный! Так же можно установить лимит на максимальное количество файлов/папок (чем меньше - тем лучше), и чтобы уж совсем по заветам товарища Сталина - максимальное количество одновременных файловых дескрипторов (предлагаю ограничиться значением 1 - это решит много проблем -))

и пару гектар buckets

а ты чо думал, хочешь няшу и бесплатно? %)

stevejobs ★★★★☆
()

Кстати, провёл небольшой тест на скорость копирования и удаления каталога с исходниками ядра.

Размер каталога - 874,7 Мб, 61332 файла, 3548 вложенных каталогов. Тестировал на харде Hitachi HDS5C3020ALA632:

avalon basic # hdparm -tT /dev/sdd

/dev/sdd:
 Timing cached reads:   27410 MB in  2.00 seconds = 13720.46 MB/sec
 Timing buffered disk reads: 412 MB in  3.01 seconds = 136.90 MB/sec

на разделе в 154 с лишним Гб. Результаты.

exFAT начала жутко сыпать какими-то ошибками, на третьей минуте я прибил копирование.

Но это, конечно, тесты чистых ФС.

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

> Про ext4 не знаю, но по ощущениям от использования, удаляет почти моментально, даже папки с кучей объектов.

нет. скорее всего, просто так сложилось, что всё было закэшировано и/или раздел маленький. несмотря на экстенты и прочее, в экст4 всё так же основное время при удалении занимает обнуление битов занятости блока в битмапе/битмапах. время, необходимое чтобы прописать в иноде время его удаления (что и значит, что он удалён) не изменилось. точно так же в экст4 никак не изменился способ представления иерархии директорий, т.е. всё так же, по-старинке, необходимо всё удалять рекурсивно. и то, что при наличии экстентов заранее известно, что обнулять нужно смежные биты, что позволяет оптимизировать процесс, это будет заметно только при отключенном дисковом кэше и/или на загрузке процессора.

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

Проводил. Хуже всех, прогнозируемо, xfs, дичайший тормоз, разница между ext3 и 4 в проценты

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

Странно слышать на ЛОРе слово «папка».

Тут довольно много таких альтернативно одаренных. Не замечал разве?

geekless ★★
()

mv papka /trash/$RANDOM

rm -rf /trash/* &

не?

inoremap ★★
()

logfs какой-нить :). Возможно, оно работает быстро только до тех пор пока диск не забьётся.

true_admin ★★★★★
()

Насколько мне известно, единственная ФС, оптимизированная под удаление — это FAT

goingUp ★★★★★
()
Ответ на: комментарий от serg10etomarkov
~/Research# cp linux-3.6.3 test -R 
~/Research# l
итого 8,0K
drwxrwxr-x 23 penguin users 4,0K окт.  21 22:32 linux-3.6.3
drwxr-xr-x 23 penguin users 4,0K окт.  25 06:52 test
~/Research# time rm -rf test
rm -rf test  0,06s user 0,88s system 69% cpu 1,352 total
Dragon59 ★★
()
Ответ на: комментарий от geekless

Термин папка (англ. folder) был введён для представления объектов файловой системы в графическом пользовательском интерфейсе путём аналогии с офисными папками. Он был впервые использован в Mac OS, а в системах семейства Windows — с выходом Windows 95.[2] Эта метафора стала использоваться в большом числе операционных систем: Windows NT, Mac OS, Mac OS X, а также в средах рабочего стола для систем семейства UNIX (например, KDE и GNOME).

Dragon59 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.