ค้นหาเว็บไซต์

วิธีใช้ 'Snapshot ของ Logical Volume และ Restore' ใน LVM - ตอนที่ III


สแนปชอต LVM เป็นสำเนาปริมาณ lvm ณ เวลาหนึ่งๆ ที่ประหยัดพื้นที่ โดยใช้งานได้กับ lvm เท่านั้น และใช้พื้นที่เฉพาะเมื่อมีการเปลี่ยนแปลงกับโลจิคัลวอลุ่มต้นทางเป็นวอลุ่มสแน็ปช็อตเท่านั้น หากวอลลุมต้นทางมีการเปลี่ยนแปลงครั้งใหญ่กับผลรวม 1GB การเปลี่ยนแปลงเดียวกันนี้จะเกิดขึ้นในวอลลุมสแน็ปช็อต เป็นการดีที่สุดที่จะมีการเปลี่ยนแปลงเล็กน้อยเพื่อประสิทธิภาพของพื้นที่ ในกรณีที่สแน็ปช็อตมีพื้นที่เก็บข้อมูลไม่เพียงพอ เราสามารถใช้ lvextend เพื่อขยายได้ และถ้าเราจำเป็นต้องย่อขนาดสแน็ปช็อตเราสามารถใช้ lvreduce ได้

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

สแนปชอตไม่สามารถใช้เป็นตัวเลือกสำรองได้ การสำรองข้อมูลเป็นสำเนาหลักของข้อมูลบางส่วน ดังนั้นเราจึงไม่สามารถใช้สแน็ปช็อตเป็นตัวเลือกการสำรองข้อมูลได้

ความต้องการ

  1. สร้างที่เก็บข้อมูลดิสก์ด้วย LVM ใน Linux – ส่วนที่ 1
  2. วิธีขยาย/ลด LVM ใน Linux - ตอนที่ II
การตั้งค่าเซิร์ฟเวอร์ของฉัน
  1. ระบบปฏิบัติการ – CentOS 6.5 พร้อมการติดตั้ง LVM
  2. IP เซิร์ฟเวอร์ – 192.168.0.200

ขั้นตอนที่ 1: การสร้าง LVM Snapshot

ขั้นแรก ตรวจสอบพื้นที่ว่างในกลุ่มวอลุ่มเพื่อสร้างสแน็ปช็อตใหม่โดยใช้คำสั่ง 'vgs' ต่อไปนี้

vgs
lvs

คุณจะเห็นว่ามีพื้นที่ว่างเหลือ 8GB ในเอาต์พุต vgs ด้านบน ดังนั้น เรามาสร้างสแน็ปช็อตสำหรับโวลุ่มของฉันชื่อ tecmint_datas กันดีกว่า เพื่อวัตถุประสงค์ในการสาธิต ฉันจะสร้างโวลุ่มสแน็ปช็อตขนาด 1GB โดยใช้คำสั่งต่อไปนี้

lvcreate -L 1GB -s -n tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas        

OR

lvcreate --size 1G --snapshot --name tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas

คำสั่งทั้งสองข้างต้นทำสิ่งเดียวกัน:

  1. -s – สร้างสแนปชอต
  2. -n – ชื่อสำหรับสแนปชอต

นี่คือคำอธิบายของแต่ละประเด็นที่เน้นไว้ข้างต้น

  1. ขนาดของสแน็ปช็อตที่ฉันกำลังสร้างที่นี่
  2. สร้างภาพรวม
  3. สร้างชื่อสำหรับสแน็ปช็อต
  4. ชื่อสแนปชอตใหม่
  5. ปริมาณที่เราจะสร้างสแน็ปช็อต

หากคุณต้องการลบสแนปช็อต คุณสามารถใช้คำสั่ง 'lvremove'

# lvremove /dev/vg_tecmint_extra/tecmint_datas_snap

ตอนนี้แสดงรายการสแน็ปช็อตที่สร้างขึ้นใหม่โดยใช้คำสั่งต่อไปนี้

lvs

คุณเห็นด้านบนว่าสร้างสแนปชอตสำเร็จแล้ว ฉันได้ทำเครื่องหมายด้วยลูกศรที่ซึ่งสแนปชอตมาจากที่ที่สร้างขึ้น ซึ่งก็คือ tecmint_datas ใช่ เนื่องจากเราได้สร้างสแน็ปช็อตสำหรับ tecmint_datas l-volume

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

lvs

คุณจะเห็นว่าตอนนี้มีการใช้งานปริมาณสแน็ปช็อต 51% แล้ว ไม่มีปัญหาในการแก้ไขไฟล์ของคุณเพิ่มเติม หากต้องการรายละเอียดเพิ่มเติมให้ใช้คำสั่ง

lvdisplay vg_tecmint_extra/tecmint_data_snap

