การตั้งค่า LVM Snapshot เป็นจุดสำรอง / คืนค่าใน ubuntu


29

การตั้งค่า LVM Snapshot เป็นจุดสำรอง / คืนค่าใน ubuntu

ทำไม?

อย่างที่ฉันเห็นมันมีประโยชน์มากมายของ Linux ข้อเสียที่ใหญ่ที่สุดของมันคือการผสมผสานวิธีการติดตั้งแอพต่างๆ Dll ทั้งหมดไปที่หนึ่งไดเรกทอรี ไฟล์การกำหนดค่าทั้งหมดไปยังอีก และไบนารีก็ใส่เข้าไปในพวง ใช่ Windows ทำงานในลักษณะเดียวกันมากกว่าหรือน้อยกว่า แต่ด้วยลักษณะของซอฟต์แวร์ระบบ / เซิร์ฟเวอร์ที่ติดตั้งบน Linux เนื่องจากซอฟต์แวร์ส่วนใหญ่ที่ติดตั้งนั้นมีอายุการใช้งานเพียง 95% ในเวลาใดก็ตามทำให้ระบบของคุณยุ่งเหยิงเดือนละสองครั้ง น่าจะเป็นมาก ..

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

ดังนั้นสิ่งนี้สามารถทำได้?


3
นี่ไม่ใช่คำถาม ... ฉันเดาว่าคุณดูไม่ยากเลย google อย่างรวดเร็วสำหรับ "ubuntu lvm snapshot" และสิ่งแรกที่เกิดขึ้นคือwiki.ubuntu.com/Lvm
psusi

1
คุณไม่ได้อ่านอะไรเลย ... ครอบคลุมทุกสิ่งที่คุณพูดที่นี่
psusi

5
แน่นอนคุณสามารถถามคำถามแล้วตอบด้วยตนเอง - แต่โปรดจำไว้ว่าเว็บไซต์นี้ทำงานเป็นคำถาม & คำตอบ - ไม่ได้มีไว้สำหรับบทเรียนแบบฟรี
guntbert

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

4
การโหวตเปิดใหม่เพื่อให้เราสามารถแยกคำถามนี้ออกเป็น Q&A
muru

คำตอบ:


11

ทางเลือก - LVM Snapshots - คุณสามารถอ่านเกี่ยวกับภาพรวมของ LVM ได้ที่นี่: http://www.tutonics.com/2012/12/12/lvm-guide-part-2-snapshots.html

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

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

การรับประกัน - ไม่มีการรับประกันใด ๆ สำหรับคำแนะนำด้านล่าง ใช้ความเสี่ยงของคุณเอง!

