Назад | Перейти на главную страницу

ext4: онлайн-изменение размера не обнаружено

На сервере RedHat 6 мы столкнулись с проблемой онлайн-изменения размера файловой системы ext4.

При использовании только / dev / sda у нас было 13 ГБ доступных в группе томов, но нам нужно было еще 20 ГБ на одном логическом томе, который был 36 ГБ. В группу томов добавлен / dev / sdb, а файловая система была расширена (lvextend) и изменена (resize2fs) до 56 ГБ. Во время изменения размера сообщений об ошибках не было, и ОС сообщила новый размер.

Рассматриваемый логический том содержит установку IBM HTTP Server (apache 2.2), файлы конфигурации и журнала для 8 различных веб-серверов.

Сегодня утром использование файловой системы превысило 36 ГБ. Сначала произошло то, что веб-серверы перестали вести журнал (обнаруженное позже), в то время как веб-серверы продолжали работать без проблем. Спустя 2,5 часа, в связи с ротацией логов и другими записями в файловую систему, все начало зависать. Это означает: веб-серверы перестали принимать трафик, несмотря на то, что процессы продолжали работать, попытка «отслеживать» файл журнала зависала и не могла быть прервана. Нагрузка на сервер выросла с 0,10 до 4000 (да ...) - в основном это связано с iowait (казалось бы).

Решением было закрыть веб-сервер - kill -9 был единственным способом и перезагрузить сервер. Размонтируйте файловую систему, выполнила fsck (без ошибок) и снова запустите. С тех пор проблем нет.

Мы можем точно рассчитать время ошибки с остановкой ведения журнала до момента, когда использование диска (lv) превысило предыдущий размер в 36 ГБ.

Казалось, что службы в других файловых системах работают нормально, в том числе в операционной системе.

В / var / log / messages мы видели:

kernel: INFO: task httpd:<pid> blocked for more than 120 seconds.
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kernel: httpd         D 0000000000000001     0  6889   6865 0x00000080
kernel: ffff88023aa99c88 0000000000000086 0000000000000000 0000000000006102
kernel: ffff88010aebaa80 ffff880105dd0ae0 000000003aa99c08 ffff880105dd0ae0
kernel: ffff880105dd1098 ffff88023aa99fd8 000000000000fb88 ffff880105dd1098
kernel: Call Trace:
kernel: [<ffffffff8150efbe>] __mutex_lock_slowpath+0x13e/0x180
kernel: [<ffffffff8150ee5b>] mutex_lock+0x2b/0x50
kernel: [<ffffffff8111c461>] generic_file_aio_write+0x71/0x100
kernel: [<ffffffffa0097fb1>] ext4_file_write+0x61/0x1e0 [ext4]
kernel: [<ffffffff81180d7a>] do_sync_write+0xfa/0x140
kernel: [<ffffffff81096ca0>] ? autoremove_wake_function+0x0/0x40
kernel: [<ffffffff8121bc06>] ? security_file_permission+0x16/0x20
kernel: [<ffffffff81181078>] vfs_write+0xb8/0x1a0
kernel: [<ffffffff81181971>] sys_write+0x51/0x90
kernel: [<ffffffff810dc645>] ? __audit_syscall_exit+0x265/0x290
kernel: [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b

Версии:

Kernel: 2.6.32-358.2.1.el6.x86_64
lvm2-2.02.98-9.el6.x86_64
e2fsprogs-1.41.12-14.el6.x86_64

Проблем с основным оборудованием не обнаружено.

Ответ: файловая система была создана с помощью mke2fs <device>

Тогда по умолчанию создается файловая система ext2. Однако он был смонтирован как файловая система ext4 - без каких-либо сообщений об ошибках - а позже воспринимался как файловая система ext4.

Так что неудивительно, что изменение размера онлайн сработало, и неудивительно, что расширенная часть была распознана после размонтирования / монтирования или перезагрузки.

Потребовалось некоторое время, чтобы обнаружить, так как между созданием и изменением размера прошло много времени, и он, наконец, был обнаружен при запуске blkid, где написано "ext2". tune2fs -l также сказал "не чисто".