Score:2

ฉันจะกู้คืนสแน็ปช็อต LVM ของไดรฟ์ข้อมูลขนาดใหญ่บนดิสก์ขนาดเล็กได้อย่างไร

ธง in

ฉันกำลังพยายามสำรอง/กู้คืนโวลุ่ม LVM บนเซิร์ฟเวอร์ Ubuntu 20.04 (Focal Fossa) ในเครื่อง เซิร์ฟเวอร์ที่ใช้งานจริงมี LV อยู่ที่ 500 กิกะไบต์ แต่จนถึงตอนนี้ใช้ไปเพียง 19 กิกะไบต์เท่านั้น

เซิร์ฟเวอร์การพัฒนาในเครื่องมีพื้นที่ว่าง 24 กิกะไบต์ ซึ่งฉันตั้งใจที่จะคืนค่า 19 กิกะไบต์จากการใช้งานจริง ฉันใช้ -L 24G เป็นพารามิเตอร์ขณะทำสแน็ปช็อต LVMกระบวนการกู้คืนล้มเหลวโดยมีข้อความ: "ไม่มีพื้นที่เหลือบนอุปกรณ์":

เซิร์ฟเวอร์การผลิต:

sudo lvcreate -s /dev/vg0/test -n backup_test -L 24G
sudo dd if=/dev/vg0/backup_test | lz4 > test_lvm.ddimg.lz4

1048576000+0 บันทึกใน
1048576000+0 บันทึกออก
คัดลอก 536870912000 ไบต์ (537 GB, 500 GiB), 967.79 วินาที, 555 MB/วินาที

sudo lvdisplay /dev/vg0/backup_test.dll
  --- โลจิคัลวอลุ่ม ---
  เส้นทาง LV /dev/vg0/backup_test
  ชื่อ LV backup_test
  ชื่อวีจี vg0
  LV UUID IsGBmM-VM7C-2sO4-VrC1-kHKg-EzcR-4Hej44
  LV Write Access อ่าน/เขียน
  พิธีกร LV Creation เวลา ลีโอ 2021-07-04 12:45:45 +0200
  ปลายทางที่ใช้งานสถานะสแน็ปช็อต LV สำหรับ m360
  มีสถานะ LV
  #เปิด0
  LV ขนาด 500.00 GiB
  ปัจจุบัน LE 128000
  โต๊ะ COW ขนาด 24.00 GiB
  โต๊ะ COW LE 6144
  จัดสรรให้กับภาพรวม 0.01%
  Snapshot ขนาดก้อน 4.00 KiB
  ส่วนที่ 1
  การจัดสรรสืบทอด
  อ่านล่วงหน้าภาคอัตโนมัติ
  - ปัจจุบันตั้งค่าเป็น 256
  อุปกรณ์บล็อก 253:10

เซิร์ฟเวอร์ทดสอบภายในเครื่อง:

sudo lvcreate -n กู้คืนข้อมูล -L 24.5G
sudo mkfs.ext4 /dev/data/restore
sudo lz4 -d test_lvm.ddimg.lz4 | sudo dd of=/dev/data/restore

คำเตือน: ใช้ stdout เป็นเอาต์พุตเริ่มต้น อย่าพึ่งพาพฤติกรรมนี้: ใช้ `-c` ที่ชัดเจนแทน !
dd: กำลังเขียนถึง '/dev/data/restore': ไม่มีพื้นที่เหลือบนอุปกรณ์
51380225+0 บันทึกใน
51380224+0 บันทึกออก
คัดลอก 26306674688 ไบต์ (26 GB, 24 GiB), 1181.48 วินาที, 22.3 MB/วินาที

มีวิธีการคืนค่าโวลุ่ม 500 กิกะไบต์ที่มีเพียง 19 กิกะไบต์บนดิสก์ที่เล็กกว่า 500 กิกะไบต์หรือไม่

