4.25M
Category: softwaresoftware

Анализ, оптимизация и аварийные работы в Linux. Урок 3

1.

Что будет сегодня на уроке
Рассмотрим типы хранения, проблемы с ними, аварийная
работа ФС
Разобрем настройку логирования в Linux (journald,
syslog/rsyslog, logrotate)

2.

Анализ, оптимизация и
аварийные работы в Linux
Хранение данных, разделы,
файловые системы

3.

Анализ, оптимизация и
аварийные работы в Linux
Жёсткие диски имеют особенные названия. В зависимости от интерфейса, через который подключён
жёсткий диск, название может начинаться на:
sd - устройство, подключённое по SCSI;
hd - устройство ATA;
vd - виртуальное устройство;
mmcblk - обозначаются флешки, подключённые через картридер;
В наше время большинство блочных устройств Linux подключаются через интерфейс SCSI. Сюда
входят жёсткие диски, USB-флешки, даже ATA-диски теперь тоже подключаются к SCSI через
специальный переходник. Поэтому в большинстве случаев вы будете иметь дело именно с дисками sd.
ls -l /dev/
df –h
lsblk
fdisk –l
mount

4.

Анализ, оптимизация и
аварийные работы в Linux
Файловая система (ФС) — архитектура хранения данных, которые могут находиться в разделах
жесткого диска. Выдает пользователю доступ к конфигурации ядра. Определяет, какую структуру
принимают файлы в каждом из разделов, создает правила для их генерации, а также управляет
файлами в соответствии с особенностями каждой конкретной ФС.
Ext2, Ext3, Ext4 или Extended Filesystem - это стандартная файловая система для Linux
Ext3 отличается от Ext2 только поддержкой журнализации, в остальном они одинаковы и легко могут
быть преобразованы одна в другую в любой момент без потери данных.
Файловая система ext4 принадлежит к новому поколению журналируемых систем, основана на ext3 и
совместимая с ней (прямо и обратно). Отличается от Ext3 поддержкой групп смежных физических
блоков, управляемых как единое целое, повышенной скоростью проверки целостности и рядом других
усовершенствований

5.

Анализ, оптимизация и
аварийные работы в Linux
Другие типы файловых систем
Файловая система ReiserFS относится к новому поколению журналируемых систем разработанная специально для Linux. В
настоящее время ReiserFS поддерживается только под GNU/Linux. Считается самой экономичной, поскольку позволяет хранить
несколько файлов в одном блоке, что позволяет использовать каждый байт вашего компьютера. Обычные файловые системы могут
хранить в одном блоке один файл или одну его часть. Версии ReiserFS признаны нестабильными компанией Namesys и не
рекомендованы для промышленного использования, особенно в связке с NFS. Обычно под словом ReiserFS понимают третью
версию, а четвёртую называют Reiser4. В настоящий момент разработка Reiser3 прекращена.
Файловая система XFS высокопроизводительная журналируемая файловая система разработана компанией Silicom Graphics в
2001г. Отличается от других файловых систем тем, что она изначально была рассчитана для использования на дисках большого
объема, более 2 Тбайт. Существует возможность потери данных во время записи при сбое питания, так как большое количество
буферов хранится в памяти. Процесс восстановления потерянных файлов в XFS очень сложный, поэтому на данный момент не
существует программного обеспечения для восстановления.
Zettabyte File System или ZFS — новейшая транзакционная файловая система, работающая с использованием механизма copy-onwrite и оперирующая одновременно на нескольких уровнях абстракции данных.
BTRFS (B-Tree Filesystem) — файловая система для Unix-подобных операционных систем, основанная на технике «Copy on Write»
(CoW), призванная обеспечить легкость масштабирования файловой системы, высокую степень надежности и сохранности данных,
гибкость настроек и легкость администрирования, сохраняя при этом высокую скорость работы
Network File System (NFS) — протокол сетевого доступа к файловым системам

6.

Файловая система
Анализ, оптимизация и
аварийные работы в Linux

7.

Анализ, оптимизация и
аварийные работы в Linux
/
Корневая директория, содержащая всю файловую иерархию.
/bin/
Основные системные утилиты, необходимые как в
однопользовательском режиме, так и при обычной работе всем
пользователям (например: cat, ls, cp).
/boot/
Загрузочные файлы (в том числе файлы загрузчика, ядро и т.д.).
Часто выносится на отдельный раздел.
/dev/
Основные файлы устройств системы (например физические
устройства sata винчестеры /dev/sda, видео камеры или TVтюнеры /dev/video или псевдоустройства, например «чёрные
дыры» /dev/null, /dev/zero ).
/etc/
Общесистемные конфигурационные файлы, лежат в корне
директории и файлы конфигурации установленных программ
(имя происходит от et cetera).

