Машина 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, нет других возможностей, кроме перезагрузки, чтобы заставить ее снова работать. Так что ваша помощь очень ценится.