วิธีการฟอร์แมตฮาร์ดไดรฟ์เซ็กเตอร์ 4k?


12

ฉันซื้อฮาร์ดไดรฟ์ Seagate ST3000DM001 3TB มันถูกขายในตู้ ฉันฟอร์แมตเป็น ext4 คัดลอกข้อมูลบางส่วนไปจากนั้นฉันก็ลบออกจากกล่องหุ้มและเชื่อมต่อโดยตรงกับเมนบอร์ด ข้อมูลของฉันไม่ปรากฏบนระบบปฏิบัติการ (มันเห็นพาร์ทิชัน ~ 300GiB ที่ไม่รู้จักหนึ่งอันและที่เหลือเป็นพื้นที่ว่าง) ดังนั้นฉันจึงเริ่มอ่านเกี่ยวกับรูปแบบขั้นสูงและไดรฟ์ 2TB>

ฉันเชื่อมต่อดิสก์ด้วย USB อีกครั้งคัดลอกข้อมูลทั้งหมดแล้วเสียบเข้ากับ SATA อีกครั้ง ผมใช้ GParted การสร้างตารางพาร์ทิชัน GPT (ที่อรรถประโยชน์ดิสก์อูบุนตูจะไม่ปล่อยให้ฉันด้วยError synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0) สร้างพาร์ทิชัน 3TB Ext4 ใหญ่ซ้ายเริ่มต้นAlign toมูลค่าให้MiBและจัดรูปแบบ

ไดรฟ์ได้รับการยอมรับอย่างถูกต้องและติดตั้งอย่างเหมาะสม สามารถคัดลอกไฟล์จากและไปยังไดรฟ์ได้สำเร็จ

อย่างไรก็ตาม:

Gparted แสดงดิสก์ที่มีเซ็กเตอร์ 512k ซึ่งฉันรู้ว่าไม่เป็นความจริง1

ภาพหน้าจอ gparted

ในขณะที่cat /sys/block/sdb/queue/physical_block_sizeรายงาน4096

ฉันได้พบรายงานบางอย่างที่libpartedมีปัญหากับส่วนที่ไม่ใช่ 512k 2และอื่น ๆ3ที่บอกว่าการจัดตำแหน่ง MiB นั้นเพียงพอแล้ว

รายงานบางส่วนว่าไดรฟ์ถูกจัดแนวเมื่อฉันเลือกน้อยที่สุด:

(parted) align-check 
alignment type(min/opt)  [optimal]/minimal? min                           
Partition number? 1                                                       
1 aligned
(parted)    

การกำหนดค่าของฉันถูกต้องหรือไม่ ฉันมีบทลงโทษด้านประสิทธิภาพหรือไม่เนื่องจากดิสก์มีการจัดรูปแบบด้วยส่วนข้อมูล 512k gParted รายงานค่าเท็จหรือฉันเข้าใจผิดทั้งหมดหรือไม่

  1. http://www.storagereview.com/seagate_barracuda_3tb_review_1tb_platters_st3000dm001
  2. http://ubuntuforums.org/showthread.php?t=1536933&p=9754234#post9754234
  3. http://wdc.custhelp.com/app/answers/detail/a_id/5655

ฉันมีไดรฟ์ Seagte บางตัวรวมถึงไดรฟ์ WD และ Fujitsu / HGST 3TB และทำงานได้โดยไม่มีปัญหา คุณอาจพูดถูกเกี่ยวกับ GParted เพราะหนึ่งในซีเกทของฉันที่เชื่อมต่อผ่าน USB จะแสดงขนาด 4096 ส่วนใน GParted GParted ของฉันคือ 0.12.1 ซึ่งเป็นค่าปริยายจากควอนตัม
LiveWireBT

ฉันเชื่อว่ามันจะแสดง 4096 ที่นี่ด้วยหากฉันเชื่อมต่อผ่าน USB มีความมหัศจรรย์ในคอนโทรลเลอร์ USB-SATA ที่นั่น
qwazix

QA ที่เกี่ยวข้อง: superuser.com/questions/679725/…
qwazix

