Trong trường hợp có nhiều lớp (ổ đĩa vật lý -> md -> dm -> lvm), các trình lập lịch, cài đặt đọc và các cài đặt đĩa khác tương tác như thế nào?
Hãy tưởng tượng bạn có một số đĩa (/ dev / sda - / dev / sdd) tất cả các phần của thiết bị RAID phần mềm (/ dev / md0) được tạo bằng mdadm. Mỗi thiết bị (bao gồm cả đĩa vật lý và / dev / md0) có cài đặt riêng cho bộ lập lịch IO ( thay đổi như vậy ) và readahead ( thay đổi bằng cách sử dụng blockdev ). Khi bạn ném vào những thứ như dm (tiền điện tử) và LVM, bạn sẽ thêm nhiều lớp hơn với các cài đặt của riêng họ.
Ví dụ: nếu thiết bị vật lý có số đọc trước 128 khối và RAID có giá trị đọc là 64 khối, được vinh danh khi tôi đọc từ / dev / md0? Trình điều khiển md có cố gắng đọc một khối 64 mà trình điều khiển thiết bị vật lý sau đó chuyển thành đọc 128 khối không? Hoặc bộ đọc RAID "truyền qua" cho thiết bị bên dưới, dẫn đến việc đọc khối 64?
Các loại câu hỏi tương tự giữ cho lịch trình? Tôi có phải lo lắng về nhiều lớp của trình lập lịch IO và cách chúng tương tác với nhau không, hoặc / dev / md0 có ghi đè lên lịch trình cơ bản không?
Trong nỗ lực trả lời câu hỏi này, tôi đã tìm ra một số dữ liệu thú vị về lịch trình và công cụ có thể giúp tìm ra điều này:
/sys/block/md0/queue/scheduler
hệ thống của tôi, nhưng sự lựa chọn duy nhất trong đó lànone
.