Có thể gắn cùng một đĩa ext4 từ hai máy chủ, một máy đọc không?


17

Tôi biết rằng việc gắn cùng một đĩa với hệ thống tệp ext4 từ hai máy chủ khác nhau (đó là iSCSI vloume) sẽ có khả năng làm hỏng dữ liệu trên đĩa. Câu hỏi của tôi là nó sẽ làm cho bất kỳ sự khác biệt nếu một trong các máy chủ gắn đĩa chỉ đọc trong khi các máy chủ khác gắn nó đọc-ghi?

Tôi biết OCFS2 hoặc các lượt thích có thể được sử dụng cho việc này và tôi có thể xuất đĩa với NFS để có thể truy cập được vào máy chủ khác, nhưng tôi muốn biết liệu thiết lập mà tôi đề xuất có hoạt động không.


1
Nó chỉ có thể hoạt động nếu cả hai được gắn chỉ đọc (và ý tôi là chỉ đọc thực sự không viết). Ngay khi một bên gắn kết đọc-ghi, phía bên kia (chỉ đọc được gắn) không mong đợi các thay đổi của phía bên kia (gắn đọc-ghi) và do đó nó đọc dữ liệu bị hỏng. Những gì bạn cần là một hệ thống tệp nhận biết cụm hoặc một máy chủ duy nhất hiển thị một hệ thống tệp mạng khác.
frostschutz

@frostschutz Có, cả hai ro sẽ hoạt động nhưng không phải không có thủ thuật vì ro-mount của ext4 ghi vào đĩa thực (cần một vòng lặp ro và mỗi lớp phủ).
Ned64

Tôi sẽ chia sẻ một trường hợp sử dụng ở đây: một máy chủ vật lý và một máy chủ ảo đang chia sẻ một đĩa vật lý với sự truyền qua đĩa. Máy chủ ảo đang gắn đĩa dưới dạng rw. Tôi muốn sao chép một lượng lớn dữ liệu từ đĩa nhưng mạng quá chậm. Sẽ thật tuyệt nếu tôi có thể gắn đĩa vật lý như ro trong hệ điều hành máy chủ và sao chép dữ liệu vào ổ USB ngoài. Máy chủ lưu trữ chỉ có một bộ điều khiển USB, do đó, PCI-passthrough không phải là một tùy chọn.
Zhuoyun Wei

Câu trả lời:


26

Không. Nó sẽ không cho kết quả nhất quán trên máy khách chỉ đọc, vì bộ nhớ đệm. Nó chắc chắn không được thiết kế cho nó. Bạn có thể thấy các lỗi IO được trả về cho các ứng dụng. Có lẽ vẫn còn một số lượng quá mức trong mã, có thể gây ra sự cố kernel hoặc bộ nhớ bị hỏng được sử dụng bởi bất kỳ quy trình nào.

Nhưng quan trọng nhất, ext4 phát lại tạp chí ngay cả trên các giá trị chỉ đọc. Vì vậy, một mount chỉ đọc vẫn sẽ ghi vào thiết bị khối bên dưới. Sẽ không an toàn ngay cả khi cả hai thú cưỡi đều chỉ đọc :).


5
Như bạn nói, việc cài đặt chỉ đọc không đảm bảo rằng hệ thống tập tin sẽ không bị ảnh hưởng. Nếu bạn vẫn muốn thử cho mục đích "giáo dục" mà không gặp rủi ro, bạn nên đặt thiết bị của mình ở chế độ chỉ đọc : blockdev --setro /dev/sda1.
Toto

Đó là thông tin thú vị về mount ext4. Tôi cho rằng một người có thể tránh được vấn đề này bằng cách buộc mount chỉ đọc ext2?
Bananguin

1
Tôi đã tìm thấy đoạn mã này cho phép tôi gắn thiết bị chặn chỉ đọc trong VM: sudo mount -t ext4 -o ro,loop,noload /dev/vda /mnt/ digital-forensics.sans.org/blog/2011/06/14/ trên
isaaclw

0

