วิธีการแก้ไขเซกเตอร์ MBR 512- ไบต์บนดิสก์เซกเตอร์ 4096- ไบต์


22

อัปเดตครั้งสุดท้าย:

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


แรกเริ่ม

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

จากนั้นโศกนาฏกรรม

วันที่ยอดเยี่ยมคอมพิวเตอร์ของฉันตัดสินใจที่จะไม่เปิดอีกต่อไป ปรากฎว่าเมนบอร์ด (ไม่ตีตรามีเพียง MADE IN CHINA ขนาดใหญ่ที่พิมพ์อยู่) จะตาย ฉันใช้มันเป็นไฟล์เซิร์ฟเวอร์และตอนนี้ไดรฟ์ 500GB เต็มไปด้วยข้อมูลที่ฉันไม่สามารถสูญเสียได้ ตอนนี้ฉันยากจนและไม่สามารถซื้อคอมพิวเตอร์เครื่องใหม่ได้ดังนั้นความหวังเดียวของฉันคือกล่องหุ้ม USB "ที่ชำรุด"

การสอบสวน

มีลีนุกซ์หลายรุ่น, แล็ปท็อป, VirtualBox และกล่องหุ้มที่ฉันทำการวิเคราะห์ทางนิติเวชในเรื่องนี้ dmesg รายงานขนาดพาร์ติชันเกินกว่าที่กำหนด ดังนั้นฉันจึงผ่านเอกสารข้อมูลฮาร์ดไดรฟ์การนับส่วนจากการคำนวณขอบเขตการทดสอบไดรฟ์ด้วยตนเองด้วย dd และทุกอย่างดูโอเคจนกระทั่งฉันยิง fdisk และมันกล่าวว่า:

    Note: Sector size is 4096 (not 512).

วิธี fdisk เจียมเนื้อเจียมตัว "บันทึก" นี้เป็นรากของปัญหาทั้งหมด หลังจากที่เล่นซอเพิ่มเติมข้อสรุปเหล่านี้ถูกดึง:

  • กล่องหุ้ม USB ไม่ได้ชำรุด

  • คอนโทรลเลอร์ SATA บนมาเธอร์บอร์ดที่ตายแล้วนั้นเป็นสิ่งที่แปลกประหลาดอย่างน้อย มันไม่ได้รายงานเซกเตอร์ 4096- ไบต์ต่อระบบปฏิบัติการดังนั้นระบบปฏิบัติการจึงสร้าง MBR อย่างมีความสุขโดยใช้ที่อยู่เซกเตอร์ 512 ไบต์

  • ตอนนี้เมื่อฉันพยายามเข้าถึงพาร์ติชันระบบปฏิบัติการพยายามใช้ที่อยู่ 512 ไบต์บนไดรฟ์เซกเตอร์ 4096- ไบต์และแน่นอนว่ามันจะไม่ทำงาน

คำถาม

  • ดังนั้นฉันจะแก้ไขที่อยู่ใน MBR อย่างไรเพื่อให้ถูกต้องในขนาดเซกเตอร์ 4096- ไบต์นอกจากการแก้ไข MBR ด้วยตนเองใน hex-editor และ

  • พาร์ติชันไม่จัดแนวสำหรับเซกเตอร์ 4096- ไบต์ มีเครื่องมือบางอย่างที่สามารถจัดเรียงไว้นอกเหนือจากการคัดลอกเข้าและออกจากไดรฟ์อื่นได้หรือไม่ (ฉันไม่มีไดรฟ์สำรอง) หรือฉันจะต้องสร้างเครื่องมือที่ "เปลี่ยน" ข้อมูลไปด้านข้างทีละน้อย พาร์ติชั่นเป็น ext3

ขอบคุณ!

ปรับปรุง:

ฉันพบว่ามีวิธีที่ฉลาดในการใช้ dd เพื่อเปลี่ยนพาร์ติชันแบบแทนที่ในคำถามนี้: จะย้ายพาร์ติชั่นใน GNU / Linux ได้อย่างไร? แต่ฉันไม่รู้ว่ามันจะใช้งานได้กับส่วนใดส่วนหนึ่งหรือไม่ ฉันไม่สามารถทดสอบได้ในตอนนี้ แต่จะทำเมื่อฉันมีเวลา

อัปเดต 2:

