Настройка системы



Скачать 79.53 Kb.
Pdf просмотр
Дата13.11.2016
Размер79.53 Kb.
Просмотров153
Скачиваний0
ТипУчебник
www.linuxformat.ru
84
LXF6(80) ИЮНЬ 2006
УЧЕБНИК
Ускорение загрузки
НАСТРОЙКА СИСТЕМЫ
Ускорение загрузки системы
Поковырявшись в настройках, вы сможете вдвое уменьшить время загрузки вашей машины, утверждает Майк Сондерс.
Одна из популярнейших жалоб пользователей Linux – жало- ба на мучительно долгую загрузку. На современной машине обычно приходится ждать 45–60 секунд, а если вы исполь- зуете не самое новое оборудование, это время может возрасти до двух и более минут. Правда, препятствие невелико – благодаря абсолютной надежности Linux сбои возникают редко и нет нужды перезагружаться так часто, как под другими ОС. Но медленность загрузки досаждает пользователям машин в стиле «включил и работаю», вроде ноутбуков; и если вы хотели поберечь энергию и не держать машину все время включенной, то за время ожидания вы сильно усомнитесь в своей эко- логической добродетели.
Скорость загрузки не является специфичной проблемой индиви- дуальных компьютеров – для web-сервера, если вы хотите уменьшить время недоступности после обновления ядра, это тоже чрезвычайно важный фактор. Недоступность, например, сайта по продаже товаров в течение 30 секунд запросто разгонит покупателей и превратит потенци- альные дензнаки в нахмуренные брови. К счастью, причину медленной загрузки обычно легко определить: дело в том, что многие дистрибу- тивы пытаются выполнять всё. Коробочная версия дистрибутива вроде
Fedora охватывает пользователей всех мыслимых типов, но если вы знаете, чего хотите, то лишние службы нетрудно отсечь.
На этом уроке мы займемся специальными настройками и улуч- шениями, которые вы сможете приложить к своей системе Linux для сокращения времени загрузки, чтобы приступать к работе с наивозмож- ной быстротой. Приведенные советы работают независимо; вам не обя- зательно следовать всем, и если какой-то покажется сложным, можете его пропустить. Каждый совет также помечен степенью сложности.
Даже если вы замахнетесь на мероприятия для особо продвинутых, при наличии резервной копии стартовых скриптов вам ничего не грозит
(как сделать такую копию, показано ниже во врезке «Резервируем»!).
Приступим...
Изменения, которые мы внесем, повлияют на стартовые скрипты вашей системы Linux, расположенные в каталоге /etc, поэтому разум- но будет прежде всего сохранить их копию. Откройте окно терминала, войдите как суперпользователь и введите cp -R /etc /old-etc
Конфигурационные файлы вашей системы скопируются из катало- га /etc в каталог /old-etc. Если что-то пойдет не так, вы сможете перекинуть содержимое /old-etc обратно в ваш каталог /etc, переза- грузиться, и все придет в норму. Если вы предприняли шаги, описан- ные в данном учебнике, и все работает корректно, каталог /old-etc можно смело удалять.
Не паникуйте, если вы допустили ошибку и появились проблемы при загрузке – вы можете можете запустить Live-дистрибутив вроде
Damn Small Linux (присутствующий на DVD-приложении), подмонти- ровать ваш жесткий диск и скопировать /old-etc из-под него.
РЕЗЕРВИРУЕМ!

InitNG 0.5.5

