Transport endpoint is not connected
Сообщение Transport endpoint is not connected (номер 107, ENOTCONN) чаще всего означает отвалившееся монтирование через fuse: процесс, обслуживавший файловую систему, умер, а точка монтирования осталась.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Процесс обслуживания файловой системы умер
Монтирование через fuse держится процессом. При его падении точка монтирования остаётся, но все операции отказывают.
-
Сетевое хранилище недоступно
Обрыв связи даёт похожую картину: точка есть, операции отказывают.
-
Сокет закрыт другой стороной
Для сетевых служб та же ошибка означает операцию на закрытом сокете.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Сетевые и пользовательские монтирования.
findmnt -t fuse,nfs4,nfs,cifs -o TARGET,SOURCEСообщения службы.
journalctl -u myapp.service -n 20 --no-pager | grep -i "not connected"Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Монтирование через fuse держится процессом. При его падении точка монтирования остаётся, но все операции отказывают.
- Как проверить
-
Посмотрите монтирования и процессы.
findmnt -t fuse,fuse.sshfs,fuse.s3fs -o TARGET,SOURCE 2>/dev/null pgrep -a sshfs
- Как исправить
-
Отмонтируйте точку и смонтируйте заново. Для устойчивости запускайте монтирование службой с перезапуском при сбое.
sudo umount -l /mnt/remote && sudo mount /mnt/remote
- Почему происходит
- Обрыв связи даёт похожую картину: точка есть, операции отказывают.
- Как проверить
-
Посмотрите монтирования и доступность узла.
findmnt -t nfs4,nfs,cifs -o TARGET,SOURCE ping -c2 хранилище
- Как исправить
- Восстановите связь и перемонтируйте ресурс.
- Почему происходит
- Для сетевых служб та же ошибка означает операцию на закрытом сокете.
- Как проверить
-
Посмотрите журнал службы.
journalctl -u myapp.service -n 20 --no-pager | grep -i "not connected"
- Как исправить
- Добавьте в приложение переподключение: это штатная ситуация при перезапуске другой стороны.
Пример вывода
Монтирование через fuse отвалилось. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
myapp[1200]: error: stat /mnt/remote/data: transport endpoint is not connected
$ findmnt /mnt/remote
TARGET SOURCE FSTYPE OPTIONS
/mnt/remote user@host:/ fuse.sshfs rw,nosuid,nodev
$ pgrep -c sshfs
0
Связанные ошибки
- Сетевой каталог подвисает: жёсткое монтирование NFS Обращение к каталогу NFS блокируется намертво: жёсткое монтирование без таймаутов. Как настроить устойчиво.
- NFS: Stale file handle Обращение к файлу на сетевом каталоге отказывает: устаревший идентификатор файла после переэкспорта.
- Target is busy: точка монтирования занята Не удаётся отмонтировать: target is busy. Как найти процессы, которые держат точку монтирования, и корректно освободить её.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
- Монтирование ресурса SMB не проходит: учётные данные Сетевой ресурс Windows не монтируется: пароль в fstab, права на файл учётных данных, версия протокола.
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- Broken pipe в журнале службы Запись в закрытый канал или соединение: клиент отключился, обработчик завершился, конвейер разорван.
- Cannot assign requested address при привязке Ошибка 99 при привязке: адрес не принадлежит машине или ещё не поднят. Разбор с network-online.target и ip_nonlocal_bind.
Источники
- Документация fuse
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено убийством процесса sshfs при смонтированной точке.