ขนาดเซกเตอร์ฟิสิคัลเริ่มต้น 512 ไบต์เหมาะสมสำหรับดิสก์ SSD ภายใต้ Linux หรือไม่


11

GSmartControlและเครื่องมือบรรทัดคำสั่งอื่น ๆ (เช่นfdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) ผมใช้รายงานเดียวกันทั้งของดิสก์ของฉัน:

Sector Size: 512 bytes logical/physical

นี่คือการติดตั้งเริ่มต้นของ Ubuntu 18.10 (อัพเกรดภายหลังเป็น 19.04) อย่างไรก็ตามstat -fคำสั่งบนดิสก์ทั้งสองรายงาน:

Block size: 4096       Fundamental block size: 4096

ทั้งสองของดิสก์ของฉัน SSDs และ AFAIK SSD ดิสก์ต้องมีเซกเตอร์ขนาด 4K ตกลงหรือว่าฉันทำอะไรหายไป? ไม่ข้อมูลที่ส่งกลับโดยstat(= 4K) ให้แน่ใจว่าระบบปฏิบัติการจะเสมอส่ง IOs ไปยังดิสก์ในหลาย 4Kและบล็อกเหล่านี้จะไม่เคยข้ามเขตแดน 4K (บล็อค IO มักจะสอดคล้องกับ 4K)?

โปรดทราบผลลัพธ์ต่อไปนี้ ( sdb2ของฉันพาร์ทิชันราก , sdaฉัน/homeดิสก์):

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home

ใช่. มันมีข้อมูลที่เป็นประโยชน์ แต่ฉันไม่ได้พบคำตอบเผด็จการคำถาม: ไม่ข้อมูลที่ส่งกลับโดยสถิติ (4K) ให้แน่ใจว่าระบบปฏิบัติการจะเสมอส่ง IOs ไปยังดิสก์ในหลาย 4K และบล็อกเหล่านี้จะไม่เคยข้าม 4K ขอบเขต (บล็อค IO จะเสมอ จะจัดชิดกับ 4K)?
FedonKadifeli

ฉันไม่รู้ว่า "stat (4K)" คืออะไร แต่ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่รู้วิธีจัดการกับการถ่ายโอน 4K I / O ดั้งเดิม และไม่มันไม่ได้หมายความว่าบล็อกจะไม่มีวันข้ามขอบเขต 4K บนดิสก์เว้นแต่ว่าพาร์ทิชันจะได้รับการจัดตำแหน่งอย่างเหมาะสม ใช้fdisk -lเพื่อตรวจสอบปัญหาการจัดตำแหน่ง เห็นได้ชัดว่า SSD ทำงานแตกต่างกันเล็กน้อยเนื่องจากโครงสร้างทางกายภาพของพวกเขา แต่ฉันไม่ใช่ผู้เชี่ยวชาญในพื้นที่นั้น
heynnema

คำตอบ:


7

ในสมัยก่อนส่วน 512 ไบต์เป็นบรรทัดฐานสำหรับดิสก์ ระบบใช้ในการอ่าน / เขียนเซ็กเตอร์ครั้งละหนึ่งเซกเตอร์เท่านั้นและนั่นเป็นสิ่งที่ดีที่สุดที่ฮาร์ดไดรฟ์เก่าสามารถทำได้

ขณะนี้ด้วยไดรฟ์ที่ทันสมัยมีความหนาแน่นสูงและรวดเร็วและสมาร์ทมากดังนั้นภาคการอ่าน / การเขียนเพียงหนึ่งภาคส่วนในเวลาเดียวจะทำให้ปริมาณงานทั้งหมดช้าลง

เคล็ดลับคือ ... คุณจะเพิ่มความเร็วในการรับส่งข้อมูลทั้งหมดอย่างไร แต่ยังคงรักษาความเข้ากันได้กับระบบย่อยดิสก์มาตรฐาน / เก่าได้อย่างไร คุณสร้างขนาดบล็อก 4096 ที่ประกอบด้วยเซกเตอร์ฟิสิคัล 512 ไบต์ที่แปด ตอนนี้ 4096 เป็นขั้นต่ำในการอ่าน / เขียนการถ่ายโอนไปยัง / จากดิสก์

ซึ่งหมายความว่าแม้ว่าระบบต้องการเพียงเซกเตอร์ข้อมูลขนาด 512 ไบต์เดียว แต่ไดรฟ์ก็อ่านเซกเตอร์ขนาด 512 ไบต์แปดตัวเพื่อรับข้อมูล อย่างไรก็ตามถ้าระบบต้องการเซกเตอร์เจ็ดรายการถัดไปมันอ่านแล้วดังนั้นจึงไม่มีดิสก์ I / O ที่ต้องเกิดขึ้น ... ดังนั้นความเร็วในการรับส่งข้อมูลโดยรวมจะเพิ่มขึ้น