คำตอบ:


5

รายงาน 512 ไบต์เนื่องจากขนาดเซกเตอร์ตรรกะสำหรับความเข้ากันได้แบบย้อนหลังกับระบบปฏิบัติการรุ่นเก่า (Windows) (g) parted จัดพาร์ติชั่นเป็น 1 MiB ซึ่งมากเกินพอที่จะทำงานอย่างถูกต้องกับไดรฟ์ที่ใช้เซกเตอร์กายภาพ 4k ดังนั้นจึงเป็นไปอย่างที่มันเป็น


11

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

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

วิธีการแก้ปัญหานี้คือการเตรียมความพร้อมและใช้ดิสก์ในหนึ่งวิธี - ทั้งใช้สิ่งที่แนบมาของ USB หรือใช้การเชื่อมต่อโดยตรงไม่ใช่ทั้งสองอย่าง หากทั้งคู่มีความจำเป็นด้วยเหตุผลบางอย่างคุณจะต้องหากล่องหุ้มที่ใช้งานได้โดยไม่ต้องใช้การแปลประเภทนี้

ในการทดสอบสมมติฐานของฉันคุณสามารถใช้เครื่องมือ (เช่นparted) ที่รายงานขนาดเซกเตอร์ตรรกะ ตัวอย่างเช่น

sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B

ฉันไม่ได้รวบรวมข้อมูลจำนวนมากจากผลลัพธ์นี้ รายละเอียดที่สำคัญอยู่ในบรรทัดสุดท้ายที่แสดงที่นี่: ขนาดโลจิคัลและฟิสิคัลมีขนาด 512 ไบต์ หากคุณรันการทดสอบนี้จากนั้นติดตั้งดิสก์อีกครั้งในทางอื่นและรันอีกครั้งคุณสามารถเปรียบเทียบผลลัพธ์ หากขนาดเซกเตอร์ตรรกะเปลี่ยนไปตามวิธีที่คุณแนบดิสก์นั่นคือสมมติฐานของฉันถูกต้องและเป็นสาเหตุของปัญหาของคุณ หรืออย่างน้อยก็เป็นปัญหาหนึ่ง อาจมีคนอื่นด้วย โดยเฉพาะอย่างยิ่งError synchronizing after initial wipeข้อผิดพลาดที่คุณกล่าวถึงอาจบ่งบอกถึงปัญหาอื่น OTOH ที่อาจเป็นผลข้างเคียงของpartedพยายามอ่านข้อมูล GPT สำรองจากส่วนท้ายสุดของดิสก์ ถ้าคุณเห็นการเปลี่ยนแปลงในขนาดเซกเตอร์ตรรกะคุณควรจัดการกับปัญหานั้นก่อนที่จะจัดการกับสิ่งอื่น หากคุณต้องการแบ่งพาร์ติชันดิสก์ใหม่ แต่มีปัญหาเนื่องจากError synchronizingข้อผิดพลาดลองใช้gdiskหรือcgdisk(ในgdiskแพ็คเกจ) แทนpartedหรือ GParted gdiskครอบครัวมีประสิทธิภาพมากขึ้นกว่าข้อผิดพลาดเป็นpartedครอบครัว


ฉันเชื่อว่าปัญหานี้เกิดจากการสลับระหว่าง usb และภายใน แน่นอนว่าเป็นความคิดเริ่มต้นของฉันและนั่นคือเหตุผลที่ฉันสร้างตารางพาร์ติชันขึ้นใหม่หลังจากใส่ดิสก์กลับเข้าไปในพีซีและเชื่อมต่อกับ sata (ฉันเอามันออกมาตั้งแต่แรกเพื่อเอาข้อมูลออกไป) ฉันไม่ต้องการที่จะลบมันอีกครั้งเพื่อทดสอบภาคตรรกะรายงานผ่าน USB แต่ข้อเท็จจริงทั้งหมดแนะนำนี้
qwazix

