โซลูชันสำรองข้อมูลที่เปิดใช้งาน btrfs


14

ด้วยการที่ btrfs ทำการผลิตใน Oracle EL 14 ในเดือนนี้ (ร่วมกับการทำงาน fsck และการขัดถูจาก Linux 3.2) ฉันกำลังคิดที่จะออกแบบโซลูชันสำรองข้อมูลปัจจุบันของฉันใหม่เพื่อใช้งานมัน โปรดทราบว่าฉันกำลังคิดที่จะทำเพื่อข้อมูลจำนวนน้อยน้อยกว่า 10TB นั่นค่อนข้างคงที่ (น้อยกว่า 1% เปลี่ยนทุกวัน) ในระยะสั้นโซลูชั่นสำรอง SMB / SOHO

การสำรองข้อมูลควรทำอย่างไร:

  1. ทำสแน็ปช็อต LVM ของ ext [234] / XFS / JFS บนเซิร์ฟเวอร์ที่ใช้งานจริง
  2. rsync/ ถ่ายโอนข้อมูลที่เปลี่ยนแปลงไปยัง btrfs บนเซิร์ฟเวอร์สำรอง
  3. สแน็ปช็อตระบบไฟล์ btrfs
  4. ปล่อยสแนปชอตเก่าเมื่อพื้นที่ว่างเหลือน้อย

ข้อดี:

  • ไฟล์ทั้งหมดสามารถใช้งานได้ง่ายไม่ต้องคลายการบีบอัด
  • ภาพรวมที่ผ่านมาสามารถใช้งานได้อย่างง่ายดาย ...
  • ... เพื่อให้ฉันสามารถแบ่งปันเป็น Samba แบบอ่านอย่างเดียว (พร้อมรองรับ Shadow Copy)
  • สแน็ปช็อตใช้พื้นที่จำนวนน้อยที่สุดด้วยการคัดลอกเมื่อเขียน (สแน็ปช็อตที่ไม่มีการเปลี่ยนแปลงจะใช้กี่ KiB บนดิสก์)
  • ความสอดคล้องในการสำรองข้อมูลสูง: ตรวจสอบไฟล์ขัดข้อมูลทั้งหมดและมีความซ้ำซ้อนในตัว

คำถาม:

  • มีวิธีแก้ไขปัญหาการสำรองข้อมูล (ในรูปแบบของ Bacula, BackupPC, ฯลฯ ) หรือไม่ซึ่งสามารถทำได้อย่างง่ายดายตระหนักถึงระบบไฟล์คัดลอกเมื่อเขียน?
  • หรือฉันจะต้องใช้rsyncวิธีแก้ปัญหาในบ้าน?
  • คนที่มีกล่อง ZFS เฉพาะสำหรับการสำรองข้อมูลทำเพื่อสำรองข้อมูลเครื่อง Linux ของพวกเขาอย่างไร

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

1
@vaab: นั่นเป็นpro- มากกว่าสองชุดไม่จำเป็นจริงๆถ้าคุณมี checksums และขัด FS อย่างแข็งขันสามอาจจะมาพร้อมกับการสนับสนุน RAID6 อย่างที่ฉันได้กล่าวไปแล้วมันเป็นการตั้งค่าสำหรับระบบสำรองข้อมูลโดยเฉพาะไม่ใช่สำเนา "สำรอง" ภายใน FS บนคอมพิวเตอร์เครื่องเดียว นั่นคือ "RAID ไม่ใช่การสำรองข้อมูล" และ "สแน็ปช็อตไม่ใช่การสำรองข้อมูล" cp -aและrsyncมีไว้สำหรับ ...
Hubert Kario

ฉันกำลังพิจารณาการสำรองข้อมูลเป็น btrfs ด้วย แต่ฉันแค่คิดถึงrsync -a --delete /home/user /mnt/butterfs/backups/ && snapper create- นอกเหนือจากการสร้างสแน็ปช็อตหลังจากสำรองแล้วคุณหมายถึงการตระหนักถึง COW หรือไม่
unhammer

