Score:0

ย้ายอิมเมจ KVM จากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งแล้วปรับขนาด

ธง cn

host1 มีอิมเมจแขก 40G ภายใน LV

host2 มีพาร์ติชั่น LV แขก 50G พร้อมใช้งาน

dd เพื่อโอน host1/guest(40G) --> host2/guest(50G)

gdisk เพื่อแก้ไขตำแหน่งของตาราง GPT -

รูท@ns:~# gdisk /dev/vda2
คำสั่ง (? ขอความช่วยเหลือ): w
คำเตือน! ส่วนหัวรองวางเร็วเกินไปบนดิสก์! คุณต้องการที่จะ
แก้ไขปัญหานี้หรือไม่ (ใช่/ไม่ใช่): ย
ย้ายส่วนหัวและตารางพาร์ติชันที่สองไปยังตำแหน่งที่ถูกต้อง

กำหนดค่าใหม่ guest.xml และเกสต์บูตได้อย่างสมบูรณ์

แขกมีพาร์ติชั่นปกติ - ไม่มี LV

ปัญหา: ฉันไม่สามารถปรับขนาด ระบบไฟล์ บนแขกเพื่อเติมเต็ม LV 50G ทั้งหมด ระบบไฟล์เกสต์ยังคงอยู่ที่ 40G

ดิสก์ /dev/vda: 50 GiB, 53687091200 ไบต์, 104857600 ภาค
หน่วย: ภาค 1 * 512 = 512 ไบต์
ขนาดเซกเตอร์ (โลจิคัล/กายภาพ): 512 ไบต์ / 512 ไบต์
ขนาด I/O (ต่ำสุด/เหมาะสม): 512 ไบต์ / 512 ไบต์
ประเภทป้ายชื่อดิสก์: gpt
ตัวระบุดิสก์: 564A38FB-02AE-4E84-B080-173963955B2E

ประเภทขนาดเซกเตอร์สิ้นสุดการเริ่มต้นของอุปกรณ์
/dev/vda1 2048 4095 2048 บูต BIOS 1M
/dev/vda2 4096 85977087 85972992 ระบบไฟล์ 41G Linux

พยายามปรับขนาดแขก:

root@ns:~# resize2fs /dev/vda2
resize2fs 1.45.5 (07-ม.ค.-2563)
ระบบไฟล์มีความยาวบล็อก 10746624 (4k) แล้ว ไม่มีอะไรทำ!

นี่คือผลลัพธ์ของ fdisk -l จากโฮสต์ใหม่:

ดิสก์ /dev/mapper/vg--main-nstest: 50 GiB, 53687091200 ไบต์, 104857600 ภาค
หน่วย: ภาค 1 * 512 = 512 ไบต์
ขนาดเซกเตอร์ (โลจิคัล/กายภาพ): 512 ไบต์ / 512 ไบต์
ขนาด I/O (ต่ำสุด/เหมาะสม): 512 ไบต์ / 512 ไบต์
ประเภทป้ายชื่อดิสก์: gpt
ตัวระบุดิสก์: 564A38FB-02AE-4E84-B080-173963955B2E

ประเภทขนาดเซกเตอร์สิ้นสุดการเริ่มต้นของอุปกรณ์
/dev/mapper/vg--main-nstest-part1 2048 4095 2048 บูต BIOS 1M
/dev/mapper/vg--main-nstest-part2 4096 85977087 85972992 ระบบไฟล์ Linux 41G

.. และนี่คือสิ่งที่เกิดขึ้นหากฉันพยายามปรับขนาดจากโฮสต์:

root@virtual3:~# resize2fs /dev/mapper/vg--main-nstest-part2
resize2fs 1.45.5 (07-ม.ค.-2563)
เปิด: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าวขณะเปิด /dev/mapper/vg--main-nstest-part2

หรือ....ไม่น่าแปลกใจ:

root@virtual3:~# resize2fs /dev/vg-main/nstest 
resize2fs 1.45.5 (07-ม.ค.-2563)
resize2fs: หมายเลขเวทย์มนตร์ไม่ถูกต้องใน super-block ขณะพยายามเปิด /dev/vg-main/nstest
ไม่พบ superblock ระบบไฟล์ที่ถูกต้อง