ฉันไม่ได้ตั้งใจที่จะให้อินเตอร์เฟซการสลับดิสก์ทำงานตามที่เป็นอยู่ในขณะนี้เตรียมไว้ภายใต้การเชื่อมต่อ SATA ฉันแค่กังวลเกี่ยวกับการลงโทษที่คุณพูดถึงและฉันต้องการที่จะเข้าใจสิ่งที่เกิดขึ้นจริง parted /dev/sdb printส่งกลับ512/4096ดังนั้นดูเหมือนว่า gParted รายงานขนาดเซกเตอร์ตรรกะซึ่งอธิบายว่าทำไม @LiveWireBT เห็น 4096 สำหรับดิสก์เดียวกัน (เชื่อมต่อผ่าน USB) และยืนยันโหนกของคุณดังกล่าวข้างต้น
qwazix

พบปัญหาเดียวกันกับไดรฟ์ภายนอกของ Verbatim Store'n'Go ขนาดเซกเตอร์เชิงตรรกะคือ 512 ในขณะที่ขนาด
ฟิสิคัล

4

มีการเปลี่ยนแปลงทั้งเคอร์เนล Linux และยูทิลิตี้เพื่อรองรับไดรฟ์รูปแบบขั้นสูง การเปลี่ยนแปลงเหล่านี้ทำให้มั่นใจได้ว่าพาร์ทิชันทั้งหมดในไดรฟ์ฟอร์แมตขั้นสูงจะได้รับการจัดแนวอย่างเหมาะสมในขอบเขตเซกเตอร์ 4K การสนับสนุนเคอร์เนลสำหรับไดรฟ์ฟอร์แมทขั้นสูงนั้นมีอยู่ในเคอร์เนลเวอร์ชัน 2.6.31 ขึ้นไป การสนับสนุนสำหรับการแบ่งส่วนและการจัดรูปแบบไดรฟ์ฟอร์แมตขั้นสูงมีอยู่ในยูทิลิตี้ Linux ต่อไปนี้:

Fdisk: GNU Fdisk เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่แบ่งพาร์ติชันฮาร์ดไดรฟ์ เวอร์ชั่น 1.2.3 ขึ้นไปรองรับไดรฟ์ฟอร์แมตขั้นสูง

บางส่วน: GNU Parted เป็นโปรแกรมกราฟิกสำหรับการแบ่งพาร์ติชั่นฮาร์ดไดรฟ์ เวอร์ชั่น 2.1 ขึ้นไปรองรับไดรฟ์ฟอร์แมตขั้นสูง

ดิสก์ 4K เนทีฟ (4Kn) มีขนาดเซกเตอร์ตรรกะ 4 KB ระบบปฏิบัติการที่ทันสมัยสามารถเก็บข้อมูลบนดิสก์เหล่านี้ได้ แต่โดยทั่วไปแล้วพวกเขาไม่สามารถบูตจากดิสก์เหล่านี้ได้ ดิสก์เหล่านี้มักเป็นไดรฟ์ภายนอกที่มีการเชื่อมต่อ USB

หากต้องการสร้างพาร์ติชันที่ใช้เป็นอุปกรณ์เก็บข้อมูลสื่อเพียงกดCtrl+ Alt+ Tบนแป้นพิมพ์เพื่อเปิด Terminal เมื่อเปิดขึ้นให้เรียกใช้คำสั่งด้านล่าง:

sudo mkfs.ext4 -m 0 /dev/sdb1

ดิสก์ 4k ส่วนใหญ่มีขนาดเซกเตอร์กายภาพ 4096 ไบต์เพื่อให้ 3TB สามารถพอดีกับเพลต แต่ยังมีขนาดเซกเตอร์ตรรกะ 512B เพื่อให้เข้ากันได้กับระบบปฏิบัติการที่คาดว่าเซกเตอร์หนึ่งจะเป็น 512B นั่นเป็นเหตุผลที่เมื่อคุณใช้คำสั่งการพิมพ์ในส่วนเพื่อพิมพ์รายละเอียดจะกล่าวว่าขนาดภาคตรรกะ / กายภาพ 512B / 4096B นั่นเป็นเรื่องปกติ

