Ошибки · Решение
Linux errno EXDEV: что означает и как исправить
Операция требует одного filesystem/device, но исходный и целевой объекты находятся на разных устройствах.
Короткий ответ
В Linux errno EXDEV означает «Invalid cross-device link». Сначала найдите системный вызов, который вернул код, затем проверяйте условия именно этой операции. Числовое значение errno не следует считать переносимым между архитектурами: ориентируйтесь на символическое имя.
Что означает ошибка
Операция требует одного filesystem/device, но исходный и целевой объекты находятся на разных устройствах.
Возможные причины
- rename выполняется между разными файловыми системами.
- Hard link пытаются создать на другой filesystem.
- Контейнерные mount points визуально находятся рядом, но имеют разные device IDs.
Что проверить
- Сравните st_dev исходного и целевого пути.
- Проверьте mount layout и bind mounts вокруг обоих путей.
- Уточните, какая именно атомарная операция вернула EXDEV.
Безопасные шаги
- Для переноса между filesystem используйте copy + fsync + rename внутри целевой FS + delete источника.
- Hard link замените копированием или другим механизмом, если требуется cross-device.
- Не обещайте атомарность переноса там, где её не даёт один rename.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если errno EXDEV воспроизводится после проверки системного вызова и окружения, приложите strace-фрагмент, путь/ресурс и kernel log владельцу соответствующего subsystem.
Похожие ошибки
- /errors/linux-errno-esrch/
- /errors/linux-errno-eintr/
- /errors/linux-errno-eio/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.