ฉันลองติดตั้งพาร์ติชันรูทของแขกบนโฮสต์ดังนี้:

# mount -o วน offset=2097152 /dev/vg-main/ns-test /mnt

... จากนั้นพยายามปรับขนาดอุปกรณ์ลูปผลลัพธ์: /dev/loop7 นี่เป็นความคิดที่ไม่ดี - มันทำลาย superblock และแขกจะไม่บูต กลับไปที่กระดานวาดภาพ

Score:0
ธง cn

ตอบคำถามของตัวเอง จะรักความคิดเห็นบางอย่างแม้ว่าบางส่วนจะดูลึกลับ

ปรากฎว่าซับซ้อนกว่าที่ฉันคิดไว้มาก.. นี่คือบันทึกที่ฉันทำไว้ - มีผลลัพธ์มากมายที่อาจเฉพาะเจาะจงกับสถานการณ์ของฉัน อะไรก็ตามที่ขึ้นต้นด้วย "<<<<" เป็นความคิดเห็น! ห้ามลอกเลียนแบบ!:

ปัญหา: คัดลอกอิมเมจเซิร์ฟเวอร์เก่า qemu 40G LV เป็น 50G LV ใหม่ จำเป็นต้องปรับขนาดระบบไฟล์เป็น 50G

root@virtual3:~# ssh oldserver "dd bs=1M if=/dev/oldvg/oldnstest" | \
           สถานะ dd = ความคืบหน้าของ = / dev / vg-main / nstest
root@virtual3:~# scp oldserver:/etc/libvirt/quemu/oldnstest.xml /etc/libvirt/qemu/nstest.xml
.... แก้ไข nstest.xml ตามต้องการและ virsh กำหนด nstest.xml

ฉันพบบิตและข้อผิดพลาดที่ขาดหายไป แต่อ้างอิงจากหน้านี้เป็นหลัก:

https://subscription.packtpub.com/book/virtualization-and-cloud/9781788294676/1/ch01lvl1sec14/resizing-an-image

  root@virtual3:~# ข้อมูล qemu-img /dev/vg-main/nstest 
    ภาพ: /dev/vg-main/nstest
    รูปแบบไฟล์: ดิบ
    ขนาดเสมือน: 50 GiB (53687091200 ไบต์)
    ขนาดดิสก์: 0 B
  root@virtual3:~# สูญเสีย -f
    /dev/loop0
  root@virtual3:~# สูญเสีย /dev/loop0 /dev/vg-main/nstest 
  root@virtual3:~# kpartx -av /dev/loop0
    GPT: ส่วนหัวหลักคิดว่า Alt ส่วนหัวไม่ได้อยู่ที่ส่วนท้ายของดิสก์
    GPT:ส่วนหัว GPT สำรองไม่ได้อยู่ที่ส่วนท้ายของดิสก์
    GPT: ใช้ GNU Parted เพื่อแก้ไขข้อผิดพลาด GPT
    เพิ่มแผนที่ loop0p1 (253:3): 0 2048 เชิงเส้น 7:0 2048
    เพิ่มแผนที่ loop0p2 (253:4): 0 85972992 เชิงเส้น 7:0 4096
  root@virtual3:~# parted /dev/vg-main/nstest พิมพ์
    คำเตือน: พื้นที่ว่างสำหรับ /dev/dm-2 ดูเหมือนจะไม่ได้ใช้งานทั้งหมด คุณสามารถทำได้
    แก้ไข GPT เพื่อใช้พื้นที่ทั้งหมด (บล็อกเพิ่มเติม 18877064 บล็อก) หรือดำเนินการต่อ
    การตั้งค่าปัจจุบัน? 
    แก้ไข/ละเว้น? แก้ไข                                                           
    รุ่น: Linux device-mapper (เชิงเส้น) (dm)
    ดิสก์ /dev/dm-2: 53.7GB
    ขนาดเซกเตอร์ (โลจิคัล/กายภาพ): 512B/512B
    ตารางพาร์ทิชัน: gpt
    แฟล็กดิสก์: 
    
    หมายเลข เริ่มต้น ขนาดสิ้นสุด ระบบไฟล์ แฟล็กชื่อ
     1 1049kB 2097kB 1049kB ไบออส_grub
     2 2097kB 44.0GB 44.0GB ต่อ 4