ระบบปฏิบัติการที่ทันสมัยสามารถใช้ประโยชน์จากขนาดบล็อก 4K ดั้งเดิมของไดรฟ์ที่ทันสมัย


+1 แต่ 4096/512 = 8 ดังนั้นฉันคิดว่าควรมี 8 ส่วน (ตรรกะ) ที่ 512 b ในเซกเตอร์กายภาพหนึ่งอันที่ 4096 b ฉันใช้partedเพื่อแสดงทั้งขนาดเซกเตอร์ตรรกะและกายภาพ
sudodus

@ Sudodus จับได้ดี ทำการแก้ไขแล้ว
heynnema

นี่คือเหตุผลที่การจัดพาร์ติชันของคุณให้อยู่ในขอบเขต 4k ไม่เช่นนั้นทุก ๆ 4k block load / store จะได้สัมผัสกับฮาร์ดแวร์สองภาค (ระบบไฟล์ภายในพาร์ติชั่นมักจะใช้บล็อก 4k ที่จัดชิดกับจุดเริ่มต้นของพาร์ติชัน) เครื่องมือการจัดรูปแบบบางอย่างจัดพาร์ติชันแรกโดย 1MiB โดยไม่ได้ใช้ทั้ง MiB ยกเว้นตารางพาร์ติชัน ไดรฟ์ที่ทันสมัยทำรายงานขนาดเซกเตอร์กายภาพของพวกเขาเป็น 4k แยกจากขนาดเซกเตอร์ตรรกะของพวกเขาซึ่งยังคงเป็น 512B
Peter Cordes

@PeterCordes ไม่เพียงบูตเซกเตอร์และตารางพาร์ติชัน (ใน 512 ไบต์แรก) จะถูกเก็บไว้ใน Mibibyte แรก ในตารางพาร์ติชัน MSDOS grubใส่รหัสเพิ่มเติมลงใน Mibibyte แรกสำหรับการบูตในโหมด BIOS (ใน GPT grubต้องการพาร์ติชันขนาดเล็กที่มีการbios_grubตั้งค่าสถานะเพื่อให้รหัสนั้นบูตในโหมด BIOS)
sudodus

4

ตามที่ Wikipedia "Advanced Format (AF) เป็นรูปแบบดิสก์เซกเตอร์ใด ๆ ที่ใช้เพื่อเก็บข้อมูลในดิสก์ไดรฟ์ที่มีขนาดเกิน 512, 520 หรือ 528 ไบต์ต่อเซ็กเตอร์เช่นเซกเตอร์ 4096- ไบต์ของ Advanced Format Drive (AFD)" รูปแบบขั้นสูง (AF) เป็นรูปแบบดิสก์ที่ใช้ขนาดเซกเตอร์ 4,096 ไบต์แทน 512 ไบต์ เพื่อรักษาความเข้ากันได้กับระบบเดิมดิสก์ AF จำลองขนาดเซกเตอร์ 512 ไบต์

ฉันได้ผลลัพธ์เดียวกันกับที่คุณได้จากการวิ่งstat -fและsmartctlSSD สองตัว SSD ทั้งสองตัวได้รับการยอมรับโดยอัตโนมัติจากระบบปฏิบัติการเมื่อติดตั้งและต้องการการกำหนดค่าเป็นศูนย์ดังนั้นจึงปรากฏว่าข้อมูลที่คุณได้รับเป็นการตั้งค่าเริ่มต้นสำหรับขนาดบล็อกและขนาดเซกเตอร์


@heynnema ฉันไม่สามารถทำอะไรเกี่ยวกับ "ภาค 4096- ไบต์" เพราะคัดลอกมาจาก Wikipedia ดังนั้นฉันต้องปล่อยให้มันเหมือนกับที่อยู่ใน Wikipedia
karel

2
@heynnema: ขนาดร่างกายใหญ่กว่านี้มาก SSD ถูกสร้างขึ้นจากหน่วยความจำแฟลช NAND ซึ่งแบ่งพาร์ติชันทางกายภาพในรูปแบบที่เรียกว่า "erase block" ซึ่งสามารถมีขนาดใหญ่กว่านั้นได้ 4MB เป็นไปได้แน่นอน
MSalters

1

ขนาดเซกเตอร์ฟิสิคัลเริ่มต้น 512 ไบต์เหมาะสมสำหรับดิสก์ SSD ภายใต้ Linux หรือไม่

ดิสก์ทั้งสองของฉันเป็น SSD และดิสก์ AFAIK SSD ต้องการขนาดเซ็กเตอร์ของ 4K ตกลงหรือว่าฉันทำอะไรหายไป?

