นี่เป็นภาพรวมของ LVM หรือไม่


19

ฉันพยายามที่จะหาว่าสแนปชอตของ LVM ทำงานอย่างไรเพื่อที่ฉันจะสามารถนำไปใช้กับไฟล์เซิร์ฟเวอร์ของฉันได้ แต่ฉันมีปัญหาในการค้นหาสิ่งใดบน google ที่อธิบายถึงวิธีการทำงานแทนการใช้มันสำหรับระบบสำรองพื้นฐาน

จากสิ่งที่ฉันอ่านฉันคิดว่ามันใช้งานได้เช่นนี้:

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

ใครสามารถแก้ไขฉันในที่ที่ฉันผิด อย่างดีที่สุดฉันเดาฉันไม่พบอะไรเลยใน google


vgdiplay

obu1: / home / คุก / home / qps / backup / D # vgdisplay
  --- กลุ่มปริมาณ ---
  ไฟล์เซิร์ฟเวอร์ชื่อ VG
  ID ระบบ
  รูปแบบ lvm2
  พื้นที่เมทาดาทา 1
  ลำดับเมทาดาทาที่ 3
  การอ่าน / เขียน VG Access
  สถานะ VG ปรับขนาดได้
  สูงสุด LV 0
  Cur LV 2
  เปิด LV 2
  Max PV 0
  Cur PV 1
  พระราชบัญญัติ PV 1
  ขนาด VG 931.51 GB
  ขนาด PE 4.00 MB
  รวม PE 238467
  Alloc PE / ขนาด 238336 / 931.00 GB
  ฟรี PE / ขนาด 131 / 524.00 MB
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU

คำตอบ:


30

ไม่ได้ดูที่ส่วนภาพรวมของ LVM-HOWTO ?

LVM snapshots เป็นวิธีแก้ปัญหาสแน็ปช็อต "copy on write" ขั้นพื้นฐานของคุณ สแนปชอตไม่มีอะไรมากไปกว่าการขอ LVM เพื่อให้ "ตัวชี้" แก่คุณในสถานะปัจจุบันของระบบไฟล์และเพื่อเขียนการเปลี่ยนแปลงที่เกิดขึ้นหลังจากสแน็ปช็อตไปยังพื้นที่ที่กำหนด

LVM snapshots "live" ภายในกลุ่มวอลุ่มที่โฮสต์วอลุ่มไว้กับ snapshot - ไม่ใช่วอลุ่มอื่น คำสั่งของคุณ "... จำนวนมากของพื้นที่ว่างที่ไม่ได้ปันส่วนไม่ใช่พาร์ติชั่น" ทำให้ฟังดูเหมือนว่าคุณคิดว่าสแน็ปช็อต "สด" นอกกลุ่มวอลุ่มอาจมีสแนปชอตและไม่ถูกต้อง กลุ่มวอลุ่มของคุณอาศัยอยู่ในพาร์ติชั่นฮาร์ดดิสก์และโวลุ่มที่อยู่ภายใต้สแน็ปช็อตและช็อตใด ๆ ที่คุณถ่ายในกลุ่มวอลุ่มนั้น

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

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

แก้ไข:

