Как я могу fsck раздел, когда устройство читает как занято (но было подтверждено иначе)?

11

Я пытаюсь запустить, fsck -p /dev/sda5чтобы исправить ошибки в разделе ext4, однако команда выводит

fsck from util-linux-ng 2.17.2
fsck.ext4: Device or resource busy while trying to open /dev/sda5
Filesystem mounted or opened exclusively by another program?

Я подтвердил использование /etc/mtabи lsofничего не использует раздел, и он не смонтирован. Я также использовал fuser -k /dev/sda5принудительное закрытие чего-либо, используя файл, и umountпытался размонтировать его безрезультатно.

Как я могу заставить fsckхотя бы проверить и, надеюсь, восстановить раздел, несмотря на то, что он читается как занятый? Предполагая, что я достаточно уверен, что он не подключен и не используется, и что возможность повреждения данных не является проблемой.

Все команды были выполнены как root с 32-битного liveCD Ubuntu 10.04. Раздел является системной (не домашней) частью 32-разрядной установки Ubuntu 10.04.

Keeblebrox
источник
Я нашел способ решения более крупной проблемы, связанной с этим вопросом, но я все еще ищу ответ относительно того, как вызвать, fsckесли он думает, что устройство занято (или почему это не может быть сделано).
Киблброкс
Я столкнулся с той же проблемой в системе RHEL5.8. / tmp был размонтирован, / etc / mtab и / proc / mounts не показывают никаких следов файловой системы. Я даже перезагрузил машину, убедившись, что я единственный, кто вошел в систему. lsof не показывает используемый файл в / tmp. Та же процедура прекрасно работает на 4 аналогичных серверах, установленных с использованием одного и того же профиля кикстарта. Разница между этими серверами и этим заключается в том, что к этому серверу подключено хранилище SAN. Может ли многопутевой демон вызвать это?
Брэм
В моем случае это не помогло, но Red Hat KB ( access.redhat.com/knowledge/solutions/54184 ) рекомендует добавить опцию ядра nodmraid в качестве обходного пути для этой проблемы.
Брэм

Ответы:

4

Существуют вещи (обычно в ядре, такие как потоки NFS, файлы подкачки, монтирование bind и т. Д.), Которые могут поддерживать файловую систему занятой, которая не будет отображаться fuser.

Если вы попытаетесь fsckсмонтировать файловую систему, она будет повреждена. Вы должны найти живой CD, который автоматически не монтирует ваши файловые системы, такие как Knoppix или Fedora.

Стивен Притчард
источник
До сих пор все было запущено с живого диска. Я пытаюсь fsckиспользовать локальную файловую систему, так что я надеюсь, что NFS не будет занимать ее, однако я получаю то, что вы говорите о том, что ядро ​​загружает его так, что это не обязательно будет отображаться. Поскольку это все еще происходит в среде живого диска, знаете ли вы, как остановить ядро ​​от доступа к нему достаточно долго, чтобы я мог его запустить fsck?
Киблброкс,
Хлоп. Используется с живого диска? Я могу думать только о двух вещах: 1) Попробуйте другой живой диск (например, Fedora вместо Ubuntu). 2) Проверьте / etc / fstab в реальной системе. Может быть, есть файл подкачки или монтирование, которое включается автоматически? Не обязательно в таком порядке, я мог бы добавить ...
Стивен Притчард
Хорошо, почему-то я полностью пропустил последнюю строчку вопроса. Я обновил свой ответ соответственно.
Стивен Притчард
+1, потому что ваше упоминание об автоматически смонтированном свопе привело к несвязанному прорыву, а ваши ответы помогли решить большую проблему. Я все еще хочу найти способ форсировать, fsckкогда я знаю, что устройство не занято и не смонтировано, и когда повреждение данных не является проблемой.
Keeblebrox
Может быть, mdadm обнаружил рейдовые подписи на разделе и привязал к нему? Проверьте / proc / mdstat.
psusi
4

Вы можете удалить раздел fstabи перезагрузить компьютер

ManOfLinux
источник
2

Попробуйте загрузить другой liveCD - я рекомендую SystemRescueCD, который разработан специально для решения проблем с установками Linux. Это также меньше, чем типичные ОС LiveCD. И чтобы быть в безопасности, бегите fsckс консоли (без X).

Если стандарт fsck -pне работает, вы также можете попробовать e2fsck -y -f.

rozcietrzewiacz
источник
Согласно справочной странице , e2fsck -y -fпринудительно проверяет чистый раздел. Ничего не говорится о смонтированных разделах. Знаете ли вы, что это также заставит проверить?
Keeblebrox
Возможно, нет, но вам определенно следует избегать смонтированных файловых систем fsck (см. Параграфы в верхней части e2fsckman-страницы). Другая мысль: если /etc/mtabкажется, что раздел не смонтирован, но вы все равно получаете сообщение об ошибке, вам также следует проверить /proc/mounts, так как mtabфайл может быть устаревшим по какой-то странной причине.
rozcietrzewiacz
0

Соответствующий вопрос / ответ на /server/556014/centos-thinks-disk-is-busy-cant-mount-or-fsck

В частности, файловая система уже может использоваться чем-то другим, кроме монтирования fsck. Любой из fuser и lsof может помочь выяснить, что это за драйвер / приложение.

zaTricky
источник