1
@unhammer: การใช้rsyncโดยไม่มี--inplaceคุณจะได้รับสำเนาของข้อมูลเดียวกันหลายชุดในระบบไฟล์ระยะไกล (โดยปกติ rsync จะคัดลอกข้อมูลไปยังไฟล์ที่ซ่อนชั่วคราวแล้วย้ายไปไว้เหนือไฟล์เก่าด้วยระบบไฟล์ Copy-On-Write คุณจะได้รับสำเนาสองชุดจากข้อมูลที่ไม่เปลี่ยนแปลงด้วยวิธีนี้)
Hubert Kario

คำตอบ:


5

ฉันได้ทำการค้นหาอย่างละเอียดในสัปดาห์ที่แล้วเพื่อหาสิ่งที่คล้ายกัน ฉันไม่พบวิธีแก้ปัญหาสำหรับทำ 4 ขั้นตอนทั้งหมด มีบล็อกมากมายจากผู้ใช้ตามบ้านที่ลองใช้ ' rsync to btrfs ' ประเภทการสำรองข้อมูลและ BTRfs สำคัญทั้งหมดครอบคลุมวิธีการดำเนินการสแน็ปช็อต Btrfs

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

Dirvishโครงการดูเหมือนว่าจะตอบสนองความต้องการจำนวนมากของความต้องการของคุณ นักพัฒนาบางคนกำลังพยายามที่จะบูรณาการกับ Dirvish Btrfs อย่างไรก็ตามโครงการ Dirvish ดูเหมือนว่าบิตจนตรอก

เมื่อถึงจุดนี้คุณจะอยู่หน้าโค้ง


ฉันต้องการโซลูชันสำรองข้อมูลที่ปราศจากความเจ็บปวดเช่นเดียวกับ BackupPC: เมื่อพื้นที่ดิสก์เหลือน้อยก็เพียงลบข้อมูลเก่า (สแนปชอตเก่า) ในขณะที่ฉันกลัวว่าฉันจะนำหน้าโค้ง แต่ ZFS ไม่ได้อยู่กับเราในช่วงไม่กี่ปีที่ผ่านมา ...
Hubert Kario

3

ตาม Avi Miller (คำพูดของเขาระหว่าง LinuxConf.AU) btrfs ส่ง / รับกำลังทำงานอยู่ มันจะเร็วกว่า rsync เนื่องจากมันไม่จำเป็นต้องสำรวจไดเรกทอรีเพื่อค้นหาการเปลี่ยนแปลงในไฟล์ .. ฉันไม่รู้ว่ามีวันวางจำหน่ายที่คาดไว้หรือยัง

อย่างไรก็ตามมียูทิลิตีที่สร้างขึ้นใน btrfs-progs ซึ่งแสดงรายการไฟล์ทุกไฟล์ที่เปลี่ยนไประหว่าง snapshots / etc .. btrfs subvolume find-new


2
ฉันต้องการสำรองข้อมูลไปยัง btrfs ไม่ใช่จาก ...
Hubert Kario

2

ฉันกำลังทำงานกับระบบสำรองข้อมูล OS ซึ่งคล้ายกับ BackupPC ฉันคิดเกี่ยวกับเรื่องนี้ สิ่งที่ทำให้ฉันหยุดการใช้งานจริงนั่นคือคุณไม่สามารถเชื่อมโยงฮาร์ดไดรฟ์ระหว่าง subvolumes คุณยังสามารถสร้างสแน็ปช็อตของไดรฟ์ย่อย -> หนึ่งไดรฟ์ย่อยหนึ่งต่อไคลเอนต์สำรอง ดังนั้นคุณสมบัติการคัดลอกระดับไฟล์ไม่สามารถอยู่ร่วมกันได้ด้วยวิธีการนี้ และการทำซ้ำระดับไฟล์นั้นมักจะประหยัดพื้นที่ได้มาก คุณต้องการสำรองข้อมูลเซิร์ฟเวอร์เดียวหรือไม่

หาก btrfs มีการป้องกันการซ้ำซ้อนระดับบล็อกปัญหานี้อาจหลีกเลี่ยงได้ แต่โดยทั่วไปจะช้าเกินไปเช่นกัน ...

แน่นอนว่าวิธีการดังกล่าวจะนำมาซึ่งการผสานอย่างแน่นหนากับระบบไฟล์เดียว (btrfs) ดังนั้นจึงควรเป็นคุณสมบัติเสริม

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

แก้ไข: UrBackupรองรับการสำรองข้อมูลที่สืบทอดในคำถามตอนนี้ด้วยเคอร์เนล Linux> = 3.6 (พร้อมการสนับสนุน reflink ข้ามวอลุ่ม) ดูวิธีการตั้งค่า


