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

Принудительное отключение зависшего монтирования CIFS (сбой сервера при записи в точку монтирования)

Машина A монтирует через CIFS с сервера S на / backup A, и выполняет запись в CIFS mount. Сервер S вылетает во время записи, несколько часов он не работал.

Теперь процесс на машине A зависает в состоянии «D», что означает, что он не принимает никаких сигналов KILL. При попытке размонтировать весь терминал зависает, даже ввод / назад и последующее нажатие вкладки для автозаполнения приводит к зависанию всего терминала. umount -l для ленивого варианта терминал не зависал, но и не работал. Тем временем сервер S снова доступен. Клиенты, которые не писали во время сбоя сервера, обычно могут получить доступ к этим общим ресурсам. Таким образом, они автоматически переподключились.

Я пробовал заблокировать IP в iptables с помощью iptables -I OUTPUT --dst 192.168.2.98/32 -j REJECT в надежде, что это вызовет ошибку или что-то в этом роде. Но все же процесс записи во время сбоя сервера все еще жив и находится в состоянии «D».

Следующей моей идеей было выгрузить модуль ядра cifs с помощью modprobe -rf cifs Однако это только печатает modprobe: FATAL: Module cifs is in use. Следующая попытка: rmmod -f cifs дает

rmmod: ERROR: ../libkmod/libkmod-module.c:793 kmod_module_remove_module() could not remove 'cifs': Resource temporarily unavailable
rmmod: ERROR: could not remove module cifs: Resource temporarily unavailable

Я не хочу верить, что у стабильной серверной системы, такой как Linux, нет других возможностей, кроме перезагрузки, чтобы заставить ее снова работать. Так что ваша помощь очень ценится.