วิธีที่ดีที่สุดในการโคลนระบบที่ใช้กับฮาร์ดดิสก์ใหม่โดยใช้ rsync


20

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

  • ระบบปฏิบัติการ: Ubuntu 12.04.4 LTS
  • หัวขาด
  • ฉันไม่ได้หวังที่จะติดตั้งซอฟต์แวร์ใหม่มากเกินไปเนื่องจากดิสก์ล้มเหลวแล้ว :)
  • ระบบกำลังทำงาน ฉันกลัวที่จะหยุดมันเพิ่มโอกาสของการที่ดิสก์ไม่สำรองข้อมูล นี่หมายความว่า dd อาจหมดหรือเปล่า
  • ดิสก์ใหม่มีขนาดไม่เท่ากัน (มีขนาดใหญ่เป็นสองเท่า) เนื่องจากดิสก์เก่ามีความซับซ้อนมากยิ่งขึ้นที่ทำให้เกิดปัญหา dd

ความคิดของฉันคือ

  • hotplug ไดรฟ์ใหม่ในระบบ
  • ทำระบบไฟล์
  • ติดตั้งใน / mnt / somedir
  • rsync ไฟล์
  • เวทมนตร์ fstab
  • เวทมนตร์ในการบูท

คำถามที่ฉันยังมีคือ:

สิ่งที่จะเป็นคำสั่ง rsync ที่ดี? ฉันกำลังวางแผนที่:

rsync -aAXx  / /mnt/somedir/ 
   --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

(ฉันจะข้าม dir เพิ่มเติมอีกเช่นการโจมตีที่ติดตั้งอยู่)

ตัวเลือกอยู่ที่ไหน:

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls                  preserve ACLs (implies -p)
-X, --xattrs                preserve extended attributes
-x, --one-file-system       don't cross filesystem boundaries

ฉันกำลังข้าม -H, -v และ --progress เพื่อเร่งกระบวนการ
มันจะใช้ได้กับ Ubuntu หรือไม่? ฉันไม่แน่ใจว่า Ubuntu ใช้ฮาร์ดลิงก์ใด ๆ หรือไม่ แต่ฉันไม่คิดว่าฉันต้องการตัวเลือกใช่ไหม?

หลังจากทำงานนี้ฉันสามารถรีบูต (อาจเป็นไดรฟ์ usb สด) และเรียกใช้ rsync อีกครั้งหากดิสก์เก่ายังคงเริ่มทำงาน นี้จะแก้ไขไฟล์ใด ๆ ที่ไม่สามารถอ่าน / เปลี่ยนแปลงได้เนื่องจากระบบกำลังทำงานฉันคิดว่า


จะแก้ไขการบูทได้อย่างไร?
จากนั้นแผนของฉันจะเปลี่ยน UUID สำหรับ / ใน fstab ของฉัน (ยังต้อง google วิธีการค้นหา uuid) และทำมายากลบางอย่างเพื่อให้ระบบบูทจากดิสก์ใหม่

ฉันลืมอะไรไปหรือเปล่า

คำตอบ:


14

คุณสามารถคว้า UUID สำหรับอุปกรณ์บล็อกทั้งหมดด้วย blkid คำสั่ง (คุณต้องการหนึ่งที่เพิ่งพูด UUID ไม่ใช่ PARTUUID)

ตัวเลือก rsync ที่ฉันใช้คือ -avhPHAXx

ฉันไม่คิดว่า -v หรือ - ความคืบหน้าจะเพิ่มความเร็วอะไรจนกว่าคุณจะอยู่บนคอนโซล / tty ช้า

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

โปรแกรมที่ใช้บ่อยซึ่งฉันรู้ว่าใช้ฮาร์ดลิงก์ (อย่างน้อยในระบบของฉัน) คือ gitดังนั้นฉันจึงเพิ่มตัวเลือก -H ปัญหาเดียวที่ฉันคิดว่าคุณจะไม่ใช้ -H คือมันจะใช้พื้นที่เพิ่มขึ้นอีกเล็กน้อย

สำหรับ bootloader ถ้าคุณใช้ GRUB2 กับ MBR คำสั่งที่ฉันใช้คือ grub-install /dev/sda (แทนที่ sda ด้วยไดรฟ์ที่ถูกต้องสำหรับคุณ) ที่ควรทำให้ไดรฟ์ใหม่สามารถบูตได้ หากคุณใช้ bootloader หรือ UEFI อื่นฉันจะตรวจสอบ google เพื่อดูวิธีการบูตไดรฟ์ใหม่อย่างถูกต้อง เพียงจำไว้ว่า / boot ในไดรฟ์ใหม่จะต้องอยู่ในพาร์ทิชันเดียวกันกับที่เป็นอยู่ในปัจจุบัน (สมมติว่าคุณไม่ได้ใช้ UUID สำหรับ / boot ด้วย) มิฉะนั้นคุณจะต้องแก้ไข fstab