Điều này sẽ tránh tham nhũng dữ liệu, nhưng có lẽ sẽ không phải là những gì bạn muốn làm. Tôi chưa bao giờ nhận thấy bất kỳ vấn đề nào khi gắn âm lượng chỉ đọc trên một nút khác. Ngay cả khi một cái gì đó không khớp với nút ro thường chỉ ném một "nút miễn phí bất ngờ, vui lòng chạy e2fsck" hoặc tương tự vào / var / log / message. Nếu có điều gì đó bất ngờ khủng khiếp về một hệ thống tệp không quan trọng ("/ opt / myecialmount") thì Linux sẽ chỉ lắp âm lượng chỉ đọc (mà hey, chúng tôi đã ở đó). Nếu bạn cực kỳ lo lắng về việc bộ nhớ đệm có tác dụng gì, bạn có thể thử sử dụng chế độ drop_caches / vfs_cache_pressure.

Để tránh phát lại tạp chí, hãy thêm "noload" vào mount args, thực hiện điều đó cùng với lỗi = remount-ro (chỉ để lỗi ở phía thận trọng).

Điều đó nói rằng, rất có thể là nếu bạn đồng ý với việc cài đặt nó ở chế độ chỉ đọc, thì có lẽ nó chỉ là một tài liệu tham khảo cho nút khác, trong trường hợp đó, NFS hoặc smbfs sẽ giải quyết vấn đề và được thiết kế đồng thời hơn một chút so với ext3 / 4 sẽ là. Nếu bạn cần hiệu năng thì bạn có thể xem xét một hệ thống tập tin phân cụm (chi phí quản trị ít hơn một chút, nhưng sẽ có nếu hiệu suất thực sự là thứ bạn cần).


1
" Điều này sẽ tránh tham nhũng dữ liệu ": có thể không, xem câu trả lời của nguồn và nhận xét của tôi .
Totor

1
"bỏ qua phát lại tạp chí sẽ dẫn đến hệ thống tập tin chứa sự không nhất quán có thể dẫn đến bất kỳ số vấn đề nào" - man mount. Tôi có thể tưởng tượng có những ứng dụng sẽ phát hiện và / hoặc dung thứ dữ liệu không nhất quán trong các tệp của chúng, nhưng bạn chưa đề cập đến bất kỳ cảnh báo nào như vậy cho đến nay :).
sourcejedi

@sourcejedi Họ nói rằng vì họ đang cố nói với mọi người về những rủi ro của việc liên kết hiệu quả tạp chí. Điều này là ổn, bởi vì giả định là nút khác sẽ thực hiện công việc ghi nhật ký cho nút khác, chúng tôi chỉ cố gắng tránh làm việc gấp đôi. Chúng tôi thực hiện điều này trên một trong các máy chủ phát triển của chúng tôi (không phải là sự lựa chọn của tôi, tôi đã thực hiện NFS) và đã có thứ đó được gắn mà không có drop_caches trong gần một năm mà không gặp vấn đề gì. Cả hai chúng tôi đã đề cập rằng các mục bộ đệm FS không cũ có thể hiển thị dữ liệu cũ, nhưng cuối cùng tùy thuộc vào quản trị viên để quyết định xem điều này có khả thi hay không.
Bratchley

Tôi sẽ không cố gắng liệt kê tất cả các sai trong nhận xét trên. Nhưng là một điểm dữ liệu, nó không chỉ là về dữ liệu tệp cũ trong bộ đệm VFS. ext4 cũng sẽ có bộ nhớ của cấu trúc dữ liệu bên trong hệ thống tập tin ("siêu dữ liệu"). Cuối cùng, bạn có thể đọc dữ liệu từ một tệp đã bị xóa, sau đó được ghi đè bởi một tệp mới. Đó là loại cảnh báo mà bạn thực sự muốn biết trước, ngay cả khi điều đó chỉ xảy ra không thường xuyên.
sourcejedi

1
Nhìn lại nhận xét của bạn Tôi nghĩ rằng bạn có thể đang cố gắng tham khảo bộ nhớ đệm cấp khối, đó là bộ nhớ đệm của I / O của thiết bị khối trong bộ nhớ. Trong trường hợp đó, nó không phải bộ nhớ đệm xảy ra trong siêu dữ liệu riêng của mình, đó là bộ nhớ đệm HÀNH siêu dữ liệu riêng của mình. Nó cũng tồn tại bên ngoài bất kỳ trình điều khiển hệ thống tập tin nào vì vậy ext4 / btrfs / etc không có bất kỳ sự quản lý nào của nó.
Bratchley
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.