ฉันพยายามค้นหาคำตอบที่ตรงกับคำตอบนี้และมันก็พิสูจน์ได้ยาก คำถามนี้และคำตอบของมันอยู่ใกล้ แต่ไม่ได้ให้รายละเอียดที่ฉันต้องการ เริ่มจากสิ่งที่ฉันรู้
หากคุณมีอุปกรณ์บล็อกมาตรฐานและเปิดใช้งานsudo blockdev --report
คุณจะได้รับสิ่งนี้:
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 500107862016 /dev/sda
rw 256 512 4096 2048 399999238144 /dev/sda1
rw 256 512 1024 781252606 1024 /dev/sda2
ตอนนี้คุณตัดสินใจที่จะเปลี่ยนค่าเริ่มต้น 256 เป็น 128 โดยใช้--setra
กับพาร์ติชันใด ๆ และมันเกิดขึ้นกับอุปกรณ์บล็อกทั้งหมดเช่น:
sudo blockdev --setra 128 /dev/sda1
sudo blockdev --report
RO RA SSZ BSZ StartSec Size Device
rw 128 512 4096 0 500107862016 /dev/sda
rw 128 512 4096 2048 399999238144 /dev/sda1
rw 128 512 1024 781252606 1024 /dev/sda2
มันสมเหตุสมผลดีสำหรับฉัน - อุปกรณ์ระดับบล็อกคือที่ที่การตั้งค่าไม่ใช่พาร์ติชันดังนั้นมันจึงเปลี่ยนแปลงทั้งหมด นอกจากนี้ความสัมพันธ์เริ่มต้นระหว่างการตั้งค่า RA และอุปกรณ์นั้นสมเหตุสมผลสำหรับฉันโดยทั่วไปแล้ว:
RA * sector size (default = 512 bytes)
ดังนั้นการเปลี่ยนแปลงที่ฉันทำข้างต้นด้วยขนาดเซกเตอร์เริ่มต้นจะลดลงอ่านจาก 128k เป็น 64k ทุกอย่างดีและดีจนถึงตอนนี้
อย่างไรก็ตามจะเกิดอะไรขึ้นเมื่อเราเพิ่มซอฟต์แวร์ RAID หรือ LVM และอุปกรณ์ทำแผนที่ ลองนึกภาพรายงานของคุณเป็นแบบนี้แทน:
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 10737418240 /dev/xvda1
rw 256 512 4096 0 901875499008 /dev/xvdb
rw 256 512 4096 0 108447924224 /dev/xvdj
rw 256 512 4096 0 108447924224 /dev/xvdi
rw 256 512 4096 0 108447924224 /dev/xvdh
rw 256 512 4096 0 108447924224 /dev/xvdg
rw 4096 512 4096 0 433787502592 /dev/md0
rw 4096 512 512 0 429496729600 /dev/dm-0
ในกรณีนี้เรามีอุปกรณ์ dm-0 LVM ที่แมปอุปกรณ์อยู่ด้านบนของ md0 ที่สร้างโดย mdadm ซึ่งอันที่จริงแล้ว RAID0 เป็นแถบในอุปกรณ์ทั้งสี่ xvdg-j
ทั้ง md0 และ dm-0 มีการตั้งค่า 4096 สำหรับ RA ซึ่งสูงกว่าอุปกรณ์บล็อกมาก ดังนั้นบางคำถามที่นี่:
- การตั้งค่า RA จะถูกส่งผ่านโซ่อุปกรณ์บล็อกเสมือนอย่างไร
- dm-0 เป็นคนที่กล้าหาญทั้งหมดเพราะนั่นเป็นอุปกรณ์บล็อกระดับบนสุดที่คุณเข้าถึงหรือไม่?
- จะ
lvchange -r
มีผลกระทบกับอุปกรณ์ dm-0 และไม่แสดงที่นี่หรือไม่
ถ้ามันง่ายเหมือนการตั้งค่า RA จากอุปกรณ์บล็อกเสมือนที่คุณใช้จะถูกส่งต่อนั่นหมายความว่าการอ่านจาก dm-0 (หรือ md0) จะแปลเป็น 4 x 4096 RA อ่านหรือไม่ (หนึ่งรายการในแต่ละอุปกรณ์บล็อก) ถ้าเป็นเช่นนั้นนั่นหมายความว่าการตั้งค่าเหล่านี้จะขยายขนาดของหัวอ่านในสถานการณ์ข้างต้น
จากนั้นในแง่ของการหาสิ่งที่การตั้งค่าหัวอ่านกำลังทำอยู่:
คุณใช้อะไรเท่ากับขนาดเซกเตอร์ด้านบนเพื่อกำหนดค่า readahead จริงสำหรับอุปกรณ์เสมือน:
- ขนาดแถบของ RAID (สำหรับ md0)?
- ขนาดอื่น ๆ ที่เทียบเท่าขนาด?
- มันสามารถกำหนดค่าได้และอย่างไร
- FS มีส่วนร่วมหรือไม่ (ฉันสนใจ ext4 และ XFS เป็นหลัก)
- หรือถ้ามันเพิ่งผ่านไปมันเป็นเพียงการตั้งค่า RA จากอุปกรณ์ระดับบนสุดคูณด้วยขนาดเซกเตอร์ของอุปกรณ์บล็อกจริงหรือไม่?
ในที่สุดจะมีความสัมพันธ์ที่ต้องการระหว่างขนาดแถบและการตั้งค่า RA (ตัวอย่าง) หรือไม่ ที่นี่ฉันคิดว่าถ้าแถบเป็นองค์ประกอบที่เล็กที่สุดที่จะถูกดึงออกจากอุปกรณ์ RAID คุณคงไม่ต้องการที่จะต้องมีดิสก์ 2 ตัวในการเข้าถึงบริการที่หน่วยข้อมูลขั้นต่ำและต้องการทำให้ RA มีขนาดใหญ่พอที่จะตอบสนองคำขอได้ด้วยการเข้าถึงเพียงครั้งเดียว