ข้อ จำกัด ในทางปฏิบัติเกี่ยวกับจำนวนสแน็ปช็อต btrfs หรือไม่


23

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

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

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

หากมีข้อ จำกัด ในทางปฏิบัติเกี่ยวกับจำนวนสแนปชอตมันจะขึ้นอยู่กับจำนวนไฟล์และ / หรือขนาดของไฟล์หรือไม่?

คำตอบ:


16

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

ในขณะที่คุณอาจรู้ว่าbtrfsถือว่า subvolumes เป็นระบบไฟล์และด้วยเหตุนี้จำนวนของภาพรวมที่ถูก จำกัด แน่นอน: กล่าวคือขนาดของไฟล์ ตามที่ btrfsวิกิพีเดียขนาดไฟล์สูงสุดที่สามารถเข้าถึงได้คือ[1]2^64 byte == 16 EiB

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

คำเตือนสุดท้าย แต่ไม่btrfsท้ายสุด: ฉันไม่ชำนาญในระบบไฟล์และอ่านเกี่ยวกับสิ่งเหล่านี้เมื่อฉันมีคำถามเดียวกันเมื่อไม่นานมานี้ นอกจากนี้ยังมีปัญหาเสมอที่btrfsเป็น "เป้าหมายที่เคลื่อนที่เร็ว" (ถ้อยคำที่ดีถูกขโมยไปจากArch Linuxหน้า wiki ที่ฉันคิดว่า) ดังนั้นสิ่งต่าง ๆ อาจเปลี่ยนแปลงได้


1
ฉันเป็นหนึ่งในผู้ใช้ที่ก่อนหน้านี้เช่นกันและนี่คือการใช้แบงก์
mikeserv

ใช่ปังสวยมากใน :)
Mark K Cowan

1
คุณควรพยายามอยู่ให้ต่ำกว่า 100 ภาพรวมในหนึ่ง BTRFS มิฉะนั้นคุณอาจประสบปัญหาประสิทธิภาพการทำงานโดยเฉพาะอย่างยิ่งในการลบสแนปชอต การสร้างสแนปชอตนั้นมีค่าใช้จ่ายต่ำ แต่การลบนั้นไม่ใช่ นอกจากนี้โปรดทราบว่าคำแนะนำในการดำเนินการดีแฟรกเมนต์พร้อมกับการใช้สแน็ปช็อตจะช่วยลดประสิทธิภาพการใช้พื้นที่ของสแน็ปช็อต การจัดเรียงข้อมูลแบ่งตัวเชื่อมโยงและแบ่งพื้นที่ที่ใช้
MountainX สำหรับ Monica Cellio

@ MountainX คุณสามารถอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ได้ในคำตอบ 100 สแนปชอตบนไดรฟ์ข้อมูลไม่แม้แต่หนึ่งสัปดาห์เป็นเวลาสองปี
StrongBad

@StrongBad - ฉันได้รับข้อมูลนั้นจากรายชื่อผู้รับจดหมาย BTRFS เพื่อตอบปัญหา ทุกคนเห็นพ้องกันว่าเป็นความคิดที่ไม่ดีที่จะมีสแนปชอตเป็นร้อยหรือพัน สำหรับคำตอบทางเทคนิคเพิ่มเติมคุณจะต้องถามในรายชื่อผู้รับจดหมาย BTRFS
MountainX สำหรับ Monica Cellio

5

ในขณะที่ในทางเทคนิคไม่มีข้อ จำกัด เกี่ยวกับจำนวนสแนปชอตฉันถามในรายชื่อผู้รับจดหมาย BTRFS :

คำตอบ (ในทางปฏิบัติ) ขึ้นอยู่กับว่าคุณใช้ btrfs อย่างไร

Btrfs มีปัญหาในการขยายเนื่องจากสแน็ปช็อตจำนวนมากเกินไป (หรือที่จริงแล้วสแน็ปช็อต reflink ใช้, การลบโดยใช้ reflink สามารถทริกเกอร์ปัญหาการสเกลเดียวกัน) และสแน็ปช็อตตัวเลขสองหลักต่ำ

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

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


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

@ProBackup คำตอบรายการ btrfs บอกว่าเก็บจำนวนสแน๊ปช็อตไว้ที่ตัวเลขเดียวถึงหลักสงสัยน้อยซึ่งค่าเริ่มต้นส่วนโค้งสำหรับปลากะพงไม่ได้ทำจริงๆ ในขณะที่ไม่จำเป็นต้องใช้ btrfs-balance สำหรับการตั้งค่าอย่างง่ายผู้ใช้จำนวนมากชอบแนวคิดของ btrfs-check แม้ว่าพวกเขาจะไม่ต้องการก็ตามและการลบ subvolume ดูเหมือนว่าสำคัญหากคุณต้องการหมุน subvolumes เหมือนกับที่ปลากะพงทำ
StrongBad

@ProBackup การสำรองข้อมูลเก็บถาวรอาจไม่ใช่คำที่เหมาะสมสำหรับ Time Machine ดูเหมือนว่า Time Machine เป็นมากกว่าการสำรองข้อมูลส่วนเพิ่ม แต่ฉันไม่สะดวกที่จะเรียกมันว่าการสำรองข้อมูลแบบ snapshot เช่น snapper หรือ rsnapshot แต่อาจจะดีกว่า มีความสุขสำหรับคุณที่จะแก้ไขคำนี้เพราะดูเหมือนว่าคุณจะรู้มากเกี่ยวกับสนาม
StrongBad

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

@ProBackup ในที่สุดโปรดเขียนคำตอบและอธิบายว่าทำไมข้อสรุปของฉันเกี่ยวกับคำตอบในรายการส่งเมลผิด ด้วยวิธีนี้เราจะเห็นว่าชุมชนรู้สึกอย่างไร
StrongBad

3

คุณสามารถรวมทั้งหมด 2 64 snapshots และ subvolumes

btrfsออกแบบหน้าวิกิพีเดียกล่าวว่า (เหมือง empahsis):

Subvolumes เป็นชื่อ btree ที่เก็บไฟล์และไดเรกทอรี พวกมันมีไอโหนดภายในต้นไม้ของรากของต้นไม้และสามารถมีเจ้าของและกลุ่มที่ไม่ใช่รูท ไดรฟ์ย่อยสามารถกำหนดโควต้าของบล็อกและเมื่อถึงโควต้านี้จะไม่อนุญาตให้เขียนใหม่ บล็อกและส่วนขยายไฟล์ทั้งหมดที่อยู่ใน subvolumes นั้นมีการอ้างอิงนับเพื่อให้สามารถทำการจับภาพได้ อาจสร้าง subvolumes มากถึง 2 64บน FS

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

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