ดังนั้นฉันจึงจัดแนวพาร์ติชันให้สำเร็จโดยใช้วิธีการด้านบนและแก้ไข MBR ด้วยมือบน hex editor ทันทีที่ฉันเสียบ HDD อีกครั้ง ความเจริญ พาร์ติชันที่ติดตั้งโดยอัตโนมัติ! ฉันไม่แนะนำสิ่งนี้แม้ว่าจะมีข้อผิดพลาดของ I / O ในระหว่างกระบวนการและฉันอาจสูญเสียทุกอย่างดูความคิดเห็นเกี่ยวกับคำตอบของ Rod สำหรับพาร์ติชันอื่นฉันจะไม่รับความเสี่ยงและจะใช้ HDD เก่าและจัดตำแหน่งชิ้นต่อครั้งโดยการคัดลอกข้อมูลแล้ววางกลับไปที่ตำแหน่งอื่น


ไม่ทราบ แต่มีคำพูด - ดูเหมือนว่าคุณสามารถให้บทเรียนว่าคอมพิวเตอร์ทำงานอย่างไร! (และถ้ามันช่วยแก้ปัญหาได้ให้ซื้อฮาร์ดไดรฟ์อื่นด้วยเงินสด)
barlop

@barlop ขอบคุณ! แต่ฉันต้องแบ่งวันของฉันระหว่างงานและวิทยาลัยดังนั้นงานที่สองคือไม่ต้องไปตอนนี้;) ฉันจะต้องแก้ไขพาร์ทิชันเหล่านี้อย่างหนัก =)
NothingsImpossible

มันเป็นเวลา 6 โมงเช้าและฉันก็ใช้เวลาตลอดคืนสุดท้ายปัญหานี้
Leonel

ตกลงดังนั้นฉันมีปัญหาตรงข้าม: ฉันมีดิสก์ขนาด 1TB ที่ฟอร์แมตโดยใช้กล่องหุ้ม ดังนั้นจึงมีการจัดรูปแบบโดยใช้ 4096 ไบต์ต่อที่อยู่ภาค ฉันไม่สะดวกที่จะแก้ไข MBR ด้วยมือ และฉันจำเป็นต้องใช้ HDD โดยตรงบน SATA (512 ไบต์ต่อเซกเตอร์) คำแนะนำใด ๆ
Leonel

1
@Leonel คุณสามารถใช้ Linux ได้ fdisk เพื่อแก้ไข MBR (ฉันเรียนรู้สิ่งนี้ในภายหลังโดยไม่จำเป็นต้องใช้โปรแกรมแก้ไข hex) :) คุณสามารถเปลี่ยนแต่ละจุดเริ่มต้นและขนาดของรายการ ดังนั้น: เริ่มต้น fdiskจดบันทึกการกำหนดค่าปัจจุบัน (หรือดีกว่าสำรองข้อมูล MBR ด้วย dd ) คูณที่อยู่เริ่มต้นและค่าขนาด 8 และแก้ไข ตรวจสอบให้แน่ใจว่าได้ตรวจสอบทุกอย่างด้วยเครื่องคิดเลขและเข้าใจความหมายของค่า คุณจะเห็นว่า Size = End - เริ่ม + 1 และนั่น fdisk แสดงขนาดในหน่วย 1000 ส่วนดังนั้นคุณอาจต้องเปิดโหมดผู้เชี่ยวชาญเพื่อดูมูลค่าที่แท้จริง ฯลฯ
NothingsImpossible

คำตอบ:


24

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

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

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

dd if=/dev/sdb of=~/image.img

นี่จะเป็นการคัดลอกดิสก์ของคุณจาก /dev/sdb (ดิสก์ USB ปรับตามความจำเป็น) เป็นไฟล์ ~/image.img. จากนั้นคุณสามารถใช้สคริปต์ต่อไปนี้เพื่อเมาต์พาร์ติชันของรูปภาพ:

#!/bin/bash
gdisk -l $1 > /tmp/mount_image.tmp
let StartSector=`egrep "^   $2|^  $2" /tmp/mount_image.tmp | fmt -u -s | sed -e 's/^[ \t]*//' | head -1 | cut -d " " -f 2`

let StartByte=($StartSector*512)

echo "Mounting partition $2, which begins at sector $StartSector"

mount -o loop,offset=$StartByte $1 $3

