LINUX.ORG.RU
ФорумAdmin

Диагностика зависания


0

0

Ситуация:
- создаю файл размером 512 Мб (dd if=/dev/zero of=./live/fs.img bs=1k count=512000);
- создаю на нем файловую систему ext2 (mke2fs -F ./live/fs.img);
- монтирую его как loop устройсво в один из каталогов;
- копирую из каталога в корневой файловой системе несколько каталогов общим размером около 420 Мб в подмонитрованную файловую систему loop устройства.

Проблема: в неопределенный момент времени все дисковые (т.к. пока нет обращения к диску некоторые программы еще работают) операции зависают. Соответственно, в конце концов (секунд за 10) виснет все.
Ядра пробовались 2.4.20, 2.4.22 с различными патчами и без них. ACPI и APIC как включались так и отключались. В настройках ядра перед компиляцией ставил различные опции.

Результат: никаких изменений в поведении. Нерегулярно, но виснет. В логах никаких подозрительных записей - просто обрыв на ровном месте (после горячего рестарта).

Вопрос: как диагностировать данную ситуацию? У меня уже руки опускаются от невозможности определить причину зависаний. :(((((

Ответ на: комментарий от grustnoe

ОК! Я проверю, но почти 100% что их нет. Во всем остальном система отлично работает. Причем, это наблюдается как на рабочей так и на домашней машине. Винты разные - на работе 80Гб WD, дома 60Гб IBM.

UncleAndy ★★★
() автор топика
Ответ на: комментарий от UncleAndy

Так что - никто не знает? Мне-же не надо ответ - что происходит. Мне нужен совет как определить почему возникает эта проблема? Может ядро скомпилить с отладочной информацией? Но как ее потом использовать?

anonymous
()
Ответ на: комментарий от vilfred

Сейчас я sync делаю почти каждый раз перед началом копирования. Что-бы рутовая файлуха хоть не сильно портилась.
Вчера вот только копирование по два каталога помогло - прошло без зависов. А если все сразу - виснет. :(

UncleAndy ★★★
() автор топика
Ответ на: комментарий от UncleAndy

Причины:
1). хард
2). софт

Проверь прерывания.
Проверь, не виснет ли простое переписывание (без loop'а) больших объёмов.

Поставь какую-нить FreeBSD, проделай на ней тот же трюк с loop'ом много-много раз. Если повиснет -- проблема в железе, не повиснет -- соответственно в софте.

Перенеси винт на аналогичную железку и проверь там.

Если проблема в железе -- меняй железо по цепочке (винт, шлейф, контроллер, мать/процессор/память).

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

anonymous
()
Ответ на: комментарий от anonymous

Винт и мать я уже исключил из подозрения. Мать менял, винты на работе и дома разные. На работе и винт менял на другой, но той-же модели.

А вот как идти по софтовой цепочке? Что-то я не совсем понимаю. Т.е. идея понятна - не понятно, как ее на практике реализовать.

UncleAndy ★★★
() автор топика
Ответ на: комментарий от UncleAndy

Сначала убираешь loop. Пробуешь. Если не виснет -- значит проблема в loop'е или фс, которая на виртуальном диске.
Если виснет -- значит во внешней фс или драйвере контроллера.

anonymous
()
Ответ на: комментарий от anonymous

Нечто подобное у меня было месяц назад с reiserfs. Растаривал большой (500 M) архив с компакт-диска на reiserfs под vmware. VMware обнаруживает в себе "Not implemented, please send the report to vmware@vmware.com"

anonymous
()
Ответ на: комментарий от anonymous

Если убрать loop - ничего не виснет.

Т.е. как я понимаю - следующим логичным шагом должна быть смена файловой системы на loop.

ОК! А что делать, когда обнаружиться например, что проблема в драйвере loop? Писать на kernel.org в bugs?

UncleAndy ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.