อย่างไร?

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

  1. เปิดใช้งาน Ubuntu สดซีดี (ยังไม่มีการติดตั้ง .. เพียงแค่ซีดีสด)
  2. เปิดอุปกรณ์เสริม -> เทอร์มินัล
  3. เราจะทำการล้างฮาร์ดไดรฟ์! โปรดสำรองข้อมูลสำคัญก่อนที่จะผ่านด่านนี้

    ก่อนอื่นมาลบพาร์ติชั่นที่มีอยู่:

    # fdisk /dev/sda
      Enter 'd' to delete - enter for as many partitions you have 
    > d   
    > <enter>
      ...
      Enter 'w' to write down changes
    > w
    
  4. สร้างพาร์ติชันสำหรับเริ่มระบบและส่วนที่เหลือของไดรฟ์เป็นพาร์ติชันอื่น

    # fdisk /dev/sda
    > n
      To create a new partition.
    > p
      For Boot Primary partition.
    > 1
      Press <enter> to accept the default start sector.
      Enter:
    > +512M
      To give the boot partition a size of 512MB
    > n
      To create (another) new partition.
    > p
      Should be Primary too.
    > <enter> 
      To accept the default value of 2 (the second partition)
    > <enter>
      To accept the default start sector
    > <enter>
      To accept the whole disk
    > t
      To change the type of the second partition to LVM
    > 2
      To choose the second partition
    > 8e
      To set the type to 'LVM Linux'
    > w
      To write changes and exit.
    

    วิธีตรวจสอบว่าการเปลี่ยนแปลงทำงานได้ดีหรือไม่:

    # fdisk --list
    

    คุณควรได้รับสิ่งนี้:

      Device     Boot   Start    End        Blocks     Id   System
      /dev/sda1         2048     524287     261120     83   Linux
      /dev/sda2         524288   488397167  243936440  8e   Linux LVM
    
  5. ลบกลุ่มวอลุ่มก่อนหน้า / โลจิคัลวอลุ่มใด ๆ :

    # lvdisplay 
    

    จะแสดงโลจิคัลวอลุ่มที่คุณอาจมีในระบบ

    # lvremove <existing_logical_volume_name>
    

    หากการติดตั้งไดรฟ์ใด ๆ ที่อาจรบกวนการติดตั้งนี้จะต้องถูกลบออก

    # vgdisplay 
    

    จะแสดงกลุ่มวอลุ่มที่มีอยู่บนระบบ

    # vgremove <existing_volume_group>
    

    เช่นเดียวกับกลุ่มวอลุ่ม ..

  6. สร้างกลุ่มวอลุ่ม 'vgsnap'

    # vgcreate vgsnap /dev/sda2
    

    ควรมีผลลัพธ์ด้วย:

      Volume group "vgsnap" successfully created
    
  7. สร้างโลจิคัลวอลุ่ม

    # lvcreate --extents 100%FREE --name lvroot vgsnap
    

    โลจิคัลวอลุ่ม root ที่เริ่มต้นด้วยอุปกรณ์ 100%

    # lvresize --size -30G /dev/mapper/vgsnap-lvroot
    

    สิ่งนี้จะลด 30G สำหรับปริมาณการสลับและภาพรวม แน่นอน - คุณสามารถเลือกขนาดที่เล็กลงสำหรับ swap / snapshot

    > 'y'
      for the warning shown.
    

    และสร้างปริมาณการแลกเปลี่ยน:

    # lvcreate --size 15G --name lvswap vgsnap
    

    หมายเหตุ: ตอนนี้เราเหลือพื้นที่ไดรฟ์ที่ไม่ได้ใช้ 15G ซึ่งสงวนไว้สำหรับสแนปชอตในอนาคต

  8. กำลังติดตั้ง Ubuntu

    ปิด terimnal และเริ่มโปรแกรมติดตั้ง

    เลือก "ใช้ LVM ... " (คุณอาจเลือกที่จะเปิดใช้งานการเข้ารหัสดิสก์ทั้งหมด - แต่ฉันไม่ได้ทดสอบ .. )

    เลือก "Something Else" แล้วกดดำเนินการต่อ ในขั้นตอนนี้คุณจะพบปริมาณ / dev / mapper / ... ที่กำหนด สิ่งเหล่านี้บางส่วนสร้างขึ้นโดยอัตโนมัติ (lvsnap- *) - คุณสามารถเพิกเฉยได้

    เลือก: / dev / mapper / vgsnap-lvroot เลือก "ext4" เป็นรูปแบบและเมานต์เป็น '/'

    เลือก: / dev / mapper / vgsnap-lvswap และเลือก "พื้นที่สว็อป"

    หากคุณต้องการสร้างไดรฟ์ที่เข้ารหัส (ฉันไม่มีเงื่อนงำว่าจะทำงานกับสแน็ปช็อตหรือไม่) คุณอาจต้องการเลือก / dev / sda2 และทำเครื่องหมาย "โวลุ่มสำหรับการเข้ารหัส" ไม่ได้ทดสอบว่า ..

    หมายเหตุ: 15G ที่ไม่ได้ใช้จะถูกปล่อยให้ว่างสำหรับปริมาณสแนปชอต

    เลือก: / dev / sda1 พาร์ติชัน จัดรูปแบบเป็น 'ext2' และติดตั้งเป็น '/ boot'

    ด้านล่าง - เลือก: / dev / sda1 พาร์ติชันเป็นการบู๊ต

    ติดตั้ง!

การใช้สแน็ปช็อต

