LINUX.ORG.RU

Фрагментация - Выделение место для файлов сразу


0

1

На файловых системах линукса используется странное динамическое выделение места для файлов. Если программа создаёт файл, то на самом деле в файловой системе не выделяется место для нового файла. Место выделяется по кусочкам по мере записи в файл. И поэтому появляется сильная фрагментизация. Это как раз видно по команде «df -h».

В виндовс же для всех файлов сразу выделяется место ПОЛНОСТЬЮ. И в виндовс сильно снижена фрагментация.

Как настроить полное выделение место СРАЗУ же при создании файла ?

Я хочу избавиться от такой фрагментации. Я считаю такое поведение файловой системы плохим, не практичным. У меня огромный жесткий диск. Но появляющаяся на нём дефрагментация меня сильно бесит.

ФС EXT3/EXT4.

>сильная фрагментизация. Это как раз видно по команде «df -h».

это как ? ) оно совсем не это кажет

на ext4 практически нет фрагментации, на ext3 бывает, но тоже достаточно умеренно

а вообще есть утилитка fallocate и функция в libc, некоторые программы это используют, как торрент клиенты, так и качалки типа aria2

Sylvia ★★★★★ ()

Ты гонишь! Нет функции открытия файла на запись с заданием его (файла) будущего размера.

Тролль детектед!

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

Это как раз видно по команде «df -h».

это как ? ) оно совсем не это кажет

Это я том как заметить отсутствие выделения места при создании новых файлов.

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

xcreatepixmap ()

Опять мифы о фрагментации?

Если вам нечего делать, можете лелеять свои легенды: создавайте файл нужного размера посредством записи в него случайных чисел в нужном количестве.

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

Он, наверное, имел в виду, что если открыть файл, и сделать ему lseek на гигов 30, на диске такой файл будет занимать немного... :)

Eddy_Em ☆☆☆☆☆ ()

Проблема, как часто бывает, больше упирается в адекватно написанное ПО.

Persistent pre-allocation
The ext4 filesystem allows for pre-allocation of on-disk space for a file. The current method for this on most file systems is to write the file full of 0s to reserve the space when the file is created. This method is no longer required for ext4; instead, a new fallocate() system call was added to the Linux kernel for use by filesystems, including ext4 and XFS, that have this capability. The space allocated for files such as these would be guaranteed and would likely be contiguous. This has applications for media streaming and databases.

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

Ты гонишь! Нет функции открытия файла на запись с заданием его (файла) будущего размера.

lseek + переходим на последний байт и пишем последний байт (например нуль).

Так использование функции lseek по идее должно автоматически выделять место на диске. Так происходит в виндовс. А в линуксе не-не.

Вот я и хочу чтобы выделяло место когда программы делают lseek. Это же снизит фрагментацию.

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

Проблема, как часто бывает, больше упирается в адекватно написанное ПО.

Нет. Это упирается в драйвер.

В виндовс же программы не нужно специально переписывать чтобы они не усиливали фрагментацию. Там это по дизайну ОС уже заранее было продумано.

xcreatepixmap ()

используй ReiserFS - ей пох на фрагментацию

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

+1 только хотел написать, что fallocate не для всех

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

xcreatepixmap> Там это по дизайну ОС уже заранее было продумано.

Это недостаток был

А почему недостаток ?

Известно же что в будущем, через некоторое время файл всё равно будет заполнен.

Так зачем оно нужно ?

Много ли имеется ситуаций когда нужно создавать полупустые файлы ?

Мне кажется что если человек/программа создаёт файл, то подразумевается что он будет полностью записан. А если программа туда не пишет, то зачем вообще нужно было создавать файл такого размера.

Программа выппросила у ОС место на диске. А потом программа не использует выделенное место. И драйвер пытается подиграть тупому поведению программы и не выделяет место полностью на диске. И тем самым провацирует фрагментацию.

Странно это.

xcreatepixmap ()

4.2. В ext3 фрагментация малозаметна в типичных условиях.

И в виндовс сильно снижена фрагментация.

И снова 4.2, но с этим тебе на другой форум.

GotF ★★★★★ ()

что-то прямо ужасы какие-то рассказываешь, на практике, если диск не забит под завязку, фрагментация не даёт о себе знать. А вот ntfs, какая она бы на бумаге не была хорошая, на практике постоянно подвержена фрагментации

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

Вот я и хочу чтобы выделяло место когда программы делают lseek. Это же снизит фрагментацию.

Это чистой воды идиотизм (или недопонимание).

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

Цитата

Вот я и хочу чтобы выделяло место когда программы делают lseek. Это же снизит фрагментацию.

Это чистой воды идиотизм (или недопонимание).

Прошу вас пожалуста объяснить мне дураку в каких таких случаях могут понадобятся эти sparse файлы ?

Я же не кёрнел разработчик. Я не знаю того секрета из-за которого нужно было в обязательном порядке включать опцию sparse без возможности её выключить.

Я серьёзно не знаю зачем нужны эти sparse файлы если они провацируют фрагментацию.

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

