โคลนไดรฟหรือพาร์ติชั่น อูบู้นทู


การโคลนก็คือการทำของให้เหมือนเดิมทุกประการกับที่มีอยู่ (เหมือนกันยังกับแพะกับแกะ) วิธีโคลนอูบู้นทูแบบบูทได้ อาจทำได้วิธีหลายวิธี ขอกล่าว 2 วิธี คือ ใช้คำสั่ง dd [1] ซึ่งอธิบายแต่ละขั้นตอนใน [2]และโดยใช้โปรแกรม PartImage [3]

(1.) ใช้คำสั่ง dd (มือใหม่ควรศึกษาเพิ่มเติมและระมัดระวังในการใช้ เพื่อป้องกันความผิดพลาด)

  1. เตรียมดิสก์ที่จะโคลน และดิสก์ใหม่สำหรับเก็บโคลน ให้ต่อกับคอมพิวเตอร์ การต่อฮาร์ดิสก์จากภายนอกผ่าน USB (ช้าหน่อย) หรือ Firewire ก็ได้ แต่ถ้าให้เร็วต่อภายใน หรือ eSATA
  2. ถ้าดิสก์เดิมมีขนาดใหญ่มากพอก็อาจแบ่งพาร์ติชั่น โดยให้พาร์ติชั่นใหม่มีขนาดไม่น้อยกว่าพื้นที่ของดิสก์ที่ต้องการโคลน
  3. เปิด terminal แล้วพิมพ์ใน terminal ดังนี้
  4. df -h (เว้น 1 ช่องไฟ ระหว่าง df และ -h)

    กรณีเป็นไดรฟ ชนิดจะเป็น /dev/sda6 (ดังภาพ) และถ้าเป็นชนิด IDE จะเป็น /dev/hda1
    / แสดงว่าติดตั้งอยุ่ที่ root
   (อาจใช้คำสั่ง df -h ครั้งแรกเมื่อยังไม่ได้เสียบหรือติดตั้งไดรฟที่สอง แล้วใช้คำสั่งอีกครั้งเมื่อเสียบไดรฟที่สอง เพื่อสังเกตระหว่างสองไดรฟ แต่ถ้าคุ้นเคยก็มองออกและเข้าเจ้าทันที ดังภาพต่อไปนี้)


5. sudo dd if=/dev/sda1 of=/dev/sdb1
   เป็นคำสั่งที่จะคัดลอกจาก /dev/sda1 ไปยัง /dev/sdb1 (ไดรฟที่ต่อที่ USB) แต่ถ้าเส้นทางสู่ไดรฟต่างจากนี้ ก็ต้องกำหนดให้ถูกต้อง
  แล้วก็ปล่อยเวลาให้คอมพิวเตอร์ทำงาน (อาจกินเวลานานพอควร)

 

ระวังนะครับ คำสั่งนี้จะเขียนทับทุกอย่างที่มีในไดรฟ ที่อยู่หลัง “of=....”

6. หลังจากเสร็จแล้ว ก็ติดตั้ง Grub บนดิสก์แผ่นเพื่อทำให้สามารถบู้ทได้
7. ตรวจดูให้มั่นใจก่อนว่า ดิสก์ใหม่ต่ออยู่กับคอมพิวเตอร์ ส่วนดิสก์เก่าถูกดึงปลั๊กออก แล้วบู้ทเข้าใน Ubuntu LiveCD
8. เมื่อบู้ทแล้ว ก็เปิด terminal แล้วพิมพ์
    sudo grub
9. เมื่อ Grub เปิด และปรากฏprompt ขึ้นมาดังนี้ grub> ให้พิมพ์
    find/boot/grub/stage1
10. จะปรากฏในลักษณะ hd(0,0) จดไว้ ใช้ในขั้นต่อไป
11. ที่ grub> prompt พิมพ์ root hd(0,0)  (ถ้าในข้อ 10 เป็นลักษณะอื่นก็ให้พิมพ์แทนที่ค่านี้)
12. เมื่อเสร็จแล้ว พิมพ์ setup(hd0)
13. พิมพ์ quit เพื่อออกจาก grub
14. รีสตาร์ท คอมพิวเตอร์ เอาแผ่น LiveCD ออกก่อน ตอนนี้เครื่องน่าจะอยู่และกำลังใช้ ฮาร์ดไดรฟอันใหม่
15. ถ้าพบปัญหาในการบู้ทครั้งแรก ระบบจะพยายามตรวจหา bad sectors ในฮาร์ดไดรฟ แต่ถ้าไม่ได้ผลให้พิมพ์ fsck ใน terminal  เมื่อตรวจเซ้คดิสก์เสร็จเป็นอันว่าเสร็จ

