banner banner banner
Cуперкомпьютеры: администрирование
Cуперкомпьютеры: администрирование
Оценить:
Рейтинг: 0

Полная версия:

Cуперкомпьютеры: администрирование

скачать книгу бесплатно


-i – интерактивное копирование (с требованием подтверждения, если объект назначение уже существует );

-f – без выдачи сообщений;

-r – рекурсивное копирование каталогов вместе с содержимым;

-p – копирование с сохранением атрибутов файлов (прав доступа, времени модификации).

Примеры:

cp file1 file2 – будет создана копия файла file1 в файле с именем file2;

cp file1 dir2 – будет создана копия файла file1 в каталоге dir2 (т. е. с именем dir2/file1);

cp -r dir1 dir2 – будет создана копия каталога dir1 в каталоге dir2;

cp file1 file2 file3 /tmp – копирует файлы с именами file1, file2, file3 в подкаталог tmp корневого каталога. Это можно выполнить командой:

Команда cat объединяет файлы и выдаёт их на стандартный поток вывода. Если аргумент файл отсутствует, то команда cat будет принимать входной поток из стандартного файла ввода (клавиатуры). Поскольку команда работает со стандартным файлом вывода (терминалом), то чаще всего она используется для просмотра на экране содержимого файла. Не рекомендуется выдавать на экран бинарные файлы.

cat ls.txt – выводит содержимое файла с именем ls.txt на терминал;

cat ls1.txt ls2.txt ls3.txt – по очереди выводит на терминал содержимое файлов ls1.txt, ls2.txt, ls3.txt;

cat ls1.txt ls2.txt ls3.txt > lsall.txt – объединяет три файла в один. При этом старые файлы сохраняются. Если файл lsall.txt уже существовал, то он затрётся новым содержимым. Можно дописать в конец файла, если использовать для перенаправления знак >> (два знака «больше»).

Команду cat можно использовать для создания файла:

cat > ls.txt – все набранное на клавиатуре будет записано в файл ls.txt. Оборвать ввод можно сочетанием клавиш Ctrl-D.

Команда cat выдаёт все содержимое на экран. Если файл большой, то на экране можно будет увидеть только последние строки.

Для просмотра текстовых файлов порциями можно напрямую использовать команды:

• more file.txt

• less file.txt

Команда less содержит большой набор внутренних команд для перемещения по файлу, поиска контекста и даже редактирования:

Таблица 10: некоторые клавиатурные команды less

tail [опции] файл — просмотр конца файла. По умолчанию выдаётся 10 последних строк. С помощью опций можно начать просмотр с любой позиции.

Опции:

-n number – сколько выдавать строк;

-r number – отображение в обратном порядке;

-f – непрерывная выдача файла по мере его заполнения.

Прерывание интерактивной выдачи комбинацией Ctrl-С.

grep [опции] строка [файл][файл]… – поиск контекста «строка» в указанных файлах.

Опции:

-i – поиск без учёта регистра;

-n – отображать номера строк, содержащих контекст;

-v – отображать строки, не содержащие контекста.

find [опции] каталог выражение – рекурсивный поиск файлов в указанном каталоге по различным атрибутам, таким как имя, размер, время модификации, права доступа.

Выражения:

-name filename – поиск файла с именем filename. Возможно использование шаблонов, но тогда надо брать их в кавычки 'test*' либо экранировать символы шаблона test\*;

-size [+|-]number – поиск файлов с заданным размером, превышающим его (+) или меньшим (?). Размер указывается в блоках по 512 байт;

-atime number – поиск файлов, к которым происходил доступ number суток назад;

-mtime number – поиск файлов, которые были модифицированы number суток назад;

-exec command \{\} \; – выполнить команду command над списком файлов, найденных командой find. Здесь выражение «{}» будет заменяться именем найденного файла, а ';' означает конец команды. Так как эти символы обрабатываются оболочкой, то их надо экранировать, например:

– рекурсивно удалить все core-файлы, начиная с текущего каталога.

Следует отметить, что многие действия из перечисленных выше и связанных с манипуляциями с каталогами и файлами можно выполнять с помощью специальной программы – файлового менеджера Midnight Commander. Он не требует графической оболочки, вызывается в терминальном окне командой:

С помощью этой программы можно перемещаться по дереву каталогов, просматривать содержимое каталогов и файлов, создавать каталоги (но не файлы), удалять, копировать, перемещать каталоги и файлы, вести поиск файлов. Для многих пользователей текстовый редактор Midnight Commander является очень хорошим выбором. Его можно вызвать отдельно командой mcedit.

Редактирование файлов – отдельная важная тема. Существует большое число редакторов, работающих как в текстовом, так и в графическом режимах. Нас как администраторов в первую очередь будет интересовать редактор, который может работать в самых сложных условиях – без графического интерфейса, возможно, по сети, когда функциональные клавиши недоступны или работают неверно. Таких редакторов существует несколько, например gnu nano. Но, на наш взгляд, самый гарантированно работающий вариант, который, ко всему прочему установлен на 99% Linux-систем, – это редактор vi.

