LINUX.ORG.RU
ФорумAdmin

e4defrag и последствия

 ,


0

5

День добрый, господа и дамы. Смогут ли местные гуру подсказать ответы на вопросы «как так?» и «почему?» ? Имеется обычный комп с Manjaro. Имеется хранилище на 32Тб формата RAID0 (физический). Имеется EiskaltDC++. Первичное хэширование данных с хранилища в EiskaltDC++ показывало скорость считывая, доходящую до 350МБ/С. После применения утилиты e4defrag - скорость считывания упала так, что не поднимается выше 80МБ/С. Состав файлов в хранилище не менялся. После «дефрагментации» при запуске системы регулярно стал появляться процесс «ext4lazyinit», который достаточно долго висит и что-то там делает. До этого на данной машине стояла Ubuntu Server. Картина полностью была аналогичная (с той лишь разницей, что на ней крутился AirDC++ WEB).

Диски проверял, со смартом все отлично, бэд-блоков нет. Ну словно только с завода выпустились. И постоянно после e4defrag замедляются. Ну никак не могу понять в чем дело и почему и как это исправить.

Очень прошу, подскажите куда копать, что смотреть, изменить и тд. Заранее благодарен каждому, кто направит в нужное «русло»



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

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

К сожалению не помогает. Да, «ext4lazyinit» не активируется. Однако диск стал работать еще медленнее, как и говорится по ссылке, что теряет в производительности немного

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

Железо (lsi mr9260-8i). Да скинуть-то есть куда. Тоже уже задумываюсь о переинициализации хранилища с нуля. Думал смогу отделаться «малой кровью» и решить вопрос без слива данных. Проблема лишь в том, что это занимает время, а из-за возникшей заторможенности хранилища - скидываются файлы тоже целую вечность

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

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

Ну напиши Тцо, он наверное знает что там может быть.

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

И постоянно после e4defrag замедляются.

Всмысле ты несколько раз это делал? Значит после первого замедления ты как-то смог всё исправить чтобы потом сделать второе?

Очень прошу, подскажите куда копать, что смотреть, изменить и тд

Видимо, не делать e4defrag.

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

Нет я это делал 1 раз на каждой системе. До этого у меня стоял Ubuntu Server. Я ни разу не делал e4defrag по нескольку раз. Но регулярно после 1 раза использования (назовем это оптимизацией) всегда картина одна - на любой системе диски начинаются ощутимо замедляться

Samael_Subject
() автор топика

Насколько заполнена ФС, какие размеры файлов? Фрагментация до и после запуска e4defrag анализировалась/сравнивалась?

ЕМНИП, e4defrag просто переписывает файл, никаких гарантий, что фрагментация файла при этом снизится нет.

Может пытаться запускать e4defrag на отдельные файлы, начиная с мелких, сравнивая фрагментацю до и после запуска, пока не станет лучше...

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

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

ФС заполнена примерно на 40%. Размеры файлов разные: от нескольких килобайт до 150гб, ибо это одновременно и медиа и книжная библиотека. А файлов там 35тыс по подсчетам. Дефрагментировать все вручную, начиная с мелких файлов - геммор как минимум) В общем выкачиваю уже все данные с хранилища и буду переинициализировать его. Наверное тему можно закрывать.

P.S. Не пользуйтесь e4defrag, пацаны. Вы своим компам еще нужны)

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

По «вручную» я подразумевал самописные скрипты...

Выкачиваю уже все данные с хранилища и буду переинициализировать его

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

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

Нет на диски ничего в этот момент не писалось. Компьютер простаивал. Алгоритм был следующий: инициализировал РЕЙД, установил ОС с указанием точки монтирования. Далее в самой ОС закачал файлы на РЕЙД, захэшировал данные через EiskaltDC++ (скорость считывания/хэша стабильно была около 350мб/с). После чего сделал дефрагментацию. Далее после перезагрузки при старте системы стала появляться медленно работающий процесс ext4lazyinit (оооооочень медленно). Заподозрил неладное и решил перехэшировать данные. И действительно - скорость упала в разы. Ранее такое повторялось. Во время дефрагментации никаких записей на диск не производилось, система была абсолютно статичной

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

Прописал в /etc/mke2fs.conf

[defaults]
        [...]
        lazy_itable_init = 0
        lazy_journal_init = 0

(можно и параметрами к mkfs)

Форматирую раздел диска в ext4 (никаких рейдов, lvm). e4defrag вызываю с -v для контроля. Как только процесс завершается, диск больше никто не дёргает. Чтобы e4defrag мог эффективно работать, необходимо иметь нефрагментированное свободное место подходящего размера. Т.е. как только таковое закончится, раздел придётся «дефрагментировать» путём переписывания всего на другой диск. К сожалению, умного дефрагментатора так пока и нет.

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

У меня после удаления больших файлов еще некоторое время(от часа и более) диск подхрюкивает. Хр-хр-хр-хр. Через определенный интервал опять Хр-хр-хр-хр. При этом в iotop какой-то процесс связанный с диском появляется и немного io забивает. Возможно, после дефрагментации в «мехах» какие-то процессы осуществляются. Из-за этого падение скорости. Надо было подождать хотя бы сутки. И для чистоты эксперимента - в следующий раз с livecd делай дефрагментацию. Потому что сам по себе дефрагментатор - всего-навсего переносит файлы в другое место диска. Из-за этого не может быть никаких падений скорости(таких существенных, как у тебя). Значит есть какие-то процессы, которые или io забивают, не давая в полной мере работать девайсу. Возможно даже там параллельно два процесса происходят: 1. на уровне ос 2. на уровне самого девайса