8.

Анализ, оптимизация и
аварийные работы в Linux
/home/
Содержит домашние директории пользователей, которые в свою
очередь содержат персональные настройки и данные
пользователя. Часто размещается на отдельном разделе.
/lib/
Основные библиотеки, необходимые для работы программ из /bin/
и /sbin/.
/media/
Точки монтирования для сменных носителей, таких как CD-ROM,
DVD-ROM, flash дисков.
/opt/
Дополнительное программное обеспечение.
/proc/
Виртуальная файловая система, представляющая состояние ядра
операционной системы и запущенных процессов в виде каталогов
файлов.
/root/
Домашняя директория пользователя root.
/sbin/
Основные системные программы для администрирования и
настройки системы, например, init, iptables, ifconfig.
/srv/
Данные, специфичные для окружения системы.
/tmp/
Временные файлы (см. также /var/tmp).
/usr/
Вторичная иерархия для данных пользователя; содержит
большинство пользовательских приложений и утилит,
используемых в многопользовательском режиме. Может быть
смонтирована по сети только для чтения и быть общей для
нескольких машин.
/var/
Изменяемые файлы, такие как файлы регистрации (logфайлы), временные почтовые файлы, файлы спулеров.

9.

Анализ дисковой активности
iotop - анализ топа загрузки
дисковой подсистемы
apt install iotop
iostat — анализ загруженности диска
apt install sysstat

10.

Анализ, оптимизация и
аварийные работы в Linux
Какие проблемы с разделами могут быть?

11.

Анализ, оптимизация и
аварийные работы в Linux
Напишите в чат как Вы считаете для чего нужна
журналируемая файловая система?

12.

Анализ, оптимизация и
аварийные работы в Linux
Напишите в чат кто сталкивался с проблемами файловой системы?

13.

Аварийная работа файловой системы
Анализ, оптимизация и
аварийные работы в Linux
Ошибки в файловой системе
Если система отказывается нормально загружаться, но ни на консоли, ни в журналах нет сообщений об аппаратных ошибках,
значит, сбоит какая-то жизненно важная её часть. Если диагностика при этом включает в себя текст RUN fsck MANUALLY,
ничего страшного, возможно, не произошло. При загрузке Linux проверяет состояние файловых систем (например, после
нештатного выключения системы, или просто так, для профилактики). Если файловая система не была корректно
размонтирована, на ней может остаться мусор, вроде открытых и не закрытых файлов, которые занимают место на диске и
никак не называются. Такой мусор можно вычищать автоматически, что программа fsck и делает.
Однако если выдернуть шнур питания из компьютера в особенно неудачный миг, в файловой системе могут образоваться
ошибочные метаданные, то есть сведения о файлах, не соответствующие действительности. Исправление метаданных всегда
связано с некоторым риском: действительные файлы могут потеряться, измениться в размере и т. п. Потому fsck не берёт на
себя ответственность по автоматическому исправлению метаданных, а просит сделать это системного администратора. Тому
следует запустить fsck, ответить y (от yes) на все вопросы относительно удаления или изменения длины файлов и изучить
содержимое каталогов /lost+found/ в каждой файловой системе (там окажутся потерянные файлы). Надо иметь в виду, что fsck
может в тяжёлых случаях залечить файловую систему насмерть, так что иногда, если это возможно, стоит предварительно
смонтировать сбойную файловую систему в режиме только чтение и сделать резервную копию того, что ещё можно прочесть.

14.

Аварийная работа файловой системы
Анализ, оптимизация и
аварийные работы в Linux
Утилита Mount
- -V - вывести версию утилиты;
-h - вывести справку;
-v - подробный режим;
-a, --all - примонтировать все устройства, описанные в fstab;
-F, --fork - создавать отдельный экземпляр mount для каждого отдельного раздела;
-f, --fake - не выполнять никаких действий, а только посмотреть что собирается делать утилита;
-n, --no-mtab - не записывать данные о монтировании в /etc/mtab;
-l, --show-labels - добавить метку диска к точке монтирования;
-c - использовать только абсолютные пути;
-r, --read-only - монтировать раздел только для чтения;
-w, --rw - монтировать для чтения и записи;
-L, --label - монтировать раздел по метке;
-U, --uuid - монтировать раздел по UUID;
-T, --fstab - использовать альтернативный fstab;
-B, --bind - монтировать локальную папку;
-R, --rbind - перемонтировать локальную папку.
$ mount файл_устройства папка_назначения
$ mount опции -t файловая_система -o опции_монтирования файл_устройства папка_назначения