VM ยังคงเริ่มต้นขึ้น - มาดูกันว่าเราจะไปจากที่นี่ได้อย่างไร!

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

  root@virtual3:~# kpartx -av /dev/loop0
    เพิ่มแผนที่ loop0p1 (253:3): 0 2048 เชิงเส้น 7:0 2048
    เพิ่มแผนที่ loop0p2 (253:4): 0 85972992 เชิงเส้น 7:0 4096
  root@virtual3:~# ls -la /dev/mapper/loop0*
    lrwxrwxrwx 1 รูท รูท 7 ม.ค. 56 23:47 /dev/mapper/loop0p1 -> ../dm-3
    lrwxrwxrwx 1 รูท รูท 7 ม.ค. 56 23:47 /dev/mapper/loop0p2 -> ../dm-4
    root@virtual3:~# tune2fs -l /dev/mapper/loop0p2
      .... เยอะแยะ คัดมาสั้นๆ
    คุณสมบัติของระบบไฟล์: has_journal ext_attr resize_inode dir_index .... etc etc
     .... มีอะไรอีกมากมาย .... แต่โปรดสังเกต "has_journal" ด้านบน
  root@virtual3:~# e2fsck /dev/mapper/loop0p2 >>>>>>>>แก้ไขปัญหาเล็กน้อย?
    e2fsck 1.45.5 (07-ม.ค.-2563)
    /dev/mapper/loop0p2: การกู้คืนเจอร์นัล
    การล้างไอโหนดที่ถูกละเลย 788499 (uid=0, gid=0, mode=0100644, size=113)
    การล้างไอโหนดที่ถูกละเลย 531614 (uid=0, gid=0, mode=0100666, size=0)
    การล้างไอโหนดที่ถูกละเลย 531613 (uid=112, gid=117, mode=0100600, size=0)
    การล้างไอโหนดที่ถูกละเลย 531610 (uid=112, gid=117, mode=0100600, size=0)
    การล้างไอโหนดที่ถูกละเลย 531609 (uid=112, gid=117, mode=0100600, size=0)
    การล้างไอโหนดที่ถูกละเลย 531606 (uid=112, gid=117, mode=0100600, size=0)
    การตั้งค่า inodes ฟรีนับเป็น 2511295 (เดิมคือ 2511334)
    การตั้งค่าบล็อกฟรีนับเป็น 6187161 (เดิมคือ 6192365)
    /dev/mapper/loop0p2: สะอาด, 175681/2686976 ไฟล์, 4559463/10746624 บล็อก
  root@virtual3:~# tune2fs -O ^has_journal /dev/mapper/loop0p2 >>>> หมายเหตุ: cap O
   tune2fs 1.45.5 (07-ม.ค.-2563)
  root@virtual3:~# tune2fs -l /dev/mapper/loop0p2 | grep "คุณสมบัติ"
   คุณลักษณะของระบบไฟล์: ext_attr resize_inode dir_index .... ฯลฯ เป็นต้น
  root@virtual3:~# kpartx -dv /dev/loop0
   เดล devmap : loop0p2
   เดล devmap : loop0p1
  root@virtual3:~# สูญเสีย -d /dev/loop0
  root@virtual3:~# modprobe nbd max_parts=8 <<<<< จำเป็นในการสร้าง /dev/nbd*
    (แก้ไข /etc/modprobe ... เพิ่ม nbd เพื่อทำให้ถาวร)
  root@virtual3:~# qemu-nbd --format=raw --connect=/dev/nbd0 /dev/vg-main/nstest 
  root@virtual3:~# fdisk /dev/nbd0
    
    ยินดีต้อนรับสู่ fdisk (util-linux 2.34)
    การเปลี่ยนแปลงจะยังคงอยู่ในหน่วยความจำเท่านั้น จนกว่าคุณจะตัดสินใจเขียน
    ระวังก่อนใช้คำสั่งเขียน
    
    
    คำสั่ง (m เพื่อขอความช่วยเหลือ): p
    ดิสก์ /dev/nbd0: 50 GiB, 53687091200 ไบต์, 104857600 ภาคส่วน
    หน่วย: ภาค 1 * 512 = 512 ไบต์
    ขนาดเซกเตอร์ (โลจิคัล/กายภาพ): 512 ไบต์ / 512 ไบต์
    ขนาด I/O (ต่ำสุด/เหมาะสม): 512 ไบต์ / 512 ไบต์
    ประเภทป้ายชื่อดิสก์: gpt
    ตัวระบุดิสก์: 564A38FB-02AE-4E84-B080-173963955B2E
    
    ประเภทขนาดเซกเตอร์สิ้นสุดการเริ่มต้นของอุปกรณ์
    /dev/nbd0p1 2048 4095 2048 บูต BIOS 1M
    /dev/nbd0p2 4096 85977087 85972992 ระบบไฟล์ Linux 41G
    
    คำสั่ง (m เพื่อขอความช่วยเหลือ): d
    หมายเลขพาร์ติชัน (1,2, ค่าเริ่มต้น 2): 2
    
    พาร์ทิชัน 2 ถูกลบ
    
    คำสั่ง (ม. เพื่อขอความช่วยเหลือ): น
    หมายเลขพาร์ติชัน (2-128, ค่าเริ่มต้น 2): 2
    ภาคแรก (4096-104857566, ค่าเริ่มต้น 4096): 
    เซกเตอร์สุดท้าย +/- เซกเตอร์หรือ +/- ขนาด{K,M,G,T,P} (4096-104857566, ค่าเริ่มต้น 104857566): 
    
    สร้างพาร์ติชันใหม่ 2 ประเภท 'ระบบไฟล์ Linux' และขนาด 50 GiB
    พาร์ติชัน #2 มีลายเซ็น ext4
    
    คุณต้องการลบลายเซ็นหรือไม่? [Y]es/[N]o: n <<<< หมายเหตุ!
    
    คำสั่ง (m เพื่อขอความช่วยเหลือ): w
    
    ตารางพาร์ติชันมีการเปลี่ยนแปลง
    การเรียก ioctl() เพื่ออ่านตารางพาร์ติชันอีกครั้ง
    กำลังซิงค์ดิสก์
    
  root@virtual3:~# qemu-nbd --disconnect /dev/nbd0 <<< ขั้นตอนนี้ไม่ได้อยู่ในหน้าเว็บ
    /dev/nbd0 ถูกตัดการเชื่อมต่อ
  root@virtual3:~# e2fsck -f /dev/mapper/loop0p2
    e2fsck 1.45.5 (07-ม.ค.-2563)
    Superblock มีสมุดรายวันที่ไม่ถูกต้อง (inode 8)
    เคลียร์<y>? ใช่
    *** วารสารถูกลบ ***
    
    การล้างไอโหนดที่ถูกละเลย 788499 (uid=0, gid=0, mode=0100644, size=113)
    ไอโหนดที่ไม่ถูกต้อง 1642119663 ในรายการไอโหนดที่ถูกละเลย
    ผ่าน 1: ตรวจสอบไอโหนด บล็อก และขนาด
    ไอโหนดที่ถูกลบ 531606 มี dtime เป็นศูนย์ แก้ไข<y>? ใช่
    พบ Inodes ที่เป็นส่วนหนึ่งของรายการลิงก์ orphan ที่เสียหาย แก้ไข<y>? ใช่
    Inode 531609 เป็นส่วนหนึ่งของรายการ inode ที่ถูกละเลย แก้ไขแล้ว.
    Inode 531610 เป็นส่วนหนึ่งของรายการ inode ที่ถูกละเลย แก้ไขแล้ว.
    Inode 531613 เป็นส่วนหนึ่งของรายการ inode ที่ถูกละเลย แก้ไขแล้ว.
    Inode 531614 เป็นส่วนหนึ่งของรายการ inode ที่ถูกละเลย แก้ไขแล้ว.
    ผ่าน 2: การตรวจสอบโครงสร้างไดเร็กทอรี
    ผ่าน 3: ตรวจสอบการเชื่อมต่อไดเร็กทอรี
    ผ่าน 4: ตรวจสอบจำนวนอ้างอิง
    ผ่าน 5: ตรวจสอบข้อมูลสรุปของกลุ่ม
    บล็อกฟรีนับผิดสำหรับกลุ่ม #97 (21582, นับ=21583)
    แก้ไข<y>? ใช่
    บล็อคฟรีนับผิด (6192364, นับ=6252696)
    แก้ไข<y>? ใช่
    ความแตกต่างของบิตแมปไอโหนด: -531606 -(531609--531610) -(531613--531614) -788499
    แก้ไข<y>? ใช่
    inodes ฟรีนับผิดสำหรับกลุ่ม # 64 (869, นับ = 874)
    แก้ไข<y>? ใช่
    inodes ฟรีนับผิดสำหรับกลุ่ม # 96 (2772, นับ = 2773)
    แก้ไข<y>? ใช่
    ไอโหนดฟรีนับผิด (2511328, นับ=2511295)
    แก้ไข<y>? ใช่
    ความแตกต่างของบิตแมปบล็อก: บิตแมปบล็อกกลุ่ม 97 ไม่ตรงกับผลรวมการตรวจสอบ
    แก้ไขแล้ว.
    สร้างบันทึกใหม่ ('a' เปิดใช้งาน 'ใช่' กับทุกคน) <y>? ใช่ทั้งหมด
    การสร้างสมุดรายวัน (65536 บล็อก): เสร็จสิ้น
    
    *** วารสารถูกสร้างขึ้นใหม่ ***
    
    /dev/mapper/loop0p2: ***** ระบบไฟล์ถูกแก้ไข *****
    /dev/mapper/loop0p2: 175681/2686976 ไฟล์ (0.6% ไม่ติดกัน), 4559464/10746624 บล็อก
  root@virtual3:~# resize2fs /dev/mapper/loop0p2 <<<< เว็บเพจ NB อ้างอิง /dev/nbd0
    resize2fs 1.45.5 (07-ม.ค.-2563)
    การปรับขนาดระบบไฟล์บนบล็อก /dev/mapper/loop0p2 เป็น 13106683 (4k)
    ระบบไฟล์บน /dev/mapper/loop0p2 ตอนนี้มีความยาวบล็อก 13106683 (4k)
    
  root@virtual3:~# tune2fs -j /dev/mapper/loop0p2
    tune2fs 1.45.5 (07-ม.ค.-2563)
    ระบบไฟล์มีเจอร์นัลอยู่แล้ว
  root@virtual3:~# kpartx -dv /dev/loop0
    เดล devmap : loop0p2
    เดล devmap : loop0p1
  root@virtual3:~# สูญเสีย -d /dev/loop0
  root@virtual3:~# virsh เริ่มต้น nstest

 แขกไม่สามารถบูตได้อย่างถูกต้อง !!! 