rm /tmp/mount_image.tmp

บันทึกสคริปต์เป็นพูด mount_image และใช้มันเช่นนี้

./mount_image ~/image.img 2 /mnt

นี่จะเมานต์พาร์ติชั่น 2 จาก image.img ไปยัง /mnt. โปรดทราบว่าสคริปต์อาศัย GPT fdisk ( gdisk ) ซึ่งการแจกแจงส่วนใหญ่รวมอยู่ในแพ็คเกจที่เรียกว่า gptfdisk หรือ gdisk.

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

ตัวเลือกอื่นที่เกิดขึ้นกับฉันคือลองใช้เครื่องเสมือนเช่น VirtualBox เครื่องมือดังกล่าวอาจมีขนาดเซกเตอร์ 512 ไบต์เมื่อเข้าถึงอุปกรณ์ดิสก์โดยเลิกทำการแปลอย่างมีประสิทธิภาพ หรือคุณอาจจะสามารถคัดลอกเนื้อหาของดิสก์ดิบ (เหมือนใน dd if=/dev/sdc of=/dev/sdb ) ภายในเครื่องเสมือนซึ่งอาจคัดลอกเนื้อหาด้วยการบีบอัดจึงทำให้รูปภาพพอดีกับพื้นที่ดิสก์น้อยกว่าที่ใช้


คำตอบที่ลึกซึ้งมาก แต่ไม่ได้สิ่งที่ฉันกำลังมองหา .. ฉันได้ลองวิธีเครื่องเสมือน แต่มันไม่ได้เลิกทำการแปล ฉันเพิ่งกลับมาถึงบ้านและจะพยายามจัดพาร์ติชันแรก (เล็กกว่าสำคัญน้อยกว่า) โดยใช้ dd และปล่อยให้มันทำงานข้ามคืน หากประสบความสำเร็จฉันจะพยายามแก้ไข MBR ด้วยตนเองหากไม่มีใครตอบ
NothingsImpossible

4
อย่า พยายามแก้ไขเนื้อหาของดิสก์ผ่าน dd! นอกเสียจากคุณจะ มาก ระวังและเข้าใจสิ่งต่าง ๆ อย่างมาก ดี (หรือเป็น พิเศษ โชคดี) คุณมีแนวโน้มที่จะทิ้งขยะมากกว่าแก้ไข มันเกิดขึ้นกับฉันว่าคุณอาจจะสามารถปรับตารางพาร์ทิชันโดยใช้ fdisk: สำรองข้อมูลต้นฉบับแล้วแบ่งจุดเริ่มต้นของพาร์ติชันทุก ๆ 8 (และตั้งค่าจุดสิ้นสุดให้สิ้นสุดก่อนจุดเริ่มต้นของพาร์ติชันต่อไปนี้) นี่เป็นโอกาสเท่านั้นหากค่าจุดเริ่มต้นของพาร์ติชันเป็นทวีคูณทั้งหมดของ 8
Rod Smith

1
วัวศักดิ์สิทธิ์! ขอบคุณสำหรับข้อมูล. ฉันพยายามโคลน Mac / Windows HDD ไปยัง SSD เป็นเวลาหนึ่งวันและในที่สุดฉันก็สามารถระบุปัญหาได้: Rosewill SATA / IDE กับอะแดปเตอร์ USB ที่ฉันใช้เพื่อเชื่อมต่อ SSD กำลังทำการแปลงแบบย้อนกลับ " "ถึงภาค 4096 ไบต์! ดังนั้น GPT + Hybrid MBR บน SSD จึงดูไร้สาระหลังจากที่ฉันทำ dd ทำการโคลนในขณะที่เชื่อมต่อผ่าน USB และฉันคิดว่าการโคลนล้มเหลว แต่เมื่อฉันเชื่อมต่อ SSD โดยตรงกับเมนบอร์ดแทน HDD เก่าของฉันทุกอย่างทำงานได้ดี!
Eliot