ฉันไม่เชื่อว่าฉันมีพวกเขาในระบบที่แยกต่างหากฉันกลัว ฉันกำลังอ่านสิ่งต่าง ๆ เกี่ยวกับความเร็วของ - v ดังนั้นฉันไม่แน่ใจว่าจะทำอย่างไร Git เป็นจุดที่ดีฉันแน่ใจว่า / บ้านมีบางอย่าง!
Nanne

1
อืม / proc, / sys และที่เป็นไปได้มากที่สุด / dev เป็นระบบไฟล์ / จุดเมานต์ที่แตกต่างกันอย่างแน่นอนจาก / ดังนั้นจึงไม่มีเหตุผลที่จะยกเว้นสิ่งเหล่านี้เมื่อคุณมี หากคุณไม่แน่ใจว่าเป็นส่วนหนึ่งของระบบไฟล์รูทหรือไม่ให้เรียกใช้ mount เพื่อตรวจสอบ. สิ่งที่อยู่ในนั้นไม่จำเป็นต้องแยกออกด้วยตนเอง
bparker

ฉันไม่แน่ใจว่าเป็นอย่างไรและทำไม แต่สิ่งที่แยกออกไปนั้นไม่ถูกต้อง จริงๆแล้วพวกเขาอยู่ในช่วงแห้งฉันไม่แน่ใจว่าทำไม (ดีฉันคัดลอกรูปแบบจากสถานที่กึ่งสุ่มดังนั้นอาจเป็นเหตุผล?) อย่างไรก็ตามด้วย -x ในสถานที่ตามคำแนะนำของคุณฉันไม่ต้องกังวลมากเกินไปสิ่งเดียวที่เกิดขึ้นก็คือสิ่งที่ไม่สำคัญ
Nanne

9

ฉันเพิ่งทำสิ่งนี้ได้สำเร็จ

ฉันใช้

sudo rsync -ahPHAXx --delete --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / /mnt

จากนั้นฉันรีเซ็ตของฉัน /mnt/etc/fstab ไฟล์สำหรับพาร์ติชันสำหรับเริ่มระบบ และ พื้นที่สว็อปของฉัน

จากนั้นฉันต้องรีเซ็ต GRUB

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
sudo grub-install --recheck /dev/sdX
sudo update-grub

โปรดทราบว่านี่เป็นเพียงดิสก์ฟอร์แมต MBR เท่านั้น
Teque5

2