หมายเหตุ

 

  • คำสั่ง dd เป็นคำสั่งที่ใช้คัดลอกข้อมูลทีละบล็อคๆ
    • อาจกำหนด รายละเอียดเพิ่มเติม (option) คือขนาดไบ้ท (bytesize) ที่จะกำนดขนาดอ่านและเขียนในแต่ละครั้งซึ่งการกำหนดนี้จะทำให้การคัดลอกเร็วขึ้นอย่างมาก
      • ต.ย. คำสั่งอาจเป็น dd if=/dev/sda of=/dev/sdb bs=32768 โดยเพิ่ม  (ไดรฟ 260 GB จะใช้เวลาประมาณ 2 ช.ม.) ตัวเลขจะเป็นเท่าไรก็ได้ แต่มาจากการยกกำลังสอง ค่าต่ำสุดคือ 512 ค่าอื่นๆ เช่น 1024, 2048, 4096, 8192 เป็นต้น
    • กรณีที่อ่านแล้วพบข้อผิดพลาด แทนที่จะหยุดยกเลิก ก็กำหนดเพิ้มเติมให้อ่านต่อแม้พบข้อผิดพลาด
      • ต.ย. คำสั่งที่เลี่ยงข้อผิดพลาด dd if=/dev/sda1 of=/dev/sdb1 conv=noerror,sync
    • คัดลอกเฉพาะพาร์ติชั่นใดพาร์ติชั่นหนึ่ง dd if=/dev/hda2 of=/dev/hdb2 bs=4096 conv=notrunc,noerror
    • คัดลอกทั้งฮาร์ดไดรฟ dd if=/dev/hda of=/dev/hdb conv=notrunc,noerror
    • คัดลอกพาร์ติชัน ไปที่ไฟล์ในอีกพาร์ติชั่นหนึ่ง (อย่าคัดลอกพาร์ติชั่นลงในพาร์ติชั่นเดียวกัน) dd if=/dev/hdb2 of=/home/bruno/partition.image bs=4096 conv=notrunc,noerror
    • ต้องการ เขียนลงแผ่น CD แบบ iso image ต.ย.ใช้ dd if=/dev/hdc of=/home/bruno/TEST.iso bs=2048 conv=notrunc (ขนาดไบ้ท 2048 ไบ้ท เท่ากับ 1 sector ดังนั้นจะคัดลอกทีละ 1 sector)
    • การกู้คืน (Restoration) พาร์ติชั่น จากไฟล์อิมเมจ ใช้ dd if=/home/bruno/partition.image of=/dev/hdb2 bs=4096 conv=notrunc,noerror
    • การลบข้อมูลทั้งหมดจากฮาร์ดไดรฟทิ้งไป dd if=/dev/zero of=/dev/hda conv=notrunc (ในกรณีนี้ต้องเปิด/บู้ทเครื่องจากแผ่น CD และเครื่องจะเขียนทับบนไดรฟด้วยเลขศูนย์)
    • อาจใช้คำสั่งนี้ในการแปลงข้อมุล เช่น จาก ASCII เป็น EBCDIC
    • ใช้คำสั่งนี้ข้าม บล็อคของข้อมูล
    • นอกจากนี้ยังใช้เปลี่ยนอักษรตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก
    • ต้องการใช้คำสั่งเพิ่มเติมเหล่านี้ ตรวจดู options ทั้งหมด โดยพิมพ์ info dd ใน terminal
    • บางคนพบว่าว่า ในข้อ 10 แทนที่จะเป็น hd(0,0) กลับเป็น (hd0,0) ก็ใช้ตามนั้น

    (2.) ใช้โปรแกรม PartImage (อันนี้ดูง่ายมากกว่า เยอะเลยครับ เพราะใช้เลือกตามต้องการ)

    • apt-get update
    • apt-get install partimage
    • ค้นหาชื่อของพาร์ติชั่น ใช้ sudo fdisk -l (ถ้าจะโคลนไปใส่ ฮาร์ดิสก์ภายนอก ต้องติดตั้งก่อนพิมพ์คำสั่งนี้ ถ้าไม่ติดตั้งโดยอัตโนมัติ ใช้ sudo mount -t ext3 /dev/hda5 /backup)
    • จำไว้ว่า พาร์ติชั่นที่จะถูกคัดลอกต้องไม่ติดตั้ง (ถ้ามันติดตั้ง/mount อยู่ จะไม่สามารถทำรายการต่อได้ เนื่องจากจะขึ้นกล่องโต้ตอบให้ unmount ก่อน ดูภาพที่ 3) ถ้าเป็นพาร์ติชันในการบู้ทเครื่อง จะต้องบู้ทจากแผ่นแทน และพาร์ติชันที่จะเป็นที่เก็บต้องติดตั้ง
    • พิมพ์ sudo partimage เพื่อเปิดโปรแกรม
    • เมื่อหน้าต่างของโปรแกรมขึ้นมา ใช้ลูกศรขึ้นลงในการเลือก

    ∘ เลือกพาร์ติชันที่ต้องการคัดลอกมา
    ∘ ตั้งชื่อ ไฟล์อิมเมจ และบอก path ด้วย
    ∘ และเลือกการทำงาน (บันทึก หรือกู้พาร์ติชั่น) หรือแม้แต่การต่อเชื่อมเซริฟเวอร์ (ตรงนี้ ผมไม่ทราบ ถ้าต้องการทราบศึกษาเพิ่มที่ www.partimage.org) ในกรณีที่ต้องการคัดลอกเลือก "Save partition into a new image file"
    ∘ แล้วกดปุ่ม "Tab" ไปเรื่อยๆ เพื่อไปที่ <Next(F5)> แล้วกดเอ็นเทอร์ เพื่อไปหน้าถัดไป

    • ที่หน้าต่างต่อมา เลือกว่าจะอัดข้อมูล (compress) หรือไม่ อาจเลือกไม่ (None) ดังภาพ ซึ่งจะไวกว่า แต่ถ้าพ.ท.เก็บจำกัด ก็อาจใช้ Gzip หรือ Bzip2

    (Image source: Reference = 3)

    • การคัดลอกจะทำเฉพาะบริเวณพื้นที่ที่ใช้งานหรือมีข้อมูลเท่านั้น (ถ้าพ.ท.พาร์ติชั่นเท่ากับ 30 G แต่ใช้เพียง 7 G จะได้ไฟล์อิมเมจขนาด 7 G เท่านั้น
    • ตัวเลือก (options) อื่นๆโดยทั่วไปที่ตั้งให้แล้ว (default) ดีอยู่แล้ว
    • กด tab ไปที่ <Continue (F5)> แล้วกดเอ็นเทอร์
    • จะปรากฏหน้าต่าง ที่ถามรายละเอียด อาจกรอกรายละเอียดอะไรก็ได้ที่ต้องการที่เกี่ยวกับไฟล์อิมเมจนี้ลงไป แล้วคลิก โอ เค
    • หลังจากนั้นโปรแกรมจะตรวจสอบข้อมูลพาร์ติชั่น แล้วสรุปรายละเอียดให้
    • หลังจากกดเอ็นเทอร์ (=O.K) โปรแกรมจะเริ่มคัดลอกลง ไฟล์อิมเมจ
    • สักพัก ถ้าขึ้นหน้าต่าง บอก success ก็แสดงว่าเสร็จแล้ว
    • จากนั้นก็สตาร์ทเครื่องใหม่ได้
    • กรณีการกู้ เลือกคำสั่ง Restore partition from an image file แทนหลังจากเปิดโปรแกรม
    • ข้อมูลเพิ่มเติมไปที่ www.partimage.org

    ภาพที่ 3 โปรแกรม แจ้งข้อผิดพลาด ไม่สามารถคัดลอก พาร์ติชั่นที่กำลังติดตั้งหรือใช้งานอยู่

     

    References and more info.
    1.Bruno. The DD command http://www.brunolinux.com/02-The_Terminal/The_dd_command.html (posted 22nd Apr 07)accessed 9th Jan. 2009!
    2. ArsGeek. How to clone your bootable Ubuntu install to another drive.
    http://www.arsgeek.com/2008/01/22/how-to-clone-your-bootable-ubuntu-install-to-another-drive/ posted 22 Jan 2008. , accessed 9th Jan. 2009!
    3. Using PartImage in Ubuntu http://www.psychocats.net/ubuntu/partimage accessed 9th Jan. 2009!
    4. Learn the DD command http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/

     

    หมายเลขบันทึก: 234352เขียนเมื่อ 9 มกราคม 2009 17:52 น. ()แก้ไขเมื่อ 6 กันยายน 2013 20:08 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


    ความเห็น (2)

    เรียน อ.ดร.สมชาย

    ผมกำลังทำ webbase application ต้องการสำรองระบบไว้ใน Hard disk อีกลูกแล้วนำไปติดตั้งระบบอีกที่หนึ่ง ตัวโปรเจคมีระบบปฏิบัติการเป็น ubuntu server 12.04 Lts ติดตั้งทั้งระบบฐานข้อมูล ตัวโปรแกรม และ มี domain name สำหรับเข้าใช้งานไว้แล้ว ทดลองเปิดระบบแล้วให้คนอื่นเข้าใช้งานผ่านเนตจากสถานที่ต่างๆก็ใช้งานได้ ผมได้ค้นหาข้อมูลวิธีการ clone disk แบบต่างๆ จนมาพบ blog นี้ และมีข้อสงสัยดังนี้ครับ

    1.วิธีเหล่านี้(คำสั่ง dd,PartImage) จะสามารถทำได้เหมือนกันหรือเปล่าครับ 2.เมื่อ clone เสร็จแล้ว server ตัว clone จะยังสามารถ on service ให้เข้าใช้งานได้เหมือนตัวต้นฉบับเดิมหรือผมต้องทำ domain name และ set IP router ใหม่ทั้งหมด

    ด้วยความเคารพอย่างสูง นายนัฐพล เพริศพรายวงศ์

    พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
    ClassStart
    ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
    ทั้งเว็บทั้งแอปใช้งานฟรี
    ClassStart Books
    โครงการหนังสือจากคลาสสตาร์ท