Michael Hampton avatar
cz flag
คุณไม่ได้กู้คืน 19 GB คุณกำลังกู้คืน 500 GB!
merlin avatar
in flag
แต่พารามิเตอร์ระหว่าง lvcreate มีความหมายอย่างไร: -L 24G ?
Michael Hampton avatar
cz flag
คุณสร้างวอลุ่มขนาด 24.5 GB
merlin avatar
in flag
ใช่ ฉันทำเพื่อให้แน่ใจว่าเพียงพอสำหรับ 24G ฉันสร้าง 24G ขึ้นเป็นครั้งแรก จากนั้นมันก็ล้มเหลว และฉันได้ลองใช้อีกเล็กน้อยเพื่อรองรับความแตกต่างเล็กๆ น้อยๆ
Michael Hampton avatar
cz flag
แต่นั่นก็ยังน้อยกว่า 500 GB ที่คุณกำลังพยายามกู้คืนอยู่มาก!
A.B avatar
cl flag
A.B
ระบบไฟล์พื้นฐานคืออะไร? ต่อ4? xfs? btrfs? อื่น ๆ อีก?
merlin avatar
in flag
Ext4 คือระบบไฟล์
Score:5
ธง us

ข้อมูลที่คุณกำลังพยายามกู้คืนมีขนาด 500 GB ซึ่งจะไม่พอดีกับโลจิคัลวอลุ่มขนาด 24 GB คุณสามารถเลือกได้มากขึ้นเกี่ยวกับสิ่งที่คุณกำลังถ่ายโอน หรือคุณสามารถจัดสรรพื้นที่เพิ่มเติมให้กับกลุ่มวอลุ่มเป้าหมาย

ดูเหมือนว่าข้อมูลในโลจิคัลวอลุ่มที่คุณกำลังสำรองจะมีขนาดเพียง 19 GB มีสองสามวิธีที่คุณสามารถถ่ายโอนข้อมูลนั้นได้

หากคุณสนใจเฉพาะข้อมูล ไม่ใช่ระบบไฟล์ คุณสามารถสร้างระบบไฟล์ใหม่ได้ (ผ่าน mkfs.ext4 หรือมากกว่านั้น) บนเป้าหมาย และใช้เครื่องมือที่ทำงานบนไฟล์แทนการบล็อกอุปกรณ์ เช่น rsync(1) หรือ tar(1)

หรือคุณสามารถใช้ fsarchiver(8)ซึ่งสามารถสำรองข้อมูลระบบไฟล์ แล้วกู้คืนไปยังอุปกรณ์ขนาดเล็ก

สุดท้าย คุณสามารถย่อขนาดอุปกรณ์บล็อกที่คุณกำลังสำรองข้อมูลด้วย resize2fs(8) และ lvreduce(8) จากนั้น คุณสามารถสำรองข้อมูลโวลุ่มที่เล็กกว่านั้น และกู้คืนเป็นโวลุ่มที่มีขนาดใกล้เคียงกันบนเซิร์ฟเวอร์ใหม่

Score:2
ธง cn

วิธีเดียวที่คุณจะกู้คืนข้อมูลได้คือใช้อุปกรณ์บล็อกที่ถูกบีบอัด (เช่น VDO, อุปกรณ์วนซ้ำผ่านระบบไฟล์บีบอัด เช่น btrfs และ ZFS)

อย่างไรก็ตาม แม้ว่าข้อมูลของคุณจะมีเพียง 17GB พื้นที่ว่างอาจมีข้อมูลจากการเขียนครั้งก่อน และ LV ทั้งหมดอาจไม่สามารถบีบอัดได้

ในฐานะที่เป็นระบบไฟล์บีบอัด คุณสามารถใช้ btrfs หรือ ZFS และสร้างไฟล์ 500G zeroed ที่คุณแมปกับอุปกรณ์ลูป (ด้วย การสูญเสีย) หรือบน ZFS คุณสามารถสร้างอุปกรณ์บล็อกที่ถูกบีบอัดได้โดยตรง จากนั้นกู้คืน LV ของคุณไปยังอุปกรณ์บล็อกที่คุณสร้างในขั้นตอนก่อนหน้า การบีบอัดควรให้โอกาสคุณในการกู้คืนข้อมูลทั้งหมด

merlin avatar
in flag
ขนาดของสแน็ปช็อตโลจิคัลวอลุ่มมีเหตุผลอย่างไร ขนาดวัว?
Score:1
ธง ru

ไม่มีแนวคิดของ (un) ไบต์ที่ใช้ในระดับของ LVM ไบต์ (หรือจริง ๆ แล้วเป็นเซกเตอร์) มีข้อมูลที่มีความหมายหรือขยะที่ไม่ได้ใช้หรือไม่ จะถูกกำหนดโดยระบบไฟล์ที่อยู่ภายใน LV LVM ไม่รู้ว่าระบบไฟล์คืออะไร สิ่งที่ต้องทำคือใช้ดิสก์จำนวนมากและรวมเข้าด้วยกันอย่างมีเหตุผลตามคำแนะนำของคุณ ไม่สนใจว่าคุณจะทำอะไรกับปริมาณที่รวมกันนั้น

