Оптимизация жестких дисков под Linux: Настройка и планирование (часть 2)
Конфигурирование планировщиков
В первой статье этой серии мы рассмотрели, какую роль планировщики играют при оптимизации ввода/вывода. Но как реально вы можете выбрать и настроить планировщик с тем, чтобы на практике улучшить характеристики ввода/вывода?
Обычно первый вопрос, на который нужно ответить, следующий: Какой планировщик следует использовать? Это обманчиво сложный вопрос, и ответ зависит от многих взаимосвязанных факторов, в том числе от работающих приложений, размера файлов, которые вы будете читать и записывать, частоты чтения и записи ваших файлов, характера операций этого чтения и записи. Единственное, что можно сказать с большой уверенностью, что если вы не используете твердотельный жесткий диск или RAM диск, на которых доступ ко всем файлам можно получить одинаково быстро, — выбор планировщика noop будет худшим решением. Для обычных вращающихся дисков любой другой активный планировщик будет лучше, чем планировщик noop.
Имеются подтверждения, что когда множество приложений различного вида делают разнородные запросы на чтение и запись, планировщик deadline обеспечит лучшую усредненную производительность, но, в конце концов, лучший способ, вероятно, испытать все три активных планировщика и выбирать тот, который дает лучшие результаты.
Итак, поскольку вы выбираете некоторый планировщик для проверки, то как сказать системе использовать именно его? Имеется два основных способа сделать это: во время загрузки системы с помощью конфигурационного файла, либо во время работы системы из командной строки. Примеры, которые мы здесь используем, были проверены для дистрибутива Red Hat Enterprise Linux, но они должны работать аналогично и на других дистрибутивах, которые вы будете использовать.
Для того, чтобы задать планировщик, выбираемый во время загрузки системы, отредактируйте следующий файл
в конце строки, в которой специфицируется ядро. В качестве имени планировщика можно использовать следующие: «noop», «cfq», «deadline» и «as» (для anticipatory).
Либо для того, чтобы во время работы системы задать планировщик, например, для диска hda, просто откройте окно терминала и наберите:
Для того, чтобы проверить, какой планировщик используется, наберите следующее:
Вы можете увидеть нечто, похожее на следующее:
что должно означать, что в текущий момент используется планировщик deadline.
Как только вы выбрали и установили планировщик, вы можете настроить его на оптимальную работу с вашей системой при помощи изменения для этого различных параметров. Параметры для каждого планировщика различны. Исключением является планировщик noop, у которого нет настраиваемых параметров.
Настройка параметров
Параметры сохраняются в файлах, размещенных в директориях:
Например, параметр read_expire для устройства hda хранится в файле:
С помощью следующей команды для этого параметра можно установить значение 80 (миллисекунд)
Планировщик Deadline
В этом планировщике имеются следующие пять настраиваемых параметров:
- read_expire — наиболее важный параметр для планировщика deadline, он определяет максимальное время, которое запрос на чтение может ожидать, прежде чем будет обслужен.
- write_expire — максимальное время, которое запрос на запись может ожидать перед тем, как он будет обслужен.
- fifo_batch — число запросов в каждом пакете, который будет послан на немедленное обслуживание в случае, если время обслуживание истекло.
- writes_starved — с помощью этого параметра меняется приоритет, который запрос на операцию чтения имеет над запросом на операцию записи. Поскольку необслуженная операция чтения влияет на характеристики сильнее, чем необслуженная операция записи, обычно операции чтения имеют приоритет над операциями записи.
- front_merges — с помощью этого параметра изменяется значение, установленное по умолчанию, и равное 1, указывающее сколько запросов в начале очереди могут быть объединены вместе, в отличие о запросов, находящихся в конце очереди.
Планировщик Anticipatory
В дополнение к параметрам read_expire и write_expire, планировщик anticipatory имеет также следующие параметры:
- read_batch_expire — время, потраченное на обслуживание запроса на чтение, перед обслуживанием отложенного запроса на запись.
- write_batch_expire — обратное предыдущему.
- antic_expire — время в миллисекундах, в течение которого планировщик будет находиться в паузе, пока он ожидает следующего запроса от приложения перед тем, как перейдет к обслуживанию следующего запроса.
Планировщик cfq
- quantum — количество внутренних очередей, запросы из которых берутся за один цикл и перемещаются в очередь диспетчера для обработки. Планировщик cfq может иметь 64 внутренние очереди, но он перемещает запросы в очередь диспетчера только при посещении первых восьми внутренних очередей, а затем — следующие восемь в следующем цикле, и т.д..
- queued — максимальное число запросов, допустимое в данной внутренней очереди.
Хотя нет никаких жестких и быстро применимых правил, разумной стратегией, вероятно, будет измерение производительности с использованием различных планировщиков ввода / вывода с настройками их параметров по умолчанию, а затем выбор наиболее подходящего планировщика и попытки выполнить более точную настройку параметров с учетом рекомендаций, относящихся к конкретным приложениям.
Не забывайте, что процесс планирования не в состоянии выполнить всю оптимизацию ввода / вывода. На эффективность могут повлиять такие факторы, как упреждение операций, емкость диска, скорость вращения его шпинделя (поскольку оно влияет на скорость поиска) и даже файловая система, которую вы выберете для данного диска. Одно можно сказать наверняка: независимо от того, какие характеристики у вас имеются в настоящий момент, вы, почти определенно, сможете их улучшить, если у вас есть на это время, желание и знания.
Источник
Ext3/4 – проверка, оптимизация, дефрагментация дисков в Linux
Дефрагментация в линукс нинужна!
Что-то давно не было срывов покровов с линукса, а между тем материала, о чём написать, накопилось много.
В этой статье я расскажу вам кое-что интересное о фрагментации файлов и работе с жёсткими дисками и разделами на них в линукс.
Если воспользоваться поиском на предмет – нужна ли дефрагментация в линукс, то тысячи линукс-икспертов ответят вам, что “нинужна”, однако, при этом не найдётся ответа на вопрос – Почему?
К чему это я про дефрагментацию?
Примерно год назад я стал замечать, что мой жёсткий диск, на котором в то время ещё была установлена openSUSE, стал судорожно поскрипывать при запуске файлов больших размеров, а что творилось при просмотре папок с картинкам, так вообще караул, падение производительности стало особенно заметным при запуске виртуальных машин или копировании больших архивов с диска на флешку – скорость падала ниже 1Мб/сек, при том, что с флешки копировалось со скоростью 4Мб/сек.
Т.к. я и так замечал, что линукс работает медленнее винды на моём ПК, я не придал первоначально внимания этому, но когда проигрыватели начали заикаться при проигрывании музыки и видео после одной из переустановок openSUSE, я понял, что что-то не так.
И опыт общения с виндой подсказывал, что это произошла фрагментация файлов.
Но как сделать дефрагментацию в линукс?
Т.к. специальных программ для дефрагментации в линукс нет, есть только скрипты и некая утилита, которая переписывает файлы, при этом у обеих этих способов стоит предупреждение, что это может привести к повреждению данных на жёстком диске, я даже не стал ими пользоваться.
Я поступил иначе – скинул с линуксового жёсткого диска все свои данные на другой жёсткий диск, отформатировал линуксовый жёсткий диск, установил на него линукс заново, а потом скинул свои файлы обратно на него и всё прошло.
И вот недавно из интереса я решил проверить каково состояние моих нынешних жёстких дисков с линуксом, на этот раз вместо openSUSE на них стоят мои сборки – на одном Jeder Linux Legacy SP3 (файловая система ext3), на втором Jeder Linux 10.10 (ext4). Первый диск используется для сборки и тестирования моих дистрибутивов, а второй находится в ноутбуке и ничего серьёзного там не делается.
Как проверить жёсткий диск в линукс?
А вот тут это оказывается не так-то просто, как в Windows, даже в 21 веке программисты самой лучшей ОС и файловых систем так до сих пор и не удосужились создать вменяемые утилиты для дефрагментации.
Ну что же, деваться некуда.
Чтобы проверить жёсткий диск и файловую систему в линукс, вам нужно загрузиться с LiveCD, т.к. примонтированную файловую систему проверить нельзя, а если обойти это ограничение, то такая проверка может привести к повреждению данных на жёстком диске.
Берём любой дистрибутив Jeder Linux, загружаемся в режиме LiveCD.
Открываете Терминал.
Меню ->Стандартные->Терминал
В терминале вводите команду:
sudo fsck -nvf /dev/ sda1 |
Вместо sda1 подставьте наименование раздела вашего жёсткого диска в ОС
Чтобы узнать наименование раздела жёсткого диска, откройте на вашем системном жёстком диске файл etc/fstab и там запомните наименование разделов вашего жёсткого диска.
Вот такие результаты мне выдала проверка жёсткого диска ноутбука:
180248 inodes used (1.18%) — количество и процент использованных инод 562 non-contiguous files (0.3%) – количество и процент фрагментированных файлов 142 non-contiguous directories (0.1%) — количество и процент фрагментированных папок # of inodes with ind/dind/tind blocks: 9963/201/0 3593985 blocks used (5.89%) — количество и процент использованных блоков 0 bad blocks — количество бэд-блоков 1 large file — количество больших файлов 143360 regular files — количество постоянных файлов Как видим, на моём жёстком диске фрагментация составила 0,3% от всех файлов и это при том, что всё, что делалось на ПК, это были скопированы две папки с флешки, а затем из них были сделаны образы с играми и программами для будущих дистрибутивов Jeder Linux. На втором жёстком диске, где я собираю системные образы Jeder Linux, фрагментация составляла уже 4,3%. К слову, на жёстком диске с Windows XP, забитом файлами и прочим мусором, где дефрагментация не делалась уже два года, тогда же была поставлена и винда, фрагментация составляет 7%. Однако, делать красноглазые выводы – вот, а в винде файловая система засирается больше – не получится, т.к. интенсивность использования дисков в обеих ОС у меня разная и в винде она больше, тем более, что на ноуте с Windows 7, который используется как игровая приставка и видеоплеер – поиграть в онлайн-игры, посмотреть кино, фрагментация составляет 0%. Итак, факт – фрагментация в линукс есть! Значит программы-дефрагментаторы ему нужны и чем чаще вы пользуетесь вашей системой, перемещаете файлы и прочее, тем больше фрагментация. Зачем делят диски в Linux? Т.к. вменяемых утилит для обслуживания диска в линукс нет, это сказывается и на принципах работы и установки системы на жёсткий диск. Именно! Это не из-за заботы о вас, повышения безопасности и прочего, а из-за того, что, когда вы начнёте использовать систему на полную, вы столкнётесь с фрагментацией и падением производительности файловой системы. Я ярый противник деления жёсткого диска на части, т.к. это приводит к ускорению износа поверхности диска и повышает риск повреждения данных при отключении электричества, потому я при установке openSUSE на отдельный раздел кидал только файл подкачки, а Jeder Linux 10.10 на моём ноутбуке вообще работает без файла подкачки – на одном разделе, который занимает весь жёсткий диск, поэтому я не первый раз сталкиваюсь с проблемой фрагментации данных в линукс и падением производительности системы от этого. Вынос по умолчанию файла подкачки и директории home на отдельные разделы затыкает проблему фрагментации данных в дистрибутиве, пусть не очень красиво, но порой очень эффективно, особенно если мы ничего не делаем на ПК, но с ростом количества и объёмов данных на жёстком диске – в первую очередь использование компьютера для бытовых целей, работе с мультимедийными данными, всё чаще сталкивается пользователь линукс с проблемой фрагментации. Хочется тут в духе красноглазика крикнуть – вот утверждают, что винда полна костылей – но извиняйте – деление на разделы, чтобы избежать фрагментации данных и потери производительности – это тогда вообще что? Оптимизация скорости работы файловой системы ext3/4 Но вопрос дефрагментации в линукс не единственный из-за кого производительность системы падает. Все дистрибутивы в линукс настроены так, чтобы работать с файловой системой в защищённом режиме, т.к. вопрос потери данных в линукс до сих пор не решён. Всего в линукс существует три режима работы с файловой системой и данными: Третий режим рекомендуют для ноутбуков, т.к. у них есть аккумулятор, а значит проблема отключения питания для них не шибко страшна, также этот режим рекомендуют для экономии энергии и если у вас SSD диск в системе (SSD имеют ограниченное количество циклов записи/перезаписи), т.к. количество операций записи/перезаписи уменьшается, а значит уменьшается износ диска и потребление электроэнергии. По моим наблюдениям также этот режим снижает потребление оперативной памяти в системе на 5-10Мб, ускоряет загрузку и завершение работы ОС. Чтобы переключить вашу файловую систему в один из трёх режимов, загрузитесь с LiveCD вашего дистрибутива, откройте терминал. В терминале введите: 1. Журналируемый режим:
2. Журналирование по требованию:
3. Режим обратной записи:
Вместо sda1 подставьте наименование раздела вашего жёсткого диска в ОС Также может повысить производительность вашей файловой системы индексация содержимого папок. В терминале для включения режима индексации для новых папок на диске введите команду:
А для включения индексации для уже существующих папок введите:
Как я уже написал, на большом ПК у меня на отдельном диске только файл подкачки и сейчас на нём 4,3% фрагментированных данных. А как у вас дела с фрагментацией и перевели ли вы вашу файловую систему в более быстрый режим работы? Я сильно “плаваю” в этом вопросе. Несколько лет назад я ходил на курсы по настройке операционных систем и обслуживанию ПК. Там советовали разбивать диск на разделы – под систему, под документы,под музыку и видео, под архив и т.д. И долгое время у меня было три раздела. Я так понимаю, что если это вредно, то вредно в любой системе… В том числе WinXP.У меня диск на 100 ГБ (ну фактически меньше).На эту тему довольно противоречивые мнения.С одной стороны, на больших дисках дефрагментация может происходить долго, а с другой – когда мало места на каком-то разделе, то быстрее растёт фрагментация. Тёмный лес. Пробую работать с одним большим диском C. Надоело следить за тем, сколько места на каком разделе осталось и распределять по разделам информацию. Вместо, казалось бы, порядка получалась неразбериха – даже дублировались одни и те же файлы на разных разделах. Единственное очевидное удобство разбиения – можно создавать архив системного диска каким-нибудь “Акронисом”, и восстанавливать в случае чего.
Очень лознавательно,-вопрос на который не мог найти на Линуксячих ресурсах!Ждём новую статью с нетерпением!Благодарю! Статья очень интересная. Спасибо. Сам столкнулся с данной проблемой буквально на днях. Читал, еще когда перебирался с Win XP на Linux, что дефрагментацию дисков в Linux устранить невозможно. Думал, что появилось за это время чего, стал искать и “попал” сюда.
Убунту стоит уже год постоянно обновляется и используется активно, раздел хомы постоянно подвержен перезаписи файлов, а не тупо для хранения, при чем заполнен почти всегда полностью в итоге имеется дефраг: корень 0.1% хома 0.6% Скажите что я делаю не так почему у меня такой маленький дефраг, что мне надо сделать что бы увидить хотябы ваши 4.3%
К сведению автора статьи: Разработчики Windows 7 включили дефрагментацию дисков в планировщик и она проходит по расписанию.
Бред сивой кобылы.
Совет: Чаще заглядывай на опеннет.
“для чего же тогда делят диски в линукс” Уважаемый jeder обязательно отвечу. Пока нет времени.
времени нет? Тяжелый ты человек.
вы в этой статье дали мне ответ на давно мучивший меня вопрос-чего это авторазбивщик в линуксе делает несколько разделов?для чего это нужно?теперь я знаю ответ!вообще то я сам дефрагментацию на виндовс делаю в среднем раз в месяц.надо будет поискать подобные ответы на мак ос.кстати интересно ваш сайт отображается на сафари в хакинтоше-сейчас смотрю именно этим браузером.жаль только что в мак ос настройки клавиатуры немного иные чем на виндовс
Дефрагментацию на Windows надо делать тогда, когда замечаете, что видео начинает запинаться или аудио, или папки с большим количеством файлов долго прорисовывают своё содержимое. В остальных случаях, даже самых тяжёлых, когда файлы записываются и удаляются с жёсткого гигабайтами в месяц, дефрагментацию надо делать не чаще одного раза в 6-7 месяцев. Несколько разделов под систему делается по нескольким причинам: повышение безопасности, повышение надёжности, повышение быстродействия. Такая разбивка на разделы обычно называется серверной, но может пригодиться десктопщикам
Речь в статье рекомой – о настройке файловых систем под линукс. Я угадал?))
На винде у меня умирала система не раз и дохли файловые системы и один жёсткий сдох – настоящее разрушение поверхности блина. На другом – были постоянные софтбэды – приходилось чинить викторией время от времени. Сейчас этот диск под линуксом – с тех пор ни одного сбоя. Восстановление? Я в нём наловчился из-за винды. Под линуксом мне восстановление ещё ни разу не понадобилось и вряд ли понадобится. На крайний случай есть dd и dd_rescue и testdisk.
Я не смог пройти мимо такого. Первое что бросилось в глаза, автор никогда не восстанавливал данные с дисков скорее всего только теория и то извращённая. Линукс пишет данные как попало при этом восстанавливать данные тяжелей это связано именно с тем что данные находятся в разнобой это связано с тем что дефрагментацияю на нём настраивать сложнее да и мало кто это делает это же линукс у него ничего не ломается.
не знаю нужна ли дефрагментация на линуксе но к примеру в мак ос эта программа есть и ею пользуются(сам тоже иногда пользую)так же как и на виндовс.Но если человек считает что ему это не нужно-не стоит его ни убеждать ни навязывать ему что то иное.Хотя в своих поисках я нашел что на линуксе тоже ведутся разработки дефрагментатора и даже есть один в репозитариях.Отсюда я все таки думаю что Jeder все таки прав и в линуксе тоже есть необходимость в данной программе может быть в меньшей мере но все таки.Может линукс и лучше пишет на жесткий свои файлы и им считай и не нужна дефрагментация но есть закачки и торренты и там бывают накладки с закачкой(ошибки)и тогда я думаю рано или поздно даже линуксу нужна будет эта процедура-может через полгода может через 2 года но понадобится.Убунта кстати последние версии все таки обзавелась дефрагментатором а это об чем то да значит-там он в скрытой папке но есть в наличии
ОБМ!
Я сказал – “под виндой”, и подозрения у меня были на борьбу вирусов с антивирусами), впрочем, мною и инициированную – так что в какой-то мере – я сам их гробил.))
Ну я свою тольку добавлю, дефрагментация требуется не ОС а железу и исходя из этой логики дефрагментация нужна там где на железяку производиться запись, давным давно году в 95 когда я пошёл в школу, а мой старший брат учился на 3 курсе университета, он постоянно давал читать мне книги по типу Windows 95 или windows 3.11,(Линуксовых просто не было на русском) дак вот там были встроены системы дефрагментации, и в досе они тоже были, да что там и в юниксе тоже были средства дефрагментации. Так вот к чему я вёл в этих книгах был отдельный раздел по дефрагментации и был там как правильно подготовить диск к установке, цитата “первыми на диск нужно записать те файлы которые будут храниться дольше”, и это позаимствовано у Юникс систем. Исходя из этого мы приходим к тому, что дефрагментация у нас требуется вне зависимость от используемой ОСи или файловой системы, а от загруженности жёсткого чем больше файлов перезаписывается на жёсткий тем чаще дефрагментация.
Я просто процитировал то, что было написано в книге, этот раздел идёт после установки ОС, очень интересная книга даже просто для сравнения того, что было тогда инновационным и, что сейчас и как прогрессировала система, там даже были отсылки к Юниксу было указано что позаимствовано, у той или иной системы.
Jeder, почему вы постоянно пытаетесь перейти на личности или оскорбить?
– частенько я не мог понять почему винда делает это и именно этим способом.
В начале 90х было мало технической документации с официально одобренными переводами, поэтому я не удивлюсь, если даже там и грамматические ошибки есть.
Jeder вы как всегда правы-там именно крипт перезаписывающий файлы с места на место.Но есть и дефрагментатор-недоделанная и косячная разработка которая еле дышит выпустив какой то непонятный дефрагментатор неспособный похоже даже нормально работать.Я беседовал с некоторыми людьми неплохо разбирающимися в линуксе и они прямо говорили что все таки дефрагментатор необходим-им приходится идти на всякие ухищрения для работы на линуксе после примерно полугода юзания линукса.Самый простой способ-перенос папок на другой диск или раздел и последующее форматирование освобожденного места с последующим возвратом папок и файлов на прежний раздел.Хотя я не специалист но думаю это временная мера и надолго ее вряд ли хватит.Опровергните или дайте подтверждение моим размышлениям
Можно бесконечно долго обсуждать плюсы и минусы EXT, но огромная просьба – не забывайте включать в свои будущие дистрибутивы поддержку JFS. http://www.vleu.net/shake/ единственная, которую нашел, рабочая утилита дефрагментации под линух. может кому и сгодится. )
Возможно, я не там искал но пока ничего работающего под Linux для вытягивания файлов не нашел (Testdisk Gparted не дали результата на реальных убитых блоках – они их даже не заметили (после восстановления пришлось отрезать часть диска) – JFS разделы еще умудрялись там как-то выживать, но вечного нет ничего).
Спасибо за совет.
Вообще что написано уже неактуально.
Приветствую!
Где-то попадалось, что разработчики Unix ввели такое разбиение на разделы из-за форс-мажорных костылей: сначала сохраняли свои программы в bin, когда место кончилось, подключили новый диск как /sbin, следующий – /usr/bin и т.д. Когда система стала распространяться, а дисковое пространство выросло, эти разделы просто оставили как есть.
Да это ты погнал. Разделение на разделы — вещь крутая.
Источник |