ฮาร์ดแวร์และระบบปฏิบัติการเก่าใช้เซ็กเตอร์ 512 ไบต์ตั้งแต่ 2011 (เกือบ) ฮาร์ดแวร์หน่วยเก็บข้อมูลทั้งหมดมีเซกเตอร์ไบต์4096 (หรือใหญ่กว่า ); แต่ฮาร์ดแวร์บางตัวรองรับการจำลอง 512 เซ็กเตอร์สำหรับระบบเก่า มีข้อยกเว้นที่ซัมซุง 840 EVO SSD มีบล็อกขนาด 2048 KB

มีการคำนวณรหัสการแก้ไขข้อผิดพลาด (ECC) สำหรับ 512 ไบต์แต่ละอันและอย่างที่คุณจินตนาการได้ว่าข้อมูล ECC ต้องการพื้นที่เก็บข้อมูลด้วย มันไปโดยไม่บอกว่าเซกเตอร์ 4096 ไบต์หนึ่งต้องการข้อมูล ECC น้อยกว่าแปด 512 ไบต์ถ้ากลุ่ม ECC ยังคงไม่เปลี่ยนแปลง ในที่สุดความจุทั้งหมดของฮาร์ดไดรฟ์จะเพิ่มขึ้นเนื่องจากค่าใช้จ่ายข้อมูลน้อยลง

การใช้เซกเตอร์ 4K นั้นเหมาะสมจากจุดยืนทางสถาปัตยกรรมเช่นเดียวกับตัวเลขหลักอื่น ๆ (เช่นหน้าหน่วยความจำ x86 และกลุ่มระบบไฟล์จำนวนมาก) ยังใช้ขนาด 4 KB รูปแบบขั้นสูงช่วยให้อัลกอริธึม ECC ที่แข็งแกร่งยิ่งขึ้นซึ่งมีความสำคัญในแง่ของความสามารถที่เพิ่มมากขึ้น ตัวควบคุมใช้เทคนิคเพิ่มเติมนอกเหนือจากการแก้ไขข้อผิดพลาดผ่านการทำความเข้าใจเกี่ยวกับลักษณะข้อผิดพลาดของหน่วยความจำแฟลช NAND และลักษณะการทำงานของภาระงาน

Advanced Format (AF) เป็นรูปแบบดิสก์เซกเตอร์ใด ๆ ที่ใช้เพื่อเก็บข้อมูลบนดิสก์แม่เหล็กในฮาร์ดดิสก์ไดร์ฟ (HDDs) ที่มีขนาดเกิน 512, 520 หรือ 528 ไบต์ต่อเซ็กเตอร์เช่น 4096, 4112, 4160 และ 4224-byte ( ส่วน 4 KB) ของ Advanced Format Drive (AFD) ภาคขนาดใหญ่ช่วยให้การรวมอัลกอริทึมการแก้ไขข้อผิดพลาดที่แข็งแกร่งเพื่อรักษาความสมบูรณ์ของข้อมูลที่ความหนาแน่นของการจัดเก็บที่สูงขึ้น

สำหรับดิสก์ SCSI (SAS) ขนาดบล็อก RAID มีขนาดใหญ่กว่าขนาดบล็อก JBOD เนื่องจากฟิลด์ความสมบูรณ์ของข้อมูลมาตรฐาน SCSI T10 พร้อมกับการตรวจสอบบล็อกที่ไม่ดีเชิงตรรกะที่จัดเก็บในแต่ละบล็อกด้วยข้อมูล อะแด็ปเตอร์ SAS RAID สนับสนุนบล็อกดิสก์ที่อิงตาม 512 ไบต์ของข้อมูลหรือ 4K ไบต์ของข้อมูล ขนาดบล็อก RAID สำหรับ 512 ดิสก์คือ 528 ไบต์ต่อเซ็กเตอร์และขนาดบล็อก RAID สำหรับดิสก์ 4K คือ 4224 ไบต์ต่อเซ็กเตอร์

เพราะคุณกำลังเขียนถึงหน่วยความจำและไม่ได้เป็นขนาดของดิสก์เซกเตอร์กายภาพปั่นมีผลกระทบน้อยกว่ามั่นใจว่าพาร์ทิชันของคุณมีความสอดคล้องกับขนาดลบบล็อก ดังนั้นจึงเป็นการดีที่สุดที่จะมีซอฟต์แวร์และฮาร์ดแวร์ที่ทันสมัยและใช้ขนาดเซกเตอร์ 4K

ขนาดเซกเตอร์ที่ใหญ่กว่าขอแนะนำโดย Intel - " เพิ่มประสิทธิภาพสูงสุดโดยการเปลี่ยนเป็นขนาดเซกเตอร์กายภาพของ SSD "

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.