У нас есть некоторые проблемы с общим доступом NFS в отношении кодировки имен файлов.
Ранее мы монтировались как NFSv3 и начали использовать NFSv4, а некоторые файлы, созданные ранее, со специальными символами (обычно с французскими акцентированными символами) теперь несовместимы и не могут быть указаны правильно.
Сервер NFS настроен так, чтобы клиенты могли монтировать либо v3, либо v4.
Более того, мы провели простой тест, чтобы понять, что происходит:
/mnt/nfs3
с типом nfs (-t nfs
)/mnt/nfs4
с типом nfs4 (-t nfs4
)touch /mnt/nfs4/testééè
ls /mnt/nfs4
И вот результат: testééè
Как видите, список файла с акцентами в той же папке, в которой он был создан, показывает различия. Это почему ?
LC_*
переменные env?Спасибо за помощь!
Причина, по которой это произошло, заключается в том, что 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.