На сервере 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
также сказал "не чисто".