Cờ gắn kết 'rào cản' có nghĩa là gì trong Linux?


20

Hướng dẫn cho tùy chọn gắn kết 'rào cản' là:

rào cản = 0 / rào cản = 1

Điều này vô hiệu hóa / cho phép sử dụng các rào cản ghi trong mã jbd.barrier = 0 vô hiệu hóa, rào cản = 1 cho phép (mặc định). Điều này cũng yêu cầu ngăn xếp IO có thể hỗ trợ các rào cản và nếu jbd gặp lỗi khi viết rào cản, nó sẽ vô hiệu hóa lại các rào cản bằng cảnh báo. Rào chắn ghi thực thi thứ tự trên đĩa đúng cách của các cam kết tạp chí, làm cho bộ đệm ghi dễ bay hơi an toàn để sử dụng, tại một số hình phạt hiệu suất. Nếu đĩa của bạn được hỗ trợ bằng pin theo cách này hay cách khác, việc vô hiệu hóa các rào cản có thể cải thiện hiệu suất một cách an toàn.

Nhưng tôi không biết câu " thứ tự trên đĩa phù hợp của tạp chí cam kết " nghĩa là gì.

Giả sử thứ tự bình thường - tạp chí 1, dữ liệu 1; tạp chí 2, dữ liệu 2.
Kết quả đặt hàng nào sau đây sẽ xảy ra nếu tôi đặt barrier=0?

  1. tạp chí 2, dữ liệu 2; tạp chí 1, dữ liệu 1;
  2. dữ liệu 1, tạp chí 1; dữ liệu 2, tạp chí 2.


1
Nếu bạn đọc về nhật ký hệ thống tập tin, thì bạn sẽ nhận ra rằng điều quan trọng là viết nhật ký trước, sau đó thực hiện nhật ký do đó ghi dữ liệu thực vào đĩa. Rào chắn đảm bảo rằng tạp chí được viết trước khi nó được thực thi. Nếu không thì tạp chí chúng tôi vô dụng.
ctrl-alt-delor

@richard Khi sử dụng cờ "nobarrier" trong cuộc đột kích cứng BBWC, thì đĩa không thể đảm bảo nhật ký được ghi trước khi dữ liệu của nó được thực thi, điều kiện này có quan trọng không?
lá thư

Tôi không biết đủ để biết nếu nó quan trọng. Tôi sẽ nghĩ rằng tồi tệ hơn là nó không tệ như không có tạp chí, nhưng những gì tôi đã đọc nó dường như không tệ, tuy nhiên tôi không thể nhận ra sự tinh tế. Tôi có barrier=1, và nó chạy đủ nhanh cho tôi. Trừ khi bạn đang làm công việc nặng nhọc thực sự, tôi sẽ để nó trên. Bạn có bộ đệm ram, vì vậy mọi thứ sẽ được viết ra khi có thể, không làm chậm các ứng dụng. Và rất ít sự chậm trễ trong việc ghi vào đĩa. Nếu bạn muốn xem bộ đệm ram tăng tốc bao nhiêu thì hãy thêm sync = 1 vào thư mục chính của bạn và thử sử dụng hệ thống của bạn trong một hoặc hai ngày.
ctrl-alt-delor

Câu trả lời:


15

Hầu hết các hệ thống tệp hiện đại đang ghi nhật ký hệ thống tệp, có nghĩa là chúng theo dõi các thay đổi chưa được ghi vào đĩa trong cấu trúc dữ liệu nội bộ được gọi là nhật ký. Trong trường hợp xảy ra sự cố, tạp chí này sẽ được phát lại, để đảm bảo rằng tất cả các bài viết được thực hiện thành công, ngăn ngừa tham nhũng tập tin.

Khi thực sự ghi dữ liệu vào đĩa, bộ đệm ghi sẽ sắp xếp lại ghi để cố gắng tối đa hóa thông lượng, nhưng phải đảm bảo rằng dữ liệu tệp thực tế được ghi vào đĩa trước siêu dữ liệu, để đảm bảo rằng nếu gặp sự cố xảy ra siêu dữ liệu sẽ không lỗi thời với dữ liệu.

Vấn đề là nhiều đĩa có bộ nhớ riêng có thể sắp xếp lại việc ghi. Một số hệ thống tệp sẽ cho rằng điều đó sẽ xảy ra và sẽ buộc đĩa phải xóa bộ đệm tại một số điểm nhất định để ngăn chặn điều này và được gọi là write barriersví dụ ext4 và Linux nói chung.

Đối với các đĩa hiện đại, sự hy sinh hiệu năng để thực hiện việc này là không đáng kể và bạn không nên vô hiệu hóa các rào cản ghi trừ khi thực sự cần thiết.


1

Từ bài viết này của LWN :

Mã hệ thống tập tin phải, trước khi viết bản ghi cam kết [ghi nhật ký], phải chắc chắn rằng tất cả thông tin của giao dịch đã được gửi đến tạp chí. Chỉ làm bài viết theo đúng thứ tự là không đủ; ổ đĩa hiện đại duy trì bộ nhớ trong lớn và sẽ sắp xếp lại các hoạt động để có hiệu suất tốt hơn. Vì vậy, hệ thống tập tin phải hướng dẫn rõ ràng cho đĩa để lấy tất cả dữ liệu nhật ký lên phương tiện truyền thông trước khi ghi bản ghi cam kết; nếu bản ghi cam kết được viết trước, tạp chí có thể bị hỏng. Hệ thống con I / O khối của hạt nhân làm cho khả năng này khả dụng thông qua việc sử dụng các rào cản; về bản chất, một rào cản cấm viết bất kỳ khối nào sau hàng rào cho đến khi tất cả các khối được viết trước hàng rào được cam kết với phương tiện truyền thông. Bằng cách sử dụng các rào cản,

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.