ซึ่งหมายความว่าคุณกำลังถ่ายภาพข้อมูลขนาด 500 GB LVM ไม่เข้าใจว่าส่วนใดของสแนปชอตนี้มีความหมายและควรค่าแก่การอนุรักษ์ และส่วนใดไม่เป็นเช่นนั้น

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

ดังนั้นแผนจะเป็นดังนี้:

  • ปรับขนาดระบบไฟล์ต้นฉบับเป็น 25 GB (ไม่จำเป็นต้องปรับขนาด LV!)
  • สร้างภาพด้วย partclone หรือสิ่งที่คล้ายกัน
  • สร้าง LV ใหม่ตามเป้าหมายด้วยตนเอง
  • กู้คืนระบบไฟล์จากอิมเมจ

ความแตกต่างของสิ่งนี้คือการปรับขนาดระบบไฟล์เป็น 25 GB แล้วส่งผ่านสแน็ปช็อต LVM จะเกิดข้อผิดพลาดเป็น "ไม่มีพื้นที่เหลือในอุปกรณ์" เนื่องจากคุณยังคงส่งทั้ง 500 GB แต่ไม่เป็นไร เพราะไดรฟ์ข้อมูล 25 GB แรกเท่านั้นที่จะมีระบบไฟล์

อย่างไรก็ตาม คุณอาจต้องปรับ fstab หากเป็นโวลุ่มที่สามารถบู๊ตได้ ดังนั้น เตรียมตัวให้พร้อม

Score:1
ธง cn

จุดสองจุดที่อยู่

การสร้างสแน็ปช็อต 24G LVM หมายความว่าสแน็ปช็อตจะคงอยู่ได้ 24G จาก การเปลี่ยนแปลง ระหว่างวอลุ่มต้นฉบับกับวอลุ่มสแนปช็อต อุปกรณ์สแน็ปช็อตนั้นจะปรากฏราวกับว่ามันมีขนาดเท่ากับโวลุ่มดั้งเดิม แม้ว่าคุณจะไม่ได้ทำการเปลี่ยนแปลงปริมาณสแนปชอต การเปลี่ยนแปลงใด ๆ ในโวลุ่มดั้งเดิมจะต้องบันทึกเป็นการเปลี่ยนแปลงระหว่างโวลุ่มดั้งเดิมและสแนปช็อต ซึ่งจะกินพื้นที่จากขนาด 24G ของสแนปชอต

ในการทำในสิ่งที่คุณกำลังพยายามทำ ต่อไปนี้เป็นแนวคิดบางประการ:

  1. สำหรับสำเนาที่ไม่สมบูรณ์แบบ เพียงใช้สำเนาระดับระบบไฟล์ของไฟล์:

บนเซิร์ฟเวอร์ทดสอบ:

sudo เมานต์ /dev/data/restore /mnt/restore

บนเซิร์ฟเวอร์ต้นทาง:

sudo rsync -avPAHX /source/dir/ root@testserver:/mnt/restore/
  1. สำหรับการคัดลอก ณ เวลาที่แม่นยำ ให้เมานต์สแน็ปช็อตของคุณและ รีซิงค์ นั่น:
sudo mount -r /dev/vg0/backup_test /mnt/backup_test
sudo rsync -avPAHX /dev/vg0/backup_test/ root@testserver:/mnt/restore/
  1. หากคุณต้องการถ่ายโอนดิสก์อิมเมจจริงๆ คุณจะต้องลดขนาดระบบไฟล์และโลจิคัลวอลุ่มก่อน โปรดทราบว่าคุณจะต้องยกเลิกการต่อเชื่อมระบบไฟล์ก่อน
sudo lvresize -L24G -r vg0/ทดสอบ

แล้วทำในสิ่งที่คุณทำ

Score:0
ธง dk

คุณต้องใช้ แปลงเลเวล สั่งกับ --รวมภาพรวม อ็อพชันและชื่อของโลจิคัลวอลุ่มสแน็ปช็อตเพื่อกู้คืนโลจิคัลวอลุ่ม LVM เมื่อ --รวมภาพรวม มีการใช้อ็อพชัน สแน็ปช็อตจะถูกรวมเข้ากับโลจิคัลวอลุ่มดั้งเดิม จากนั้นจึงลบออก

โพสต์คำตอบ

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