Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

ถ่ายโอนไฟล์ VHD ไปยังฮาร์ดไดรฟ์จริงอย่างมีประสิทธิภาพด้วย dd – คู่มือปฏิบัติ

ไฟล์ Virtual Hard Disk (VHD) เป็นไฟล์ขนาดใหญ่ที่จำลองการใช้สื่อกายภาพบน VirtualBox และโปรแกรมจำลอง x86/x86_64 เสมือนอื่นๆ ซึ่งช่วยให้คุณเรียกใช้ Windows, OS X, MS-DOS, FreeBSD, OpenBSD, OS/2 หรือแม้แต่ Linux เวอร์ชันอื่นๆ ภายในการแจกจ่าย Linux ของคุณ ไฟล์เหล่านี้ไม่อนุญาตให้คุณเขียนเนื้อหาลงในฟิสิคัลดิสก์โดยตรงผ่านคำสั่ง dd ที่ให้คุณทำเช่นเดียวกันกับ ISO แต่มีวิธีดำเนินการดังกล่าว แม้ว่าคำแนะนำบางส่วนจะกำหนดให้คุณต้องแปลงไฟล์ VHD เป็น ISO แต่คุณไม่จำเป็นต้องทำเช่นนี้หากคุณใช้ VirtualBox บน Linux เวอร์ชันใหม่ ผู้ใช้ QEMU ก็มีทางออกเช่นกัน แม้ว่าจะเกี่ยวข้องกับการเล่นมากขึ้นก็ตาม

คุณจะต้องตรวจสอบให้แน่ใจว่าไม่มีไดรฟ์หรือพาร์ติชั่นใดที่คุณจะใช้งานเป็นไดรฟ์หรือพาร์ติชั่นที่คุณบู๊ต เราเพิ่งใช้หน่วยความจำ NAND ที่แบ่งพาร์ติชันสำหรับตัวอย่างนี้ แต่คุณอาจต้องการใช้ดีวีดีสดหรือบูท USB หากคุณไม่สามารถทำได้ ไม่ว่าคุณจะบูทเครื่องด้วยวิธีใดก็ตาม ให้เริ่มโปรแกรมเทอร์มินัลโดยกด Ctrl, Alt และ T ค้างไว้ ค้นหาบน Ubuntu Dash หรือเปิดจากเมนูย่อย System Tools ใน Xfce4 หรือ LXDE

วิธีที่ 1:การใช้ VBoxManage จาก Command Prompt

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

เมื่อคุณแน่ใจว่าทุกอย่างปลอดภัยและไดรฟ์ปลายทางไม่ได้ต่อเชื่อมแต่ยังคงต่ออยู่กับเครื่อง ให้พูดว่าฮาร์ดดิสก์ภายนอกที่คุณยังคงเสียบปลั๊กอยู่แต่ไม่ได้ติดตั้งหรืออาจเป็นไฟล์ดิบ เนื่องจากคุณจะสูญเสียทุกอย่างที่อยู่ในนั้นในกระบวนการ เรียกใช้ VBoxManage clonehd freeBSD.VHDX –ฟอร์แมต RAW freeBSD.RAW ในขณะที่แทนที่ freeBSD.VHDX ด้วยฮาร์ดดิสก์เสมือนของคุณ เรามีไฟล์ฮาร์ดดิสก์เสมือนที่มีการติดตั้ง FreeBSD ในระดับปานกลางเพื่อการทดสอบ จึงเป็นที่มาของชื่อ

ทันทีที่คำสั่งนี้เสร็จสิ้น ให้รัน sudo dd if=freeBSD.RAW of=/dev/sde โดยแทนที่ชื่อไฟล์ RAW ด้วย RAW ที่คุณเพิ่งสร้างขึ้น และอุปกรณ์บล็อก sde ด้วยอุปกรณ์ที่คุณสนใจจริงๆ หากคุณไม่แน่ใจ คุณสามารถเรียกใช้ sudo fdisk -l ได้ตลอดเวลา to make sure you know the right partition name. เช่นเดียวกับการใช้ dd เพื่อสิ่งอื่น คุณไม่ต้องการเขียนไปยังอุปกรณ์ผิด

