ฉันกำลังจะกำหนดค่าเซิร์ฟเวอร์ที่บ้านของฉันใหม่ตั้งแต่ต้น และกำลังสงสัยว่าอะไรคือกลยุทธ์ที่ดีที่สุดในการสำรองข้อมูลคอนเทนเนอร์ LXD ของฉัน ในขณะเดียวกันฉันใช้ Ubuntu 20.04 LTS และมีบริการบางอย่างที่กำหนดค่าให้ทำงานเป็นคอนเทนเนอร์ LXD/LXC ตัวอย่างเช่น:

  • คอนเทนเนอร์ "cloudserv" ที่รัน seafile
  • คอนเทนเนอร์ "webservice" ที่รัน nginx และ MariaDB

คอนเทนเนอร์ทั้งสองนี้อยู่บน SSD ของฉันพร้อมระบบไฟล์ btrfs สำหรับการจัดเก็บข้อมูล ฉันใช้อาร์เรย์ของดิสก์ (รวมถึง BTRFS ด้วย) ซึ่งฉันได้สร้างพูลหน่วยเก็บข้อมูล LXC อื่นที่มีโวลุ่มการจัดเก็บข้อมูลซึ่งติดอยู่กับคอนเทนเนอร์ seafile เพื่อเก็บข้อมูลทั้งหมด เลย์เอาต์มีลักษณะดังนี้:

SSD

  • ระบบไฟล์ BTRFS
    • พูลพื้นที่เก็บข้อมูล "ค่าเริ่มต้น"
      • คอนเทนเนอร์ "cloudserv"
      • คอนเทนเนอร์ "เว็บเซอร์วิส"
      • ภาพ

HDDs

  • ระบบไฟล์ BTRFS
    • พูลหน่วยเก็บข้อมูล "DataPool1"
      • ปริมาณการจัดเก็บข้อมูลที่กำหนดเอง "seafile-data" -> แนบกับคอนเทนเนอร์ "cloudserv"

ด้วยการใช้ BTRFS ฉันหวังว่าจะสามารถใช้สแน็ปช็อต BTRFS และส่งและรับเครื่องมือเพื่อถ่ายโอนคอนเทนเนอร์และโวลุ่มการจัดเก็บอย่างง่ายดายเป็นโวลุ่มย่อยเช่น RasPi ที่แนบโวลุ่ม BTRFS แต่การอ่านเช่นคู่มือ LXDหรือวิธีสำรองและกู้คืนคอนเทนเนอร์ LXDฉันรู้สึกว่าฉันต้องสร้าง tarball เสมอเพื่อสำรองอินสแตนซ์ซึ่งสามารถถ่ายโอนได้ นี่หมายความว่าฉันสูญเสียคุณสมบัติที่น่าสนใจบางอย่างของ BTRFS เช่นความสามารถในการส่ง/รับ subvolumes/snapshots และทำการสำรองข้อมูลส่วนเพิ่มของอินสแตนซ์และข้อมูล LXC ของฉัน

ฉันคิดถึงอะไรไหม ใครสามารถให้คำแนะนำสำหรับเวิร์กโฟลว์การสำรองข้อมูลที่เหมาะสมสำหรับ LXD/LXC ด้วย BTRFS ได้บ้าง

answer

หากคุณติดตั้ง LXD ในเซิร์ฟเวอร์ระยะไกลของคุณและทั้งสองเซิร์ฟเวอร์ใช้ Btrfs คุณสามารถใช้การถ่ายโอนอินสแตนซ์ที่เพิ่มประสิทธิภาพได้ดังนี้:

lxc remote add mybtrfsremotebackupserver XXX
lxc snapshot mycontainer snap1
lxc copy mycontainer mybtrfsremotebackupserver: --verbose

และจะใช้btrf-sendสำหรับการถ่ายโอนคอนเทนเนอร์ครั้งแรกและสแน็ปช็อตทั้งหมด

จากนั้นคุณมีวิธีที่สะดวกมากในการรักษาคอนเทนเนอร์และสแน็ปช็อตจะส่งการเปลี่ยนแปลงที่เพิ่มขึ้นโดยใช้ตัวเลือก--refresh(LXD 3.7) เท่านั้น

lxc copy --refresh mycontainer mybtrfsremotebackupserver: --verbose

แต่น่าเสียดายที่มันใช้rsyncอย่างน้อยใน LXD 4.0 ดังนั้นคุณจะสูญเสียการbtrfs-sendเพิ่มประสิทธิภาพ

ตรวจสอบปัญหานี้สำหรับข้อมูลเพิ่มเติม: คำขอคุณสมบัติ: --snapshots-only flag for copy

นอกจากนี้ยังมี"การรองรับการรีเฟรชสำหรับสำเนาไดรฟ์ข้อมูลแบบกำหนดเอง"แต่ฉันไม่แน่ใจว่าจะใช้เส้นทางที่ปรับให้เหมาะสมที่สุดหรืออาจเป็นประโยชน์สำหรับวัตถุประสงค์ของคุณ คุณยังสามารถตรวจสอบ --optimized-storage ใน lxc export

ความนับถือ