ด้วยฮาร์ดไดรฟ์ใหม่จำนวนมากขนาดเซกเตอร์กายภาพคือ 4096 เป็นไปได้ไหมที่จะทำให้ระบบใช้ขนาดเซกเตอร์ตรรกะที่มีขนาดเท่ากันแทนที่จะเป็นขนาดเซกเตอร์เชิงตรรกะเริ่มต้นที่ 512
มันจะเพิ่มความเร็วในการอ่านและเขียนจำนวนมากหรือไม่ สามารถกำหนดค่าได้ที่ไหน
ด้วยฮาร์ดไดรฟ์ใหม่จำนวนมากขนาดเซกเตอร์กายภาพคือ 4096 เป็นไปได้ไหมที่จะทำให้ระบบใช้ขนาดเซกเตอร์ตรรกะที่มีขนาดเท่ากันแทนที่จะเป็นขนาดเซกเตอร์เชิงตรรกะเริ่มต้นที่ 512
มันจะเพิ่มความเร็วในการอ่านและเขียนจำนวนมากหรือไม่ สามารถกำหนดค่าได้ที่ไหน
คำตอบ:
512 ไบต์ไม่ใช่ขนาดเซกเตอร์เริ่มต้นจริง ๆ ขึ้นอยู่กับฮาร์ดแวร์ของคุณ
คุณสามารถแสดงขนาดฟิสิคัล / โลจิคัลเซกเตอร์ของดิสก์รายงานผ่าน/sys
ระบบไฟล์หลอกตัวอย่างเช่น:
# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512
ความแตกต่างระหว่างสองค่าเหล่านั้นคืออะไร?
physical_block_size
เป็นขนาดที่เล็กที่สุดของบล็อกที่ไดรฟ์สามารถเขียนได้ในการทำงานแบบปรมาณูlogical_block_size
เป็นขนาดที่เล็กที่สุดไดรฟ์ที่มีความสามารถในการเขียน (cf เอกสารลินุกซ์เคอร์เนล)ดังนั้นหากคุณมีไดรฟ์ขนาด 4k การใช้หน่วยเก็บข้อมูล (ระบบไฟล์และอื่น ๆ ) ของคุณนั้นใช้สิ่งที่เท่ากับหรือมากกว่าขนาดเซกเตอร์กายภาพ
ค่าเหล่านั้นจะแสดงในเวอร์ชันล่าสุดfdisk
เช่น
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
ในการแจกแจงลินุกซ์ปัจจุบันโปรแกรม (ที่ควรใส่ใจเกี่ยวกับขนาดเซกเตอร์ที่ดีที่สุด) mkfs.xfs
จะเลือกขนาดเซกเตอร์ที่ดีที่สุดโดยค่าเริ่มต้น (เช่น 4096 ไบต์)
แต่คุณสามารถระบุได้อย่างชัดเจนผ่านตัวเลือกตัวอย่างเช่น:
# mkfs.xfs -f -s size=4096 /dev/sda
หรือ:
# mkfs.ext4 -F -b 4096 /dev/sda
ไม่ว่าในกรณีใดmkfs
ตัวแปรส่วนใหญ่จะแสดงขนาดบล็อกที่ใช้ระหว่างการดำเนินการ
สำหรับระบบไฟล์ที่มีอยู่ขนาดบล็อกสามารถกำหนดได้ด้วยคำสั่งเช่น:
# xfs_info /mnt
[..]
meta-data= sectsz=4096
data = bsize=4096
naming =version 2 bsize=4096
log =internal bsize=4096
= sectsz=4096
realtime =none extsz=4096
หรือ:
# tune2fs -l /dev/sda
Block size: 4096
Fragment size: 4096
หรือ:
# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size 4
sys_array_size 97
sectorsize 4096
nodesize 16384
leafsize 16384
stripesize 4096
dev_item.sector_size 4096
เมื่อสร้างระบบไฟล์บนพาร์ติชันสิ่งอื่นที่ต้องตรวจสอบคือถ้าที่อยู่เริ่มต้นของพาร์ติชันนั้นสอดคล้องกับขนาดบล็อกจริง ตัวอย่างเช่นดูที่fdisk -l
เอาต์พุตแปลงที่อยู่เริ่มต้นเป็นไบต์หารด้วยขนาดบล็อกฟิสิคัล - การเตือนต้องเป็นศูนย์หากพาร์ติชันถูกจัดตำแหน่ง
fdisk -l
หารด้วย 8 แล้ว 512 ส่วนที่เหลือไม่ได้เป็น 0 ดังนั้นดูเหมือนว่าพาร์ทิชันจะไม่ได้รับการจัดแนว
fdisk -l
รายงานUnits = sectors of 1 * 512 = 512 bytes
ในหนึ่งของระบบ Linux ของฉัน - จึงเป็นตรรกะไดรฟ์ 512/4096 / ทางกายภาพที่มี 2 พาร์ติชั่นเริ่มต้นที่ 2,048 และ 1,026,048 ผมคำนวณ2048*512%4096
และ1026048*512%4096
- เช่นในเปลือกหลาม เนื่องจากทั้งสองนิพจน์เท่ากับศูนย์พาร์ติชันเหล่านั้นจะถูกจัดตำแหน่ง 4k
ไม่เป็นไปไม่ได้และไม่สำคัญว่าจะเป็นเช่นไร โดยทั่วไปแล้ว IO จะทำในหน่วยอย่างน้อย 4096 ไบต์ แต่อย่างใดและมักจะมากขึ้น
ใช่เป็นไปได้ แต่การทำเช่นนั้นจะทำให้ไดรฟ์กรอกข้อมูลเร็วกว่าที่ควร สำหรับไฟล์ที่น้อยกว่า 512K แต่ละไฟล์จะใช้เต็ม 4096K (4MB) และเติมเซกเตอร์ที่เหลือด้วย 0's เนื่องจากไม่สามารถใช้ระบบไฟล์ส่วนใหญ่ (NTFS และอื่น ๆ ) เพื่ออนุญาตให้แชร์ไฟล์ได้ ตัวเลือกที่ดีที่สุดสำหรับระบบไฟล์คืออนุญาตให้มีขนาดเซกเตอร์ผันแปรอย่างไรก็ตามนี่เป็นการเพิ่มขนาดของ MFT (ตารางไฟล์หลัก) และเพิ่มความเสี่ยงของความเสียหายของข้อมูลในขณะที่ลดความสามารถในการกู้คืนข้อมูลได้อย่างง่ายดาย กล่าวอีกนัยหนึ่งว่าซอฟต์แวร์กู้คืนข้อมูลจะไม่ทราบขอบเขตทั้งหมด ดังนั้นในขณะที่ขนาดเซกเตอร์ตรรกะ 4096K นั้นยอดเยี่ยมสำหรับไฟล์ขนาดใหญ่สำหรับพีซีที่ใช้งานทั่วไปในชีวิตประจำวันมันก็แค่ 0 ตอนนี้กับที่กล่าวว่า มีตัวเลือกในการจัดเก็บข้อมูลใน MFT เองเมื่อมันมาถึงข้อมูลที่มีขนาดเล็กกว่าขนาดเซกเตอร์ตรรกะ อย่างไรก็ตามนี่หมายความว่า MFT ของคุณมีขนาดใหญ่มากและข้อมูลจะถูกเขียนสองครั้ง (มี MFT สองสำเนาใน HDD ของคุณ) คุณจะต้องระบุขนาดสูงสุดของ MFT ซึ่งอาจทำให้เกิดปัญหาเมื่อคุณใช้งานจนสุดความสามารถหรือการใช้งานไดรฟ์เกินกว่าที่ MFT จะใช้งานได้ฟรี ทั้งหมดนี้ขึ้นอยู่กับการใช้งานระบบไฟล์ NTFS ที่ด้านสว่างของสิ่งต่าง ๆ NTFS อนุญาตให้คุณใช้การบีบอัดเนทีฟสำหรับไฟล์ที่ระดับบล็อกสำหรับขนาดเซกเตอร์ตรรกะใด ๆ ที่ 4MB หรือน้อยกว่า ข้อ จำกัด นี้ถูกนำไปใช้เนื่องจากวิธีการบีบอัด NTFS ทำงาน บล็อก 4MB ถูกอ่านและบีบอัดโดยไม่คำนึงถึงขนาดเซกเตอร์ตรรกะ แน่นอนนี้
ดังนั้นสิ่งนี้ชัดเจนขึ้นสำหรับคุณหรือไม่
Sector:
1) Logical Sector: Called Native Sector.
Manufacture default setting. user cannot change.
Before 2010 year: 512b/sector
After 2010 year: 4k/sector.
Few manufacture provide HDD tool to change native sector.
2) Physical Sector: Called Cluster(or allocation unit - FAT windows) or Block(Linux/Unix)
User can change physical sector size 512b,1k,2k,4k,... by format or partition tool. Physical sector contains one or few more native sectors.
(example1: if you have HDD 512b/native sector: user can set 4K/Physical sector. this mean 1 cluster = 4 native sector)
(example2: if you have HDD 4K/native sector: user can set 4K/Physical sector. this mead 1 cluster = 1 native sector)
3) File system deal with Physical sector(or block or Cluster) only.
mkfs.*
ควรใช้ขนาดเซกเตอร์ที่เหมาะสมที่สุดโดยอัตโนมัติ คุณสามารถทำการmkfs.*
ทดสอบและตรวจสอบผลลัพธ์ (ในเอาต์พุต verbose ของ mkfs หรือในโปรแกรมอรรถประโยชน์ fs ที่เกี่ยวข้อง)