1
ไม่สามารถแก้ไขความคิดเห็นก่อนหน้าของฉัน แต่เครื่องมือการจัดตำแหน่งไม่มีประโยชน์ในกรณีนี้มันเป็นเพียงเพื่อการเพิ่มประสิทธิภาพเท่านั้น อย่างไรก็ตามโปรดทราบว่าคุณสามารถใช้ TestDisk และหลังจากการสแกนที่ลึกขึ้นให้กด P เพื่อแสดงรายการไฟล์และกู้คืนเนื้อหาของดิสก์ของคุณ (นี่คือวิธีที่ฉันกู้คืนข้อมูลของฉัน แต่ฉันไม่พบวิธีแก้ไขเซกเตอร์ไบต์ วันนี้...).
gaborous

1
การอ่านที่น่าสนใจซึ่งยืนยันปัญหาและคำแนะนำในการแก้ปัญหา (เลียนแบบการแปลของบริดจ์ผ่านอุปกรณ์ลูปแบ็ค Linux): goughlui.com/2013/10/02/... และนี่ askubuntu.com/questions/337693/... . และเช่นเดียวกับบันทึกเพิ่มเติมฉันยังพยายามแก้ไขขนาดตรรกะเพื่อให้ตรงกับขนาดทางกายภาพ แต่ยังไม่รู้จักไดรฟ์ แต่การฟอร์แมตจะแก้ไขการติดตั้ง แต่ไฟล์หายไปแน่นอนดังนั้นควรกู้คืนไฟล์เหล่านั้นให้ดีขึ้นก่อนผ่านการติดตั้งลูปแบ็คหรือทดสอบดิสก์
gaborous

4

สคริปต์นี้สรุปข้อเสนอ Rod Smith เมื่อคุณมีการโจมตีหรือเข้ารหัสลับ ไม่รับประกัน. อย่าลังเลที่จะปรับปรุงมัน! (อัปเดตด้วยการค้นหาล่าสุดเกี่ยวกับ mdadm)

#!/bin/sh
#
# This script solve the following problem:
#
# 1. create a GPT partition on a large disk while attached directly via SATA
#    when the device present itself with 512 bytes of block size:
#    sd 3:0:0:0: [sda] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
#
# 2. try to use a SATA to USB adapter like ID 067b:2773 Prolific Technology, Inc.
#    this present the device with 4096 bytes of block size:
#    sd 19:0:0:0: [sdc] 732566646 4096-byte logical blocks: (3.00 TB/2.72 TiB)
#
# 3. The kernel is unable to read correctly the partition table with
#    the USB adaper.
#
#
# With the current tools (kernel and gdisk) in debian wheezy is
# possible to use losetup to remap the partitions to loop devices so
# you can use them as usual with any filesystem, raid or crypto
#
# I still do not know if this issue is originated by the adapter or by
# the disk and if there are any others workarounds.
#
# Known version of the software:
# $ apt-show-versions linux-image-3.2.0-4-amd64
# linux-image-3.2.0-4-amd64/wheezy uptodate 3.2.54-2
# $ apt-show-versions gdisk
# gdisk/wheezy uptodate 0.8.5-1


attach_device() {

    device="$1";

    MYTMPDIR=`mktemp -d`
    trap "rm -rf $MYTMPDIR" EXIT

    # gdisk on the device use the 4096 sector size
    # but we need to force it to 512
    # this is a knwon workaround from http://superuser.com/a/679800
    # basically we make a copy of the gpt partition table on a file
    dd if="/dev/$device" bs=16384 count=1 of="$MYTMPDIR/gpt" 2> /dev/null

    # we extract the offset and the size of each partition
    #
    # FIXME: the "+ 1" seems strange, but it is needed to get the same
    #        size value from:
    #
    #        blockdev --getsize64
    #
    #        without the "+ 1" some funny things happens, for example
    #        you will not be able to start a recognized md device:
    #
    #        md: loop1 does not have a valid v1.2 superblock, not importing!
    #        md: md_import_device returned -22
    #
    #        even if
    #
    #        mdadm --examine /dev/loop1
    #
    #        does not complaint

    gdisk -l \
     "$MYTMPDIR/gpt" 2> /dev/null | \
     awk '/^ *[0-9]/ {printf "%.0f %.0f\n", $2 * 512, ($3 - $2 + 1) * 512}' > $MYTMPDIR/offset-size

    # we create a loop device with the give offset and size
    while read line;
    do
        offset=$(printf "$line" | cut -d ' ' -f 1);
        size=$(printf "$line" | cut -d ' ' -f 2);
        losetup --verbose --offset "$offset" --sizelimit "$size" `losetup -f` /dev/$device;
    done < $MYTMPDIR/offset-size;
}