ขั้นตอนต่อไปนี้จะแสดงวิธีการใช้สแนปชอตในเวลาใดก็ตาม:

  1. การติดตั้งสแนปชอต:

    สร้างปริมาณสแนปช็อต

    # lvcreate --size 15G --snapshot --name lvsnap /dev/mapper/vgsnap-lvroot
    

    สร้างไดเรกทอรีติด

    # mkdir /mnt/vgsnap-lvsnap
    

    เมานต์สแน็ปช็อตเป็นเมานต์อ่านอย่างเดียว

    # mount -o ro /dev/vgsnap/lvsnap  /mnt/vgsnap-lvsnap
    

    สแนปชอตเปิดอยู่!

    ณ จุดนี้คุณอาจเริ่มสับสนระบบของคุณติดตั้งไดรเวอร์เบต้าและแม้กระทั่ง (ไม่!

    จากนี้ไปคุณสามารถได้ตลอดเวลา (เท่าขนาดสแน็ปช็อตให้ .. ) กลับสู่สถานะก่อนหน้าหรือถ้าพอใจกับรูปลักษณ์ใหม่ - เก็บไว้

  2. ปริมาณ snapshot อัตโนมัติพื้นที่ว่างในดิสก์การตรวจสอบ: การใช้รุ่นเอ็นดูของสคริปต์ให้ไว้ที่นี่: http://blog.rimuhosting.com/2012/02/20/cron-script-for-checking-disk-space/ ฉันสร้างmonitor_snapshotสคริปต์ .

    จะใช้ / ติดตั้งได้อย่างไร? - สวยมากเช่นเดียวกับลิงค์ด้านบน:

    # cd /etc/cron.hourly
    # copy /home/<user>/Downloads/monitor_snapshot
    # chmod +x monitor_snapshot
    

    ก่อนเรียกใช้เป็นครั้งแรกคุณควรแก้ไขค่าต่างๆเช่นที่อยู่อีเมลของคุณ (ซึ่งจะมีการส่งการแจ้งเตือน ฯลฯ ) หากกำหนดค่าไว้อย่างถูกต้อง cron daemon จะเรียกใช้สคริปต์ทุก ๆ X ชั่วโมง / วัน - ตามที่คุณตัดสินใจ - และแจ้งให้คุณทราบเมื่อสแนปชอตกำลังจะเต็ม

    เพื่อทดสอบการเรียกใช้สคริปต์:

    # sh /etc/cron.hourly/monitor_snapshot
    

    มันจะพิมพ์เปอร์เซ็นต์ (จำนวน) ของพื้นที่ว่างในภาพรวม

    สิ่งสำคัญ! เมื่อคุณทำการทดสอบ / ติดตั้งเสร็จแล้ว - ย้อนกลับหรือทำการเปลี่ยนแปลง - และเก็บภาพสแนปชอต!

  3. การย้อนกลับการเปลี่ยนแปลง: (ดูที่rollback_snapshot script พร้อมคำแนะนำต่อไปนี้เชื่อมโยงท้ายเอกสาร)

    # lvconvert --merge /dev/vgsnap/lvsnap
    

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

    # reboot
    

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

  4. คอมมิชชันการเปลี่ยนแปลง - การเมานต์สแน็ปช็อต: (ดูสคริปต์commit_snapshotพร้อมคำแนะนำต่อไปนี้ - ลิงค์ที่ท้ายเอกสาร)

    # umount /mnt/vgsnap-lvsnap
      Will unmount (commit0 the snapshot
    
    # lvremove /dev/mapper/vgsnap-lvsnap
    # rm -rf /mnt/vgsnap-lvsnap/
    
    # rm /etc/cron.hourly/monitor_snapshot
      Remove the cron daemon script (that is unused)
    
  5. Re: การติดตั้งภาพรวม (ดูremountสคริปต์ที่มีคำแนะนำต่อไปนี้ในมัน - ลิงค์ที่ส่วนท้ายของเอกสาร) สวยมากเหมือนก่อน:

    # lvcreate --size 15G --snapshot --name lvsnap /dev/mapper/vgsnap-lvroot
    # mkdir /mnt/vgsnap-lvsnap
    # mount -o ro /dev/vgsnap/lvsnap /mnt/vgsnap-lvsnap
    

    หากคุณบันทึกmonitor_snapshotที่บ้านของคุณคุณสามารถคืนค่าได้:

    # cp /home/<user>/monitor_snapshot /etc/cron.hourly/
    # chmod +x /etc/cron.hourly/monitor_snapshot
    

นั่นคือคนทั้งหมด! คำแนะนำต่อไปนี้ใช้สำหรับผู้ถอนเงินเท่านั้น)

  1. ทิ้งปริมาณสแนปช็อต (หากไม่ต้องการอีกต่อไป)

    # rmdir /mnt/vgsnap-lvsnap
    # lvremove /dev/vgsnap/lvsnap
    

    (คุณอาจต้องการปรับขนาดพาร์ติชันรูทหรือสลับเพื่อครอบครอง 15G ที่หายไปที่สงวนไว้สำหรับการสลับ)

  2. การยกเลิกกลุ่มวอลุ่ม - อาจทำได้โดยการลบโวลุ่มของกลุ่มวอลุ่มซึ่งอาจหมายถึงการลบการติดตั้งระบบปฏิบัติการ แต่แน่นอนว่าไม่จำเป็นต้องลบกลุ่มวอลุ่มออก ...

    หากต้องการลบกลุ่มวอลุ่ม:

    # vgremove vgsnap
    

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


ขอบคุณมากสำหรับคำแนะนำโดยละเอียดเหล่านี้ ... ว้าว
Adriano Lucas

2

สร้าง cronjob สำหรับการสำรองข้อมูลโดยใช้ lvcreate -s -L <size> -n <snapshot_name> <volume_name>

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


1
คำแนะนำที่ดี! หมายเหตุ แต่ที่ความตั้งใจของฉันที่จะให้หมายถึงการสำรองข้อมูลโดยไม่ต้องสื่อสำรองข้อมูล เป็นรูปแบบการสำรองข้อมูลที่ขี้เกียจ ในสมัยก่อนนี่เป็นการช่วยชีวิตด้วย Norton GoBack และ Windows 2000 :) ฉันเคยยุ่งกับระบบที่ฉันใช้งานจริง ๆ และสามารถนับได้ว่าฉันสามารถย้อนกลับความผิดพลาดได้ในเวลาไม่นาน ! การสำรองข้อมูลอาจเป็นวิธีที่ถูกต้องในการไปยังเซิร์ฟเวอร์จริง แต่สำหรับเวิร์กสเตชันที่ไม่ได้วางไว้บน VMWare / VirtualBox (ซึ่งมีสแนปชอตจากภายนอก) ฉันเชื่อว่าสแน็ปช็อตเป็นวิธีที่จะไป
ถู
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.