1
cross-subvolume reflink copy (semi-hardlink ทำได้cp --reflink) ถูกนำไปใช้แล้วหรือจะนำไปใช้ในอนาคตอันใกล้ ออนไลน์ de ซ้ำใน FS เป็นทั้งช้า (lessfs) หรือความต้องการจำนวนมากของ RAM (ZFS) จึงขึ้นอยู่กับว่ามันจะจริงจะเป็นคุณลักษณะที่ไม่ดีในซอฟต์แวร์สำรองข้อมูล ไม่ว่าจะด้วยวิธีใดก็ตามซอฟต์แวร์สำรองข้อมูล btrfs ที่มุ่งเน้นจะมีผู้ชมจำนวนมากก็น่าจะเป็น ext3 ตัวต่อไป
Hubert Kario

อีกอย่างหนึ่ง: คุณสามารถแก้ไขปัญหานี้ได้โดยการทำให้เซิร์ฟเวอร์ทั้งหมดอยู่ใน subvolume เดียว - คุณสามารถ reflink copy ระหว่างพวกมัน (to dedupe) ในขณะที่ยังคงความสามารถของสแนปช็อต คุณเพียงแค่ต้องสแน็ปช็อตหลังจากที่คุณ dedupe คุณยังสามารถสแนปช็อตหลังจากทำการสำรองข้อมูลเพียงเซิร์ฟเวอร์เดียว! การสำรองข้อมูลจะไม่ใช้พื้นที่มากขึ้นหากคุณทำการสำรองข้อมูลทีละครั้ง อีกวิธีหนึ่งคุณสามารถสำรองข้อมูลเซิร์ฟเวอร์ทั้งหมด, การคัดลอกและจากนั้นก็ทำการ snapshot เท่านั้น วิธีนี้คุณสามารถสำรองข้อมูลเซิร์ฟเวอร์สองสามตัวในเวลาเดียวกัน
Hubert Kario

คุณถูก. ไม่ได้คิดอย่างนั้น เพื่อความสะดวกคุณสามารถ symlink ไปยังสแน็ปช็อตที่ถูกต้องในวอลลุ่มอื่น ฉันยังเห็นแพทช์สำหรับ hardlink ข้ามปริมาณ (หรือ - ทบทวน) แต่มันก็ดูไม่เหมือนที่มันทำ / หรือจะทำให้มันฉีด ฉันจะดูเป็นอย่างนั้นจริงๆ! ตอนนี้คุณอาจทำการสำรองข้อมูลผ่าน ssh โครงการของฉันมีความเฉพาะสำหรับเครือข่ายท้องถิ่น ... (การค้นพบอัตโนมัติเป็นต้น)
UrOni

ใช่แผ่นแปะยังมีชีวิตอยู่และทำงานได้ แต่น่าเสียดายที่ไม่ได้อยู่ในการฉีดฉันไม่รู้ว่าทำไม ฉันพยายามที่จะบั๊ก Chris Mason เกี่ยวกับเรื่องนี้ สำหรับโครงการของคุณคุณมีความสุขที่จะวางฉันบรรทัดฉันจะยินดีทดสอบเบต้า (อนุญาตเวลา) มันฟังดูน่าสนใจ
Hubert Kario

ในที่สุดแพทช์ที่ลงจอดในเคอร์เนล mainline 3.6 ด้วย reflink ข้ามอุปกรณ์มันจริงไม่ได้ทำงานมาก ฉันเขียนที่นี่เกี่ยวกับมัน: urbackup.org/blog/?p=83รหัสอยู่ในสาขา "ถัดไป" ในที่เก็บ git ฉันกำลังทดสอบมัน
UrOni

1

หน้าวิกิ btrfs " Use Cases " แสดงเครื่องมือบางอย่าง: SnapBtr , Snapper, btrfs-time-machine, UrBackup

มีข้อเสนอสำหรับเครื่องมือในตัวที่เรียกว่าautosnap :

เมื่อใช้ฟีเจอร์ autosnap คุณสามารถกำหนดค่า btrfs ให้เป็นสแน็ปช็อตตามปกติหรือตามเหตุการณ์และจัดการสแนปชอตเพิ่มเติมโดยอัตโนมัติ

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