PS: это у меня на 1тб так долго подхрюкивает девайс. А у тебя на 30тб все эти процессы могут занимать и более суток. Думаю, что в этом и есть причина падения скорости после дефрагментации. Дефрагментировал 30тб - недельку подожди)))

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

Ну я тоже пытался делать дефрагментацию ради интереса и эксперимента через livecd. Тогда диски теряли в скорости еще больше О_О

Да и как-то много неделька) Я на ноутбуке ради чистоты эксперимента проводил дефрагментацию 1Тб. После чего файлы не трогаю на нем уже месяца 2. И все равно скорость осталась ни о чем

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

ext4lazyinit

So that is what the lazyinit thread does; it is slowly zeroing out the not-yet-used portions of the inode table. Previously, the inode table initialization would be done during mke2fs, but this would make the mkfs process very slow for very large or very slow disks. So instead, we defer this to when the file system is mounted. The reason why can take hours is that we deliberately try to make it take roughly 10% of the disk bandwidth, to minimize the impact on system performance. This can be tuned via a mount option, or you can force the inode table initialization to happen at mke2fs time (so what might take 2 hours for your drive would make mke2fs about 12 minutes longer). You can also temporarily or permanently disable the lazy initialization via a mount option.

Вот что делает поток lazyinit; он медленно обнуляет еще не использованные части таблицы инодов. Раньше инициализация таблицы инодов выполнялась во время mke2fs, но это делало процесс mkfs очень медленным для очень больших или очень медленных дисков. Поэтому вместо этого мы откладываем это до момента монтирования файловой системы. Причина, по которой это может занять несколько часов, заключается в том, что мы намеренно пытаемся сделать так, чтобы это занимало примерно 10% пропускной способности диска, чтобы свести к минимуму влияние на производительность системы. Это можно настроить с помощью параметра монтирования, или вы можете заставить инициализацию таблицы inode происходить во время mke2fs (так что то, что может занять 2 часа для вашего диска, сделает mke2fs примерно на 12 минут дольше). Вы также можете временно или навсегда отключить ленивую инициализацию с помощью параметра монтирования.

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

Я утверждаю, что из-за дефрагментатора не может быть существенной просадки в скорости. Вообще-то его цель в обратном. Поэтому, падение скорости происходит по причине post-процессов, после перемещения файлов дефрагментатором. Тебе просто после дефрагментации надо ничего не трогать некоторое время. Но если ты сразу включаешь какие-то процессы, которые диск дёргают на полную мощность, то у тебя post-defrag процессы будут затягиваться. На какое время? Да хз

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

И ленивую инициализацию отключал. При чем буквально вчера. И если после дефрагментации скорость падала примерно до 80мб/с, то при отключенном ext4lazyinit - скорость упала до 50мб/с

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

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

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

Что иное - надо углубляться в это, У меня этот кейс появляется раз в 10-15 лет. Если тебе интересно, можешь углубиться. А потом нам рассказать не забудь))

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

Я думаю, что падение скорости после дефрагментации есть у всех. Просто у тебя объем большой и ты сразу мониторить это начал. Всё это прочухалось бы за пару дней и начало нормально работать. Это тот редкий случай, когда слишком очумелые ручки приводят к переинициализации рейда;)

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

Всё правильно. Если ты о скорости записи. Там же нулями не забито. Оно лениво тебе нулями забивало. 60% диска. При параллельных процессах post-defrag + твоей шарилкой это приводило к офигительному падению скорости

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

Там же нулями не забито. Оно лениво тебе нулями забивало. 60% диска.

Вы же и по-английски, и по-русски привели цитату. Никакие не 60% диска. Только метаданные ФС, т.е. таблицы inode.

gag ★★★★★
()

Вообще ты конечно свинота. Такую тему социально важную поднял, всех перевозбудил. А потом взял и массив пересоздал. Надо ж было хоть сутки подождать. Подёргать и то и это. Может сама проблема ушла(мой сценарий) или кто-то решение подсказал бы

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

Размеры файлов разные: от нескольких килобайт до 150гб, ибо это одновременно и медиа и книжная библиотека.

К дефрагментации это не имеет отношения, но всё таки сообщу.

Сувать это всё под нагрузкой в общее хранилище - плохая идея. Большим файлам нужен быстрый последовательный доступ, маленьким - постоянная езда головками в разные стороны, при объединении получается плохо и первое и второе. Раздели на два массива, один для файлов до 1гб (точнее порог зависит от ситуации) допустим, другой для тех что больше.

Хотя я конечно понимаю, что сейчас принято делать «однородное железо» и закидывать проблемы тупо его количеством, но всё-таки ты мог бы использовать его эффективнее.

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

Большим файлам нужен быстрый последовательный доступ,
маленьким - постоянная езда головками в разные стороны,

А если «Большой файл» это бд ? Не приходится «ездить головками»?

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

У него файловый сервер с которого скачивают. Скачивают обычно весь файл целиком.

А что касается БД то её лучше тоже на отдельном накопителе делать и лучше если это ссд будет а не раздел на hdd-рейде.

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