บริการ Volume Shadow Copy ของ Microsoft และสแนปชอตของ LVM มีความแตกต่างกันอย่างมาก โซลูชันของ Microsoft นั้นมีความครอบคลุมมากขึ้นเล็กน้อย (ตามปกติคือกรณีของ Microsoft-- สำหรับเครื่องมือและผลิตภัณฑ์ของพวกเขาที่ดีขึ้นหรือแย่ลงมักจะหาทางแก้ไขปัญหาที่มีขนาดใหญ่

VSS เป็นโซลูชันที่ครอบคลุมมากขึ้นที่รวมการสนับสนุนสำหรับอุปกรณ์ฮาร์ดแวร์ที่สนับสนุนสแนปชอตและสแน็ปช็อตที่ใช้ซอฟต์แวร์เป็น API เดียว นอกจากนี้ VSS ยังมี API เพื่อให้แอปพลิเคชันสามารถทำ Quiescent ผ่านสแนปชอต API ในขณะที่สแน็ปช็อต LVM นั้นเกี่ยวข้องกับสแน็ปช็อต


1
ดังนั้นจึงไม่มีการจำลองตามหลัง Volume Shadow Copy (VSS) เพราะนั่นไม่ใช่วิธีการทำงานของ VSS
Malfist

ทำให้รู้สึกมากขึ้น
Malfist

1
ฉันคิดว่าคุณเข้าใจผิดเกี่ยวกับภาพรวมของ LVM LVM snapshots สร้างอุปกรณ์ "เสมือน" ที่ประกอบเข้าด้วยกันเช่นโวลุ่มแบบสแตนด์อโลน LVM snapshots "live in" วอลุ่มที่ถูกสแน็ปช็อตเหมือนกับ VSS snapshot
Evan Anderson

1
คุณช่วยอธิบายได้อย่างชัดเจนว่าข้อมูลที่อัพเดตไปที่ใดในขณะที่สแนปชอตทำงาน ไปที่เลเวลหลักและสแน็ปช็อตจัดเก็บสำเนาบล็อกเก่าหรือไม่ หรือไปยัง snapshot LV ขณะที่ LV หลักยังคงไม่ถูกแตะต้อง?
Benoît

1
@benoit ลิงก์ในบรรทัดแรกของคำตอบครอบคลุมเนื้อหานี้ อ่านหมายเหตุเกี่ยวกับพฤติกรรมสแน็ปช็อตแบบอ่านอย่างเดียว LVM1 และฉันคิดว่าคุณจะได้คำตอบของคุณ (เป็นวิธีแรกที่คุณอธิบายไม่ใช่ครั้งที่สอง)
Peter Hansen

28

LVM snapshots เป็นตัวอย่างของโซลูชันสแน็ปช็อต copy-on-write ดังที่ Evan กล่าว มันทำงานอย่างไรแตกต่างจาก Evan โดยนัย แต่ไม่มากเลย

เมื่อคุณมีวอลุ่ม LVM ที่ไม่มีสแน็ปช็อตเขียนไปยังโวลุ่มที่เกิดขึ้นตามที่คุณคาดหวัง บล็อกมีการเปลี่ยนแปลงและนั่นคือมัน

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

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

เจมส์ชี้ให้เห็นข้อบกพร่องอย่างหนึ่งของระบบนี้ เมื่อคุณมีหลายสแน็ปช็อตของวอลุ่มเดียวกันทุกครั้งที่คุณเขียนบล็อกในวอลุ่มหลักคุณอาจทริกเกอร์การเขียนในทุกสแน็ปช็อตเดียว นี่เป็นเพราะแต่ละสแนปชอตรักษากลุ่มของบล็อกที่มีการเปลี่ยนแปลง สำหรับสแน็ปช็อตแบบยาวการเข้าถึงสแน็ปช็อตอาจทำให้การคำนวณบนเซิร์ฟเวอร์ค่อนข้างจะเข้าใจว่าต้องใช้บล็อกใดเพื่อการเข้าถึง

เมื่อคุณกำจัดสแน็ปช็อต LVM เพียงแค่วางสแน็ปช็อตพูลและอัพเดตสแน็ปช็อตทรีตามต้องการ หากสแนปชอตที่ถูกดร็อปเป็นส่วนหนึ่งของแผนผังสแน็ปช็อตบล็อกบางส่วนจะถูกคัดลอกไปยังสแน็ปช็อตระดับล่าง ถ้ามันเป็นสแน๊ปช็อตที่ต่ำที่สุด (หรืออันเดียว), พูลเพิ่งจะถูกดร็อปและการดำเนินการนั้นรวดเร็วมาก


ระบบไฟล์บางระบบมีสแน็ปช็อตในระบบไฟล์ ZFS และ BTRFS เป็นหนึ่งในสองระบบที่รู้จักกันดีกว่า มันทำงานคล้ายกันแม้ว่าระบบไฟล์จะจัดการการแมปที่เปลี่ยนแปลง / ไม่เปลี่ยนแปลง นี่เป็นวิธีที่ดีกว่าในการทำเช่นนี้เนื่องจากคุณสามารถ fsck ตระกูล snapshot ทั้งหมดเพื่อความมั่นคงซึ่งเป็นสิ่งที่คุณไม่สามารถทำได้เมื่อทำ LVM ให้ตรง


ขอบคุณสำหรับคำอธิบายโดยละเอียด ขออภัยที่ฉันสับสนเกี่ยวกับ"ตราบใดที่ระบบไฟล์ในไดรฟ์ข้อมูลดังกล่าวไม่มีสแนปชอต" คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับความหมายได้อย่างไร ขอบคุณมากสำหรับคำตอบใด ๆ ~
Carr

2
@Carr หมายความว่าสแน็ปช็อตได้รับการจัดการนอกระบบไฟล์ทั้งหมด ระบบไฟล์อื่นที่มีความสามารถสแนปชอตในตัวเช่น BTRFS และ XFS มีแนวคิดของสแน็ปช็อตและคุณไม่ควรใช้สแน็ปช็อต LVM กับระบบเหล่านั้น
sysadmin1138

@ sysadmin1138 ฉันอยากรู้เกี่ยวกับภาพรวมในตัวด้วย XFS ที่คุณพูดถึงเพื่อจุดประสงค์ในการตรวจสอบ / ซ่อมแซม FS อย่างสม่ำเสมอ ฉันมี XFS FS หลาย TB ที่ลงไปในทางที่สกปรกและฉันต้องการตรวจสอบ / แก้ไขโดยไม่ทำให้ออฟไลน์ (ผู้ใช้หลายร้อยคนไม่สามารถออฟไลน์เป็นเวลาหลายชั่วโมง) ฉันกำลังคิดที่จะสร้าง XFS snapshot จากนั้นเรียกใช้ fsck เพื่อค้นหา / แก้ไขข้อผิดพลาดในขณะที่ระบบไฟล์แบบออนไลน์ยังคงออนไลน์อยู่จากนั้นหากมีการแก้ไขให้สลับกับระบบไฟล์แบบสด XFS snapshot จะดีกว่าสำหรับวัตถุประสงค์นี้กว่า LVM snapshot หรือไม่?
ม.ค. Lalinský

2

คุณไม่ได้ระบุว่าคุณใช้ Linux หรือ HP-UX ใน HP-UX คุณสร้างโลจิคัลวอลุ่มและเมานต์เป็นสแน็ปช็อตของโลจิคัลวอลุ่มอื่น ใน Linux คุณสร้างโลจิคัลวอลุ่มเป็นสแน็ปช็อตวอลุ่ม

การลบสแน็ปช็อตใน HP-UX ทำได้โดยการเพิ่มระดับเสียง ใน Linux ทำได้โดยใช้ lvremove เพื่อลบโลจิคัลวอลุ่ม

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

ความเร็วในการเข้าถึงดิสก์บนสแน็ปช็อตโวลุ่มนั้นช้ากว่าความเร็วปกติ คุณต้องคำนึงถึงสิ่งนั้นด้วย


1

LVM snapshots ไม่มีประสิทธิภาพยิ่ง snapshots ยิ่งช้าลงระบบก็จะทำงาน

ฉันสนับสนุน xfs เป็นเพียงสิ่งที่เราใช้และ xfs_freeze สามารถใช้เพื่อหยุดการเข้าถึงระบบไฟล์ใหม่และสร้างภาพที่มั่นคงบนดิสก์

ใช้การทำสำเนาการเขียนเพื่อใช้พื้นที่ดิสก์อย่างมีประสิทธิภาพ

คุณสร้างระบบไฟล์ในโลจิคัลวอลุ่มที่มีพื้นที่ว่างสำหรับสแน็ปช็อต

นี่คือตัวอย่างจากคำถามที่พบบ่อย

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