Его интерфейс на первый взгляд совсем не дружественен и не логичен, на деле же большинство его команд продуманы и удобны. Главное его преимущество – возможность работы практически в любых условиях и быстрое выполнение массовых операций (поиск, замена и т. п.). Он имеет два режима работы – командный и режим вставки. Изначально файл открывается в командном режиме. Для перемещения по тексту используйте клавиши курсора, если же они не работают, – клавиши 'h,j,k,l' (посмотрите на клавиатуру и поймёте, почему такой странный набор). Клавиши w и b перемещают вперёд и назад на слово. И конечно, «главная» команда – выход с сохранением: ':wq' или просто 'ZZ' (заглавными буквами). Выйти без сохранения можно командой ':q!'.

Полезные команды:

Таблица 11: некоторые клавиатурные команды vi

Режим вставки позволяет вписывать текст в нужную позицию. Выйти из него можно клавишей <ESC>. Перед любой командой можно набрать число, тогда команда будет повторена это число раз. Например, '10dd' удалит 10 строк (и поместит их вместе в буфер, потом можно будет их вставить в другом месте командой 'p'). Повтор команды вставки или замены повторит и ввод, например ввод 'cwNEW_WORD<ESC>' приведёт в замене слова после курсора на 'NEW_WORD', а если потом переместить курсор на начало другого слова и нажать '.', то оно также будет заменено на 'NEW_WORD'.

Из расширенных команд особенно удобна команда массовой замены 's'. Её синтаксис взят из команды sed. Перед командой можно указать через запятую диапазон строк, на которые она будет действовать, при этом '.' обозначает текущую строку, $ – последнюю, а знак + указывает на то, что номер дан относительно текущей строки.

Например, заменить адрес old-cluster на new-supercomputer в 10 строках после текущей включительно можно, набрав:

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

Пакеты

Во всех Linux-дистрибутивах есть прекрасная (на наш взгляд) система – упаковка ПО в так называемые «пакеты». Самих вариантов систем пакетирования много, наиболее популярны rpm (RedHat, Fedora, CentOS, SuSE и другие), deb (Debian, Ubuntu, Mint и другие), ports (Arch Linux и производные), ebuild (Gentoo и производные), pkg (Slackware и производные). Все они предлагают хранение дерева всех файлов некоторого ПО, например web-сервера, или его части, например модуля шифрования, в одном файле (обычно это сжатый архив). Кроме файлов в пакете хранятся метаданные, такие как название пакета, описание и другие данные. Набор метаданных в разных пакетных системах разный, поэтому и возможности тоже разные.

Самые важные особенности метаданных пакетов на наш взгляд:

• зависимости – указание других пакетов, установка которых необходима или желательна. Вместо пакетов может указываться функция (например smtp-сервер), если из метаданных её можно получить;

• хэш-суммы файлов;

• указание, какие файлы являются конфигурационными.

С помощью зависимостей установка ПО становится намного проще, можно быстро выяснить, какие дополнительные пакеты необходимо установить. Часто вычисление и установку всех дополнительных пакетов берут на себя «пакетные менеджеры», такие как yum (RedHat), apt или aptitude (Debian), pacman (Arch Linux) и т. п.

В формате deb зависимости можно указывать гибко: от «необходимо» до «желательно» (обычно это документация и примеры) и «опционально», поэтому в интерактивном пакетном менеджере типа aptitude можно выбрать именно тот набор дополнительных пакетов, который нужен. В мире формата rpm нередко с пакетом автоматически устанавливается ещё десяток ненужного ПО, которое теоретически может с ним потребоваться…

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

Знание файлов конфигурации позволяет не затирать их при обновлении – новая версия копируется «рядом» с оригинальной, чтоб можно было проверить разницу. А в интерактивном режиме aptitude можно эту разницу сразу посмотреть и выбрать, какой вариант использовать, старый или из обновлённого пакета. Аналогично при удалении пакета, как правило, его файлы конфигурации остаются и при новой установке не затираются. Удалить пакет вместе с настройками обычно можно, указав дополнительный ключ при удалении. Информация об установленных на компьютере пакетах хранится в базе данных, если она повреждается, то восстановить её очень тяжело. Поэтому не рекомендуем удалять или ставить пакеты на файловой системе, занятой на 100%, это может привести к потере базы.

Сами файлы пакетов можно просто скачать или скопировать откуда-либо, но чаще всего используются так называемые репозитории – индексированные каталоги пакетов. На CD/DVD-диске с дистрибутивом ОС почти всё место занимает репозиторий пакетов, после установки он будет прописан в настройках. Кроме него почти наверняка будет указан основной сетевой репозиторий ОС (или несколько). Кроме основного репозитория могут потребоваться дополнительные или даже совсем сторонние. Например, в стандартном репозитории RedHat не так уж и много пакетов, очень часто приходится подключать проверенные сторонние, типа EPEL. Некоторые программные проекты создают собственные мини-репозитории только для своего ПО. Иногда имеет смысл создавать и собственные локальные репозитории, например для компьютеров без доступа в Интернет.

