Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
GFS 2
Red Hat GFS 2
Редакция 7
Аннотация
Введение
1. Целевая аудитория
- администрирования Linux, в том числе конфигурации ядра;
- установки и конфигурации сетей с общим хранилищем, таких как Fibre Channel SAN.
2. Дополнительная документация
- Руководство по установке Red Hat Enterprise Linux 6.
- Руководство по развертыванию предоставляет информацию по установке, настройке и администрированию Red Hat Enterprise Linux 6.
- Руководство по управлению накопителями расскажет об эффективном управлении устройствами хранения данных и файловыми системами в Red Hat Enterprise Linux 6.
- Обзор комплекта High Availability.
- Управление кластером содержит информацию об установке, настройке и управлении кластерными компонентами Red Hat.
- Администрирование LVM содержит информацию об управлении логическими томами, включая сведения о работе LVM в кластерном окружении.
- DM Multipath предоставляет информацию о многопутевых возможностях Red Hat Enterprise Linux.
- Распределение нагрузки предоставляет информацию о настройке высокопроизводительных систем и служб в группе физических серверов с помощью Load Balancer.
- Примечания к выпуску предлагают краткий обзор последнего выпуска Red Hat.
3. Отзывы и предложения
rh-gfs2(EN)-6 (2014-10-8T15:15)
Глава 1. Обзор GFS2
Примечание
Примечание
fsck.gfs2
в большой файловой системе может занять продолжительное время, при этом используя большой объем памяти. В случае сбоя диска время восстановления также зависит от скорости резервного носителя (см. Раздел 4.11, «Проверка файловой системы»).
clvmd
. Подробную информацию можно найти в документе под названием Администрирование LVM.
gfs2.ko
, который должен быть загружен на узлах кластера.
Примечание
1.1. Новые и измененные функции
1.1.1. Red Hat Enterprise Linux 6
- Использование GFS2 в индивидуальных системах не поддерживается.
- Для преобразования GFS в GFS2 используется
gfs2_convert
(см. Приложение B, Преобразование GFS в GFS2). - Поддерживаются параметры монтирования:
discard
,nodiscard
,barrier
,nobarrier
,quota_quantum
,statfs_quantum
,statfs_percent
(см. Раздел 4.2, «Монтирование файловой системы»). - В руководство Red Hat Enterprise Linux 6 добавлен Раздел 2.9, «Блокировка узлов GFS2».
1.1.2. Red Hat Enterprise Linux 6.1
- Добавлена поддержка квотирования (см. Раздел 4.5, «Управление квотами в GFS2»).В предыдущих выпусках управление квотами осуществлялось с помощью
gfs2_quota
(см. Приложение A,gfs2_quota
). - В текущую версию документа добавлена Глава 5, Диагностика конфликтов GFS2.
- Это руководство включает множество коррекций, актуальных для Red Hat Enterprise Linux 6.1.
1.1.3. Red Hat Enterprise Linux 6.2
tunegfs2
выполняет некоторые функции командыgfs2_tool
. Подробную информацию можно найти на справочной страницеtunegfs2
.Обновление документации:- Раздел 4.5.4, «
Quotasync
» и Раздел A.3, «Синхронизация квот» расскажут об изменении значенияquota_quantum
(по умолчанию равно 60 секундам) при помощи параметраquota_quantum=интервал
. - Раздел 4.10, «Временная остановка файловой системы» включает описание команды
dmsetup
.suspend
- Приложение C, Мониторинг событий и файл glocks ориентировано на опытных пользователей, содержит описание интерфейса
debugfs
и обработчиков событий GFS2.
1.1.4. Red Hat Enterprise Linux 6.3
1.1.5. Red Hat Enterprise Linux 6.4
1.1.6. Red Hat Enterprise Linux 6.6
1.2. Проектирование структуры GFS2
- Узлы GFS2
- Определите, какие узлы в кластере будут подключать GFS2.
- Число файловых систем
- Сколько файловых систем GFS2 вы создадите? Файловые системы также можно будет добавить позднее.
- Имя файловой системы
- Имя файловой системы должно быть уникально среди файловых систем
lock_dlm
в кластере. В примерах команд в этом документе используются именаmydata1
иmydata2
. - Журналы
- Каждый узел должен иметь свой журнал. Если вспоследствии новые серверы начнут подключать GFS2, журналы можно будет добавить динамически (см. Раздел 4.7, «Добавление журналов»).
- Диски и разделы
- Идентифицируйте устройства и разделы, на основе которых будут создаваться логические тома (с помощью CLVM).
Примечание
1.3. Установка GFS2
gfs2-utils
для GFS2 и lvm2-cluster
для CLVM (Clustered Logical Volume Manager). Оба пакета включены в канал ResilientStorage.
# yum install rgmanager lvm2-cluster gfs2-utils
1.4. Основные отличия GFS2 от GFS
gfs2_convert
(см. Приложение B, Преобразование GFS в GFS2).
1.4.1. Команды GFS2
Таблица 1.1. Команды GFS и GFS2
GFS | GFS2 | Описание | ||||
---|---|---|---|---|---|---|
mount | mount | Подключение файловой системы. Тип (GFS или GFS2) определяется автоматически. Список параметров команды можно найти на справочной странице gfs2_mount(8). | ||||
umount | umount | Отключение файловой системы. | ||||
|
| Проверяет и исправляет отключенную файловую систему. | ||||
gfs_grow | gfs2_grow | Увеличение размера файловой системы. | ||||
gfs_jadd | gfs2_jadd | Добавление журнала. | ||||
|
| Создание файловой системы. | ||||
gfs_quota | gfs2_quota | Управление квотами пространства в подключенной файловой системе. Начиная с Red Hat Enterprise Linux 6.1 поддерживаются стандартные функции квот Linux (см. Раздел 4.5, «Управление квотами в GFS2»). | ||||
gfs_tool | tunegfs2
параметры mount
dmsetup suspend
| Настройка и сбор статистики. Команда tunegfs2 была впервые представлена в Red Hat Enterprise Linux 6.2. gfs2_tool также поддерживается. | ||||
gfs_edit | gfs2_edit | Изменение внутренней структуры файловой системы. gfs2_edit подходит для обеих версий GFS. | ||||
gfs_tool setflag jdata/inherit_jdata | chattr +j (рекомендуется) | Включает журналирование для выбранного файла или каталога. | ||||
setfacl/getfacl | setfacl/getfacl | Настройка списка управления доступом для файлов и каталогов. | ||||
setfattr/getfattr | setfattr/getfattr | Просмотр и изменение атрибутов файла. |
1.4.2. Другие различия
1.4.2.1. Контекстные ссылки
mount --bind
(см. Раздел 4.12, «mount --bind и контекстные ссылки»).
1.4.2.2. gfs2.ko
gfs.ko
, за реализацию GFS2 — gfs2.ko
.
1.4.2.3. Квоты в GFS2
1.4.2.4. Ведение журналов
chattr
, с помощью которой можно установить флаг j
для каталога или отдельного файла. Установка флага +j
для каталога будет обозначать, что журналы будут вестись для всех создаваемых в нем файлов и подкаталогов. chattr
является предпочтительным методом управления журналированием.
1.4.2.5. Динамическое добавление журналов
1.4.2.6. atime_quantum
atime_quantum
, который используется в GFS для определения частоты обновлений atime
. Вместо него GFS2 использует параметры монтирования relatime
и noatime
. В частности, relatime
аналогичен параметру atime_quantum
в GFS.
1.4.2.7. mount data=ordered/writeback
data=ordered
означает, что измененные в ходе транзакции данные будут сохранены на диск до того, как будет сохранена сама транзакция. Это позволяет избежать появления неинициализированных блоков в случае сбоя. В режиме data=writeback
запись данных на диск откладывается до тех пор, пока не начнется их изменение в кэше. Отложенная запись повышает скорость работы, но не защищает данные в случае внезапной остановки компьютера. По умолчанию будет выбран режим ordered
.
1.4.2.8. gfs2_tool
gfs2_tool
отличаются от gfs_tool
:
gfs2_tool
поддерживает параметрjournals
для вывода списка настроенных журналов.gfs2_tool
не поддерживает флагcounters
, которыйgfs_tool
использует для вывода статистики GFS.gfs2_tool
не поддерживает флагinherit_jdata
. Для настройки журналирования в каталоге установите флагjdata
или измените его атрибуты, установив флаг+j
с помощьюchattr
. Командаchattr
является предпочтительным методом изменения атрибутов.
Примечание
tunegfs2
заменила некоторые функции gfs2_tool
. Подробную информацию можно найти на справочной странице tunegfs2
(8). Функции settune
и gettune
теперь успешно выполняют параметры команды mount
, которые могут быть определены в файле fstab
.
1.4.2.9. gfs2_edit
gfs2_edit
отличаются от параметров gfs_edit
. Подробную информацию можно найти на справочных страницах gfs2_edit
и gfs_edit
.
1.4.3. Производительность
- Высокая производительность при высокой интенсивности обращения к отдельному каталогу.
- Высокая скорость синхронного ввода-вывода.
- Высокая скорость чтения данных из кэша (нет задержек блокирования).
- Высокая скорость прямого ввода-вывода для предварительно выделенных файлов при условии, что размер блоков достаточно велик (например, 4 МБ).
- Высокая скорость ввода-вывода в целом.
df
выполняется намного быстрее вследствие более быстрых вызововstatfs
.- Возможность коррекции частоты обновления
atime
.
- GFS2 интегрирована в официально поддерживаемое ядро (2.6.19).
- GFS2 поддерживает:
- расширенные атрибуты файлов (
xattr
); - настройку атрибутов
lsattr
() иchattr
() с помощьюioctl
(); - метки времени с точностью до наносекунд.
- GFS2 экономно использует память ядра.
- В GFS2 нет необходимости в использовании счетчика генерации метаданных.Выделение метаданных GFS2 не требует выполнения операций чтения. Управление копиями блоков метаданных в разных журналах осуществляется за счет их отзыва из журналов перед снятием блокировки. Это предотвращает параллельное изменение одного и того же блока в других журналах.
- GFS2 использует упрощенный менеджер журналирования (без учета несвязанных дескрипторов и изменений квот).
gfs2_grow
иgfs2_jadd
используют блокирование для предотвращения одновременного выполнения нескольких экземпляров.- Упрощен код ACL для
creat
() иmkdir
(). - Учет несвязанных дескрипторов, обновлений квот и изменений
statfs
без необходимости повторного монтирования журнала.
Глава 2. Функциональные особенности и конфигурация GFS2
Важно
2.1. Особенности форматирования
2.1.1. Размер: чем меньше, тем лучше
- Резервное копирование занимает меньше времени.
- Меньше времени уходит на проверку
fsck.gfs2
. fsck.gfs2
требует меньше памяти для своей работы.
2.1.2. Размер блоков
mkfs.gfs2
автоматически подбирает размер блоков исходя из топологии устройства. 4 КБ должно быть достаточно, так как размер страниц памяти в Linux по умолчанию составляет именно 4 КБ. В отличие от других файловых систем, GFS2 использует буферы ядра размером 4 КБ, поэтому ядру не приходится выполнять лишнюю работу при взаимодействии с буфером.
2.1.3. Число журналов
gfs2_jadd
.
2.1.4. Размер журналов
mkfs.gfs2
. По умолчанию будет выбрано 128 МБ, что вполне достаточно для большинства приложений.
2.1.5. Группы ресурсов
mkfs.gfs2
пространство разбивается на одинаковые секции — так называемые «группы ресурсов». Размер группы выбирается автоматически (от 32 МБ до 2 ГБ), но по желанию можно установить конкретный размер с помощью параметра -r
.
- Заполненные группы ресурсов будут исключаться из поиска до тех пор, пока хотя бы один блок в группе не освободится. Если вы не планируете удалять файлы, степень состязания за ресурсы снизится. Однако при частом удалении и новом распределении блоков в переполненной файловой системе это сильно снизит производительность.
- При добавлении новых блоков в файл они будут помещены в ту же группу ресурсов, где расположен файл. Таким образом, операции перехода в файле будут выполняться быстрее за счет того, что блоки будут физически расположены близко друг к другу.
2.2. Фрагментация
2.3. Выделение блоков
2.3.1. Оставьте свободное место
2.3.2. Выделение блоков владельцем файла
2.3.3. Предварительное выделение места
fallocate
(1).
2.4. Проектирование кластера
2.5. Особенности эксплуатации
2.5.1. Noatime и nodiratime
noatime
и nodiratime
.
2.5.2. Размер таблиц DLM
echo 1024 > /sys/kernel/config/dlm/cluster/lkbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/rsbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/dirtbl_size
2.5.3. Виртуальная файловая система
sysctl
(8), могут улучшить производительность GFS2. Так, например, для просмотра текущих значений dirty_background_ratio
и vfs_cache_pressure
выполните:
sysctl -n vm.dirty_background_ratio sysctl -n vm.vfs_cache_pressure
sysctl -w vm.dirty_background_ratio=20 sysctl -w vm.vfs_cache_pressure=500
/etc/sysctl.conf
.
2.5.4. SELinux
2.5.5. NFS и GFS2
Предупреждение
localflocks
. Дело в том, что попытки управления блокировками POSIX в совместно используемой файловой системе вызовут целый ряд проблем, в то время как localflocks
позволяет рассматривать файловую систему как локальную и разрешает обработку блокировок локально на заданном узле. Для приложений NFS-клиентов подобная изоляция блокировок POSIX означает, что два клиента могут одновременно удерживать блокировку, если они монтируют ресурс с разных серверов. Если же клиенты монтируют NFS-ресурс с одного сервера, то необходимость в отдельной блокировке с каждого сервера отпадает. Если вы не уверены в необходимости добавления параметра localflocks
, лучше его не указывать.
- Red Hat поддерживает только активно-пассивную конфигурацию NFSv3 в комплексе с Red Hat High Availability со следующими характеристиками:
- В кластере с 2-16 узлами в качестве базовой файловой системы используется GFS2.
- Сервер NFSv3 экспортирует всю файловую систему GFS2 с одного узла.
- При сбое NFS-сервера он будет восстановлен на другом узле в кластере (активно-пассивная конфигурация).
- Доступ к GFS2 разрешен только через NFS-сервер (в том числе локальный и доступ с использованием Samba).
- В системе отключена поддержка квот NFS.
Это позволяет создать отказоустойчивую файловую систему и уменьшает время простоя, так как при восстановлении NFS-сервера на другом узле не требуется тратить время на проверкуfsck
. - Параметр
fsid=
обязателен при экспорте GFS2. - При нарушении кворума или неудачной изоляции узла в кластере доступ к логическим томам и файловой системе будет закрыт до тех пор, пока кворум не будет восстановлен. Это стоит учитывать при оценке того, поможет ли описанная выше процедура восстановления решить поставленные задачи.
2.5.6. Samba и GFS2
2.6. Резервное копирование
echo -n 3 > /proc/sys/vm/drop_caches
rsync
.
-o lockproto=lock_nolock
.
2.7. Аппаратные особенности
- Использование высококачественных устройств хранения данныхGFS2 можно развернуть на самых разных устройствах, но для достижения максимальной производительности рекомендуется сделать выбор в пользу качественных решений с широкими возможностями кэширования. Red Hat проводит базовое тестирование производительности SAN с Fibre Channel, но всегда можно самостоятельно проверить работоспособность выбранных решений до ввода в эксплуатацию.
- Предварительное тестирование сетевого оборудованияКачественное оборудование является важным условием для создания надежной и эффективной файловой системы, но это не означает, что приобретение дорогостоящего оборудования является гарантией качества. Даже самые дорогие коммутаторы могут не пропускать многоадресные пакеты, передающие блокировки
fcntl
, в то время как их бюджетные аналоги могут оказаться более надежными. Окончательное решение в каждом конкретном случае стоит принимать лишь по результатам предварительного тестирования.
2.8. Портал пользователей Red Hat
2.9. Блокировка узлов GFS2
write
.
Примечание
- обращаться к inode с разных узлов только в режиме чтения или
- производить запись в inode только с одного узла.
mmap
() для отображения файла в память с разрешениями чтения и записи, но при этом выполняются только операции чтения, в GFS2 это будет восприниматься как чтение, а в GFS — как запись. Таким образом, возможности масштабирования GFS2 на уровне ввода-вывода значительно выше по сравнению с GFS.
mount
не указан параметр noatime
, то даже операции чтения будут обновлять время доступа к файлу. Поэтому при подключении GFS2 рекомендуется отключить эту функцию, добавив noatime
.
2.9.1. Блокировка Posix
- Flocks намного эффективнее блокировок Posix.
- Программы, использующие блокировки Posix, должны избегать вызова
GETLK
в кластерных окружениях, так как это может привести к тому, что идентификатор одного и того же процесса на разных узлах будет отличаться.
2.9.2. Оптимизация производительности
mbox
) или отдельные каталоги пользователей с файлами сообщений (maildir
). Если для доступа к почте используется протокол IMAP, эффективность работы можно повысить, связав пользователя с конкретным узлом. Таким образом, запросы чтения и удаления писем будут обслуживаться из кэша на одном узле. В случае сбоя узла сеанс можно будет начать заново на другом узле.
imap
и smtp
.
echo -n 3 >/proc/sys/vm/drop_caches
2.9.3. Статистика блокировок
debugfs
. Если debugfs
подключена в /sys/kernel/debug/
, путь будет выглядеть так:
/sys/kernel/debug/gfs2/ФС/glocks
cat
для вывода содержимого этого файла. В зависимости от числа кэшируемых дескрипторов и объема ОЗУ продолжительность этой операции может быть разной.
Примечание
glocks
— одну сразу, вторую через пару минут — и сравнить состояние блокировок. Если вы обнаружили блокировку, состояние которой не изменилось, сообщите об этом в службу поддержки Red Hat, так как это служит признаком ошибки.
Таблица 2.1. Флаги glock
Флаг | Значение | Описание |
---|---|---|
b | Blocking | Используется вместе с флагом «l» (Locked) и означает, что запрашиваемая операция DLM может привести к блокированию. Этот флаг снимается для операций снижения режима блокирования и пробных блокировок. Его главная цель — сбор статистики времени ответа DLM без учета того, сколько времени займет снижение режима блокирования. |
d | Pending demote | Получен запрос снижения режима блокировки, но glock уже удерживается, и время минимального обслуживания не истекло. |
D | Demote | Есть запрос снижения режима блокирования (локальный или удаленный). |
f | Log flush | Прежде чем освободить glock, необходимо сохранить журнал. |
F | Frozen | Идет восстановление — ответы удаленных узлов игнорируются. |
i | Invalidate in progress | Сброс страниц кэша под блокировкой. |
I | Initial | Выбранному glock назначена блокировка DLM. |
l | Locked | Glock в процессе изменения состояния. |
L | LRU | Glock в списке LRU. |
o | Object | Означает, что glock связан с объектом. Объекты могут быть разных типов. Так, тип 2 означает дескриптор, 3 — группу ресурсов. |
p | Demote in progress | Получен запрос понижения режима блокировки. |
q | Queued | Устанавливается при наличии ожидающих запросов и снимается, если запросов нет. Используется алгоритмом расчета минимального времени удерживания glock. |
r | Reply pending | Ответ, полученный от удаленного узла, ожидает обработки. |
y | Dirty | Прежде чем освободить glock, необходимо сохранить данные. |
Таблица 2.2. Флаги удерживания glock
Флаг | Значение | Описание |
---|---|---|
a | Async | Не ждать результата glock (будет запрошен позднее). |
A | Any | Принимает любой совместимый режим блокировки. |
c | No cache | Если не заблокировано, сразу снизить режим блокировки DLM. |
e | No expire | Игнорирует последующие запросы снятия блокировки. |
E | exact | Требуется конкретный режим блокировки. |
F | First | Первый запрос, захвативший блокировку. |
H | Holder | Блокировка установлена. |
p | Priority | Ставит запрос блокировки в начало очереди. |
t | Try | Пробная блокировка. |
T | Try 1CB | Пробная блокировка с ответом. |
W | Wait | Ожидание обработки запроса. |
find -inum десятичное_число
.
Примечание
find
в файловой системе с высокой степенью конкуренции за блокировки может усугубить ситуацию, поэтому прежде чем начать поиск спорных дескрипторов, рекомендуется остановить приложение.
Таблица 2.3. Типы glock
Номер | Тип | Описание |
---|---|---|
1 | Trans | Блокировка транзакции |
2 | Inode | Индексный дескриптор |
3 | Rgrp | Метаданные группы ресурсов |
4 | Meta | Суперблок |
5 | Iopen | Идентифицирует открытый дескриптор |
6 | Flock | Вызов flock (2) |
8 | Quota | Операции с квотой |
9 | Journal | Мьютекс журнала |
gfs2_grow
).
Глава 3. Начало работы
3.1. Предварительные требования
- Раздел 1.2, «Проектирование структуры GFS2» содержит обзор ключевых характеристик файловой системы.
- Системные часы узлов GFS2 должны быть синхронизированы, для чего рекомендуется использовать NTP (Network Time Protocol).
Примечание
Системное время на узлах не должно сильно расходиться во избежание ненужного обновления меток времени inode, так как это снизит производительность кластера. - Чтобы установить GFS2 в кластерном окружении, необходимо настроить набор расширений CLVM. В свою очередь, для работы CLVM необходимо, чтобы в системе работал комплект Red Hat Cluster Suite и служба
clvmd
. Информацию о CLVM можно найти в руководстве LVM, а о Red Hat Cluster Suite — в руководстве по администрированию кластера.
3.2. Первоначальная конфигурация
- Создание логических томов.
- Создание файловой системы.
- Монтирование файловой системы.
- С помощью LVM создайте по одному логическому тому для каждой файловой системы GFS2.
Примечание
Для автоматизации процесса добавления логических томов можно использовать сценарииinit.d
в Red Hat Cluster Suite. Настройка и управление кластером Red Hat содержит подробную информацию об этих сценариях. - Создайте файловые системы, присвоив им уникальные имена (см. Раздел 4.1, «Создание файловой системы»).Команды создания GFS2:
mkfs.gfs2 -p lock_dlm -t
кластер:ФС
-jчисло_журналов устройство
mkfs -t gfs2 -p lock_dlm -t
таблица_блокирования
-jчисло_журналов устройство
Раздел 4.1, «Создание файловой системы» содержит подробную информацию. - Смонтируйте GFS2 на всех узлах (см. Раздел 4.2, «Монтирование файловой системы»).Формат команды:
mount устройство каталог
mount -o acl устройство каталог
Параметр
позволяет управлять списками ACL. Если не указан, пользователи будут иметь возможность просмотра списков ACL (-o
aclgetfacl
), но не смогут их изменить (setfacl
).Примечание
Подключение и отключение файловой системы можно автоматизировать с помощью сценариевinit.d
.
Глава 4. Управление GFS2
4.1. Создание файловой системы
mkfs.gfs2
или mkfs -t gfs2
. Файловая система будет создана в пределах активного логического тома. Для вызова mkfs.gfs2
потребуются следующие исходные данные:
- протокол блокирования или имя модуля (для кластера используется
lock_dlm
); - имя кластера (если файловая система создается в кластере);
- число журналов (по одному журналу на узел, с которого будет монтироваться файловая система).
mkfs
надо добавить параметр -t gfs2
, чтобы определить тип файловой системы.
Примечание
mkfs.gfs2
, ее размер нельзя будет уменьшить, но можно будет увеличить (см. Раздел 4.6, «Увеличение размера файловой системы»).
4.1.1. Формат команд
mkfs.gfs2 -pпротокол
-tтаблица_блокирования
-jчисло_журналов устройство
mkfs -t gfs2 -pпротокол
-tтаблица_блокирования
-jчисло_журналов устройство
Примечание
mkfs.gfs2 -pпротокол
-jчисло_журналов устройство
mkfs -t gfs2 -pпротокол
-jчисло_журналов устройство
Предупреждение
протокол
и таблица_блокирования
может привести к повреждению файловой системы и lockspace.
протокол
- Имя блокирующего протокола. Для кластера используется
lock_dlm
. таблица_блокирования
- Этот параметр используется при конфигурации кластера и определяется в формате
кластер:ФС
.кластер
— имя кластера, в котором создается файловая система.ФС
— имя файловой системы длиной от 1 до 16 символов, которое должно быть уникальным и не повторять имена других файловых систем в кластере под управлениемlock_dlm
и файловых систем на каждом узле (lock_dlm
,lock_nolock
).
число_журналов
- Для каждого узла, подключающего файловую систему, необходим один журнал. Если число не определено, будет создан всего один журнал. Дополнительные журналы можно будет добавить позднее (см. Раздел 4.7, «Добавление журналов»).
устройство
- Логический или физический том.
4.1.2. Примеры
/dev/vg01/lvol0
в кластере alpha
будет создана файловая система mydata1
с восемью журналами.
mkfs.gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
mkfs -t gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
mydata2
на /dev/vg01/lvol1
.
mkfs.gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
mkfs -t gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
4.1.3. Полный список параметров
mkfs.gfs2
» содержит полный перечень параметров mkfs.gfs2
.
Таблица 4.1. Параметры mkfs.gfs2
Флаг | Параметр | Описание | |||||||
---|---|---|---|---|---|---|---|---|---|
-c | МБ | Размер файла изменений квот журнала в мегабайтах . | |||||||
-D | Вывод отладочной информации. | ||||||||
-h | Справка с описанием параметров команды. | ||||||||
-J | МБ | Размер журнала в мегабайтах. По умолчанию используется 128 МБ, минимальный размер — 8 МБ. Большие журналы улучшают производительность, но используют больше памяти. | |||||||
-j | число_журналов | Число журналов. Для каждого узла, монтирующего файловую систему, необходимо создать один журнал. По умолчанию создается один журнал. Дополнительные журналы могут быть добавлены позднее без необходимости наращивания файловой системы. | |||||||
-O | Не запрашивать подтверждение перед записью файловой системы. | ||||||||
-p | протокол |
| |||||||
-q | Подавляет вывод на экран. | ||||||||
-r | МБ | Размер ресурсных групп в мегабайтах (по умолчанию 32 МБ). Максимальный размер — 2048 МБ. Большой размер может снизить производительность в больших файловых системах. Если параметр не задан, mkfs.gfs2 сделает выбор исходя из размера файловой системы — например, 256 МБ для среднего размера. | |||||||
-t | таблица_блокирования |
| |||||||
-u | МБ | Исходный размер файла тегов. | |||||||
-V | Возвращает версию команды. |
4.2. Монтирование файловой системы
Примечание
cman
не был запущен, попытка монтирования завершится ошибкой:
[root@gfs-a24c-01 ~]# mount -t gfs2 -o noatime /dev/mapper/mpathap1 /mnt
gfs_controld join connect error: Connection refused
error mounting lockproto lock_dlm
-o acl
, в противном случае пользователи будут иметь возможность просмотра списков ACL (getfacl
), но не смогут их изменять (setfacl
).
4.2.1. Формат команд
mount устройство точка_монтирования
mount -o acl устройство точка_монтирования
-o acl
- Параметр для манипулирования списками ACL.
устройство
- Устройство, где расположена файловая система GFS2.
точка_монтирования
- Каталог, в который монтируется GFS2.
4.2.2. Пример
/dev/vg01/lvol0
будет подключена в /mygfs2
.
mount /dev/vg01/lvol0 /mygfs2
4.2.3. Полная форма
mountустройство точка_монтирования
-oпараметр
-o параметр
принимает стандартные значения mount -o
и перечисленные ниже значения (см. Таблица 4.2, «Параметры монтирования GFS2»). Несколько параметров разделяются запятой без пробела.
Примечание
mount
. Подробную информацию можно найти на справочной странице mount
.
-o
.
Примечание
Таблица 4.2. Параметры монтирования GFS2
Параметр | Описание | ||
---|---|---|---|
acl | Разрешает управлять списками ACL. Если файловая система подключена без acl , пользователи будут иметь возможность просмотра списков ACL (getfacl ), но не смогут их изменять (setfacl ). | ||
data=[ordered|writeback] | data=ordered приведет к переносу измененных в ходе транзакции данных на диск до сохранения транзакции в журнал. В случае сбоя это позволит избежать появления в файле неинициализированных блоков. В режиме data=writeback запись данных на диск откладывается до тех пор, пока не начнется их изменение в кэше. Отложенная запись повышает скорость работы, но не защищает данные в случае внезапной остановки компьютера. По умолчанию будет выбран режим ordered . | ||
| Принудительное использование GFS2 как распределенной файловой системы . Если используется lock_nolock , флаг localflocks будет установлен автоматически. | ||
| Разрешает выполнять flock и fcntl на уровне VFS (Virtual File System). Параметр lock_nolock автоматически установит флаг localflocks . | ||
lockproto= протокол | Протокол блокирования. Если не указан, имя протокола будет прочитано из суперблока файловой системы. | ||
locktable= таблица | Таблица блокирования. | ||
quota=[off/account/on] | Управление квотами. Значение account включит статистику использования пространства для каждого UID/GID. Предельные значения не будут принуждаться. По умолчанию quota=off . | ||
errors=panic|withdraw | errors=panic означает, что ошибки файловой системы вызовут панику ядра. По умолчанию используется errors=withdraw , что отключает файловую систему до следующей перезагрузки (см. Раздел 4.14, «Функции отзыва GFS2»). | ||
discard/nodiscard | Генерация запросов «discard» для освобожденных блоков. | ||
barrier/nobarrier | Заставляет GFS2 отправлять барьерные запросы при записи журнала. По умолчанию эта функция включена, но будет отключена, если устройство не поддерживает барьеры ввода-вывода. Настоятельно рекомендуется использовать барьеры в GFS2 за исключением случаев, когда блочное устройство по умолчанию не может потерять содержимое кэша (например, если устройство подключено к UPS или не имеет кэша записи). | ||
quota_quantum=сек. | Интервал синхронизации файла квот в секундах (по умолчанию 60 секунд). Большие значения могут улучшить эффективность операций с квотами, так как они будут вызываться реже, в то время как меньшие значения снижают риск превышения квоты. | ||
statfs_quantum=сек. | Интервал синхронизации изменений в главном файле statfs (по умолчанию 30 секунд). Если равен нулю, statfs будет содержать наиболее актуальные значения. | ||
statfs_percent=число | Процент изменений statfs , по достижении которого изменения будут сохранены в главный файл statfs . Игнорируется, если statfs_quantum=0 . |
4.3. Отключение файловой системы
umount
.
Примечание
umount
можно найти на справочной странице.
4.3.1. Формат команд
umount точка_монтирования
точка_монтирования
- Каталог, в который смонтирована файловая система.
4.4. Особенности подключения GFS2
fstab
, то при выключении компьютера она не будет отключена вместе с другими файловыми системами в ходе выполнения сценария отключения GFS2. После этого будет запущен стандартный сценарий завершения работы, который остановит пользовательские процессы, в том числе кластерную инфраструктуру, и попытается отключить файловую систему, что приведет к зависанию системы, так как кластерная инфраструктура к этому моменту уже будет остановлена.
- добавить запись монтирования GFS2 в файл
fstab
для ее автоматического монтирования во время запуска системы; - если GFS2 была подключена вручную с помощью
mount
, прежде чем перезагрузить или выключить компьютер, отключите ее при помощиumount
.
umount
, попробуйте принудительно ее перезагрузить. Так как синхронизация данных к этому моменту завершена, риска потери данных нет.
4.5. Управление квотами в GFS2
quota=on
или quota=account
, GFS2 будет отслеживать занятое пространство каждого пользователя, даже если ограничения не заданы, и периодически обновляет данные квот, чтобы в случае сбоя системы не было необходимости в восстановлении статистики использования пространства.
Примечание
gfs2_quota
(см. Приложение A, gfs2_quota
).
4.5.1. Настройка дисковых квот
- Настроить квоты в строгом режиме или включить режим статистики.
- Инициализировать базу данных квот, добавив актуальную статистику использования блоков.
- Определить правила квот (в режиме account правила игнорируются).
4.5.1.1. Настройка квот
quota=on
.
quota=account
позволяет использовать функции квот и следить за использованием пространства, но без принуждения жесткого лимита.
4.5.1.1.1. Формат команд
quota=on
.
mount -o quota=on устройство точка_монтирования
mount -o quota=account устройство точка_монтирования
quota=off
. Этот вариант используется по умолчанию.
mount -o quota=off устройство точка_монтирования
quota={on|off|account}
on
— включает использование квот;off
— отключает использование квот;account
— статистика использования пространства.устройство
- Устройство, где расположена файловая система GFS2.
точка_монтирования
- Каталог, в который монтируется GFS2.
4.5.1.1.2. Примеры
/dev/vg01/lvol0
подключается в /mygfs2
с активацией квот:
mount -o quota=on /dev/vg01/lvol0 /mygfs2
/dev/vg01/lvol0
подключается в /mygfs2
. Использование квот включено в режиме статистики.
mount -o quota=account /dev/vg01/lvol0 /mygfs2
4.5.1.2. Создание базы данных квот
quotacheck
.
quotacheck
проверит файловые системы с квотами и создаст таблицу с информацией о занятом пространстве, откуда операционная система и будет получать данные.
-u
и -g
отвечают за инициализацию квот для пользователей и групп соответственно. Так, чтобы создать исходные файлы квот для файловой системы в /home
, выполните:
quotacheck -ug /home
4.5.1.3. Установка квот для пользователей
edquota
установит исходные лимиты для пользователей. Если файловая система смонтирована с параметром quota=account
, использование пространства в пределах выделенных квот будет отслеживаться, но не будет ограничиваться.
edquota пользователь
/etc/fstab
включено квотирование для раздела /home
на /dev/VolGroup00/LogVol02
, то результат команды edquota testuser
будет выглядеть так:
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0
Примечание
edquota
, определяется значением EDITOR
в ~/.bash_profile
.
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000
quota testuser
4.5.1.4. Установка квот для групп пользователей
account=on
.
devel
:
edquota -g devel
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0
quota -g devel
4.5.2. Repquota
repquota
создает отчет об использовании пространства. Вывод repquota /home
может выглядеть так:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
repquota -a
grace
останется пустым, так как GFS2 не поддерживает период ожидания.
repquota
в NFS не поддерживается, независимо от типа локальной файловой системы.
4.5.3. Quotacheck
quotacheck
. Команда quotacheck
создаст, проверит и обновит файлы квот, что поможет подтвердить их актуальность, особенно если при сбое системы файловая система была внезапно отключена.
quotacheck
.
Примечание
quotacheck
рекомендуется выполнять в периоды относительного бездействия файловой системы.
4.5.4. Quotasync
quota_quantum
и по умолчанию равен 60 секундам (см. Таблица 4.2, «Параметры монтирования GFS2»). Значение quota_quantum
сбрасывается после отключения файловой системы, но его можно настроить вручную при монтировании при помощи mount -o remount
.
quotasync
также можно синхронизировать файлы квот в кластере в любое время между автоматическими обновлениями GFS2.
4.5.4.1. Формат команд
quotasync [-ug] -a|точка_монтирования
...
u
- Синхронизация квот пользователей.
g
- Синхронизация квот групп.
a
- Синхронизация всех файловых систем, использующих квоты. Если параметр не задан, необходимо указать точку монтирования файловой системы.
точка_монтирования
- Каталог подключения файловой системы.
mount -o quota_quantum=интервал,remount устройство точка_монтирования
точка_монтирования
- Каталог подключения файловой системы.
интервал
- Интервал синхронизации в секундах. Чем меньше значение, тем лучше точность, но тем больше это будет влиять на быстродействие.
4.5.4.2. Примеры
/mnt/mygfs2
:
# quotasync -ug /mnt/mygfs2
/mnt/mygfs2
в /dev/volgroup/logical_volume
будет увеличен до 1 часа (3600 секунд).
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
4.6. Увеличение размера файловой системы
gfs2_grow
позволяет расширить файловую систему. Обычно это делается после увеличения размера устройства, где она расположена. Выполнение gfs2_grow
приведет к заполнению свободного пространства между текущей границей файловой системы и новой границей устройства. После завершения будет обновлен индекс ресурсов файловой системы, и уже после этого кластер сможет утилизировать новое пространство.
gfs2_grow
запускается в подключенной файловой системе, но только на одном узле в кластере. Остальные узлы смогут использовать новое пространство автоматически.
Примечание
mkfs.gfs2
, ее нельзя будет уменьшить.
4.6.1. Формат команд
gfs2_grow точка_монтирования
точка_монтирования
- Каталог подключения файловой системы.
4.6.2. Комментарии
gfs2_grow
:
- Создайте резервную копию важных данных.
- Определите том, где расположена файловая система. Для этого выполните
df
.точка_монтирования
- С помощью LVM увеличьте размер тома. Руководство администратора LVM содержит информацию об управлении томами LVM.
gfs2_grow
выполните df
для проверки доступного пространства.
4.6.3. Примеры
/mygfs2fs
.
[root@dash-01 ~]# gfs2_grow /mygfs2fs
FS: Mount Point: /mygfs2fs
FS: Device: /dev/mapper/gfs2testvg-gfs2testlv
FS: Size: 524288 (0x80000)
FS: RG size: 65533 (0xfffd)
DEV: Size: 655360 (0xa0000)
The file system grew by 512MB.
gfs2_grow complete.
4.6.4. Полная форма
gfs2_grow [параметры
] {точка_монтирования
|устройство
} [точка_монтирования
|устройство
]
точка_монтирования
- Каталог подключения файловой системы.
устройство
- Устройство, на котором расположена файловая система.
Таблица 4.3. Параметры gfs2_grow
Параметр | Описание |
---|---|
-h | Краткая справка. |
-q | Отключает подробный вывод. |
-r МБ | Размер новой группы ресурсов в мегабайтах (по умолчанию 256 МБ). |
-T | Тестовый режим. Выполняет все вычисления, но не записывает данные на диск. |
-V | Возвращает версию команды. |
4.7. Добавление журналов
gfs2_jadd
. Команда запускается в подключенной файловой системе на одном узле — изменения автоматически отразятся на других узлах.
Примечание
gfs2_jadd
завершится неудачей, даже если логический том в ее основе был увеличен. Дело в том, что журналы хранятся в обычных файлах, а не в виде метаданных, поэтому увеличения нижележащего логического тома будет недостаточно, и надо будет нарастить саму файловую систему.
gfs2_tool
с аргументом journals
:
[root@roth-01 ../cluster/gfs2]# gfs2_tool journals /mnt/gfs2
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
4.7.1. Формат команд
gfs2_jadd -j число точка_монтирования
число_журналов
- Число журналов для добавления.
точка_монтирования
- Каталог подключения файловой системы.
4.7.2. Примеры
/mygfs2
:
gfs2_jadd -j1 /mygfs2
/mygfs2
:
gfs2_jadd -j2 /mygfs2
4.7.3. Полная форма
gfs2_jadd [параметры
] {точка_монтирования
|устройство
} [точка_монтирования
|устройство
]
точка_монтирования
- Каталог подключения файловой системы.
устройство
- Устройство, на котором расположена файловая система.
Таблица 4.4. Параметры gfs2_jadd
Флаг | Параметр | Описание |
---|---|---|
-h | Краткая справка. | |
-J | МБ | Размер журнала в мегабайтах. По умолчанию используется 128 МБ, при этом минимально допустимый размер — 32 МБ. Чтобы добавить журналы разных размеров, надо будет выполнить gfs2_jadd несколько раз. Указанная величина округляется в меньшую сторону так, чтобы она была кратной размеру сегмента журнала, определенного при создании файловой системы. |
-j | число_журналов | Число журналов. По умолчанию будет добавлен один журнал. |
-q | Отключает подробный вывод. | |
-V | Возвращает версию команды. |
4.8. Журналирование данных
fsync()
для файла приведет к немедленной записи файла на диск.
fsync()
. Однако по мере увеличения размера файлов скорость записи снижается, нивелируя это преимущество.
fsync()
.
chattr
.
/mnt/gfs2/gfs2_dir/newfile
.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
/mnt/gfs2/gfs2_dir/newfile
:
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
j
для каталога автоматически включит журналирование файлов и подкаталогов в его составе. В следующем примере будет установлен флаг j
для каталога gfs2_dir
с последующей проверкой его состояния. Затем в этом каталоге будет создан файл newfile
. Так как флаг уже установлен для каталога, newfile
его унаследует.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
4.9. Обновление atime
ctime
— время последнего изменения состояния inode;mtime
— время последнего изменения файла (каталога);atime
— время последнего доступа к файлу (каталогу).
atime
обновляется при каждом обращении к файлу.
atime
, тратить ресурсы на ее обновление нет смысла. В большинстве случаев можно его полностью отключить или уменьшить частоту обновления.
atime
контролируется двумя параметрами монтирования:
relatime
будет обновлятьatime
при условии, что параметрatime
в последний раз изменялся раньше чемmtime
илиctime
.noatime
полностью отключает обновление метки времени доступа к файлу.
4.9.1. Relatime
relatime
откладывает обновление atime
до тех пор, пока текущее значение atime
не станет меньше mtime
или ctime
(время последнего доступа не может быть меньше времени модификации).
4.9.1.1. Формат команд
mount устройство точка_монтирования
-o relatime
устройство
- Устройство, где расположена файловая система GFS2.
точка_монтирования
- Каталог, в который монтируется GFS2.
4.9.1.2. Пример
/dev/vg01/lvol0
будет подключена в /mygfs2
. При этом atime
будет обновляться только при изменении mtime
и ctime
.
mount /dev/vg01/lvol0 /mygfs2 -o relatime
4.9.2. Noatime
noatime
отключает обновление atime
.
4.9.2.1. Формат команд
mount устройство точка_монтирования
-o noatime
устройство
- Устройство, где расположена файловая система GFS2.
точка_монтирования
- Каталог, в который монтируется GFS2.
4.9.2.2. Пример
/dev/vg01/lvol0
будет подключена в /mygfs2
, и обновление atime
будет отключено.
mount /dev/vg01/lvol0 /mygfs2 -o noatime
4.10. Временная остановка файловой системы
dmsetup suspend
. Обычно это делается с целью создания снимка системы. Команда dmsetup resume
возобновит ее работу.
4.10.1. Формат команд
dmsetup suspend точка_монтирования
dmsetup resume точка_монтирования
точка_монтирования
- Каталог подключения файловой системы.
4.10.2. Примеры
/mygfs2
:
# dmsetup suspend /mygfs2
# dmsetup resume /mygfs2
4.11. Проверка файловой системы
fsck.gfs2
.
Важно
fsck.gfs2
должна выполняться в отключенной файловой системе.
Важно
fsck.gfs2
не сможет определить, смонтирована ли файловая система на другом узле кластера. Дождитесь завершения загрузки.
fsck.gfs2
во время загрузки, в строке GFS2 в /etc/fstab
установите нулевые значения в двух последних столбцах.
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
Примечание
fsck.gfs2
несколько отличается от gfs_fsck
:
- Ctrl+C прервет работу
fsck.gfs2
и покажет запрос, где можно будет выбрать остановить работу команды, пропустить текущий цикл проверки или продолжить работу. - Параметр
-v
позволяет вывести подробную информацию. Его повторное указание увеличивает детализацию. -q
снижает уровень детализации. Также может быть указан повторно.-n
откроет файловую систему в режиме чтения и будет отвечатьno
на все вопросы. Используется для выявления ошибок без применения измененийfsck.gfs2
.
fsck.gfs2
.
fsck.gfs2
использует память за пределами операционной системы и ядра. Проверка каждого блока в GFS2 требует примерно 5 бит (5/8 байта). Таким образом, чтобы оценить необходимый размер памяти, надо определить число блоков с помощью fsck.gfs2
и умножить его на 5/8.
fsck.gfs2
в файловой системе с блоками размером 4 КБ и общим размером 16 ТБ, надо определить число блоков, разделив размер файловой системы на размер блока:
17592186044416 / 4096 = 4294967296
4294967296 * 5/8 = 2684354560
fsck.gfs2
потребуется примерно 2.6 ГБ. Если бы размер блока был равен 1 КБ, требовалось бы 11 ГБ.
4.11.1. Формат команд
fsck.gfs2 -y устройство
-y
yes
на все вопросы, то естьfsck.gfs2
не будет запрашивать ответ перед применением изменений.устройство
- Устройство, где расположена файловая система GFS2.
4.11.2. Пример
/dev/testvol/testlv
с автоматическим подтверждением.
[root@dash-01 ~]# fsck.gfs2 -y /dev/testvg/testlv
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Clearing journals (this may take a while)...
Journals cleared.
Starting pass1
Pass1 complete
Starting pass1b
Pass1b complete
Starting pass1c
Pass1c complete
Starting pass2
Pass2 complete
Starting pass3
Pass3 complete
Starting pass4
Pass4 complete
Starting pass5
Pass5 complete
Writing changes to disk
fsck.gfs2 complete
4.12. mount --bind и контекстные ссылки
bind
команды mount
.
bind
позволяет смонтировать часть файловой структуры в другой каталог, не удаляя при этом исходную точку монтирования. Формат команды:
mount --bind каталог1 каталог2
/var/log
в новый каталог /root/tmp
:
[root@menscryfa ~]#cd ~root
[root@menscryfa ~]#mkdir ./tmp
[root@menscryfa ~]#mount --bind /var/log /root/tmp
/etc/fstab
:
/var/log /root/tmp none bind 0 0
[root@menscryfa ~]# mount | grep /tmp
/var/log on /root/tmp type none (rw,bind)
/bin
можно связать с одним из следующих каталогов в зависимости от архитектуры:
/usr/i386-bin /usr/x86_64-bin /usr/ppc64-bin
mount -bind
. Создайте пустой каталог /bin
и подключите в него вышеперечисленные каталоги. Строка монтирования для первого каталога будет выглядеть так:
mount --bind /usr/i386-bin /bin
/etc/fstab
:
/usr/1386-bin /bin none bind 0 0
mount --bind
обеспечивает бóльшую гибкость по сравнению с контекстными ссылками, так как позволяет подключать каталоги в соответствии с пользовательскими критериями (например, используя значение %fill
для файловой системы). Однако для этого придется написать собственный сценарий.
Предупреждение
rw
, то при создании связи bind
она тоже будет подключена в режиме rw
(даже если вы явно укажете ro
). При этом в каталоге /proc/mounts
может быть неверно указан режим ro
.
4.13. mount --bind и порядок подключения
/var/log
должен быть смонтирован до того, как будет создана связь между ним и /tmp
.
# mount --bind /var/log /tmp
- Монтирование файловых систем осуществляется в порядке следования в
fstab
. Исключение составляют файловые системы с собственными сценариямиinit
и те, которые монтируются с флагом_netdev
. - Файловые системы с собственным сценарием
init
монтируются после обработки файлаfstab
. - Файловые системы, монтируемые с флагом
_netdev
, будут подключены во время инициализации сети.
fstab
должен быть следующим:
- Сначала монтируются локальные файловые системы.
- Устанавливается связь с каталогом, в который будет подключена GFS2.
- Монтирование GFS2 в этот каталог.
fstab
не играет никакой роли, так как GFS2 монтируется только на стадии выполнения сценария init
GFS2. В этом случае mount --bind
надо добавить в сценарий — тогда связь будет установлена после монтирования GFS2.
init
, который смонтирует два каталога в файловую систему /mnt/gfs2a
.
chkconfig
:
- 345 — уровни выполнения, на которых будет запускаться сценарий;
- 29 — приоритет запуска, то есть сценарий будет запускаться после сценария инициализации GFS2, который имеет приоритет 26;
- 73 — приоритет остановки, то есть этот сценарий будет останавливаться до сценария GFS2, который имеет приоритет 74.
service start
и service stop
. Например, для запуска сценария fredwilma
выполните service fredwilma start
.
/etc/init.d
и присвоить ему такие же разрешения, как и у других сценариев в этом каталоге. Затем выполните chkconfig on
для его активации на выбранных уровнях выполнения: chkconfig fredwilma on
.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0
4.14. Функции отзыва GFS2
fsck.gfs2
. Этот метод является более предпочтительным по сравнению с паникой ядра и изоляцией узла.
gfs2
, а в файле /etc/fstab
есть записи для GFS2, то файловая система будет заново подключена после перезагрузки. Если же GFS2 была отозвана, то прежде чем заново ее подключить, следует выполнить fsck.gfs2
. Чтобы предотвратить подключение поврежденной файловой системы во время загрузки, выполните следующее:
- Отключите сценарий запуска на интересующем узле:
#
chkconfig gfs2 off
- Перезагрузите узел и запустите кластерные службы. GFS2 не будет подключена.
- Отключите файловую систему на остальных узлах кластера.
- Выполните
fsck.gfs2
для ее проверки. - Заново запустите сценарий на том же узле:
#
chkconfig gfs2 on
- Смонтируйте GFS2 на остальных узлах.
-o errors=panic
, то ошибки, которые обычно приводят к отзыву, будут вызывать панику и изоляцию узла.
gfs_controld
, который вызывает dmsetup
для настройки проецирования error
, ограничивающего доступ к файловой системе. Ядру сообщается об успешной изоляции устройства. Именно поэтому GFS2 создается на основе устройств CLVM, так как в противном случае добавление виртуальных устройств Device Mapper было бы невозможно.
error
гарантирует, что все попытки обращения будут вызывать ошибки, что позволит корректно отключить файловую систему. Поэтому наличие ошибок ввода-вывода в системных журналах после отзыва является нормальным явлением.
dmsetup
не смог создать проекцию, отзыв завершится неудачей. Это может произойти при нехватке памяти на момент инициализации процедуры отзыва.
Глава 5. Диагностика конфликтов GFS2
5.1. Низкая производительность GFS2
5.2. Зависание GFS2 с необходимостью перезагрузки на одном узле
- Получение информации о блокировках на узле:
cat /sys/kernel/debug/gfs2/ФС/glocks >glocks.ФС.узел
- Получение информации о блокировках DLM:
dlm_tool lockdebug -sv имя.
Укажите имя пространства блокирования. Это значение можно получить из вывода командыgroup_tool
. - Проверьте вывод
sysrq -t
. - Проверьте сообщения в
/var/log/messages
.
5.3. Зависание GFS2 с необходимостью перезагрузки на всех узлах
- При сбое механизма изоляции файловая система будет заморожена с целью сохранения целостности данных. Проверьте, нет ли в журналах сообщений о сбое механизма изоляции, и проверьте его конфигурацию.
- Проверьте наличие слова
withdraw
в журналах, сообщающего об отзыве файловой системы в результате повреждения или ошибок хранения. Отключите файловую систему, обновите пакетgfs2-utils
и выполнитеfsck
. Создайте отчет для службы поддержки Red Hat, включив содержимое журналов и sosreport.Раздел 4.14, «Функции отзыва GFS2» содержит подробную информацию. - Конфликты могут быть вызваны ошибками блокировки. Создайте отчет для службы поддержки Red Hat, включив собранную статистику (см. Раздел 5.2, «Зависание GFS2 с необходимостью перезагрузки на одном узле»).
5.4. Не удается подключить GFS2 на новом узле кластера
spectator
, так как в этом случае журнал не требуется. Добавить журналы можно с помощью gfs2_jadd
(см. Раздел 4.7, «Добавление журналов»).
5.5. Занятое пространство в пустой файловой системе
df
в пустой файловой системе обнаружилось, что часть пространства уже занята, скорее всего, оно занято системными журналами. Размер занятого пространства будет равен числу журналов, умноженному на их размер. В небольших файловых системах (меньше 1 ГБ) даже журналы стандартных размеров могут занимать заметную часть пространства.
Глава 6. GFS2 в кластере Pacemaker
cman
, clvmd
и pacemaker
на каждом узле, создайте кластер Pacemaker и настройте изоляцию узлов. Подробную информацию о Pacemaker можно найти в документе Red Hat High Availability и Pacemaker.
- Присвойте глобальному параметру
no_quorum_policy
значениеfreeze
.Примечание
По умолчаниюno-quorum-policy=stop
, то есть при потере кворума все ресурсы в оставшейся части раздела будут остановлены. Обычно этого должно быть достаточно, но GFS2 отличается тем, что для ее работы необходим кворум. Если кворума нет, файловая система и приложения, обращающиеся к GFS2, не смогут нормально завершить работу. Попытки их остановки завершатся неудачей, что в конце концов приведет к изоляции кластера.Именно поэтому для GFS2 надо настроитьno-quorum-policy=freeze
. Таким образом, при нарушении кворума остальные ресурсы будут приостановлены до тех пор, пока кворум не будет восстановлен.#
pcs property set no-quorum-policy=freeze
- Убедитесь, что в
/etc/lvm/lvm.conf
используется третий тип блокировки, поддерживающий кластерную блокировку. Создайте логический том и отформатируйте его как GFS2. Не забудьте создать достаточное число журналов.#
pvcreate /dev/vdb
#vgcreate -Ay -cy cluster_vg /dev/vdb
#lvcreate -L5G -n cluster_lv cluster_vg
#mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv
- Настройте ресурс
clusterfs
.Не добавляйте запись в файл/etc/fstab
, так как файловой системой будет управлять Pacemaker (как кластерным ресурсом). Параметры монтирования можно определить при помощиoptions=параметры
во время настройки ресурса. Для получения полного списка параметров выполнитеpcs resource describe Filesystem
.Пример создания кластерного ресурса для файловой системы с параметромnoatime
:#
pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" "options=noatime" op monitor interval=10s on-fail=fence clone interleave=true
- Проверьте результат монтирования:
#
mount |grep /mnt/gfs2-demo
/dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel) - Дополнительно: перезагрузите узлы, чтобы убедиться, что файловая система монтируется как ожидается.
Приложение A. gfs2_quota
gfs2_quota
.
A.1. Настройка квот
gfs2_quota
позволяет установить лимит. Эту команду нужно выполнить лишь на одном узле после подключения GFS2.
quota=on
(см. Раздел A.4, «Включение и отключение квот»).
A.1.1. Формат команд
gfs2_quota limit -uпользователь
-lразмер
-fточка_монтирования
gfs2_quota limit -gгруппа
-lразмер
-fточка_монтирования
gfs2_quota warn -uпользователь
-lразмер
-fточка_монтирования
gfs2_quota warn -gгруппа
-lразмер
-fточка_монтирования
пользователь
- UID или имя пользователя из файла паролей.
группа
- GID или название группы.
размер
- Новый лимит. В качестве единиц измерения по умолчанию используются мегабайты. Флаги
-k
,-s
и-b
позволяют их изменить на килобайты, секторы и блоки файловой системы. точка_монтирования
- Каталог подключения GFS2.
A.1.2. Примеры
/mygfs2
:
# gfs2_quota limit -u Bert -l 1024 -f /mygfs2
/mygfs2
будет определен гибкий лимит в 50 килобайт.
# gfs2_quota warn -g 21 -l 50 -k -f /mygfs2
A.2. Статистика использования пространства
gfs2_quota get
можно получить информацию о текущих ограничениях и занятом пространстве. Чтобы вывести содержимое файла квот, выполните gfs2_quota list
.
A.2.1. Формат команд
gfs2_quota get -uпользователь
-fточка_монтирования
gfs2_quota get -gгруппа
-fточка_монтирования
gfs2_quota list -f точка_монтирования
пользователь
- UID или имя пользователя из файла паролей.
группа
- GID или название группы.
точка_монтирования
- Каталог подключения GFS2.
A.2.2. Вывод gfs2_quota
gfs2_quota
:
userпользователь
: limit:жесткий
warn:гибкий
value:значение
groupгруппа
: limit:жесткий
warn:гибкий
value:значение
-k
(килобайты), -s
(сектора) и -b
(блоки).
пользователь
- Имя пользователя или его идентификатор.
группа
- Имя группы или ее идентификатор.
жесткий, гибкий
- Предельные значения. Нулевое значение снимает ограничения.
значение
- Текущий размер используемого пространства.
A.2.3. Комментарии
-n
команды gfs2_quota
отключает преобразование UID и GID в имена.
-d
исключает из вывода пространство, занятое скрытыми файлами корневого UID или GID. Обычно используется для сравнения результатов gfs2_quota
и du
.
A.2.4. Примеры
/mygfs2
.
# gfs2_quota list -f /mygfs2
users
будут использоваться сектора.
# gfs2_quota get -g users -f /mygfs2 -s
A.3. Синхронизация квот
quota_quantum
и по умолчанию равен 60 секундам (см. Таблица 4.2, «Параметры монтирования GFS2»). Значение quota_quantum
сбрасывается после отключения файловой системы, но его можно настроить вручную при монтировании при помощи mount -o remount
.
gfs2_quota sync
.
A.3.1. Формат команд
gfs2_quota sync -f точка_монтирования
точка_монтирования
- Каталог подключения GFS2.
mount -o quota_quantum=интервал,remount устройство точка_монтирования
точка_монтирования
- Каталог подключения GFS2.
интервал
- Интервал синхронизации в секундах. Чем меньше значение, тем лучше точность отслеживания изменений в файле, но тем выше нагрузка.
A.3.2. Примеры
/mygfs2
.
# gfs2_quota sync -f /mygfs2
/mnt/mygfs2
, которая монтируется в /dev/volgroup/logical_volume
, будет увеличен до 1 часа (3600 секунд).
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
A.4. Включение и отключение квот
quota=on
.
A.4.1. Формат команд
mount -o quota=on устройство точка_монтирования
quota=off
. Этот вариант используется по умолчанию.
mount -o quota=off устройство точка_монтирования
-o quota={on|off}
- Включает и отключает квотирование.
устройство
- Устройство, где расположена файловая система GFS2.
точка_монтирования
- Каталог подключения файловой системы.
A.4.2. Примеры
/dev/vg01/lvol0
в /mygfs2
с активацией квот:
# mount -o quota=on /dev/vg01/lvol0 /mygfs2
A.5. Статистика использования квот
quota=account
.
A.5.1. Формат команд
mount -o quota=account устройство точка_монтирования
-o quota=account
- Статистика использования пространства отслеживается на уровне файловой системы.
устройство
- Устройство, где расположена файловая система GFS2.
точка_монтирования
- Каталог подключения файловой системы.
A.5.2. Пример
/dev/vg01/lvol0
монтируется в каталог /mygfs2
с поддержкой статистики квот.
# mount -o quota=account /dev/vg01/lvol0 /mygfs2
Приложение B. Преобразование GFS в GFS2
gfs2_convert
. Сначала надо будет преобразовать файловые системы и уже после этого обновить операционную систему до Red Hat Enterprise Linux 6.
Предупреждение
gfs_fsck
.
fsck.gfs2
.
B.1. Преобразование контекстных ссылок
mount --bind
.
gfs2_convert
найдет контекстные ссылки и заменит их одноименными пустыми каталогами. Однако чтобы настроить их точки монтирования, необходимо знать полный путь. Команда find
поможет его определить.
hostname
:
[root@smoke-01 gfs]# find /mnt/gfs -lname @hostname
/mnt/gfs/log
find
также можно найти пути, использующие переменные mach
, os
, sys
, uid
, gid
, jid
. Имя переменной можно указать в формате @переменная
или {переменная}
.
B.2. Порядок преобразования GFS в GFS2
- Создайте резервную копию содержимого GFS.
- Отключите файловую систему на всех узлах кластера.
- Выполните проверку
gfs_fsck
. - Чтобы начать преобразование, выполните команду
gfs2_convert
. В процессе работы будут показаны предупреждения и подтверждения.ФС
- Обновите операционную систему до Red Hat Enterprise Linux 6.
/dev/shell_vg/500g
:
[root@shell-01 ~]# /root/cluster/gfs2/convert/gfs2_convert /dev/shell_vg/500g
gfs2_convert version 2 (built May 10 2010 10:05:40)
Copyright (C) Red Hat, Inc. 2004-2006 All rights reserved.
Examining file system..................
This program will convert a gfs1 filesystem to a gfs2 filesystem.
WARNING: This can't be undone. It is strongly advised that you:
1. Back up your entire filesystem first.
2. Run gfs_fsck first to ensure filesystem integrity.
3. Make sure the filesystem is NOT mounted from any node.
4. Make sure you have the latest software versions.
Convert /dev/shell_vg/500g from GFS1 to GFS2? (y/n)y
Converting resource groups...................
Converting inodes.
24208 inodes from 1862 rgs converted.
Fixing file and directory information.
18 cdpn symlinks moved to empty directories.
Converting journals.
Converting journal space to rg space.
Writing journal #1...done.
Writing journal #2...done.
Writing journal #3...done.
Writing journal #4...done.
Building GFS2 file system structures.
Removing obsolete GFS1 file system structures.
Committing changes to disk.
/dev/shell_vg/500g: filesystem converted successfully to gfs2.
Приложение C. Мониторинг событий и файл glocks
debugfs
.
C.1. Категории событий трассировки в GFS2
blktrace
) поможет получить объективное представление о производительности системы. Несмотря на свою облегченную структуру, обработчики генерируют большие объемы информации за короткий период времени. Чтобы сократить нагрузку, рекомендуется использовать фильтры и отслеживать лишь необходимые события.
C.2. Обработчики
debugfs
смонтирована в /sys/kernel/debug
, обработчики можно будет найти в /sys/kernel/debug/tracing/
. Подкаталог events
содержит полный список событий, а если был загружен модуль gfs2
— то и каталог gfs2
с отдельными подкаталогами для каждого события. Содержимое /sys/kernel/debug/tracing/events/gfs2
может выглядеть примерно так:
[root@chywoon gfs2]# ls
enable gfs2_bmap gfs2_glock_queue gfs2_log_flush
filter gfs2_demote_rq gfs2_glock_state_change gfs2_pin
gfs2_block_alloc gfs2_glock_put gfs2_log_blocks gfs2_promote
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable
enable
так же, как это сделано выше. Аналогично можно настроить filter
для всех обработчиков в /sys/kernel/debug/tracing/events/gfs2/filter
или по отдельности в подкаталогах.
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace
/sys/kernel/debug/tracing/trace_pipe
. По мере чтения событий они будут удаляться из файла. Формат вывода в обоих случаях идентичен.
trace-cmd
(см. Раздел C.10, «Дополнительные ресурсы»), которая перехватывает события аналогично тому, как это делает strace
, и поможет понять, что делает процесс в заданное время.
C.3. Glocks
Таблица C.1. Режимы блокировки glock и DLM
Режим glock | Режим DLM | Описание |
---|---|---|
UN | IV/NL | Не заблокировано (блокировка DLM не назначена или назначена в режиме NL, о чем свидетельствует установленный флаг «I»). |
SH | PR | Совместный доступ (защищенное чтение). |
EX | EX | Монопольная блокировка. |
DF | CW | Параллельная запись. Используется для прямого ввода-вывода. |
Примечание
lock_dlm
в GFS2, поэтому блокировка DLM освобождается одновременно с glock.
Примечание
Таблица C.2. Кэширование glock
Режим glock | Данные | Метаданные | Несогласованные данные | Несогласованные метаданные |
---|---|---|---|---|
UN | нет | нет | нет | нет |
SH | да | да | нет | нет |
DF | нет | да | нет | нет |
EX | да | да | да | да |
C.4. Просмотр статуса glock средствами debugfs
Debugfs
предоставляет интерфейс для визуализации внутреннего состояния блокировок. Секция блокировки начинается с «G:». Следующие за ней строки начинаются с пробела и содержат подробную информацию (например, «H:» обозначает запрос, удерживающий glock, «I:» — inode, «R:» — группу ресурсов).
G: s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2] R: n:258028 f:05 b:22256/22256 i:16800 G: s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522 G: s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2 G: s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock
во время теста postmark на узле GFS2. Здесь показаны блокировки, демонстрирующие наиболее интересные свойства glock.
iopen
, а 75320 — номер файлового дескриптора. Для типов 2 и 5 за наклонной чертой следует номер дескриптора на диске.
Примечание
blktrace
и stat
(1).
debugfs
.
Таблица C.3. Типы glock
Номер | Тип | Описание |
---|---|---|
1 | trans | Блокировка транзакции |
2 | inode | Индексный дескриптор |
3 | rgrp | Метаданные группы ресурсов |
4 | meta | Суперблок |
5 | iopen | Идентифицирует открытый дескриптор |
6 | flock | Системный вызов flock (2) |
8 | quota | Операции с квотами |
9 | journal | Мьютекс журнала |
Таблица C.4. Флаги glock
Флаг | Имя | Описание |
---|---|---|
d | Pending demote | Получен запрос снижения режима блокировки, но glock уже удерживается, и время минимального обслуживания не истекло. |
D | Demote | Есть запрос снижения режима блокирования (локальный или удаленный). |
f | Log flush | Прежде чем освободить glock, необходимо сохранить журнал. |
F | Frozen | Идет восстановление — ответы удаленных узлов игнорируются. |
i | Invalidate in progress | Сброс страниц кэша под блокировкой. |
I | Initial | Выбранному glock назначена блокировка DLM. |
l | Locked | Glock в процессе изменения состояния. |
L | LRU | Glock в списке LRU. |
o | Object | Означает, что glock связан с объектом. Объекты могут быть разных типов. Так, тип 2 означает дескриптор, 3 — группу ресурсов. |
p | Demote in progress | Glock в процессе обработки запроса снижения режима блокировки. |
q | Queued | Устанавливается при наличии ожидающих запросов и снимается, если запросов нет. Используется алгоритмом расчета минимального времени удерживания glock. |
r | Reply pending | Ответ, полученный от удаленного узла, ожидает обработки. |
y | Dirty | Прежде чем освободить glock, необходимо сохранить данные. |
C.5. Запросы блокировки
Таблица C.5. Флаги удерживания glock
Флаг | Имя | Описание |
---|---|---|
a | Async | Не ждать результата glock (будет запрошен позднее). |
A | Any | Принимает любой совместимый режим блокировки. |
c | No cache | Если не заблокировано, сразу снизить режим блокировки DLM. |
e | No expire | Игнорирует последующие запросы снятия блокировки. |
E | Exact | Требуется конкретный режим блокировки. |
F | First | Первый запрос, захвативший блокировку. |
H | Holder | Блокировка установлена. |
p | Priority | Ставит запрос блокировки в начало очереди. |
t | Try | Пробная блокировка. |
T | Try 1CB | Пробная блокировка с ответом. |
W | Wait | Ожидание обработки запроса. |
try 1CB
) отличается лишь тем, что DLM отправит свой запрос удерживаемому glock. В частности, try 1CB
используется вместе с iopen
и помогает выбрать узел, который освободит inode. По умолчанию iopen
удерживается в разделяемом режиме, но как только i_nlink
достигнет нулевого значения, и будет вызван ->delete_inode
(), будет установлен флаг «T» и запрошен монопольный режим. Если удалось установить монопольный режим, то inode будет освобожден. Если же блокировка удерживается другим узлом, для его glock будет установлен флаг ожидания «D», и он снова будет проверен при вызове ->drop_inode
().
i_nlink
дескриптора уменьшится до нуля, в битовой карте групп ресурсов он будет отмечен как ожидающий освобождения, но все еще используемый. При следующем чтении битовой карты это будет обнаружено, после чего будет предпринята очередная попытка его освобождения. В результате дескриптор будет освобожден тем узлом, на котором будет сделан последний вызов close
(), так как ничто не будет препятствовать завершению операции.
C.6. Обработчики событий glock
gfs2_glock_state_change
является одним из ключевых обработчиков: он следит за изменением состояния glock с момента создания и до его освобождения. В свою очередь, освобождение glock, которое знаменуется переходом из режима NL в незаблокированное состояние, контролируется обработчиком gfs2_glock_put
. Как уже говорилось, на время изменения состояния устанавливается флаг «l» (locked), который предотвращает попытки перехвата блокировки. Остальные запросы будут ожидать в состоянии «W». После успешного изменения состояния блокировку можно будет перехватить.
gfs2_demote_rq
отслеживает запросы снижения режима блокировки (локальные и удаленные). Если на узле достаточно памяти, то локальные запросы будут появляться редко и чаще всего будут иметь отношение к umount и операциям освобождения памяти, в то время как количество удаленных запросов напрямую отражает уровень конкуренции за доступ к inode или группе ресурсов.
gfs2_promote
. Обычно это происходит на последних стадиях изменения состояния glock или по запросу блокировки, которую можно установить сразу в силу того, что glock уже кэширует ее в подходящем режиме. Первый запрос, перехвативший glock, будет отмечен флагом «F» (First).
C.7. Отслеживание блочных операций
gfs2_bmap
вызывается дважды для одной операции с картой блоков: первый раз для просмотра запроса, второй раз — для отображения результата. Таким образом, можно легко определить, сколько времени уходит на отведение блоков в разных сегментах файловой системы или даже в разных файлах. Этот обработчик также помогает сравнить средний размер полученных экстентов с запрашиваемым.
gfs2_block_alloc
следит не только за выделением блоков, но и за их освобождением. Каждый занятый блок связан с индексным дескриптором, что позволяет определить, каким файлам отведены те или иные блоки. В комбинации с результатами теста blktrace
, который анализирует производительность ввода-вывода, gfs2_block_alloc
поможет определить дескрипторы, и как следствие — файлы, которым принадлежат проблемные блоки.
C.8. Обработчики событий журналов
gfs2_pin
следит за добавлением блоков в журнал и их удалением, а gfs2_log_flush
— за временем, потраченным на запись транзакций в журнал. Эти обработчики обычно используются при анализе производительности журналирования.
gfs2_log_blocks
контролирует зарезервированные блоки в журнале, что, в частности, поможет определить, соответствует ли размер журнала текущему объему нагрузки.
gfs2_ail_flush
(Red Hat Enterprise Linux 6.2 и выше) отслеживает время записи списка AIL (Active Item List), содержащего изменения журнала, которые еще не были сохранены. Список AIL освобождается периодически с целью освобождения места или по запросу fsync.
C.9. Статистика glock
dcount
отслеживает число запросов к DLM и помогает оценить, на основе какого количества исходных данных рассчитывалось среднее значение и дисперсия цикла блокировки DLM;qcount
подсчитывает число вызововsyscall
, тем самым отслеживая число запросов блокировки в очереди glock. Желательно, чтобы это число превышало значениеdcount
.
- srtt/srttvar: продолжительность полного цикла неблокирующих запросов DLM;
- srttb/srttvarb: продолжительность полного цикла блокирующих запросов DLM;
- irtt/irttvar: интервал между запросами DLM.
sysfs
:
glstats
— его формат напоминает файлglocks
, но на один glock выделена одна строка, в которой приведена статистика по рассмотренным выше критериям.lkstats
содержит статистику glock по процессорным ядрам. Каждая строка содержит одну из восьми перечисленных характеристик glock, то есть для одного glock требуется 8 строк (три пары средних значений и дисперсии плюс два счетчика). В столбцах перечислены процессорные ядра.
C.10. Дополнительные ресурсы
glocks
и мониторинге событий GFS2 обратитесь к следующим ресурсам:
- Материалы в этом приложении были частично заимствованы из доклада Стива Уайтхауза на симпозиуме Linux 2009: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=04 94f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Описание внутренних правил блокирования: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=0494f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Описание
trace-cmd
: http://lwn.net/Articles/341902/.
Приложение D. История переиздания
История переиздания | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Издание 7.1-3.2 | Fri Mar 6 2015 | Yuliya Poyarkova | |||||||||||
| |||||||||||||
Издание 7.1-3.1 | Fri Mar 6 2015 | Yuliya Poyarkova | |||||||||||
| |||||||||||||
Издание 7.1-3 | Tue Dec 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Издание 7.0-9 | Wed Oct 8 2014 | Steven Levine | |||||||||||
| |||||||||||||
Издание 7.0-8 | Thu Aug 7 2014 | Steven Levine | |||||||||||
| |||||||||||||
Издание 7.0-4 | Thu Jul 17 2014 | Steven Levine | |||||||||||
| |||||||||||||
Издание 7.0-3 | Wed Jul 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Издание 7.0-1 | Thu Jun 5 2014 | Steven Levine | |||||||||||
| |||||||||||||
Издание 6.0-6 | Wed Nov 13 2013 | Steven Levine | |||||||||||
| |||||||||||||
Издание 6.0-5 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Издание 6.0-3 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Издание 6.0-1 | Fri Sep 06 2013 | Steven Levine | |||||||||||
| |||||||||||||
Издание 5.0-7 | Mon Feb 18 2013 | Steven Levine | |||||||||||
| |||||||||||||
Издание 5.0-5 | Mon Nov 26 2012 | Steven Levine | |||||||||||
| |||||||||||||
Издание 5.0-4 | Tue Nov 13 2012 | Steven Levine | |||||||||||
| |||||||||||||
Издание 5.0-1 | Mon Oct 15 2012 | Steven Levine | |||||||||||
| |||||||||||||
Издание 4.0-2 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Издание 4.0-1 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Издание 3.0-2 | Thu Dec 1 2011 | Steven Levine | |||||||||||
| |||||||||||||
Издание 3.0-1 | Mon Sep 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Издание 2.0-1 | Thu May 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Издание 1.0-1 | Wed Nov 15 2010 | Steven Levine | |||||||||||
|
Предметный указатель
Символы
- Особенности конфигурации, Функциональные особенности и конфигурация GFS2
- блокировка Posix, Блокировка Posix
- блокировка узлов, Блокировка узлов GFS2
- введение, Введение
- целевая аудитория, Целевая аудитория
- ведение журналов, Журналирование данных
- возможности, новые и измененные, Новые и измененные функции
- дисковые квоты
- введение квот для групп, Установка квот для групп пользователей
- гибкий лимит, Установка квот для пользователей
- добавление, Настройка дисковых квот
- дополнительные ресурсы, Дополнительные ресурсы
- жесткий лимит, Установка квот для пользователей
- квоты пользователей, Установка квот для пользователей
- управление, Repquota
- команда quotacheck, проверка, Quotacheck
- статистика, Repquota
- добавление журналов для файловой системы, Добавление журналов
- зависание файловой системы при отключении, Особенности подключения GFS2
- исходные задачи
- настройка, исходная, Первоначальная конфигурация
- квоты
- добавление
- quotacheck, выполнение, Создание базы данных квот
- создание файлов квот, Создание базы данных квот
- команда fsck.gfs2, Проверка файловой системы
- команда gfs2_grow, Увеличение размера файловой системы
- команда gfs2_jadd, Добавление журналов
- команда gfs2_quota, gfs2_quota
- команда mkfs, Создание файловой системы
- команда mount, Монтирование файловой системы
- команда quotacheck
- проверка точности квот, Quotacheck
- команда umount, Отключение файловой системы
- контекстные ссылки, mount --bind и контекстные ссылки
- преобразование GFS в GFS2, Преобразование контекстных ссылок
- конфигурация, исходная, Начало работы
- предварительные требования, Предварительные требования
- конфигурация, подготовка, Проектирование структуры GFS2
- максимальный размер GFS2, Обзор GFS2
- максимальный размер, GFS2, Обзор GFS2
- монтирование связей, mount --bind и контекстные ссылки
- монтирование файловой системы, Монтирование файловой системы, Особенности подключения GFS2
- настройка, исходная
- исходные задачи, Первоначальная конфигурация
- обзор, Обзор GFS2
- возможности, новые и измененные, Новые и измененные функции
- предварительная подготовка, Проектирование структуры GFS2
- обработчики, Мониторинг событий и файл glocks
- оптимизация производительности, Оптимизация производительности
- оптимизация, производительность, Оптимизация производительности
- остановка записи в файловую систему, Временная остановка файловой системы
- отзыв, GFS2, Функции отзыва GFS2
- отзывы
- контактная информация, Отзывы и предложения
- отключение файловой системы, Отключение файловой системы, Особенности подключения GFS2
- отключение, зависание файловой системы, Особенности подключения GFS2
- параметр acl, Монтирование файловой системы
- параметр quota_quantum, Quotasync, Синхронизация квот
- параметры gfs2_jadd, Полная форма
- предварительные требования
- конфигурация, исходная, Предварительные требования
- предисловие (см. введение)
- проверка файловой системы, Проверка файловой системы
- создание файловой системы, Создание файловой системы
- таблица параметров mkfs.gfs2, Полный список параметров
- таблица параметров mount, Полная форма
- таблица параметров увеличения размера файловой системы, Полная форма
- таблицы
- параметры gfs2_jadd, Полная форма
- параметры mkfs.gfs2, Полный список параметров
- параметры монтирования, Полная форма
- параметры увеличения размера файловой системы, Полная форма
- типы glock, Статистика блокировок, Просмотр статуса glock средствами debugfs
- увеличение размера файловой системы, Увеличение размера файловой системы
- управление GFS2, Управление GFS2
- управление квотами, Управление квотами в GFS2, Настройка квот, gfs2_quota
- настройка квот, Настройка квот
- принудительный режим, Включение и отключение квот
- просмотр квот, Статистика использования пространства
- синхронизация квот, Quotasync, Синхронизация квот
- статистика квот, Статистика использования квот
- файл debugfs, Статистика блокировок
- файловая система
- atime, настройка обновлений, Обновление atime
- bind, mount --bind и контекстные ссылки
- ведение журналов, Журналирование данных
- добавление журналов, Добавление журналов
- контекстные ссылки, mount --bind и контекстные ссылки
- монтирование, Монтирование файловой системы, Особенности подключения GFS2
- остановка, Временная остановка файловой системы
- отключение, Отключение файловой системы, Особенности подключения GFS2
- порядок подключения, mount --bind и порядок подключения
- проверка, Проверка файловой системы
- создание, Создание файловой системы
- увеличение, Увеличение размера файловой системы
- управление квотами, Управление квотами в GFS2, Настройка квот, gfs2_quota
- настройка квот, Настройка квот
- принудительный режим, Включение и отключение квот
- просмотр квот, Статистика использования пространства
- синхронизация квот, Quotasync, Синхронизация квот
- статистика квот, Статистика использования квот
- флаги glock, Статистика блокировок, Просмотр статуса glock средствами debugfs
- флаги удерживания glock, Статистика блокировок, Запросы блокировки
- целевая аудитория, Целевая аудитория
A
- atime, настройка обновлений, Обновление atime
D
- debugfs, Мониторинг событий и файл glocks
G
- GFS2
- atime, настройка обновлений, Обновление atime
- отзыв, Функции отзыва GFS2
- работа, Функциональные особенности и конфигурация GFS2
- управление, Управление GFS2
- управление квотами, Управление квотами в GFS2, Настройка квот, gfs2_quota
- настройка квот, Настройка квот
- принудительный режим, Включение и отключение квот
- просмотр квот, Статистика использования пространства
- синхронизация квот, Quotasync, Синхронизация квот
- статистика квот, Статистика использования квот
- функциональные особенности, Функциональные особенности и конфигурация GFS2
- glock, Мониторинг событий и файл glocks
M
- mount --bind
- порядок подключения, mount --bind и порядок подключения
Q
- quota=режим, Настройка квот
- quotacheck , Создание базы данных квот