อย่างไรก็ตาม ณ เดือนตุลาคม 2556 วิกิระบุว่า "ปัจจุบันฟังก์ชั่น autosnap ยังไม่รวมอยู่ใน btrfs เวอร์ชันอัปสตรีม"


1

ผมมีความผิดหวังที่คล้ายกันดังนั้นผมจึงจบลงด้วยการสร้างไม่กี่สคริปต์ที่ฉันโทรsnazzer พวกเขาช่วยกันเสนอสแน็ปช็อตการตัดการวัดและการขนส่งผ่าน ssh (แต่ ณ วันนี้สามารถส่ง / รับไปยัง / จากระบบไฟล์ภายในเครื่องได้เช่นกัน) การวัดเป็นเพียงรายงานของ sha512sum และ PGP ลายเซ็นของเส้นทางภาพรวม ยังไม่พร้อมสำหรับการเปิดตัว แต่ฉันชอบที่จะได้ยินข้อเสนอแนะถ้าใครมีเวลาที่จะตรวจสอบมันในช่วงแรกนี้

CLI เท่านั้นที่จุดนี้ แต่ฉันเอาเวลาที่จะทำให้มันง่ายที่จะใช้ในระบบที่มี subvolumes btrfs จำนวนมาก - โดยทั่วไปแล้วผมมี subvolumes แยกต่างหากสำหรับ/var/cache, /homeฯลฯ ซึ่งอาจจะต้องมีการแยกออกจาก snapshotting หรือมีมาก / น้อย ตารางการตัดแต่งกิ่งก้าวร้าว

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

ฉันจะเพิ่มการสนับสนุน ZFS และ / หรือการทำงานร่วมกันในบางจุด; มันเขียนส่วนใหญ่ใน posix-ish shell และ perl เนื่องจากความต้องการอย่างมากสำหรับการพึ่งพา "ศูนย์" ในขณะนี้ฉันหวังว่าจะมีการใช้งานไพ ธ อนที่สลับกันได้ดีขึ้นในบางจุด


เว้นแต่ FS ของคุณมีขนาดใหญ่มากและมักจะเปลี่ยนแปลงมีความแตกต่างกันเล็กน้อยระหว่างการเก็บสแน็ปช็อตจากหนึ่งเดือนที่ผ่านมาและเพียง 1 ต่อวันจากสัปดาห์ที่แล้วเมื่อเทียบกับหนึ่งต่อวันสำหรับทั้งเดือน - btrfs จะต้องเก็บความแตกต่างระหว่าง สถานะปัจจุบันและหนึ่งเดือนที่ผ่านมาต่อไป - ฉันเก็บ dailies แต่เพราะมันถูกบีบอัดและกระจายฉันสามารถเก็บพวกเขาไว้ครึ่งปีหลังได้อย่างง่ายดาย - จากนั้นวางการรับประกันที่เก่าแก่ที่สุดให้ว่างอย่างน้อยบางพื้นที่
Hubert Kario

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

@ csirac2 คุณมี snazzer อยู่ไหม? ฉันกำลังมองหาโซลูชันประเภทนี้ ฉันสนใจ snazzer หากกำลังได้รับการบำรุงรักษาอย่างแข็งขัน GitHub ดูเหมือนจะไม่แสดงกิจกรรมล่าสุด ...
MountainX

@MountainX เมื่อฉันไม่ได้รับคำติชมเบื้องต้นเกี่ยวกับ snazzer ฉันก็หลงไหล .. เมื่อฉันเริ่มเขียนมันมีปลากะพงของ OpenSUSE เท่านั้นและสคริปต์ shell / python จำนวนหนึ่งที่ลอยอยู่รอบ ๆ เพื่อทำให้ btrfs อัตโนมัติ เมื่อถึงเวลาที่ฉันจะแบ่งปันกับทั่วโลกมีตัวเลือกอื่น ๆ มากมายโผล่ขึ้นมาและฉันก็บอกว่า btrbk ดูเหมือนจะมีโมเมนตัมมากมาย (ขาดการทดสอบอัตโนมัติ ถ้าฉันต้องทำมันทั้งหมดอีกครั้งฉันอาจจะร่วมมือกับผู้แต่ง sanoid เพื่อเพิ่มความเข้ากันได้ของ btrfs ที่นั่น สนใจฟังความคิดของคุณ
csirac2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.