Bootchart 0.9
НА ДИСКЕ
www.linuxformat.ru
LXF6(80) ИЮНЬ 2006 85
УЧЕБНИК
Ускорение загрузки
УБИРАЕМ ЗАДЕРЖКУ ЗАГРУЗЧИКА
«КРУПНЫЕ ДИСТРИБУТИВЫ
ЗАПУСКАЮТ 15 И БОЛЕЕ СЛУЖБ, И
КАЖДАЯ УДЛИНЯЕТ ЗАГРУЗКУ.»
ОТКЛЮЧАЕМ НЕНУЖНЫЕ СЛУЖБЫ
Этот совет является наиболее эффективным способом умень- шения времени загрузки – к тому же у него низкий рейтинг сложности!
При старте, ваша система запускает некоторое количество неинтерактив- ных программ (называемых службами – services), помогающих настроить дистрибутив или выполняющихся в фоновом режиме, пока вы работаете с машиной. Например, службы udev и hotplug запускаются при загрузке, но вступают в дело, только когда вы подсоединяете к своей машине уст- ройство. Или, если на вашей машине работает сервер, например Apache, ваш стартовый скрипт запускает его во время загрузки.
Некоторые большие дистрибутивы запускают 15 и более служб, и каждая добавляет ко времени загрузки несколько секунд (а то и боль- ше). Некоторые из них важны для корректной работы вашей системы, но большинство можно отключить без вредных последствий. Например, ваш дистрибутив при загрузке может запускать службу PCMCIA/
Cardbus – очень нужную в ноутбуках, но напрасно съедающую время на настольных компьютерах, потому что скрипт опрашивает несущест- вующие устройства. Аккуратно отключив ненужные службы, вы можете уменьшить время загрузки примерно на 20 секунд.
Труднее всего определить, что именно подлежит пресечению. По традициям UNIX, инициализационные скрипты Linux имеют краткое имя, мало что говорящее обычному пользователю. К счастью, те же традиции
UNIX означают, что это просто текстовый файл, содержащий текстовые комментарии, так что вы можете самостоятельно изучить каждый скрипт и решить, нужен он вам или нет. Все скрипты обычно хранятся в каталоге
/etc/init.d – заглянув в него, вы увидите наборы исполняемых скриптов
Bash. Ниже перечислены службы, без которых многие могут обойтись:

mountnfs, nfs и portmap Они используются для сетевой фай- ловой системы (NFS) вместе с утилитой поддержки Portmap. Если вы не монтируете каталоги с других Linux/Unix машин, расположенных в сети, или используете Samba для доступа к Windows-машинам, можете их отключить.

pcmcia Эта служба тратит время на поиск несуществующих уст- ройств. Если вы работаете не на ноутбуке, то она вам не нужна.

apmd Система управления питанием, используемая в старых ноутбу- ках (то есть до 2002 года выпуска). Я бы оставил ее включенной, если вы не уверены, что ваша машина поддерживает новый стандарт ACPI.

lvm Система управления логическими томами (Logical Volume
Manager), для организации разделов диска. Большинство пользовате- лей настольных компьютеров запускают ее разве что в процессе уста- новки дистрибутива, на этапе создания разделов.

joystick/gpm Службы джойстика и мыши в текстовом режиме.

mdadm/mdadm-raid Скрипты администрирования составных уст- ройств. Если вы не используете RAID-массив (для настольных машин это редкость), отключите его.

sshd Для удаленных подключений. При отсутствии удаленного досту- па к вашей машине службу можно выключить.

mysql Сервер баз данных. Некоторые дистрибутивы по умолчанию включают его, но коли вы не администратор базы данных и не разра- ботчик – зачем он вам?

