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