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

Проблема с кодированием между NFSv3 и NFSv4

У нас есть некоторые проблемы с общим доступом NFS в отношении кодировки имен файлов.

Ранее мы монтировались как NFSv3 и начали использовать NFSv4, а некоторые файлы, созданные ранее, со специальными символами (обычно с французскими акцентированными символами) теперь несовместимы и не могут быть указаны правильно.

Сервер NFS настроен так, чтобы клиенты могли монтировать либо v3, либо v4.

Более того, мы провели простой тест, чтобы понять, что происходит:

И вот результат: testééè

Как видите, список файла с акцентами в той же папке, в которой он был создан, показывает различия. Это почему ?

Спасибо за помощь!

Причина, по которой это произошло, заключается в том, что NFSv4 требует, чтобы имена файлов были в кодировке UTF-8, но ваши имена файлов были записаны старыми клиентами с использованием NFSv3 и некоторой латинской кодировки, возможно, ISO-8859-1, если вы находитесь в Европе.

Файлы будут все нужно переименовать.

Вы можете использовать утилиту convmv для переименования файла из одной кодировки символов в другую. Но поскольку ваше хранилище находится в Netapp, вам почти наверняка придется делать это с клиента, файловая система которого смонтирована через NFSv3. Пример:

convmv -f latin1 -t utf-8 -r /nfsv3-mountpoint

После этого вы сможете правильно видеть имена файлов в NFSv4, и все отсутствующие файлы также должны появиться снова.

После этого вам нужно найти всех клиентов, все еще использующих NFSv3, и исправить их. NFSv3 почти 25 лет. Ничто не должно больше его использовать.

Для получения дополнительной информации см. эта ветка из Hacker News.