detach_device() {

    device="$1";

    for loopdevice in `losetup -a | grep "$device" | cut -d : -f 1`;
    do
        losetup --verbose --detach "$loopdevice";
    done;
}

usage() {
cat <<EOF
Usage:
- $0 -h to print this help
- $0 sda to attach the gpt partitions of sda
- $0 -d sda to detach the gpt partitions of sda
EOF
}


detach=0;

while getopts hd action
do
    case "$action" in
        d) detach=1;;
        h) usage;;
    esac
done
shift $(($OPTIND-1))

if [ $# -ne 1 ];
then
    usage;
fi

if [ "x$detach" = "x0" ]; then
    attach_device $1;
else
    detach_device $1;
fi

โว้ว! งานที่ดี!
NothingsImpossible

2

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

parted /dev/sdb

แยกส่วนจะบอกคุณบางสิ่งบางอย่างตามบรรทัดเหล่านี้เมื่อพยายามอ่านดิสก์ที่มีขนาดเซกเตอร์ต่างจากที่สร้างตารางพาร์ติชัน:

Error: /dev/sdb: unrecognised disk label                                  

ใช้ mklabel เพื่อสร้าง MBR หรือ GPT ใหม่ตามสิ่งที่คุณใช้ก่อนหน้านี้

(parted) mklabel
New disk label type? mbr

จากนั้นทำการช่วยเหลือเพื่อค้นหาพาร์ติชั่นเก่าของคุณ

(parted) rescue
Start? 0
End? 4001GB
Information: A ext4 primary partition was found at 1049kB -> 2000GB.  Do you
want to add it to the partition table?
Yes/No/Cancel? y

ทำซ้ำกระบวนการช่วยเหลือถ้าคุณมีพาร์ติชันเพิ่มเติม คุณทำเสร็จแล้ว


มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉันในการแปลงตารางพาร์ติชันของฉันจาก mbr เป็น gpt ทำสิ่งนี้เพื่อให้ฉันสามารถขยายดิสก์ 2TB ที่ลอกแบบมาเป็น 4TB ความกังวลเล็กน้อยจากพาร์ทิชันของฉันแขวนอยู่ที่นั่น แต่นี่เร็วกว่าวิธีอื่นมาก
OregonTrail

2

ฉันมีปัญหานี้เมื่อฉันลบดิสก์ 4TB ออกจากกล่องหุ้มภายนอก WD My Book ปัญหาคือ:

  1. ตารางพาร์ติชัน MBR ถูกปิดโดยปัจจัย 8 และ
  2. ตารางพาร์ติชัน MBR ไม่สามารถจัดการ & gt; 2TB เมื่อขนาดเซกเตอร์เท่ากับ 512

สารละลาย: เขียนตารางพาร์ติชันลงใน GPT อีกครั้งแปลงค่าเพื่อใช้เซกเตอร์ 512 ไบต์

ในกรณีของฉันพาร์ติชันเริ่มต้นที่ 1MB ออฟเซ็ตและสิ้นสุด (~ 856kB) ก่อนที่จะสิ้นสุดดิสก์ สิ่งนี้เป็นสิ่งที่ดีเพราะจากนั้นจะอนุญาตให้ MBR + GPT (17408 ไบต์) หน้าพาร์ติชันและ GPT สำรอง (16896 ไบต์) ที่ส่วนท้ายของดิสก์

ฉันสร้างภาพของทั้งสองภูมิภาคในกรณี (โดยใช้ dd)

ฉันบันทึกผลลัพธ์จาก fdisk -l /dev/sde.

ฉันใช้ gdisk เพื่อลบพาร์ติชั่นแรก หากคุณต้องการคุณสามารถทำอย่างที่ฉันทำและเปลี่ยนค่าการจัดตำแหน่งเป็น 8 (4096) เพื่อใช้พื้นที่มากที่สุด จากนั้นฉันสร้างพาร์ติชันใหม่โดยเริ่มต้นที่ 2048 และสิ้นสุดที่ส่วนท้ายของดิสก์ ฉันจะขยายระบบไฟล์ในภายหลัง

โชคดีที่การเปลี่ยนแปลงขนาดเซ็กเตอร์ไม่มีผลต่อระบบไฟล์ LVM หรือ LUKS

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