อย่าพยายามแก้ไขบูตด้วยไดรฟ์นี้ คำแนะนำของฉัน:

  1. เสียบไดรฟ์ เครื่องอื่น แทนที่จะเสี่ยง hotswap บนเครื่องที่ล้มเหลว
  2. rsync ไฟล์ที่ไม่ใช่ระบบของคุณข้ามไปยังดิสก์ใหม่
  3. บนฮาร์ดดิสก์ที่แยกต่างหากสร้างการบูตรูทที่น้อยที่สุดและการสลับ ติดตั้งระบบปฏิบัติการเดียวกับที่คุณต้องการโคลนจากฮาร์ดดิสก์ที่ไม่สบาย
  4. บูตจากดิสก์ใหม่นี้ (โดยเฉพาะในเครื่องแยกต่างหากหากคุณไม่สามารถเสี่ยงต่อการหยุดทำงานของโฮสต์เป้าหมายมิฉะนั้นคุณสามารถบูตโฮสต์เป้าหมายด้วยดิสก์นี้ได้
  5. เพิ่มดิสก์จากขั้นตอนที่ 2 ไปยังระบบใหม่นี้พร้อมกับจุดเชื่อมต่อที่ถูกต้อง ตอนนี้คุณมีโคลนของไดรฟ์ระบบ คุณสามารถ (เลือก) คัดลอกพาร์ทิชันไปยังดิสก์ใหม่นี้ได้ แต่คำแนะนำของฉันคือให้ดิสก์เป็นข้อกำหนดขั้นต่ำสำหรับการบูตระบบ ดังที่คุณทราบการมีสิ่งต่าง ๆ มากเกินไปในพาร์ติชันหลักทำให้การกู้คืนยาก ตรวจสอบให้แน่ใจว่าคุณคัดลอกการกำหนดค่าเครือข่ายอย่างถูกต้องเนื่องจากเซิร์ฟเวอร์ของคุณไม่มีส่วนหัว
  6. เพียงแค่แทนที่ไดรฟ์บนระบบที่ไม่สบายด้วยดิสก์คู่ใหม่นี้ (หากคุณเลือกที่จะไม่บูตเป้าหมายในขั้นตอนที่ 4)
  7. Reboot

ฉันสามารถเสี่ยงการหยุดทำงานมันเป็นเซิร์ฟเวอร์ที่ไม่จำเป็น ฉันกำลังไปที่เว็บไซต์ hotswap (เพิ่มโดยทั่วไป) เพราะสำเนานั้นจะเร็วกว่ามาก ฉันไม่ควรมีความเสี่ยงมากเกินไปขณะที่เรากำลังพูดถึง SATA (อย่างน้อย II) นอกเหนือจากนั้นเหตุผลในการแนะนำดิสก์สำหรับบูตเสริมคืออะไร นั่นจะไม่ทำให้เรื่องซับซ้อนสำหรับซอฟต์แวร์ที่ติดตั้งไว้แล้วทั้งหมด, homedirs และอื่น ๆ ? ดูเหมือนว่าจะมีงานมากกว่าที่ฉันพยายามหลีกเลี่ยง: D
Nanne

มันคือสิ่งที่ฉันใช้ในการผลิต ฉันเมานต์ / home, / etc, / var, / usr และ / opt บนดิสก์ภายนอก (จริง ๆ บน LVM) และ / และ / boot บนดิสก์แยกต่างหาก ด้วยวิธีนี้ฉันไม่ต้องกังวลเมื่อดิสก์หลักล้มเหลวฉันเพียงแค่สลับออกโดยไม่กระทบกับบริการของฉัน :) มันใช้งานได้ตั้งแต่แรก แต่ช่วยให้คุณประหยัดในระยะยาว โดยเฉพาะอย่างยิ่งเมื่อคุณมีพื้นที่ว่างบนพาร์ติชันและจำเป็นต้องเพิ่มระดับเสียงโดยไม่ต้องหยุดทำงาน
Burhan Khalid

ในขณะที่คุณทำคะแนนได้ดีมันไม่ใช่ข้อกำหนดที่ฉันมีอยู่ในปัจจุบันหรือไม่ต้องการ :) มีแผ่นดิสก์อื่น ๆ อีกหลายตัวในระบบ (ประมาณ 7) และฉันต้องลากเส้นที่ไหนสักแห่ง D ดังนั้นระบบปฏิบัติการไม่จำเป็นต้องแยกออกในขณะนี้ ฉันหมายถึง: ฉันเห็นด้วยระบบดี แต่ไม่ใช่สิ่งที่ฉันกำลังมองหาในตอนนี้; ดังนั้นถ้าฉันทิ้งทุกอย่างไว้ในดิสก์ 1 ความจริงที่ฉันกำลังคัดลอกภายนอกจะทำให้มันช้าลงอย่างจริงจังใช่ไหม
Nanne

ขึ้นอยู่กับอินเทอร์เฟซของคุณกับภายนอกอีเธอร์เน็ตควรเร็วกว่า USB 2 เร็วกว่าบน USB 3 เร็วยิ่งขึ้น มันจะไม่ทำให้ช้ามาก - แน่นอนว่าอย่าคัดลอกไดเรกทอรีที่เขียนไป (เช่นพูด / tmp ซึ่งคุณไม่ต้องการใช้) หรือที่ใดก็ตามที่เขียนไปป์
Burhan Khalid

0

ฉันใช้เวลากับ Centos Freepbx distro เพื่อ rsync และมีดิสก์ใหม่ที่สามารถบูตได้และในที่สุดหลังจากแก้ไข fstab และ grub UUID มันไม่ทำงาน

ขั้นตอนสุดท้ายที่จะทำให้มันใช้ได้

dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1
grub

เมื่อคุณอยู่ใน Grub CLI (เช่นที่ grub> พรอมต์):

device (hd0) /dev/sda
device (hd1) /dev/sdb
root (hd0,0) 
setup (hd0) 
root (hd1,0)
setup (hd1)
quit

กด เข้าสู่ และตอนนี้คุณสามารถปิดเครื่องลบดิสก์เก่าและบูตด้วยใหม่

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