"การแปลง" นี้ดำเนินการโดยหน่วยสืบราชการลับในดิสก์และเป็นเรื่องปกติ มันเป็นวิธีการทำงาน

หากคุณไม่เห็นทั้ง 3TB ตรวจสอบใน BIOS ก่อนว่ามันไม่ จำกัด ขนาดของดิสก์ บางทีคุณอาจต้องการอัพเดต BIOS เพื่อสนับสนุนดิสก์

นอกจากนี้ยังใช้การแยกส่วนเพื่อสร้างพาร์ติชันเริ่มต้นจาก 0 ซึ่งเป็นข้อผิดพลาด คุณต้องเริ่มพาร์ทิชันแรกในเซกเตอร์ 2048 ซึ่งเทียบเท่ากับ 1MiB เพื่อให้พาร์ติชันบนดิสก์ถูกจัดตำแหน่งเพื่อประสิทธิภาพที่ดีที่สุด

ดังนั้นเปลี่ยนหน่วยเป็น MiB พิมพ์รายละเอียดดิสก์ซึ่งจะพิมพ์ขนาดดิสก์ใน MiB และสร้างพาร์ติชัน (ถ้าคุณต้องการเพียงพาร์ติชันเดียว) เริ่มจาก 1MiB และสิ้นสุดที่ MiB สุดท้าย (หรือหนึ่งก่อนหน้าสุดท้าย) .

ตัวอย่างเช่นดิสก์ 3TB ควรมีความเป็นจริงเช่น 2,861,022 MiB ดังนั้นการสร้างพาร์ติชันเดียวที่ครอบคลุมทั้งดิสก์บนอุปกรณ์ดิสก์ที่เรียกว่า / dev / sdX จะเป็นเช่นนั้น (แทนที่ X ด้วยตัวอักษรที่ถูกต้อง):

sudo parted /dev/sdX
unit MiB
mklabel gpt
print (to see the total size in MiB)
mkpart primary 1 2861022
quit

หากขนาดของดิสก์มีน้อย MiB มากกว่าหรือน้อยกว่า 2861022 ปรับตำแหน่งสิ้นสุด

แค่นั้นแหละ. หลังจากนั้นสร้างระบบไฟล์ที่คุณต้องการในพาร์ติชัน

แหล่งที่มาและการอ่านเพิ่มเติม

ไดรฟ์ 4K-sector และ Linux

ตรวจสอบข้อผิดพลาดและติดตั้งไดรฟ์ 4k ใน Linux

ฟอรัม Ubuntu


ขอบคุณสำหรับการตอบกลับ แต่ไม่ได้ตอบคำถามของฉัน ฉันเข้าใจว่าเคอร์เนลรู้จักขนาดเซกเตอร์ของไดรฟ์และ gparted นั้นก็ควรจะรับรู้เช่นกัน แต่มันรายงานเป็นอย่างอื่นและฉันก็อยากรู้อยากเห็นหากมีคำอธิบายว่าถ้ามันเป็นบั๊กหรือถ้าฉันทำอะไรผิด .
qwazix

0

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

ซอฟต์แวร์การแบ่งพาร์ติชันแบบเก่าจัดพาร์ติชั่นบนหลายส่วนของ 63x512B ซึ่งจะส่งผลให้ประสิทธิภาพการทำงานแย่ลงถ้าไดรฟ์มีเซกเตอร์กายภาพ 4KB เพราะนั่นคือ 31 กิโลบิตครึ่งไม่ใช่ 4KB หลายเท่า

แทบไม่มีซอฟต์แวร์การแบ่งพาร์ติชันในอูบุนตูที่จะทำสิ่งนี้อีกต่อไป (เว้นแต่คุณจะร้องขอเป็นพิเศษ) ส่วนใหญ่จะจัดแนวกับ 1MiB หลายส่วน (2048x512B ภาคซึ่งเป็นภาค 256x4KB) โดยค่าเริ่มต้น

จะเกิดอะไรขึ้นหากคุณไม่จัดแนว

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

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

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