2013-12-16 57 views
6

Đây là một câu hỏi đơn giản nhưng tôi đã thực hiện một số nghiên cứu và không thể tìm thấy câu trả lời ... Vì vậy, có ai biết nếu khi chúng tôi xác định các thuộc tính mở rộng thông qua xattr, các thuộc tính đó được lưu trữ bên trong - như một phần của - tệp 'nội dung (trong biggining, cuối cùng?), hoặc nếu inode có một khu vực đặc biệt để lưu trữ này?các thuộc tính mở rộng được lưu trữ ở đâu?

Và nhân tiện, tôi đã đọc điều đó trong ext4 "mỗi thuộc tính mở rộng được giới hạn trong một khối hệ thống tệp (ví dụ: 4 KiB)". Tôi không thể nói nếu điều này là đủ nếu tôi muốn lưu trữ 7 thuộc tính mở rộng cho mỗi tập tin trong hệ thống tập tin. Đây có phải là hiện thực?

Câu hỏi cuối cùng của tôi là nếu các thuộc tính mở rộng đó có thể di chuyển theo nghĩa là nếu các tệp chuyển sang các máy khác có hệ thống tệp khác nhau thì điều gì sẽ xảy ra với thuộc tính này?

+0

Vì bạn chưa lên tiếng bầu chọn, tôi cho rằng tôi không trả lời đầy đủ câu hỏi của bạn. Bạn có thể làm rõ câu hỏi thêm một chút không? – aleatha

Trả lời

5

Nếu bạn nhìn vào thông số inode, bạn sẽ khám phá ra rằng có một lượng nhỏ khoảng trống ở cuối inode để chứa các thuộc tính mở rộng. Nếu bạn tràn khu vực đó, ext4 cho phép bạn phân bổ một khối khác (về cơ bản giống như một ngã ba tài nguyên) cho các thuộc tính mở rộng bổ sung. Giới hạn 4KB đó là mỗi thuộc tính, cho mỗi tệp, vì vậy bạn chắc chắn có thể lưu trữ 7 thuộc tính mở rộng cho mỗi tệp, trừ khi thuộc tính là BLOB lớn hơn 4KB. Tuy nhiên, nếu bạn tràn ngập không gian ở cuối inode, bạn sẽ phân bổ các khối tới siêu dữ liệu thay vì dữ liệu, giảm kích thước có thể sử dụng của hệ thống tệp của bạn.

Nguồn: https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Extended_Attributes

Để trả lời câu hỏi của bạn về tính di động, thuộc tính mở rộng không được sao chép theo mặc định, thậm chí trong một hệ thống tập tin duy nhất, và không phải là di động giữa các hệ thống tập tin.

Xem: https://unix.stackexchange.com/questions/44253/how-to-clone-copy-all-file-directory-attributes-onto-different-file-directory để thảo luận thêm về vấn đề này. Rysnc có thể làm rất nhiều việc sao chép các thuộc tính mở rộng, nhưng nếu hệ thống tập tin đích không hỗ trợ xattrs, bạn sẽ không may mắn.

+0

[Để trả lời câu hỏi của bạn về tính di động, các thuộc tính mở rộng không được sao chép theo mặc định] macOS Sierra và ít nhất OS X El Capitan làm sao chép xattr theo mặc định – cavalcade

Các vấn đề liên quan