แขกตกลงไปที่เปลือกหอยกู้ภัย ซึ่งฉันได้:

fsck /dev/vda2 

(เข้าสู่ระบบผ่านโปรแกรมดูเดสก์ท็อประยะไกล) ความไม่สอดคล้องกันหลายอย่างได้รับการแก้ไขแล้ว นี่อาจเป็นปัญหาของฉันเอง หวังว่าคงไม่ใช่ของคุณ! Guest ตอนนี้จะบูทแต่ยังเหลือแค่ 41G ........ ตอนนี้ลองอีกครั้ง!

root@virtual3:~# virsh เริ่มต้น nstest

จากนั้นลงชื่อเข้าใช้แขกผ่าน ssh:

  root@ns:~# resize2fs /dev/vda2
    resize2fs 1.45.5 (07-ม.ค.-2563)
    ระบบไฟล์ที่ /dev/vda2 ติดตั้งบน /; จำเป็นต้องปรับขนาดออนไลน์
    old_desc_blocks = 6, new_desc_blocks = 7
    ระบบไฟล์บน /dev/vda2 ตอนนี้มีความยาว 13106683 (4k) บล็อก
    
  รูท@ns:~# df -h
    ขนาดระบบไฟล์ที่ใช้ Avail Use% Mounted on
     ......สนิป.......
    /dev/vda2 49G 17G 31G 36% /

ความสำเร็จ!

โพสต์คำตอบ

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