Cách gắn ổ đĩa NTFS dưới dạng utf8 qua NFS


7

Câu hỏi

Làm cách nào để gắn kết chia sẻ nfs (hệ thống tệp được định dạng NTFS) như utf8trong CentOS 6.5?

Những gì tôi đã cố gắng

mount -o iocharset=utf8  
mount -o nfs=utf8  
mount -o utf8=1
mount -o utf8

Vấn đề:

Khi tôi tạo một tệp trên ổ đĩa unix chứa umlauts (äöü) và xuất tệp đó sang chia sẻ NFS của tôi, tôi thấy các ký tự bị hỏng trong Windows (ví dụ ) Các ký tự bị hỏng chỉ có trong tên tệp - không có trong nội dung.

Có thể là các thiết lập miền địa phương là sai?
LC_* = "en_US.UTF-8"
Đã thửde_DE.UTF-8

Khi tôi tạo một tệp trên windows trong phần chia sẻ với umlauts, nó được hiển thị dưới dạng ?unix. Tôi đoán có một vấn đề với các thiết lập miền địa phương.

Cài đặt LC mặc định

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

miền địa phương -a | grep de_DE

de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8

Đã thử tất cả - không cải thiện.


Hệ thống tập tin nào được định dạng trên nó?
Cristian Măgherușan-Stanciu

Đây có phải là một gắn kết NFS?
Anthon

NFS trên hệ thống tệp được định dạng NTFS - vấn đề có thể là cài đặt ngôn ngữ không? Hiện tại en_US.UTF-8. Câu hỏi được cập nhật
Lucas

Câu trả lời:


5

Giải pháp

mount 192.168.1.1:/SHARE share -o nolock,nfsvers=4.1

Máy chủ Windows của tôi cho phép tất cả các giao thức NFS, CentOS không chọn 4.1. NFS 4.1 không có vấn đề gì nữa với umlauts.


4

Gắn hệ thống tập tin NTFS bằng NFS phiên bản 4.1, trong câu trả lời của @Lucas , có vẻ như là phép thuật, vậy đây là lý do tại sao làm điều đó giải quyết vấn đề cụ thể này. Nếu bạn xem qua IETF RFC có tiêu đề: Giao thức hệ thống tệp mạng phiên bản 4 (NFS) phiên bản 4 , cụ thể là phần 14.4, Khả năng UTF-8 :

đoạn trích

14.4.  UTF-8 Capabilities

   const FSCHARSET_CAP4_CONTAINS_NON_UTF8  = 0x1;
   const FSCHARSET_CAP4_ALLOWS_ONLY_UTF8   = 0x2;

   typedef uint32_t        fs_charset_cap4;

   Because some operating environments and file systems do not enforce
   character set encodings, NFSv4.1 supports the fs_charset_cap
   attribute (Section 5.8.2.11) that indicates to the client a file
   system's UTF-8 capabilities.  The attribute is an integer containing
   a pair of flags.  The first flag is FSCHARSET_CAP4_CONTAINS_NON_UTF8,
   which, if set to one, tells the client that the file system contains
   non-UTF-8 characters, and the server will not convert non-UTF
   characters to UTF-8 if the client reads a symlink or directory,
   neither will operations with component names or pathnames in the
   arguments convert the strings to UTF-8.  The second flag is
   FSCHARSET_CAP4_ALLOWS_ONLY_UTF8, which, if set to one, indicates that
   the server will accept (and generate) only UTF-8 characters on the
   file system.  If FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 is set to one,
   FSCHARSET_CAP4_CONTAINS_NON_UTF8 MUST be set to zero.
   FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 SHOULD always be set to one.

Điều này đã được thêm vào 4.1 và không tồn tại trước đó. Ít nhất là theo nghiên cứu của tôi vấn đề này.

Đối với những người đang quản lý máy chủ NFS và sử dụng 4.0, có vẻ như bạn được khuyến khích sử dụng 4.1 giả sử bạn muốn:

NFS phiên bản 4 phiên bản nhỏ 1 không có phụ thuộc vào NFS phiên bản 4 phiên bản nhỏ 0 và nó được coi là một giao thức riêng biệt. Do đó, tài liệu này không cập nhật cũng không lỗi thời RFC 3530 . NFS phiên bản nhỏ 1 được coi là vượt trội so với NFS phiên bản nhỏ 0 mà không mất chức năng và việc sử dụng nó được ưu tiên hơn phiên bản 0. Cả hai phiên bản nhỏ NFS 0 và 1 có thể được sử dụng đồng thời trên cùng một mạng, giữa cùng một máy khách và máy chủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.