คุณอาจได้รับข้อผิดพลาดว่าไม่มีพื้นที่เหลือบนอุปกรณ์ เช่นเดียวกับที่คุณพยายามเขียนไฟล์ขนาดใหญ่ลงในอุปกรณ์ขนาดเล็ก แต่ไม่ได้ทำให้เกิดปัญหาในการทดสอบ It seems this process adds extra zeros. มิฉะนั้น คุณจะสามารถคัดลอกดิสก์เสมือนไปยังดิสก์จริงได้ภายในสองขั้นตอนโดยแทบไม่ต้องทำอะไรผิดเลย

วิธีที่ 2:ด้วยคำสั่งเซิร์ฟเวอร์อุปกรณ์บล็อกเครือข่ายดิสก์ QEMU

ผู้ใช้ที่มีสิทธิ์เข้าถึงระบบการจำลองเสมือน Quick Emulator (QEMU) เท่านั้นจะต้องจัดการกับขั้นตอนที่เกี่ยวข้องมากกว่าผู้ใช้ที่มีสิทธิ์เข้าถึงคำสั่ง VBoxManage เล็กน้อย ที่พรอมต์คำสั่ง ให้เรียกใช้ sudo modprobe nbd ตามด้วย qemu-nbd -r -c /dev/ndb0 -f vpc ourTest.vhd โดยเปลี่ยนชื่อไฟล์เพื่อให้สะท้อนถึงชื่อไฟล์จริงที่คุณใช้งานอยู่ คุณอาจต้องใช้ sudo เพื่อรัน qemu-nbd ขึ้นอยู่กับว่าคุณกำหนดค่าการติดตั้งของคุณอย่างไร หากคุณกำลังคัดลอกคำสั่งจากที่นี่และวางคำสั่งเหล่านั้น ตรวจสอบให้แน่ใจว่าได้เปลี่ยนแปลงคำสั่งเหล่านั้นก่อนใช้งาน ในกรณีส่วนใหญ่ คุณจะมีเฉพาะอุปกรณ์ ndb0 ที่ต้องกังวลที่นี่ ดังนั้นคุณไม่ควรมีปัญหาใดๆ ที่นั่น

เมื่อเสร็จแล้ว คุณสามารถเขียนพาร์ติชันด้วย qemu-nbd -P 2 -r -c /dev/nbd2 -f vpc ourTest.vhd ตามด้วย sudo ddrescure -v -f /dev/nbd2 /dev/sde2 แต่อย่าลืมแทนที่ไฟล์ในอุปกรณ์ด้วยไฟล์ที่คุณสนใจใช้งานจริงๆ หากคุณกำลังคัดลอกและวางสิ่งเหล่านี้ลงในเทอร์มินัลของคุณเอง ตรวจสอบให้แน่ใจว่าได้เปลี่ยนชื่อไฟล์และหมายเลขพาร์ติชั่นเหล่านั้นด้วยชื่อที่คุณพยายามเขียนถึง อุปกรณ์ /dev/sde ของเราเป็นเพียงการ์ด SDHC มือสองที่เราใช้ในการทดสอบอย่างปลอดภัยโดยไม่สร้างความเสียหายใดๆ คุณอาจต้องใช้ sudo เพื่อรัน qemu-nbd แต่คุณไม่ควรต้องใช้มัน ในทำนองเดียวกัน คุณอาจต้องทิ้งหมายเลขพาร์ติชัน ทั้งนี้ขึ้นอยู่กับการกำหนดค่าของคุณ กระบวนการ QEMU แทบจะไม่เป็นไปตามสัญชาตญาณด้วยเหตุผลเหล่านี้