15.

Аварийная работа файловой системы
Анализ, оптимизация и
аварийные работы в Linux
fstab - Файл fstab - это текстовый файл, который содержит информацию о различных файловых системах и
устройствах хранения информации в вашем компьютере. Это всего лишь один файл, определяющий, как диск
и/или раздел будут использоваться и как будут встроены в остальную систему. Полный путь к файлу /etc/fstab. Этот файл можно открыть в любом текстовом редакторе, но редактировать его возможно только от
имени суперпользователя, т.к. файл является важной, неотъемлемой частью системы, без него система не
загрузится.

16.

Анализ, оптимизация и
аварийные работы в Linux
Работа с логами

17.

Системный журнал (логи)

18.

journald
неотъемлемая часть systemd;
по умолчанию в Debian хранит логи только текущей загрузки;
хранит логи в бинарном формате;
существует выборка по имени юнита;
есть возможность выборки по PID, UID, GID;
можно вывести логи за указанный период;
можно отфильтровать сообщения по приоритету;
можно вывести поступающие сообщения.

19.

syslog / rsyslog
Уровни важности сообщений
Emergency — чрезвычайная ситуация;
Alert

тревога;
Critical —
критическая ситуация;
Error — ошибка;
Warning — предупреждение;
Notice — уведомление;
Info — информация;
Debug — отладочная информация.

20.

tail
Выводит последние строки текстового файла.

21.

Конфигурационный файл rsyslog
Все программы Linux ведут лог путем отправки сообщений об ошибках или своем состоянии
с помощью сокета syslog или просто записывая все сообщения в файл, который будет находиться
в каталоге /var/log/.
#################
#### MODULES ####
#################
###########################
#### GLOBAL DIRECTIVES ####
###########################
###############
#### RULES ####
###############
Каждое правило имеет свой синтаксис, сначала
идет источник и приоритет, затем действие.
Если источник и приоритет совпадают,
сообщение отправляется в указанный файл.
Например, мы можем отправить больше
сообщений в лог системы linux /var/messages:

22.

Logrotate
Текущий журнал
Сжатый архив журнала
Удаление устаревших журналов
Производит ротацию журналов (архивирование, удаление).

23.

Мониторинг журнала
Срабатывание триггера
при выполнении условия
Выполнение действия
Слежение за журналом и автоматизация действий.

24.

strace
Выводит системные вызовы приложений.

25.

Итоги
Рассмотрели типы хранения, аварийная работа ФС
Разобрали настройку логирования в Linux

26.

1.
2.
3.
4.
5.
6.
7.
8.
Домашнее задание
Диск созданный на уроке 2 прописать в fstab для автоматического монтирования при
старте системы
Используя утилиту mount проверить все примонтированные устройства в fstab и вывести
на экран все примонтированные устройства в системе, сделать скриншот описать вывод
утилиты mount
Проанализируйте нагрузку на дисковую подсистему предложенными в курсе утилитами
Вывести события из journald по времени за последние 10 минут Вашей работы в системе,
вывести события содержащие ошибки. Прислать скиншот
Вывести последние 15 событий из журнала событий journald
Настроить ротацию логов с помощью logrotate для apache2 таким образом, чтобы
количество хранимых последних журналов равнялось 5 журналам
* Создать директорию /var/log/web/. В конфигурации apache2 указать расположение логов
в директорию /var/log/web/ Настроить ротацию логов с помощью logrotate для apache2, с
указанием нового местоположения, таким образом чтобы минимальный размер при
ротации составлял 5 мегабайт (если меньше то то журнал не должен ратироваться) и
количество журналов равнялось 3 последним журналам.
* Написать скрипт по ежесуточному ротированию и упаковке логов apache2,
добавить выполнение скрипта в CRON на выполнение каждую ночь в 02:18. Дерево
каталогов в результате должно выглядеть так
| ── ГОД │ │ ├── ГОД-МЕСЯЦ │ │ │ ── apache.log.ГОД-МЕСЯЦ-ДЕНЬ.bz2
English     Русский Rules