n1ro°
RU

Ошибки · Решение

Linux errno EXDEV: что означает и как исправить

Операция требует одного filesystem/device, но исходный и целевой объекты находятся на разных устройствах.

Редакция N1RO · Проверено

Короткий ответ

В 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.

Безопасные шаги

  1. Для переноса между filesystem используйте copy + fsync + rename внутри целевой FS + delete источника.
  2. Hard link замените копированием или другим механизмом, если требуется cross-device.
  3. Не обещайте атомарность переноса там, где её не даёт один rename.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если errno EXDEV воспроизводится после проверки системного вызова и окружения, приложите strace-фрагмент, путь/ресурс и kernel log владельцу соответствующего subsystem.

Похожие ошибки

  • /errors/linux-errno-esrch/
  • /errors/linux-errno-eintr/
  • /errors/linux-errno-eio/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.