Những hoạt động siêu dữ liệu hệ thống tập tin thực sự được ghi nhật ký trong ext4 & xfs?


9

Tôi không thể tìm thấy một câu trả lời đơn giản, thẳng thắn về những hoạt động siêu dữ liệu của hệ thống tập tin thực sự được duy trì cho các tạp chí hệ thống tập tin ext4 & xfs. Lưu ý rằng tôi không tìm hiểu về những gì POSIX tuyên bố là "nguyên tử". Tôi quan tâm nhiều hơn đến tập hợp con nào của các hoạt động hệ thống tập tin nguyên tử có hiệu quả bền bỉ nhờ vào việc chạy với một tạp chí được kích hoạt mà không phải cúi xuống và luôn luôn nghiêng về phía sau fsync(2).

Các hoạt động tôi khá chắc chắn:

  • creat(2)
  • link(2)
  • unlink(2)
  • rename(2)
  • mkdir(2)
  • rmdir(2)

Hoạt động Tôi không hoàn toàn chắc chắn về:

  • symlink(2)

Các symlink(2)trường hợp là gây phiền hà nhất, kể từ khi có dường như không có bất kỳ cách nào đơn giản để fsync(2)hoặc fdatasync(2)các datablocks tiềm ẩn mà lưu trữ các nội dung của một liên kết tượng trưng. Biết rằng tạp chí chăm sóc điều này cho tôi sẽ là một cứu trợ.

Câu trả lời:


1

Vì lý do hiệu suất, ext4 theo mặc định chỉ ghi siêu dữ liệu hệ thống tệp thông qua tạp chí.

Tôi tin rằng XFS cũng ghi nhật ký tất cả các giao dịch siêu dữ liệu, trừ khi bạn đã điều chỉnh hệ thống tệp.


Vâng, nhưng "siêu dữ liệu" cụ thể là gì? Một khối thư mục: chắc chắn. Các inodes mình: vâng. Symlinks với một mục tiêu đủ nhỏ để phù hợp với chính inode: có lẽ? Các liên kết trong đó mục tiêu tràn vào các khối phụ: ??????

liên kết sẽ giúp
asdmin

1

Tôi quan tâm nhiều hơn đến tập hợp con nào của các hoạt động của hệ thống tập tin nguyên tử có hiệu quả bền bỉ nhờ hoạt động với một tạp chí được kích hoạt mà không phải cúi xuống ngược và fsync (2) mọi lúc.

Không ai. Nếu bạn muốn chắc chắn rằng các thay đổi vẫn tồn tại sau sự cố, bạn phải fsync, period. Ghi nhật ký chỉ đảm bảo rằng trong trường hợp xảy ra sự cố, không có thao tác nào bạn liệt kê sẽ được thực hiện một nửa .


Tôi biết rằng nếu tôi quan tâm, tôi phải biết chắc chắn các tập tin và thư mục fsync để biết chắc chắn các khối có bị rỉ sét hay không, nhưng không có phương pháp nào tôi có thể tìm thấy cho phép tôi fsync các khối quay lại liên kết tượng trưng nếu nó tràn ra các nút. Vào thời điểm đó, cách duy nhất của tôi là dựa vào tạp chí hoặc không bao giờ sử dụng symlink nữa cho bất cứ điều gì quan trọng.
rboyer

@naelyn, một fsync () sẽ xóa tất cả các khối liên quan đến một tệp, bao gồm cả một liên kết tượng trưng không nhanh.
psusi

1
Làm cách nào để tôi mở một bộ mô tả tệp thích hợp để sử dụng trong fsync có thể xóa các khối symlink không nhanh?
rboyer

@naelyn, oh yea ... điểm tốt ... có thể cần phải hỏi về cái đó trong danh sách gửi thư linux-fsdevel ... với các liên kết cứng Tôi tin rằng bạn mở và đồng bộ thư mục chứa nó, có thể symlink hoạt động giống nhau không?
psusi

0

Bạn có biết rằng tạp chí ext4 hoạt động theo số khối và không hoạt động, đúng không? "Siêu dữ liệu" sẽ là bất cứ thứ gì khác ngoài khối dữ liệu thực tế cho inode đã cho, bất kể bạn đã sử dụng thao tác nào để sửa đổi khối được đề cập.


0

xfstests xuất hiện để tuyên bố rằng fsync () trên một thư mục nên duy trì bất kỳ liên kết tượng trưng nào mà nó chứa.

Tôi chưa xác minh điều này. Có thể tôi đã bỏ lỡ một cái gì đó.

xfstests được sử dụng bởi nhiều nhà phát triển hệ thống tập tin Linux. Bài kiểm tra này nằm trong thư mục "chung". Nó ngụ ý rằng nó nên áp dụng cho tất cả các hệ thống tập tin Linux. (Hoặc ít nhất, tất cả các hệ thống tập tin khối thiết bị. Thử nghiệm hoạt động bằng cách sử dụng một thiết bị khối ảo đặc biệt).

https://github.com/kdave/xfstests/blob/master/tests/generic/348

# Test creating a symlink, fsync its parent directory, power fail and mount
# again the filesystem. After these steps the symlink should exist and its
# content must match what we specified when we created it (must not be empty
# or point to something else).
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.