Нужны они, чтобы не занимать на диске уйму места, когда оно реально не нужно. А фрагментация файлов работе не мешает. Что-то я у себя никаких глобальных тормозов в работе ФС не замечал (хотя некоторые разделы у меня чуть ли не под завязку забиты).

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

4.2. В ext3 фрагментация малозаметна в типичных условиях.

И в виндовс сильно снижена фрагментация.

И снова 4.2, но с этим тебе на другой форум.

У меня фрагментация весьма сильно заметна.

Да, но проблема в том что в отличие от виндовс в линуксе НЕТУ дефрагментора. И его нельзя поставить в планировщик чтобы он периодически дефрагментировал раз в месяц.

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

>> У меня фрагментация весьма сильно заметна.

Без цифр это пустой трёп.

Да, но проблема в том что в отличие от виндовс в линуксе НЕТУ дефрагментора.

Чо, правда? У меня есть. xfs_fsr называется.

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

У меня фрагментация весьма сильно заметна.

Так не надо ставить линукс на ntfs!

У reiserfs, кстати, фрагментация на производительности сказывается исчезающе мало.

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

Хотя и он не слишком нужен обычно:

┌┤~├──────────────────────────────────────────────────────────┤root@persephone├─
└─# xfs_db -r /dev/mapper/gotf_home 
xfs_db> frag
actual 83435, ideal 81264, fragmentation factor 2.60%
GotF ★★★★★ ()
Ответ на: комментарий от xcreatepixmap

>в линуксе НЕТУ дефрагментора
4.2
ты в пьяном угаре сегодня пришёл?

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

Да нет на reiserfs такой жестокой фрагментации, как на ntfs каком-нибудь.

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

Известно же что в будущем, через некоторое время файл всё равно будет заполнен.

Неизвестно.

Программа выппросила у ОС место на диске.

Как она «выпросила»? Типа: «Просто дай 2Гига!» или записала один байт по смещению 2Гига? А кто сказал что программа будет заполнять эти 2Гига? У меня есть программа которая использует особенности sparse файлов и мне просто негде взять 100Терабайт для файла, который реально занимает 10Мегабайт.

sdio ★★★★★ ()

Озвучьте уже фрагментацию всех ваших многострадальных фс в цифрах, будьте добры.

vsemprivet ()

Смотрю ты скор набиваешь?

anonymous ()

У меня например в Deluge стоит «полное размещение» что по аналогии с трасмиссией должно задействовать fallocate, но на XFS все равно место выделяется нулями, а по факту получаю фрагментацию, благо дефраг всегда под рукой.

Что касается скорости, фрагментированные файлы читаются убого, вплоть до 5 мб/с.

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

Торрент-качалка, наверное, какая-нибудь :)

Слишком банально.

У меня есть программа которая использует особенности sparse файлов и мне просто негде взять 100Терабайт для файла, который реально занимает 10Мегабайт.

Вот вам академический пример:
База данных с доступам к записям фикс. длины (например 4К) по ID (пусть будет 12-разрядное целое число, например номер паспорта). Делаем lseek по смещению (ID * length) и читаем 4К данных. Время доступа O(1), полный файл занимал бы 4*10^15 баит, а так только то что реально записано.

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

У меня есть программа которая использует особенности sparse файлов и мне просто негде взять 100Терабайт для файла, который реально занимает 10Мегабайт.

Вот вам академический пример:

База данных с доступам к записям фикс. длины (например 4К) по ID (пусть будет 12-разрядное целое число, например номер паспорта). Делаем lseek по смещению (ID * length) и читаем 4К данных. Время доступа O(1), полный файл занимал бы 4*10^15 баит, а так только то что реально записано.

sdio ***** (06.12.2010 10:08:08)

Зачем изначально создавать файл зная о том что полностью заполненым он точно не влезет в размер жёсткого диска ?

Т.е. программист изначально знал что программа в какой-то момент заглохнет-вывалится с ошибкой нехватки места. Это потрясающий проектировщик.

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

xcreatepixmap> Зачем изначально создавать файл зная о том что полностью заполненым он точно не влезет в размер жёсткого диска ?

Потому что известно, что те данные что у нас есть (кол-во людей если по паспортам из примера) влезут на диск.

sdio ★★★★★ ()

>В виндовс же для всех файлов сразу выделяется место ПОЛНОСТЬЮ

и как это снижает фрагментацию? что за бред ты тут несёшь вообще?

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

В виндовс же для всех файлов сразу выделяется место ПОЛНОСТЬЮ

и как это снижает фрагментацию? что за бред ты тут несёшь вообще?

http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B5%D0%B6%D1%91%D0%BD%D0%BD%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB

http://en.wikipedia.org/wiki/Sparse_file

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

Слушай, прекрати нести чушь.

1. Поддержка sparse files есть и на NTFS, и на ext3/4, так что ее наличие «влияет» на фрагментацию одинаково

2. ext4 поддерживает механизм: [url=https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Persistent_preallocation&#9... направленный на УМЕНЬШЕНИЕ фрагментации, что могут использовать (и используют) программы типа Transmission

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

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