apache, sendmail или postfix Интернет-службы для web и поч- ты. Если они вам не нужны, то их отключение может быть очень эффективным.
Следует также просмотреть и другие скрипты (откройте их при помо- щи less или текстового редактора) и почитать комментарии в самом их начале, чтобы понять, что они делают. Если становится ясно, что вы не используете ни одну из возможностей скрипта, то его можно отключить.
Отметим, что файлы rc и rcS
[или аналогичные – rc.single, rc.sysinit и т.п. – прим.ред.]
критичны для правильного включения и выключения машины, и их трогать не нужно!
Приняв решение, что вам нужно, а что нет, можно приступить к отключению сервисов. Выполнение этой операции зависит от дистри-
Yast в SUSE включает полезный модуль, который позволяет
найти и отключить ненужные программы.
Сложность совета: простой
>>
Если у вас мультизагрузочная система, и вы не покинули компьютер, едва нажав кнопку пуска, вы, скорее всего, коршуном броса- етесь на клавишу
Enter
, как только появится меню выбора ОС. Но если, включив компьютер, вы идёте попить чайку (обычный способ употребить ожидание с пользой), ваша машина будет простаивать, пока загрузчик не выберет ОС автоматически. Многие дистрибутивы по умолчанию устанавливают задержку в 20–30 секунд перед загрузкой ОС, и если загрузка происходит в ваше отсутствие, лучше убрать эту задержку.
Первое, что нужно сделать – это определить используемый загруз- чик. Поищите файлы с именами /etc/grub.conf, /boot/grub/grub.conf или /boot/grub/menu.lst – если вы нашли один из них, то вы исполь- зуете Grub и можете изменить конфигурационные файлы, от лица супер- пользователя (root). Откройте найденный файл в текстовом редакторе и поищите строку timeout
, что-то вроде
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 30
Здесь установлена задержка 30 секунд перед стартом операционный системы по умолчанию (указана в строке default
, которая расположе- на прямо под рассматриваемой). Измените это значение на, скажем, 5 секунд – вполне достаточно, чтобы, сидя за компьютером, увидеть меню и выбрать ОС, и не слишком задерживает неконтролируемую загрузку.
Между тем, некоторые дистрибутивы используют загрузчик Lilo, чьи настройки обычно находятся в /etc/lilo.conf. Найдите строку timeout
(в которой указано timeout = 20
или вроде того) и установите число 5 или меньше. Завершив изменения, запустите /sbin/lilo (от имени суперполь- зователя) и обновите загрузчик. В следующий раз, когда вы предоставите машину самой себе, меню загрузки исчезнет значительно быстрее.
Сложность совета: простой
www.linuxformat.ru
86
LXF6(80) ИЮНЬ 2006
УЧЕБНИК
Ускорение загрузки
>>
СНИЖАЕМ ПАУЗЫ ЗАСЫПАНИЯ
Жизнь инициализационных скриптов дистрибутива тяжела: они должны обеспечить работу огромного количества оборудования, различных типов пользователей и всевозможных программ, которые должны быть запущены во время загрузки. Поэтому при исследовании стартового скрипта вы найдете несколько хитростей и уловок. Из них наиболее распространены «спячки» (sleeps). Да, во время загрузки дистрибутив несколько раз фактически засыпает на пару секунд, чтобы убедиться, что оборудование инициализировано и другие программы определенно заработали.
В скриптах это обозначено в виде вызовов sleep(1), утилиты команд- ной строки, которая ничего не делает, кроме задержки выполнения на указанное время. (Откройте терминал и введите sleep 5 ; ls – список файлов будет выведен после пятисекундной паузы). Например, перед настройкой сети стартовый скрипт должен сначала убедиться, что сете- вой адаптер PCMCIA/Cardbus инициализирован, и он засыпает на пару секунд, чтобы не обгонять события.
Многие из этих задержек являются излишней предосторожностью – если ваша система хорошо справляется со стандартным оборудованием, вы можете без опаски убрать их. Чтобы их найти, откройте терминал, войдите как суперпользователь (su или sudo bash) и введите cd /etc/init.d grep sleep *
Мы входим в каталог стартовых скриптов (/etc/init.d) перечисля- ем файлы, содержащие вызовы sleep
(вместе с временем задержки).
По именам файлов определите, программы какого типа они запускают, затем откройте их в редакторе, найдите строки с командой sleep и уда- лите числа. Вряд ли стоит менять все значения на ноль, но вы спокойно можете уменьшить их вдвое (сгодится даже 0.5), перезагрузиться и про- верить, что все работает нормально.
Если у вас есть время, я бы рекомендовал делать изменения в пакетном режиме, чтобы облегчить возврат к предыдущим значениям, если что-то стартует некорректно. В больших дистрибутивах, имеющих множество стартовых скриптов, сокращение задержек может привести к уменьшению времени загрузки на 10–15 секунд. И ваш дистрибутив не потребует снотворного взамен!
бутива. В SUSE откройте утилиту конфигурирования Yast, перейдите в
System > System Services и отключите выбранное в списке служб
(services). В Mandriva запустите Центр Управления Mandriva, перей- дите в Службы (Services) и снимите выделение с тех служб, кото- рые вам не нужны. Fedora Core и ее производные содержат утилиту
Службы (Services) в меню Рабочий стол > Системные утилиты >
Настройки сервера (Desktop > System Tools > Server Settings).
Если вы работаете в Debian или одной из его производных (Ubuntu,
Knoppix и иже с ними), запустите терминал, войдите как суперпользова- тель (root) и наберите:
update-rc.d -f <имя службы> remove
Если ни один из перечисленных способов у вас не работает, остается метод грубой силы: просто-напросто убрать стартовые скрипты вручную, позаботившись о возможности их восстановления на случай ошибки.
Войдите как суперпользователь и в терминале наберите mv /etc/init.d/<имя скрипта> где <имя скрипта> – имя службы, которую вы хотите отключить
(например, pcmcia).
Команда перенесет скрипт в ваш домашний каталог, и он не будет запускаться при загрузке; метод несложный, но может сопровождаться ошибкой ‘доступ запрещен’ (‘permission denied’) во время загрузки, означающей только то, что дистрибутив не может найти скрипты – не опасно, но нудно. Так что уж лучше пользоваться инструментами вашего дистрибутива.
Боитесь InitNG? Сокращение числа впаданий в спячку почти не
хуже, причем безопаснее!
«НЕ РАЗ ВО ВРЕМЯ ЗАГРУЗКИ
ДИСТРИБУТИВ ФАКТИЧЕСКИ ЗАСЫПАЕТ
НА ПАРУ СЕКУНД…»
ТОНКАЯ НАСТРОЙКА СТАРТОВЫХ СКРИПТОВ
Большинство советов этого урока годятся практически для всех дистрибутивов и типов установки (настольная, сервер и т.д.), но есть изменения, которые применимы только для определенных конфи- гураций. Если вы досконально знаете устройство своей системы и все процессы, необходимые для вашей работы, вы можете просеять старто- вые скрипты сквозь сито и отфильтровать ненужные строки.
Выполните команду top в терминале после загрузки системы и отметьте все процессы, которые вам явно не нужны. Затем в каталоге
/etc/init.d при помощи grep вы можете найти строки, их запускающие, и превратить эти строки в комментарии.
Довольно трудно определить, что происходит во время загрузки и какое время отнимает каждая часть этого процесса, особенно если пока- зана только графическая заставка или некоторые строки в текстовом режиме мелькают слишком быстро. В каталоге /var/log найдите файлы messages, syslog и daemon.log с подробным описанием происшед- шего во время загрузки (каждая запись в файле имеет отметку времени, которая поможет определить виновников задержки).
Если ваша система в полной гармонии с вами и вы не планируете подключение нового оборудования или драйверов ядра, ликвидация стадии загрузки depmod сбережет еще пару секунд. Это утилита, которая генерирует зависимости модулей ядра; ее незачем запускать при каж- дой загрузке, если вы не добавляете драйвера. Выполните поиск depmod в /etc/init.d (например, grep depmod /etc/init.d/) и закомментируйте строки, где она запускается, проставив символ ‘#’ в самом начале.
Отследите перекрытия функций в скриптах. Например, в Ubuntu скрипт checkroot.sh содержит секции, связанные с управлением пита- нием (особенно заметные, если система работает от блока питания). Но если у вас отключены APM/ACPI, то и не нужно выполнять проверки, связанные с питанием, можете их закомментировать. Здорово! Такие пересечения часто встречаются в стартовых скриптах дистрибутива, так что полезно пройтись по ним, определяя назначение всего запускаемого и оценивая его необходимость.
Вы можете обнаружить, что некоторые части скрипта или служба замедляют загрузку, но их функциональность важна и вы не хотите
Сложность совета: средний
Сложность совета: продвинутый
www.linuxformat.ru
LXF6(80) ИЮНЬ 2006 87
УЧЕБНИК
Ускорение загрузки
ЗАМЕНА СТАРТОВЫХ СКРИПТОВ
Сложность совета: продвинутый
Если вы прочли первый шаг, вы видели, что процесс загруз- ки Linux включает в себя программы фоновых служб, неинтерактивно настраивающих машину. Однако здесь есть проблема: некоторые скрип- ты зависят от других, и при попытке что-то изменить возникает путаница.
Например, скрипт, запускающий доступ к файлам и принтерам Windows через Samba, должен убедиться, что сетевая карта инициализирована другим скриптом. Поэтому в настоящее время большинство дистрибу- тивов Linux запускают скрипты один за другим, в строго определенном порядке, чтобы все необходимое наверняка было запущено.
Но это же жутко неэффективно: почему бы не выполнять несколько скриптов сразу? К примеру, пока сетевой скрипт ожидает ответа DHCP, можно заняться звуковой картой.
Этот подход называется параллельной инициализацией, в противо- вес последовательному запуску инициализационных скриптов, исполь- зуемому практически в каждом дистрибутиве. При запуске служб все еще нужен порядок – но он предусматривается таким, чтобы ЦП и жес- ткий диск подолгу не простаивали. Распараллеливание может сократить время загрузки больше чем вдвое.
InitNG предоставляет такую возможность. Этот проект описан в рубрике HotPicks, и хотя он все еще находится в срединной стадии раз- вития, многие давние пользователи Linux говорят, что он действитель- но помогает. InitNG заменяет ваши стартовые скрипты параллельными эквивалентами, чтобы ресурсы не оставались праздными, и это приво- дит к умопомрачительно быстрой загрузке. Вы можете обнаружить это приложение в разделе Система на нашем диске или найти последнюю версию по адресу
http://InitNG.thinktux.net
. Скачайте tar-архив и уста- новите, как показано ниже (понадобится перезагрузка):
tar xfvz InitNG-0.5.5.tar.gz
./configure && make install
Отредактируйте конфигурационный файл загрузчика (т.е. /boot/
grub/menu.lst или /etc/lilo.conf), добавив init=/sbin/InitNG к строке образа ядра. Это обеспечит старт вашего дистрибутива со специальной
InitNG версией init (основной процесс Linux), который в свою очередь начнет загружать службы. Строка в настройках вашего загрузчика долж- на походить на kernel /boot/vmlinuz-2.6.10-5-686 root=/dev/hda1 ro init=/sbin/InitNG
(Если вы используете Lilo, после изменений запустите /sbin/lilo, для обновления загрузчика). Теперь, перекреститесь и перезагрузитесь; если все верно, то появится сообщение о загрузке. Внимательно следите за всеми сообщениями об ошибках и предупреждениями: InitNG с каж- дым выпуском становится все более гибким, но пока не справляется с особо трудными службами. Если вы обнаружите, что что-то не запусти- лось, введите ngc -s и посмотрите, что предположительно запущено и работает. Чтобы служба запускалась при каждой загрузке, используйте ng-update add type/service
За подробной информацией обратитесь к документации на прилага- емом диске. Утилита InitNG имеет много опций для конфигурирования и администрирования, так что она заслуживает опробования всех ее воз- можностей. Если при старте возникают проблемы, вы можете удалить строку init=/sbin/InitNG в файле настройке загрузчика (см. выше), а также задать вопросы на полезном форуме InitNG по адресу
http://
forum.InitNG.thinktux.net
Теперь ваш ПК должен быть быстрее ниндзя – ура!
LXF
отключать их навсегда. Например, загрузка тормозится, пока сетевая карта пытается получить DHCP-отклик от сервера – но не отказывать- ся же напрочь от сети! Для решения подобных проблем просмотрите каталоги /etc/init.d и /etc/dhcp3 и определите, где вызывается DHCP; затем попробуйте добавить амперсанд (&) после строки его вызова, что- бы запускать его в фоновом режиме. Перезагрузитесь, и, надеюсь, ваша карта будет сконфигурирована в фоновом режиме и позволит другим стартовым скриптам выполняться беспрепятственно!
Live-дистрибутивы вроде
Damn Small Linux (см. стр. 15) –
это реаниматоры,
помогающие восстановить
исходные скрипты, если что-
то пошло не так.
Как утверждалось в начале этого урока, сохранение резервной копии вашего каталога /etc является хорошей идеей на случай, если что-то пойдет не так. Так как все изменения вы производите в /etc, наличие его неизменяемой копии в /old-etc жизненно важно для исправления проблем.
А вдруг вы понаделаете такого, что система вообще не загрузится? Не бойтесь: вам помогут Live-дистрибутивы! Для восстановления вашего исходного каталога /etc вы можете взять практически любой Live-дистрибутив, предоставляющий доступ к терминалу или командной строке – даже Games Knoppix с диска- приложения к этому номеру. Загрузите Live-дистрибутив с вашего
DVD, откройте терминал и смонтируйте ваш жесткий диск командами mkdir /mydrive mount -t ext3 /dev/hda1 /mydrive
Ваш диск станет доступен в каталоге /mydrive. (Возможно, придется заменить ‘ext3’ на ‘reiserfs’ если вы используете файловую систему Reiser, а ‘hda1’ может стать ‘hda2’, если вы установили Linux во второй раздел, ‘hda3’ – если в третий, и т.д.)
Затем введите mv /mydrive/etc /mydrive/broken-etc mv /mydrive/old-etc /mydrive-etc umount /mydrive и перезагрузитесь. Ваш исходный
/etc восстановлен, а проблемный /etc, сорвавший загрузку, помещен в /broken-etc.
ИСПРАВЛЯЕМ ПРОБЛЕМЫ
Вы можете оценить эффект от применения описанных шагов при помощи простого секундомера, но он не покажет вам, где остались узкие места. Полезной утилитой, позволяющей получить больше информации о процессах загрузки, является Bootchart (
www.bootchart.
org
), генерирующая графики ваших загрузочных процессов, где показана степень использования процессора и жесткого диска. После установки Bootchart вы сможете отследить провалы и паузы в ваших стартовых скриптах, сравнивая графики при каждой загрузке. На web-сайте или в разделе Системы/
Диаграммы загрузки на нашем диске-приложении имеются исходные тексты и документация.
Ну вот, все закончилось! Вы нашли другие пути снижения времени загрузки? Или придумали хитрый трюк, экономящий еще несколько секунд? А может, зашли в тупик, и из-за сделанных изменений время загрузки на самом деле увеличилось? Присоединяйтесь к нашему форуму по адресу
www.linuxforum.ru
Bootchart представляет ход загрузки вашей
системы графически.
ДРУГИЕ РЕСУРСЫ


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал