Khi sử dụng phần mềm RAID và LVM trên Linux, cài đặt bộ lập lịch và bộ đọc IO nào được vinh danh?


28

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:

Câu trả lời:


7

Nếu bạn đọc từ md0 thì readahead cho md0 được sử dụng. Nếu bạn đã đọc từ sda là thành phần của md0 thì nó sẽ sử dụng cài đặt sda. Trình ánh xạ thiết bị chỉ phân tách I / O thành nhiều lần đọc và ghi để thực hiện RAID, nhưng đó là tất cả bên dưới lớp bộ đệm khối nơi diễn ra quá trình đọc. Ngăn xếp lưu trữ trông như:

hệ thống tập tin - bỏ qua bộ đệm khi bạn mở bằng O_DIRECT

chặn bộ đệm - đọc, ghi bộ đệm, lên lịch

map-mapper - dm, lvm, RAID phần mềm, ảnh chụp nhanh, v.v.

sd - trình điều khiển đĩa

SCSI - xử lý lỗi, định tuyến thiết bị

trình điều khiển phần cứng - thẻ scsi, thẻ FC, ethernet

Lưu ý rằng khi bạn làm

dd if=/dev/sda of=foo

bạn đang đọc sda dưới dạng tệp, vì vậy bạn đang trải qua khối bộ đệm. Để đi trực tiếp vào đĩa, làm

dd if=/dev/sda of=foo iflag=direct

Đối với lịch trình thang máy I / O, những người chỉ tồn tại trên trình điều khiển đĩa (sd). Không có thư mục hàng đợi dưới / sys / block / md hoặc / sys / block / dm. Bạn chỉ đi qua các loại thang máy đĩa một lần.


2
Có một /sys/block/md0/queue/schedulerhệ thống của tôi, nhưng sự lựa chọn duy nhất trong đó là none.
Peter Eisentraut
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.