ผู้ใช้ Hyper-V อาจมีอิมเมจ VHDX แทนที่จะเป็นไฟล์ VHD หากเป็นกรณีนี้ คุณจะต้องเรียกใช้ qemu-nbd -c /dev/nbd0 -f VHDX ourTest.vhd แทน while replacing the file name once again. แม้ว่ารูปแบบนี้เป็นส่วนเสริมของ Windows Server 2012 เพื่อเพิ่มความจุในการจัดเก็บข้อมูลที่มากขึ้นให้กับเครื่องเวอร์ช่วลไลซ์ ผู้ใช้ Linux จำนวนมากขึ้นเรื่อยๆ หันมาใช้รูปแบบนี้เพื่อหลีกเลี่ยงขีดจำกัดที่ 2TB ที่ VHD มี มิฉะนั้น คำแนะนำเหล่านี้ควรใช้ได้โดยไม่คำนึงถึงขนาดไฟล์จริงที่เป็นปัญหา เครื่องมือ ddrescue ของ GNU ควรทำงานเหมือนกับ dd แม้ว่าจะต้องคัดลอกบล็อกที่ดีที่สุดก่อนก็ตาม

เมื่อรันแล้ว ผู้ใช้ที่ทำงานกับอิมเมจ VHDX จะต้องรัน sudo ddrescue -v -f /dev/nbd2 /dev/sde2 , again replacing the files up above. มิฉะนั้น ทุกคนที่มีอิมเมจ VirtualBox ทุกประเภทจะสามารถใช้ qemu-nbd -P 2 -r -c /dev/nbd2 -f vpc ourTest.vhd เพื่อติดตั้งพาร์ติชันที่ต้องการราวกับว่าเป็นดิสก์เก่า คุณจะต้องใช้ sudo mount /dev/nbd2 /cdrom or sudo mount /dev/nbd2 /mnt เพื่อติดมัน ตรวจสอบให้แน่ใจว่าคุณไม่ได้ติดตั้งสิ่งอื่นใดในไดเร็กทอรี /cdrom หรือ /mnt ก่อนที่จะลอง

วิธีที่ 3:ยกเลิกการต่อเชื่อมแล้วยกเลิกการเชื่อมต่อไฟล์

หากต้องการยกเลิกการต่อเชื่อมรูปภาพ คุณเพียงแค่ต้องใช้ sudo umount /mnt or sudo umount /cdrom เพื่อถอดมันออก อย่างไรก็ตาม ตัวเคอร์เนล Linux เองก็กำลังยุ่งอยู่กับการดูแลมันราวกับว่าเป็นวอลลุ่มอื่น

คุณยังคงต้องยกเลิกการเชื่อมต่อจากระบบ QEMU ดังนั้นให้พิมพ์ qemu-ndb -d /dev/nbd2 เพื่อตัดการเชื่อมต่อ

เกี่ยวกับผู้เขียน

ถ่ายโอนไฟล์ VHD ไปยังฮาร์ดไดรฟ์จริงอย่างมีประสิทธิภาพด้วย dd – คู่มือปฏิบัติ

เควิน แอร์โรว์ส

Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์สูงและมีความรู้และมีประสบการณ์ในอุตสาหกรรมมานานกว่าทศวรรษ เขาได้รับการรับรองจาก Microsoft Certified Technology Specialist (MCTS) และมีความมุ่งมั่นอย่างแรงกล้าที่จะติดตามข่าวสารเกี่ยวกับการพัฒนาเทคโนโลยีล่าสุด Kevin ได้เขียนหัวข้อที่เกี่ยวข้องกับเทคโนโลยีอย่างกว้างขวาง โดยนำเสนอความเชี่ยวชาญและความรู้ของเขาในด้านต่างๆ เช่น การพัฒนาซอฟต์แวร์ ความปลอดภัยทางไซเบอร์ และการประมวลผลแบบคลาวด์ การมีส่วนร่วมของเขาในด้านเทคโนโลยีได้รับการยอมรับและเคารพอย่างกว้างขวางจากเพื่อนร่วมงานของเขา และเขาได้รับการยกย่องอย่างสูงจากความสามารถของเขาในการอธิบายแนวคิดทางเทคนิคที่ซับซ้อนในลักษณะที่ชัดเจนและรัดกุม