นี่เป็นคำอธิบายที่ชัดเจนของแต่ละประเด็นที่เน้นไว้ในภาพด้านบน

  1. ชื่อของสแน็ปช็อตโลจิคัลวอลุ่ม
  2. ชื่อกลุ่มวอลุ่มที่กำลังใช้งานอยู่
  3. โวลุ่มสแนปชอตในโหมดอ่านและเขียน เรายังสามารถติดตั้งโวลุ่มและใช้งานได้อีกด้วย
  4. เวลาที่สแนปชอตถูกสร้างขึ้น สิ่งนี้สำคัญมากเนื่องจากสแน็ปช็อตจะค้นหาการเปลี่ยนแปลงทุกครั้งหลังจากเวลานี้
  5. สแน็ปช็อตนี้เป็นของโลจิคัลวอลุ่ม tecmint_datas
  6. โลจิคัลวอลุ่มออนไลน์อยู่และพร้อมใช้งาน
  7. ขนาดของปริมาณแหล่งที่มาซึ่งเราถ่ายภาพไว้
  8. ขนาด Cow-table=คัดลอกเมื่อเขียน ซึ่งหมายความว่าการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับวอลุ่ม tecmint_data จะถูกเขียนลงในสแน็ปช็อตนี้
  9. ในปัจจุบัน ขนาดสแนปช็อตที่ใช้ tecmint_datas ของเราคือ 10G แต่ขนาดสแน็ปช็อตของเราคือ 1GB ซึ่งหมายความว่าไฟล์ของเรามีขนาดประมาณ 650 MB ดังนั้นตอนนี้จะอยู่ที่ 51% หากไฟล์ขยายเป็นขนาด 2GB ในขนาด tecmint_datas จะเพิ่มขึ้นมากกว่าขนาดที่จัดสรรสแนปชอต แน่นอนว่าเราจะประสบปัญหากับสแน็ปช็อต นั่นหมายความว่าเราจำเป็นต้องขยายขนาดของโลจิคัลวอลุ่ม (วอลลุมสแนปชอต)
  10. ให้ขนาดของชิ้นภาพสำหรับการถ่ายภาพ

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

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

ขั้นตอนที่ 2: ขยาย Snapshot ใน LVM

หากเราต้องการขยายขนาดสแน็ปช็อตก่อนที่จะโอเวอร์โฟลว์ เราก็สามารถทำได้โดยใช้

lvextend -L +1G /dev/vg_tecmint_extra/tecmint_data_snap

ขณะนี้มีขนาดรวม 2GB สำหรับสแน็ปช็อต

จากนั้น ตรวจสอบขนาดใหม่และตาราง COW โดยใช้คำสั่งต่อไปนี้

lvdisplay /dev/vg_tecmint_extra/tecmint_data_snap

หากต้องการทราบขนาดของปริมาณสแน็ปและการใช้งาน %

lvs

แต่หากคุณมีวอลลุมสแน็ปช็อตที่มีขนาดเท่ากันกับวอลลุมต้นทาง เราก็ไม่จำเป็นต้องกังวลเกี่ยวกับปัญหาเหล่านี้

ขั้นตอนที่ 3: การกู้คืนสแนปชอตหรือการผสาน

หากต้องการคืนค่าสแน็ปช็อต เราต้องยกเลิกการเชื่อมต่อระบบไฟล์ก่อน

unmount /mnt/tecmint_datas/

เพียงตรวจสอบจุดเมานท์ว่าไม่ได้ต่อเชื่อมหรือไม่

df -h

นี่คือการเมานต์ได้ถูกถอนเมานท์แล้ว ดังนั้นเราจึงสามารถกู้คืนสแน็ปช็อตต่อไปได้ หากต้องการคืนค่าสแนปโดยใช้คำสั่ง lvconvert

lvconvert --merge /dev/vg_tecmint_extra/tecmint_data_snap

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

df -Th

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

lvs

ข้อสำคัญ: หากต้องการขยายสแนปชอตโดยอัตโนมัติ เราสามารถทำได้โดยใช้การแก้ไขบางอย่างในไฟล์ conf สำหรับแบบแมนนวล เราสามารถขยายได้โดยใช้ lvextend

เปิดไฟล์คอนฟิกูเรชัน lvm โดยใช้เอดิเตอร์ที่คุณเลือก

vim /etc/lvm/lvm.conf

ค้นหาคำว่าขยายอัตโนมัติ โดยค่าเริ่มต้น ค่าจะคล้ายกับด้านล่าง

เปลี่ยน 100 เป็น 75 ที่นี่ หากเป็นเช่นนั้น เกณฑ์การขยายอัตโนมัติคือ 75 และเปอร์เซ็นต์การขยายอัตโนมัติคือ 20 จะขยายขนาดขึ้น 20 เปอร์เซ็นต์

หากปริมาณสแน็ปช็อตถึง 75% มันจะขยายขนาดของปริมาณสแน็ปช็อตอีก 20% โดยอัตโนมัติ ดังนั้นเราจึงสามารถขยายได้โดยอัตโนมัติ บันทึกและออกจากไฟล์โดยใช้ wq!

การดำเนินการนี้จะบันทึกสแนปชอตจากดรอปโฟลว์ นอกจากนี้ยังจะช่วยให้คุณประหยัดเวลามากขึ้น LVM เป็นวิธีการแบ่งพาร์ติชันเพียงวิธีเดียวที่เราสามารถขยายได้มากขึ้นและมีคุณสมบัติมากมาย เช่น Thin Provisioning, Striping, Virtual Volume และอื่นๆ อีกมากมาย เราจะดูในหัวข้อถัดไปโดยใช้ Thin-Pool