Самые важные варианты использования команды yum и полезные ключи:

Таблица 12: важные команды и ключи команды yum

Когда приходится работать с конкретным пакетом или rpm-файлом, то на помощь приходит команда rpm. Её важные ключи:

Таблица 13: некоторые ключи команды rpm

Сетевые команды

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

Команда ping – команда для проверки соединения между двумя компьютерами в сетях, построенных на базе стека протоколов TCP/IP. Команда отправляет на другой компьютер запросы Echo-Request по протоколу ICMP и принимает поступающие ответы. Засекая время между отправкой запроса и получением ответа, программа определяет задержку в передаче пакетов по маршруту и частоту потерь пакетов, позволяя оценить качество сетевого соединения между двумя узлами.

Синтаксис команды:

Пример:

Результат работы команды:

При запуске без специальной опции команда ping в UNIX-подобных системах работает неограниченно долго, посылая запросы указанному узлу. Каждый отправленный запрос имеет свой номер, по которому программа определяет, дошёл он до целевого компьютера или нет. В выводе команды номер запроса показывает поле icmp_seq, поле ttl – Time To Live – определяет время жизни ответного пакета, заданное в числе узлов. Ровно столько узлов пакет может пройти, передаваясь по маршруту до узла назначения.

Каждый узел, через который проходит пакет, уменьшает величину ttl на единицу; если значение счётчика станет равным нулю, то пакет будет уничтожен как «заблудившийся» и не будет отправлен дальше по маршруту. Последнее поле показывает время обмена сообщениями между двумя узлами. Оборвать работу команды ping можно с терминала, нажав комбинацию клавиш Ctrl-C, после чего команда ping выведет статистику работы: сколько пакетов было отправлено, сколько получено, процент потерянных пакетов, общее время работы в миллисекундах. Кроме того, выводится минимальное, среднее и максимальное время прохождения пакетов.

Основные опции команды ping:

-c count ограничивает число посылаемых пакетов значением count;

-n отменяет преобразование IP-адреса отвечающего узла в его DNS-имя. Такой режим может ускорить работу программы и исключить проблемы с настройками DNS при диагностике сети;

-i interval задаёт время ожидания перед посылкой следующего пакета;

-l size задаёт размер пакета.

Эта команда может служить в том числе для тестирования сети InfiniBand, если на интерфейсах InfiniBand поднят протокол IPoIB (IP over InfiniBand). Если вы поняли, что удалённый узел или сеть недоступны, можно выяснить, где происходит обрыв связи. Для этого используется команда traceroute или её более современный аналог tracepath. В качестве аргумента команда принимает адрес узла.

Она посылает пакеты ping на этот узел со значением ttl, равным 1, затем 2 и т. д. В выдаче программы видно, какие узлы по пути следования пакета обработали факт обнуления ttl и сообщили об этом. Таким образом, мы можем отследить путь пакета.

Пример работы команды traceroute:

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

Полезные опции команды traceroute:

-n не преобразовывать DNS-имена узлов,

-f N начать с TTL с указанным номером,

-m N ограничить TTL указанным числом (по умолчанию 30),

-w N время ожидания отклика (по умолчанию 5 сек.).

Команда route показывает текущую таблицу маршрутизации, т. е. правила, по которым узел определяет, куда послать пакет. Типичный вывод команды:

Значения столбцов:

• Destination  – адрес назначения пакета;

• Gateway  – адрес хоста(роутера), куда будет направлен пакет;

• Genmask  – маска адреса(destination);

• Flags, Metric, Ref, Use  – служебная информация;

• Iface  – имя интерфейса, куда будет передан пакет.

Если необходимо передать пакет по сети на адрес x.y.z.q, ядро последовательно проверит этот адрес по таблице: на адрес и на поле destination будет наложена маска (genmask), и если результаты совпадут, то пакет будет пересылаться на роутер (gateway) через сетевой интерфейс (interface). Наложение маски производится битовой операцией AND, т. е. все биты, установленные в маске в 0, будут в результате сброшены в 0, а биты, установленные в маске в 1, будут в результате такими же, как и у исходного адреса.

Отсюда, в частности, следует, что маска 0.0.0.0 задаёт маршрут, который сработает всегда, так как результат её применения всегда будет 0.0.0.0. Такой маршрут часто называют default (по умолчанию). В нашем примере сеть 9.10.11.* доступна через eth1, сеть 10.*.*.* – через интерфейс eth0 (это внутренняя сеть), а все остальные пакеты направляются на роутер 9.10.11.1, который доступен через интерфейс eth1.

Командой route можно также добавлять и удалять маршруты. Для добавления маршрута к сети используйте:

Здесь мы добавляем маршрут для сети 1.2.3.* на интерфейсе eth0:

Эта команда – сокращённый вариант команды

Интерфейс определяется автоматически, если роутер (gw) доступен через другие правила. Если заменить в предыдущих командах 'add' на 'del', получим команду удаления маршрута. Обратите внимание, что при удалении надо также указать все параметры: netmask, gw, dev и т. п., даже если они очевидны, иначе команда может не отработать.