การโฆษณา

บ้าน - การกู้คืน
ระบบไฟล์ Zfs วิธีเชื่อมต่อกับ windows ระบบไฟล์ ZFS

สำหรับระบบปฏิบัติการ การถ่ายโอนไปยังแพลตฟอร์มอื่นทำให้เกิดอารมณ์ที่แตกต่างระหว่างนักพัฒนา: จากความชื่นชมและความยินดีอย่างล้นหลาม ไปจนถึงสิ่งที่ตรงกันข้าม - การระคายเคืองและความโกรธ

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

  • ระบบไฟล์ 128 บิต ซึ่งทำให้สามารถจัดเก็บข้อมูลได้เกือบไม่จำกัดจำนวน ในทางปฏิบัติ หมายความว่า ZFS สามารถจัดเก็บข้อมูลปริมาณมากเกินกว่าความสามารถทางเทคโนโลยีในปัจจุบันในทางทฤษฎีได้ โดยมีเงื่อนไขว่าต้องใช้แนวทางปัจจุบันในการจัดการพื้นที่จัดเก็บข้อมูล
  • ให้ความสนใจอย่างมากต่อความสมบูรณ์และความน่าเชื่อถือของการจัดเก็บข้อมูลผู้ใช้และข้อมูลเมตา FS ที่ใช้สำหรับสิ่งนี้
  • รองรับสแน็ปช็อตและพูลหน่วยเก็บข้อมูล ซึ่ง ZFS ผสมผสานความสามารถของระบบไฟล์และระบบการจัดการโวลุ่ม (แนวคิดใหม่ของพูลหน่วยเก็บข้อมูล)
  • ไม่จำเป็นต้องใช้ fsck ต้องขอบคุณ FS นี้
  • ตามเนื้อผ้า ZFS ถือเป็นระบบไฟล์ที่ทรงพลังพอสมควร อย่างไรก็ตาม บางครั้งข้อความนี้อาจถูกตั้งคำถาม อย่างน้อยที่สุด ตัวเลขเฉพาะจะขึ้นอยู่กับประเภทของงานที่ทำการเปรียบเทียบประสิทธิภาพดังกล่าวเป็นอย่างมาก
  • ความสามารถในการบีบอัดและ/หรือการเข้ารหัสแบบเลือกสรรของแต่ละไฟล์หรือระบบไฟล์
  • รองรับการจดจำและการรวม (ยกเว้น) ของไฟล์ที่ซ้ำกันโดยอัตโนมัติ
  • ZFS ไม่รองรับโควต้า หรือค่อนข้างจะแปลก การรองรับโควต้านั้นค่อนข้างแปลก: แนวคิดของ "การจัดสรรโควต้า" หมายถึงในคำศัพท์ของ ZFS ที่คุณจำกัดขนาดของระบบไฟล์ที่สร้างขึ้น การออกแบบระบบทำให้ผู้ใช้ ZFS แต่ละคนได้รับการจัดสรรระบบไฟล์ของตนเองโดยมีข้อจำกัดที่เกี่ยวข้องทั้งหมด
  • ปัญหาบางอย่างไม่ได้ถูกสร้างขึ้นโดยคุณสมบัติทางเทคนิคของ FS - รหัสลิขสิทธิ์ (CDDL) เข้ากันไม่ได้กับ GPL
  • เพื่อแสดงให้เห็นถึงนวัตกรรมของ ZFS ไม่เพียงแต่ในด้านโซลูชันทางเทคนิคเท่านั้น ฉันจะยกตัวอย่างความสามารถในการจัดการความสามารถหลักของ FS ผ่านทางเว็บอินเตอร์เฟส
  • และเนื่องจากฉันขอย้ำอีกครั้งว่า ZFS มีความสามารถและฟีเจอร์ที่ใหญ่มาก และเป็นไปไม่ได้เลยที่จะแสดงรายการทั้งหมดไว้ที่นี่

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

หากเราเพิ่มอายุที่ค่อนข้างเป็นผู้ใหญ่และสภาพที่ดีมากในแง่ของความเสถียรของโค้ด พายุแห่งอารมณ์ที่ทำให้เกิดข่าวเกี่ยวกับการเผยแพร่โค้ดภายใต้ใบอนุญาตแบบเปิด รวมถึงการพอร์ต FS ที่เป็นนวัตกรรมใหม่นี้ไปสู่การปฏิบัติการที่ได้รับความนิยมดังกล่าว ระบบเช่น FreeBSD, Linux, MacOS ชัดเจน

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

แอนดรูว์ มอร์ธานหัวหน้าผู้พัฒนาระบบย่อยดิสก์เคอร์เนล Linux

นักพัฒนารายอื่นบางส่วนได้เข้าร่วมกับเขาเพื่อกล่าวโทษ ZFS สำหรับ "การออกแบบที่น่ากลัว" และตอนนี้ก็สามารถระบุได้ว่า แอนเดรีย มอร์ตันถึง ZFS - " การละเมิดระดับการออกแบบอย่างรุนแรง" และ " ความสับสนของรหัสที่ไม่สมเหตุสมผล“—ได้กลายเป็นมีมอินเทอร์เน็ตประเภทหนึ่งไปแล้ว ซึ่งนักพัฒนาจาก Oracle, Linux, RedHat, FreeBSD และโครงการที่มีชื่อเสียงอื่น ๆ ได้พยายามตอบโดยไม่ปรากฏแล้ว

เพื่อตอบสนองต่อการโจมตีเหล่านี้ ผู้พัฒนาหลักของ ZFS (Jeff Bonwick):

“ข้อกล่าวหาทั้งหมดนี้เกี่ยวกับการละเมิดการออกแบบระดับการใช้งานระบบไฟล์ เนื่องจาก ZFS รวมฟังก์ชันการทำงานของระบบไฟล์ ตัวจัดการโวลุ่ม และตัวควบคุม RAID ของซอฟต์แวร์เข้าด้วยกัน ฉันคิดว่าคำตอบสำหรับการร้องเรียนนี้จะขึ้นอยู่กับสิ่งที่คุณหมายถึงโดยข้อหา "ละเมิดการออกแบบระดับ"

ในระหว่างการพัฒนา ZFS เราค้นพบว่าการออกแบบมาตรฐานของเลเยอร์นามธรรมของดิสก์สแต็กทำให้เกิดความซับซ้อนที่ไม่จำเป็นและตรรกะที่ซ้ำซ้อนในปริมาณที่น่าประหลาดใจ ในระหว่างกระบวนการปรับโครงสร้างใหม่ เราได้ข้อสรุปว่าทางออกเดียวสำหรับปัญหาคือการแก้ไขขอบเขตพื้นฐานของเลเยอร์และความสัมพันธ์ ซึ่งทำให้ทุกอย่างง่ายขึ้นมากในคราวเดียว”

ไม่ว่าคุณจะดำรงตำแหน่งใดใน ZFS เป็นการส่วนตัว มีอย่างน้อยสิ่งหนึ่งที่ควรจดจำ: ZFS เป็นเทคโนโลยีพื้นฐานใหม่ในอุตสาหกรรมระบบไฟล์

ZFS ควรจะเจ๋ง แต่ฉันรำคาญนิดหน่อยที่ดูเหมือนว่าจะติดอยู่ในอดีต - ก่อนที่มันจะได้รับการยอมรับว่าเจ๋งและเป็นระบบไฟล์ที่ดีที่สุดด้วยซ้ำ ไม่ยืดหยุ่น ขาดการบูรณาการแฟลชที่ทันสมัย ​​และไม่ได้รับการสนับสนุนโดยตรงจากระบบปฏิบัติการส่วนใหญ่ แต่ฉันจัดเก็บข้อมูลอันมีค่าทั้งหมดของฉันไว้ใน ZFS เนื่องจากให้ระดับการรักษาความปลอดภัยที่ดีที่สุดสำหรับสภาพแวดล้อม SOHO (สำนักงานขนาดเล็ก/โฮมออฟฟิศ) และนี่คือเหตุผล

คำสั่งแรกของระบบจัดเก็บข้อมูล: อย่าส่งคืนข้อมูลที่ไม่ถูกต้อง!

การปฏิวัติ ZFS ประมาณปี 2549

ตั้งแต่ปี 2007 ถึง 2010: ZFS ตกต่ำ

แต่มีบางสิ่งที่เลวร้ายเกิดขึ้นกับ ZFS ระหว่างทางไปสู่ชัยชนะ: การฟ้องร้อง ปัญหาใบอนุญาต และ FUD ซึ่งเป็นกลยุทธ์การจัดการทางจิตวิทยาจากผู้ประสงค์ร้าย

เมฆพายุกลุ่มแรกปรากฏขึ้นในปี 2550 เมื่อเน็ตแอพฟ้องซันโดยอ้างว่า ZFS ละเมิดสิทธิบัตร WAFL ของตน ซันโต้กลับในปีเดียวกัน - และการต่อสู้ทางกฎหมายก็ดำเนินไป แม้ว่า ZFS จะไม่มีโค้ด NetApp อย่างแน่นอน แต่กลไกการคัดลอกเมื่อเขียนสำหรับสแน็ปช็อตนั้นคล้ายคลึงกับ WAFL และพวกเราบางคนในอุตสาหกรรมกังวลว่าคดีความของ NetApp จะส่งผลกระทบต่อความพร้อมใช้งานของโอเพ่นซอร์สของ ZFS ความเสี่ยงเหล่านี้เพียงพอแล้วสำหรับ Apple ที่จะหยุดการสนับสนุน ZFS ใน Mac OS X 10.6 “Snow Leopard” ก่อนที่ระบบปฏิบัติการจะออกสู่ตลาด

นี่คือบล็อกที่ยอดเยี่ยมเกี่ยวกับ ZFS และ Apple จาก Adam Leventhal ผู้ซึ่งทำงานในโครงการนี้ที่บริษัท: ZFS: ระบบไฟล์ใหม่ของ Apple ที่ไม่ใช่

Sun กำลังเผชิญกับช่วงเวลาที่ยากลำบากในเวลานั้น และ Oracle ก็ใช้ประโยชน์จากโอกาสในการซื้อบริษัท สิ่งนี้ทำให้เกิดข้อสงสัยใหม่เกี่ยวกับอนาคตของ ZFS เนื่องจาก Oracle ไม่เป็นที่รู้จักว่าเป็นแฟนตัวยงของการสนับสนุนสาธารณะในวงกว้างสำหรับโครงการฟรี และพบว่าใบอนุญาต CDDL ที่ Oracle ใช้กับโค้ด ZFS นั้นเข้ากันไม่ได้กับ GPLv2 ซึ่งใช้โดย Linux ทำให้ไม่สามารถใช้ ZFS บนระบบปฏิบัติการเซิร์ฟเวอร์ที่ได้รับความนิยมมากที่สุดในโลกได้

แม้ว่าโครงการ OpenSolaris จะดำเนินต่อไปหลังจากการเข้าซื้อกิจการของ Oracle และ ZFS ก็รวมอยู่ใน FreeBSD แต่โครงการนี้ส่วนใหญ่อยู่นอกภาคองค์กร แน่นอนว่า NexentaStor และ GreenBytes ช่วยผลักดัน ZFS เข้าสู่ภาคองค์กร แต่การขาดการสนับสนุนเซิร์ฟเวอร์ Sun ของ Oracle ก็เริ่มส่งผลกระทบเช่นกัน

ZFS มีปัญหาอะไรบ้างในตอนนี้?

OpenZFS แทบไม่ต่างจากระบบไฟล์เมื่อสิบปีที่แล้ว

หลายคนยังคงสงสัยเกี่ยวกับการขจัดข้อมูลซ้ำซ้อนซึ่งต้องใช้หน่วยความจำราคาแพงจำนวนมาก และฉันหมายถึงราคาแพง: เกือบทุกคำถามที่พบบ่อยเกี่ยวกับ ZFS ต้องใช้หน่วยความจำแบบ ECC เท่านั้นอย่างชัดเจนและมีขนาดอย่างน้อย 8GB จากประสบการณ์ของฉันกับ FreeNAS พื้นที่ 32 GB นั้นใช้ได้สำหรับเซิร์ฟเวอร์ขนาดเล็กที่ใช้งาน ZFS และมีราคาอยู่ที่ 200-300 ดอลลาร์ แม้ในราคาปัจจุบันก็ตาม

และ ZFS ไม่เคยปรับให้เข้ากับหน่วยความจำแฟลชที่แพร่หลายในปัจจุบันเลย แม้ว่าแฟลชสามารถใช้กับแคช ZIL และ L2ARC ได้ แต่ก็เป็นประโยชน์ที่น่าสงสัยสำหรับระบบที่มี RAM เพียงพอ และ ZFS ไม่มีคุณสมบัติการจัดเก็บข้อมูลแบบไฮบริดที่แท้จริง น่าหัวเราะที่เอกสาร ZFS พูดถึงแฟลช SLC หลายกิกะไบต์อยู่ทั่วทุกหนทุกแห่ง เมื่อมีไดรฟ์ 3D NAND หลายเทราไบต์อยู่ในตลาดอยู่แล้ว และไม่มีใครพูดถึง NVMe แม้ว่าจะเป็นมาตรฐานสำหรับพีซีระดับไฮเอนด์ก็ตาม

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

  • เปลี่ยนดิสก์ทั้งหมดในพูลด้วยดิสก์ที่มีความจุมากขึ้น (ซึ่งเจ๋ง แต่มีราคาแพง)
  • สร้างลำดับดิสก์ด้วยชุดดิสก์อื่น (ซึ่งอาจนำไปสู่ประสิทธิภาพที่ไม่สมดุล ความซ้ำซ้อน และข้อผิดพลาดโง่ๆ อื่นๆ อีกมากมาย)
  • สร้างพูลใหม่และถ่ายโอนชุดข้อมูลที่นั่นโดยใช้คำสั่ง zfs send (นี่คือสิ่งที่ฉันทำ แม้ว่าจะมีเคล็ดลับบางอย่างที่นี่ก็ตาม)

นอกเหนือจากวิธีที่สาม คุณไม่มีตัวเลือกในการย่อขนาดพูล ZFS ที่แย่กว่านั้นคือ คุณไม่สามารถเปลี่ยนประเภทการปกป้องข้อมูลได้โดยไม่ต้องสร้างพูลทั้งหมดใหม่ รวมถึงการเพิ่มดิสก์พาริตีที่สองและสาม FreeNAS ใช้เวลาจำนวนมากอย่างเป็นเรื่องเป็นราวในการพยายามห้ามไม่ให้มือใหม่ใช้ RAID-Z1 และบ่นว่าพวกเขาเลือกมันหรือไม่

สิ่งเหล่านี้อาจดูเหมือนเป็นการพูดเล่นเล็กๆ น้อยๆ ที่ไม่มีนัยสำคัญ แต่เมื่อนำมารวมกันแล้ว สิ่งเหล่านี้จะส่ง ZFS กลับไปยังยุคกลางหลังจากใช้ Drobo, Synology หรือระบบจัดเก็บข้อมูลบนคลาวด์สมัยใหม่ ด้วย ZFS คุณต้อง "ซื้อดิสก์ ซื้อหน่วยความจำจำนวนมาก สร้างอาร์เรย์ RAID และไม่ต้องแตะต้องมันอีก" ซึ่งไม่เหมาะกับการใช้งานระบบจัดเก็บข้อมูลสมัยใหม่

มีตัวเลือกอะไรบ้าง?

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

Linux มีตัวจัดการโวลุ่มและระบบไฟล์ที่เหมาะสมอยู่สองสามตัว และส่วนใหญ่ใช้ LVM หรือ MD และ ext4 ผู้ใช้ระบบไฟล์รู้สึกตื่นเต้นมากกับ Btrfs ซึ่งรวมฟังก์ชันการทำงานของตัวจัดการโวลุ่มและระบบไฟล์แบบ ZFS แต่มีความยืดหยุ่นเพิ่มเติม นอกเหนือจากที่ ReiserFS ทำได้ และ Btrfs อาจกลายเป็น "ZFS สำหรับ Linux" ได้จริงๆ แต่การพัฒนาสะดุดเมื่อเร็วๆ นี้ หลังจากข้อผิดพลาดร้ายแรงของปีที่แล้วด้วยการสูญเสียข้อมูลจากการโจมตี RAID 5 และ 6 และแทบไม่มีใครได้ยินเกี่ยวกับสิ่งเหล่านั้นอีกเลย แต่ฉันยังคงคิดว่าในอีกห้าปีฉันจะแนะนำให้ผู้ใช้ Linux ใช้ Btrfs โดยเฉพาะอย่างยิ่งที่มีศักยภาพอันทรงพลังสำหรับการใช้งานในคอนเทนเนอร์

สำหรับ Windows นั้น Microsoft กำลังจะเปิดตัวระบบไฟล์รุ่นใหม่ของตัวเอง ReFS โดยใช้ B+ tree (คล้ายกับ Btrfs) พร้อมคุณสมบัติการปรับขนาดและความทนทานที่บ้าคลั่งและคุณสมบัติการปกป้องข้อมูล เมื่อรวมกับพื้นที่เก็บข้อมูลแล้ว Microsoft จะมีระบบจัดเก็บข้อมูลรุ่นใหม่สำหรับ Windows Server ที่สามารถใช้ SSD และ 3D-XPoint เป็นระดับหรือแคชได้

แล้วก็มี Apple ซึ่งมีข่าวลือว่าได้เปลี่ยนระบบจัดเก็บข้อมูลหลายครั้งก่อนที่จะตกลงกับ APFS ซึ่งออกมาในปีนี้ใน macOS High Sierra APFS มีความคล้ายคลึงกับ Btrfs และ ReFS หลายประการ แม้ว่าจะมีการใช้งานแตกต่างไปจากเดิมอย่างสิ้นเชิง โดยให้ความสำคัญกับผู้ใช้มากกว่า แม้ว่าจะด้อยกว่าในบางพื้นที่ (ข้อมูลผู้ใช้ไม่ได้รับการตรวจสอบและไม่รองรับการบีบอัด) APFS คือระบบที่คุณต้องการสำหรับ iOS และ macOS อย่างแน่นอน และ APFS ก็เป็นเล็บชิ้นสุดท้ายในโลงศพของแนวคิด "ZFS บน Mac OS X"

ขณะนี้ระบบปฏิบัติการหลักทั้งสามระบบมีระบบไฟล์รุ่นถัดไป (และตัวจัดการโวลุ่ม) Linux มี Btrfs, Windows มี ReFS และพื้นที่เก็บข้อมูล และ macOS มี APFS ดูเหมือนว่า FreeBSD ยังคงมุ่งมั่นกับ ZFS แต่นี่เป็นเพียงส่วนเล็กๆ ของตลาด และระบบระดับองค์กรทุกระบบก็มีความก้าวหน้าไปเกินกว่าที่ระบบระดับองค์กรที่ใช้ ZFS และ ZFS จาก Sun, Nexenta และ iXsystems สามารถทำได้แล้ว

แต่ ZFS ยังคงเหนือกว่าระบบไฟล์รุ่นเก่าสำหรับผู้ใช้ตามบ้านมาก เนื่องจากขาดการตรวจสอบความสมบูรณ์ ความซ้ำซ้อนและการกู้คืนข้อผิดพลาด NTFS (Windows), HFS+ (macOS) และ ext3/4 (Linux) จึงไม่เหมาะสำหรับการจัดเก็บข้อมูลระยะยาวโดยสิ้นเชิง และแม้แต่ ReFS และ APFS เนื่องจากขาดการตรวจสอบความสมบูรณ์ ก็ไม่เหมาะในกรณีที่ข้อมูลสูญหายเป็นสิ่งที่ยอมรับไม่ได้

ตำแหน่งของผู้แต่ง: ใช้ ZFS (ตอนนี้)

เป็นเรื่องน่าเศร้าที่ต้องพูด แต่ในปี 2560 ZFS เป็นระบบไฟล์ที่ดีที่สุดสำหรับการจัดเก็บข้อมูลขนาดใหญ่ในระยะยาว แม้ว่าบางครั้งอาจเป็นเรื่องยากที่จะใช้งาน (ยกเว้น FreeBSD, Solaris และอุปกรณ์เฉพาะ) ความน่าเชื่อถือและลักษณะที่ได้รับการพิสูจน์แล้วของ ZFS ทำให้ ZFS เป็นเครื่องมือเดียวที่น่าเชื่อถือสำหรับการจัดเก็บข้อมูลนอกระบบจัดเก็บข้อมูลขององค์กร ท้ายที่สุดแล้ว การจัดเก็บข้อมูลอย่างเชื่อถือได้เป็นสิ่งเดียวที่ระบบไฟล์ควรทำจริงๆ

ในโลกของระบบ *nix ระบบไฟล์ ZFS และ Btrfs กำลังได้รับความนิยมเพิ่มมากขึ้น ความนิยมนี้สมควรได้รับอย่างดี - ต่างจากรุ่นก่อนตรงที่พวกเขาไร้ปัญหาและมีข้อได้เปรียบที่ไม่อาจปฏิเสธได้มากมาย และเมื่อไม่นานมานี้พวกเขาได้รับสถานะที่มั่นคง ทั้งหมดนี้ทำให้ฉันต้องเขียนบทความนี้

คำเตือน!

คำสั่งบางคำสั่งที่อธิบายไว้ที่นี่สามารถทำลายข้อมูลของคุณอย่างถาวร ตรวจสอบอินพุตของคุณสามครั้งก่อนที่จะกด Enter

บางที ก่อนที่จะเริ่มฝึกฝน จำเป็นต้องอธิบายก่อนว่าระบบไฟล์รุ่นใหม่คืออะไร ฉันจะเริ่มต้นด้วย ZFS FS นี้ได้รับการพัฒนาสำหรับ Solaris และปัจจุบันถูกแยกออกเป็นเวอร์ชัน OpenZFS เนื่องจาก Oracle ได้ปิดซอร์สโค้ดแล้ว ในอนาคต ZFS จะถูกเรียกว่าทางแยก นี่เป็นเพียงคุณสมบัติหลักบางประการของ ZFS:

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

Btrfs เริ่มได้รับการพัฒนาเพื่อต่อต้าน ZFS โดย Oracle - ก่อนที่จะซื้อ Sun ด้วยซ้ำ ฉันจะไม่อธิบายคุณสมบัติของมัน - โดยทั่วไปแล้วจะคล้ายกันใน ZFS และ Btrfs ความแตกต่างจาก ZFS มีดังนี้:

  • รองรับเวอร์ชันไฟล์ (เรียกว่ารุ่นในคำศัพท์ Btrfs) - เป็นไปได้ที่จะดูรายการไฟล์ที่เปลี่ยนแปลงตั้งแต่สร้างสแน็ปช็อต
  • ขาดการรองรับ zvol ซึ่งเป็นอุปกรณ์บล็อกเสมือนที่คุณสามารถวางได้ เช่น พาร์ติชั่นสว็อป - แต่การขาดนี้ได้รับการชดเชยอย่างเต็มที่ด้วยอุปกรณ์ลูปแบ็ค

ขอแนะนำ ZFSonLinux

ในการติดตั้ง ZFSonLinux คุณจะต้องมีโปรเซสเซอร์ 64 บิต (เป็นไปได้ 32 บิต แต่นักพัฒนาไม่รับประกันความเสถียรในกรณีนี้) และด้วยเหตุนี้จึงต้องมีการกระจาย 64 บิตพร้อมเคอร์เนลอย่างน้อย 2.6.26 - ฉันใช้ Ubuntu 13.10. ควรมีหน่วยความจำเพียงพอ - อย่างน้อย 2 GB สันนิษฐานว่ามีการติดตั้งแพ็คเกจพื้นฐานที่จำเป็นสำหรับการสร้างและคอมไพล์โมดูลและเคอร์เนลแล้ว ดาวน์โหลดแพ็คเกจเพิ่มเติมและดาวน์โหลด tarball ที่จำเป็น:

$ sudo apt-get ติดตั้งคนต่างด้าว zlib1g-dev uuid-dev libblkid-dev libselinux-dev แยก lsscsi wget $ mkdir zfs && cd $_ $ wget http://bit.ly/18CpniI $ wget http://bit.ly/ 1cEzO0V

เราคลายไฟล์เก็บถาวรทั้งสองไฟล์ แต่ก่อนอื่นเราจะรวบรวม SPL - เลเยอร์ความเข้ากันได้ของ Solaris และเฉพาะ ZFS เท่านั้น ฉันทราบว่าเนื่องจากเรากำลังติดตั้ง ZFSonLinux เวอร์ชันล่าสุด DKMS (กลไกที่ช่วยให้คุณสร้างโมดูลเคอร์เนลปัจจุบันใหม่โดยอัตโนมัติด้วยไดรเวอร์อุปกรณ์หลังจากอัปเดตเวอร์ชันเคอร์เนล) จึงไม่พร้อมใช้งาน และหากเคอร์เนลได้รับการอัปเดต คุณจะต้อง ประกอบบรรจุภัณฑ์กลับเข้าไปใหม่ด้วยตนเอง

$ tar -xzf spl-0.6.2.tar.gz $ tar -xzf zfs-0.6.2.tar.gz $ cd spl-0.6.2 $ ./configure $ สร้าง deb-utils deb-kmod

ก่อนที่จะคอมไพล์ ZFS คุณต้องติดตั้งส่วนหัว และในเวลาเดียวกันเราจะติดตั้งแพ็คเกจที่เหลือที่คอมไพล์ใหม่:

$ sudo dpkg -i *.deb

ในที่สุด เราก็ประกอบและติดตั้ง ZFS:

$ cd ../zfs-0.6.2 $ ./configure $ ทำ deb-utils deb-kmod $ sudo dpkg -i *.deb


การถ่ายโอนระบบไฟล์รูทไปยัง ZFS ด้วยการเข้ารหัสและการสร้าง RAIDZ

สมมติว่าคุณต้องการระบบไฟล์ที่ปลอดภัย เข้ารหัส แต่ในขณะเดียวกันก็ทนทานต่อข้อผิดพลาด ในกรณีของระบบไฟล์รุ่นเก่าแบบคลาสสิก คุณจะต้องเลือกระหว่างการเข้ารหัสและความทนทานต่อข้อผิดพลาด เนื่องจากสิ่งเหล่านี้ค่อนข้างเข้ากันไม่ได้ อย่างไรก็ตาม ใน ZFS เป็นไปได้ที่จะ "ติด" พวกมันเข้าด้วยกัน การใช้งานระบบไฟล์ที่เป็นกรรมสิทธิ์ในปัจจุบันรองรับการเข้ารหัส การใช้งานแบบเปิดกับพูลเวอร์ชัน 28 ไม่รองรับสิ่งนี้ - แต่ไม่มีสิ่งใดป้องกันคุณจากการใช้ cryptsetup เพื่อสร้างโวลุ่ม LUKS (หรือหลายวอลุ่ม) และปรับใช้พูลที่อยู่ด้านบนสุด สำหรับความทนทานต่อข้อผิดพลาด ZFS รองรับการสร้างอาร์เรย์หลายดิสก์ เทคโนโลยีนี้เรียกว่า RAIDZ ตัวแปรที่หลากหลายช่วยให้สามารถอยู่รอดได้จากความล้มเหลวของดิสก์หนึ่งถึงสามตัวและเนื่องจากคุณสมบัติบางอย่างของ ZFS จึงปราศจากหนึ่งในข้อเสียพื้นฐานของอาร์เรย์ RAID แบบแถบ + พาริตี้แบบดั้งเดิม - ช่องโหว่การเขียน (สถานการณ์ที่มี RAID 5 / RAID 6 เมื่อระหว่างการดำเนินการบันทึกและปิดเครื่อง ข้อมูลในดิสก์จะแตกต่างออกไปในที่สุด)

ข้อมูล

การเข้ารหัสทำให้การประมวลผลข้อมูลช้าลง ไม่ควรใช้บนคอมพิวเตอร์รุ่นเก่า

แน่นอนว่าจะง่ายที่สุดหากคุณไม่มีระบบใดๆ ในกรณีนี้ คุณจะต้องกังวลน้อยลง แต่เราไม่ได้อยู่ในโลกอุดมคติ ดังนั้น ฉันจะบอกคุณถึงวิธีการถ่ายโอนระบบที่ติดตั้งไว้แล้วโดยไม่ต้องใช้พาร์ติชัน /boot ไปยังอาร์เรย์ RAIDZ ที่อยู่ด้านบนของวอลุ่ม LUKS

ก่อนอื่นคุณต้องสร้างพาร์ติชันนี้เอง - หากไม่มีพาร์ติชั่นนี้การถ่ายโอนจะเป็นไปไม่ได้เนื่องจากระบบจะไม่สามารถบู๊ตได้ เพื่อความง่าย สมมติว่ามีพาร์ติชันเดียวที่มี Ubuntu บนดิสก์ และเราต้องการสร้าง RAIDZ ระดับแรก (คล้ายกับ RAID 5 ต้องใช้อุปกรณ์อย่างน้อยสามเครื่อง แต่ฉันไม่เห็นประเด็นใน ทำ RAIDZ ระดับสูงกว่าที่บ้าน) ด้วยการใช้ตัวแก้ไขพาร์ติชั่นที่คุณต้องการ เราจะสร้างพาร์ติชั่นสองพาร์ติชั่น - พาร์ติชั่นหนึ่งมีขนาด 256–512 MB โดยที่ /boot จะอยู่ที่ และอีกพาร์ติชั่นหนึ่งที่มีขนาดไม่ต่ำกว่ารูทปัจจุบัน และเราจะทำซ้ำขั้นตอนสุดท้ายในทุกพาร์ติชั่น ฮาร์ดไดรฟ์สามตัว มาอ่านตารางพาร์ติชั่นอีกครั้งด้วยคำสั่ง

# ส่วนโพรบ /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309

และสร้างระบบไฟล์ (ext3) บนพาร์ติชั่นขนาดเล็ก:

# mke2fs -j /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309-part2 -L บูต

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

# cryptsetup -h=sha512 -c=aes-cbc-essiv:sha256 -s=256 -y luksFormat /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309-part3 # cryptsetup -h=sha512 -c=aes- cbc-essiv:sha256 -s=256 -y luksFormat /dev/disk/by-id/ata-VBOX_HARDDISK_VB2fdd0cb1-d6302c80-part1 # cryptsetup -h=sha512 -c=aes-cbc-essiv:sha256 -s=256 -y luksFormat /dev/disk/by-id/ata-VBOX_HARDDISK_VB781404e0-0dba6250-part1

การเชื่อมต่อวอลลุ่มที่เข้ารหัส:

# cryptsetup luksOpen /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309-part3 crypto0 # cryptsetup luksOpen /dev/disk/by-id/ata-VBOX_HARDDISK_VB2fdd0cb1-d6302c80-part1 crypto1 # cryptsetup luksOpen /dev/ ดิสก์/by- รหัส/ata-VBOX_HARDDISK_VB781404e0-0dba6250-part1 crypto2

และสร้างพูล ZFS:

# zpool สร้าง -o ashift=12 zroot raidz dm-name-crypto0 dm-name-crypto1 dm-name-crypto2

ต่อไป เราสร้างระบบไฟล์ที่ซ้อนกันสองระบบ:

# zfs สร้าง zroot/ROOT # zfs สร้าง zroot/ROOT/ubuntu-1310-root

มาถอนติดตั้งระบบไฟล์ ZFS ทั้งหมดและตั้งค่าระบบไฟล์และคุณสมบัติของพูล:

# zfs umount -a # zfs set mountpoint=/ zroot/ROOT/ubuntu-1310-root # zpool set bootfs=zroot/ROOT/ubuntu-1310-root zroot

ในที่สุด เราก็ส่งออกพูล:

# zpool ส่งออก zroot



การโยกย้ายและการกำหนดค่าระบบ

ขั้นแรก ให้คัดลอกไดเร็กทอรี /boot ไปยังพาร์ติชันที่ไม่ได้เข้ารหัส เพื่อให้คุณสามารถติดตั้ง bootloader ได้ที่นั่น:

# mkdir /mnt/boot # mount /dev/disk/by-label/boot /mnt/boot # cp -r /boot/* /mnt/boot/ # umount /mnt/boot

หลังจากนี้ เราจะย้ายด้วงไปยังพาร์ติชัน /boot แยกต่างหาก ซึ่งเราจะเพิ่มบรรทัดใน /etc/fstab

# <...>LABEL=ข้อผิดพลาด boot /boot ext3=remount-ro 0 0

เมานต์และสร้างการกำหนดค่าด้วงใหม่:

# grub-mkconfig -o /boot/grub/grub.cfg

หากต้องการตรวจสอบ ให้รีบูต หากทุกอย่างเรียบร้อยดี ให้ลบเนื้อหาเก่าของไดเร็กทอรี /boot โดยอย่าลืมถอดพาร์ติชันออกก่อน

ถึงเวลาโคลน Ubuntu แล้ว กระบวนการโคลนนิ่งทั้งหมดได้อธิบายไว้ในบทความฉบับเต็ม ซึ่งสามารถพบได้บนเว็บไซต์ ][ นอกจากนี้ ฉันจะพูดถึงรายละเอียดปลีกย่อยบางอย่างที่เกี่ยวข้องกับ ZFS ที่นี่ สำหรับการโหลดตามปกติจากพูล ZFS จำเป็นต้องมีสคริปต์ initramfs บางตัว โชคดีที่คุณไม่จำเป็นต้องประดิษฐ์มันขึ้นมา เพราะพวกมันอยู่บน GitHub ดาวน์โหลดที่เก็บ (การดำเนินการทั้งหมดดำเนินการใน chroot):

# โคลนคอมไพล์ http://bit.ly/1esoc8i

และคัดลอกไฟล์ไปยังตำแหน่งที่ต้องการ ฉันทำการเปลี่ยนแปลงเพียงอย่างเดียว: แทนที่จะติดตั้ง rpool pool ฉันติดตั้ง zroot ตอนนี้คุณต้องเขียน hostid ลงในไฟล์ /etc/hostid สิ่งนี้จำเป็นต้องดำเนินการเนื่องจาก ZFS ได้รับการย้ายจาก Solaris และเลเยอร์ความเข้ากันได้ต้องการ:

#hostid >/etc/hostid

ในที่สุด เราต้องสร้าง initramfs ไม่เคยใช้ update-initramfs มันจะเขียนทับไฟล์ที่มีอยู่ และหากเกิดปัญหา การบูตจากระบบปกติจะเป็นปัญหา ใช้คำสั่งแทน

# mkinitramfs -o /boot/initrd.img-$(uname -r)-crypto-zfs

ต้องติดตั้งพาร์ติชัน /boot

จากนั้นคุณจะต้องเพิ่มรายการเมนูลงในด้วง เนื่องจากการกำหนดค่าที่ค่อนข้างยุ่งยาก (สาม cryptovolumes ซึ่งด้านบนมีระบบไฟล์ที่ไม่ปกติสำหรับ Linux) สิ่งนี้จึงไม่สามารถทำได้ใน chroot ดังนั้นเราจึงออกจากมันไปยังระบบหลัก (สำหรับตอนนี้) และ เพิ่มบางอย่างเช่นบรรทัดต่อไปนี้:

# vi /etc/grub.d/40_custom menuentry "Ubuntu crypto ZFS" ( #<...>linux /vmlinuz-3.11.0-14-generic boot=zfs rpool=zroot initrd /initrd.img-3.11.0-14-generic-crypto-zfs )

เรารัน update-grub รีบูตเลือกรายการเมนูใหม่และชื่นชมยินดี

การปรับแต่ง ZFS และเทคนิคที่เป็นประโยชน์ด้วย Btrfs

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

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

ปิดใช้งานการเปลี่ยนแปลงเวลาการเข้าถึงไฟล์และปรับให้เหมาะสมสำหรับไดรฟ์ SSD

ดังที่คุณทราบ ในระบบ *nix ทุกครั้งที่คุณเข้าถึงไฟล์ เวลาในการเข้าถึงไฟล์จะเปลี่ยนไป สิ่งนี้กระตุ้นให้เกิดการบันทึกลงสื่อทุกครั้ง หากคุณทำงานกับหลายไฟล์พร้อมกันหรือมีไดรฟ์ SSD สิ่งนี้อาจไม่เป็นที่ยอมรับ บนระบบไฟล์แบบคลาสสิก หากต้องการปิดใช้งานการเขียน atime คุณต้องเพิ่มตัวเลือก noatime ให้กับตัวเลือกคำสั่ง mount หรือใน /etc/fstab ใน ZFS คำสั่งต่อไปนี้ใช้เพื่อปิดการใช้งาน (แน่นอน ในกรณีของคุณ FS อาจแตกต่างกัน):

# zfs ตั้งเวลา=ปิด zroot/ROOT/ubuntu-1310-root

ใน Btrfs นอกเหนือจากตัวเลือก noatime ที่กล่าวถึงข้างต้นแล้ว ยังมีตัวเลือก ssd และ ssd_spread ที่ปรับให้เหมาะสมยิ่งขึ้น โดยปกติแล้วอันแรกเริ่มต้นจากเคอร์เนล 2.6.31 จะถูกติดตั้งโดยอัตโนมัติส่วนอันที่สองมีไว้สำหรับไดรฟ์ SSD ราคาถูก (เพิ่มความเร็วในการทำงาน)

ZFS - การทำสำเนาไฟล์

เมื่อทำงานกับข้อมูลที่สำคัญมาก บางครั้งมีความคิดที่น่ากลัวว่าไฟดับหรือฮาร์ดไดรฟ์ตัวใดตัวหนึ่งไม่ทำงาน สิ่งแรกเป็นไปได้มากในเงื่อนไขของรัสเซีย และอย่างที่สองแม้ว่าจะไม่น่าเป็นไปได้ก็ตาม โชคดีที่นักพัฒนา ZFS ดูเหมือนจะพบสิ่งนี้มากกว่าหนึ่งครั้ง และเพิ่มตัวเลือกสำหรับการทำซ้ำข้อมูล ในกรณีนี้ หากเป็นไปได้ ไฟล์จะถูกวางไว้บนดิสก์อิสระ สมมติว่าคุณมี FS zroot/HOME/home-1310 เมื่อต้องการตั้งค่าสถานะการทำซ้ำ ให้พิมพ์คำสั่งต่อไปนี้:

# zfs ตั้งค่าสำเนา=2 zroot/HOME/home-1310

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

ปิดการใช้งานการติดตั้งอัตโนมัติใน ZFS

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

# zfs set canmount=noauto zroot/ROOT # zfs set canmount=noauto zroot

การบีบอัดข้อมูล

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

# zfs ตั้งค่าการบีบอัด=บน zroot/ROOT/var-log

ใน Btrfs เพื่อเปิดใช้งานการบีบอัด คุณต้องใส่ตัวเลือกการบีบอัดใน /etc/fstab

การสร้างสแน็ปช็อตอัตโนมัติใน ZFS

ดังที่คุณทราบ ZFS ช่วยให้คุณสร้างสแน็ปช็อตได้ อย่างไรก็ตาม การใช้ปากกาสร้างมันขึ้นมานั้นขี้เกียจ และมีโอกาสที่คุณจะลืมมันไป Solaris มีบริการ Time Slider เพื่อทำให้ขั้นตอนนี้เป็นอัตโนมัติ แต่กลับกลายเป็นหายนะ! - แม้ว่าจะใช้ฟังก์ชัน ZFS แต่ก็ไม่ได้เป็นส่วนหนึ่งของฟังก์ชัน ดังนั้นจึงไม่รวมอยู่ใน ZFSonLinux แต่ไม่ต้องกังวล: มีสคริปต์สำหรับสร้างสคริปต์เหล่านั้นสำหรับ Linux โดยอัตโนมัติด้วย มาดาวน์โหลดและตั้งค่าสิทธิ์ที่จำเป็น:

# wget -O /usr/local/sbin/zfs-auto-snapshot.sh http://bit.ly/1hqcw3r # chmod +x /usr/local/sbin/zfs-auto-snapshot.sh

ก่อนอื่น เรามาเปลี่ยนคำนำหน้าสำหรับสแนปชอตกันก่อน เนื่องจากโดยค่าเริ่มต้นแล้ว คำนำหน้าจะไม่ "บอก" เป็นพิเศษ เมื่อต้องการทำเช่นนี้ ให้เปลี่ยนพารามิเตอร์ opt_prefix ในสคริปต์จาก zfs-auto-snap เป็น snapshot ต่อไป เรามาตั้งค่าตัวแปรระบบไฟล์กัน:

# zfs set com.sun:auto-snapshot=true zroot/ROOT/ubuntu-1310-root # zfs set snapdir=visible zroot/ROOT/ubuntu-1310-root

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

ตอนนี้คุณสามารถสร้างสคริปต์ cron (/etc/cron.daily/autosnap) พิจารณากรณีนี้เมื่อคุณต้องการสร้างสแน็ปช็อตทุกวันและเก็บไว้เป็นเวลาหนึ่งเดือน:

#!/bin/bash ZFS_FILESYS="zroot/ROOT/ubuntu-1310-root" /usr/local/sbin/zfs-auto-snapshot.sh --quiet --syslog --label=daily --keep=31 " $ZFS_FILESYS"

หากต้องการดูสแน็ปช็อตที่สร้างขึ้น ให้ใช้คำสั่ง zfs list -t snapshot และหากต้องการกู้คืนสถานะ ให้ใช้ zfs rollback snapshot_name

ZFS - ตัวอย่างที่ซับซ้อน

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

# zfs สร้าง -o การบีบอัด=บน -o mountpoint=/usr zroot/ROOT/usr # zfs สร้าง -o การบีบอัด=on -o setuid=off -o mountpoint=/usr/local /zroot/ROOT/usr-local # zfs สร้าง -o การบีบอัด=on -o exec=off -o setuid=off -o mountpoint=/var/crash zroot/ROOT/var-crash # zfs สร้าง -o exec=off -o setuid=off -o mountpoint=/var /db zroot/ROOT/var-db # zfs create -o การบีบอัด=on -o exec=off -o setuid=off -o mountpoint=/var/log zroot/ROOT/var-log # zfs สร้าง -o การบีบอัด=gzip -o exec=off -o setuid=off -o mountpoint=/var/mail zroot/ROOT/var-mail # zfs สร้าง -o exec=off -o setuid=off -o mountpoint=/var/run zroot/ROOT/ var-run # zfs create -o exec=off -o setuid=off -ocopy=2 -o mountpoint=/home zroot/HOME/home # zfs สร้าง -o exec=off -o setuid=off -o สำเนา=3 -o mountpoint=/home/rom zroot/HOME/home-rom

การจัดเรียงข้อมูล Btrfs

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

# การจัดเรียงระบบไฟล์ btrfs /

บนเคอร์เนลรุ่นเก่า ขั้นตอนนี้จะลบสำเนา COW ทั้งหมด เช่น สแน็ปช็อตและข้อมูลที่ซ้ำซ้อน ดังนั้นหากคุณใช้พวกมันบนเคอร์เนลรุ่นเก่ากว่า 2.6.37 การจัดเรียงข้อมูลจะเป็นอันตรายต่อคุณเท่านั้น

RAID บน Btrfs

เช่นเดียวกับ ZFS Btrfs รองรับอาร์เรย์หลายวอลุ่ม แต่ไม่เหมือนกับ ZFS ที่ถูกเรียกแบบคลาสสิก อย่างไรก็ตาม ในขณะนี้ รองรับเฉพาะ RAID 0, RAID 1 และทั้งสองอย่างรวมกัน โดย RAID 5 ยังอยู่ในการทดสอบอัลฟ่า หากต้องการสร้างอาร์เรย์ RAID 10 ใหม่ เพียงใช้คำสั่งนี้ (กับอุปกรณ์ของคุณ):

# mkfs.btrfs /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

หากคุณต้องการแปลงระบบไฟล์ที่มีอยู่เป็น RAID แสดงว่ามีคำสั่งสำหรับสิ่งนี้:

# อุปกรณ์ btrfs เพิ่ม /dev/sdb1 /dev/sdc1 /dev/sdd1 / # ยอดคงเหลือ btrfs เริ่มต้น -dconvert=raid10 -mconvert=raid10 /

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

สแนปชอต Btrfs

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

# btrfs subvol snap -r / /.snapshots/2013-12-16-17-41

ข้อมูลเพิ่มเติมเกี่ยวกับการสร้างสแน็ปช็อตทั้งแบบแมนนวลและอัตโนมัติมีอยู่ในบทความ “ถุงลมนิรภัย” ซึ่งตีพิมพ์ใน ][ ฉบับเดือนเมษายน 2013 ที่นี่ฉันจะบอกคุณว่าหากคุณมีสแน็ปช็อต คุณสามารถติดตามว่าไฟล์ใดบ้างที่มีการเปลี่ยนแปลงนับตั้งแต่สร้างมันขึ้นมา เพื่อจุดประสงค์นี้ Btrfs มีสิ่งที่เรียกว่าการสร้างไฟล์ คุณลักษณะนี้ใช้เพื่อวัตถุประสงค์ภายใน แต่มีคำสั่งที่ให้คุณดูรายการการเปลี่ยนแปลงล่าสุด - เราจะใช้มัน ขั้นแรกเราจะค้นหาไฟล์รุ่นปัจจุบัน:

# btrfs subvol ค้นหาใหม่ / 99999999

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

# btrfs subvol ค้นหาใหม่ /.snapshots/2013-12-17-14-28 99999999

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

#btrfs subvol find-new/96 | awk "( พิมพ์ $17 )" | เรียงลำดับ | ยูนิค

NILFS2 เป็นระบบไฟล์อื่นที่รองรับ COW

เริ่มต้นด้วยเคอร์เนล 2.6.30 Linux ได้เพิ่มการรองรับ FS - NILFS2 อื่น ตัวย่อนี้ย่อมาจากการใช้งานใหม่ของระบบไฟล์ที่มีโครงสร้างบันทึก คุณสมบัติหลักของ FS นี้คือทุกๆ สองสามวินาที จุดตรวจจะถูกสร้างขึ้นโดยอัตโนมัติ - อะนาล็อกโดยประมาณของสแน็ปช็อตที่มีความแตกต่างอย่างหนึ่ง: หลังจากผ่านไประยะหนึ่งพวกเขาจะถูกลบโดยตัวรวบรวมขยะ อย่างไรก็ตาม ผู้ใช้สามารถแปลงจุดตรวจสอบให้เป็นสแน็ปช็อตได้ ซึ่งส่งผลให้ตัวรวบรวมขยะมองไม่เห็นหรือในทางกลับกัน ดังนั้น NILFS2 จึงถือเป็น "วิกิพีเดีย" ประเภทหนึ่งซึ่งมีการบันทึกการเปลี่ยนแปลงใดๆ เนื่องจากคุณสมบัตินี้ - การเขียนข้อมูลใหม่ที่ไม่ได้ทับข้อมูลที่มีอยู่ แต่ในบล็อกใหม่ - เหมาะสำหรับไดรฟ์ SSD ซึ่งอย่างที่คุณทราบไม่อนุญาตให้เขียนทับข้อมูล

ใช่ NILFS2 ไม่มีชื่อเสียงเท่ากับ ZFS หรือ Btrfs แต่ในบางกรณีการใช้งานจะมีความสมเหตุสมผลมากกว่า

บทสรุป

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

ในทางกลับกัน ไม่ว่า ZFS จะดีแค่ไหนก็ตาม ด้วยเหตุผลด้านลิขสิทธิ์ ZFS จึงไม่น่าจะรวมอยู่ในเคอร์เนล mainline เลย ดังนั้น คุณจะต้องใช้ Btrfs เว้นแต่คู่แข่งรายอื่นจะปรากฏขึ้น

เฟสบุ๊ค และ Btrfs

ในเดือนพฤศจิกายน 2013 Chris Mason หัวหน้าทีมพัฒนา Btrfs ย้ายไปที่ Facebook โจเซฟ บัตซิก ผู้ดูแลสาขา btrfs-next ก็ทำเช่นเดียวกัน พวกเขากลายเป็นส่วนหนึ่งของแผนกของบริษัทที่เชี่ยวชาญด้านการพัฒนาระดับต่ำ ซึ่งขณะนี้พวกเขากำลังทำงานบนเคอร์เนล Linux โดยเฉพาะอย่างยิ่ง พวกเขากำลังทำงานกับ Btrfs นักพัฒนายังระบุด้วยว่า Facebook สนใจในการพัฒนา Btrfs ดังนั้นชุมชนจึงไม่มีเหตุผลที่จะต้องกังวลอย่างแน่นอน

ทุกวันนี้ ระบบไฟล์ยุคถัดไปซึ่งมีฟังก์ชันการทำงานที่กว้างขวางกว่าระบบไฟล์ทั่วไป กำลังได้รับความนิยมมากขึ้นเรื่อยๆ ระบบไฟล์เหล่านี้บางส่วนคือ Btrfs และ ZFS ทั้งสองระบบมีความเสถียรอยู่แล้วและมีผู้ใช้ใช้งานอยู่ สำหรับผู้ใช้จำนวนมาก ความปลอดภัยของข้อมูลเป็นสิ่งสำคัญมาก และระบบไฟล์ดังกล่าวสามารถให้บริการได้อย่างดีที่สุด

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

ZFS คือระบบไฟล์ที่รวมกับตัวจัดการโลจิคัลวอลุ่ม ระบบไฟล์นี้เผยแพร่ภายใต้ Common Development and Distribution License (CDDL) แบบโอเพ่นซอร์ส ได้รับการออกแบบมาสำหรับเซิร์ฟเวอร์ประสิทธิภาพสูง ดังนั้นจึงรองรับสแน็ปช็อตและการโคลนข้อมูลอยู่แล้ว แต่หลังจากที่ Oracle ซื้อมัน ซอร์สโค้ดก็ถูกปิด และชุมชนได้สร้างทางแยกของเวอร์ชันล่าสุดที่มีอยู่ภายใต้ชื่อ OpenZFS นี่คือระบบไฟล์ที่สามารถติดตั้งและใช้งานได้แล้ว

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

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

การติดตั้ง ZFS

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

sudo apt ติดตั้ง -y zfs

ในการแจกแจงอื่น ๆ ตัวอย่างเช่น CentOS หรือ Fedora สถานการณ์มีความซับซ้อนกว่านี้เล็กน้อยก่อนอื่นคุณจะต้องเพิ่มพื้นที่เก็บข้อมูลอย่างเป็นทางการจากนั้นจึงติดตั้ง zfs และชุดยูทิลิตี้และโมดูลเคอร์เนลเอง:

sudo yum ติดตั้ง http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm
$ sudo yum ติดตั้ง zfs

สิ่งที่เหลืออยู่คือการเปิดใช้งานการโหลดโมดูลเคอร์เนลที่รองรับระบบไฟล์นี้:

sudo modprobe zfs

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

คำสั่ง zpool

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

ตัวเลือกอุปกรณ์พารามิเตอร์คำสั่ง $ zpool

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

  • เพิ่ม- เพิ่มส่วนลงในพูลที่มีอยู่
  • แนบ- เพิ่มพาร์ติชันหรือฮาร์ดไดรฟ์ลงในพูลระบบไฟล์
  • ทำความสะอาด- ล้างข้อผิดพลาดของดิสก์ทั้งหมด
  • สร้าง- สร้างพูลใหม่จากฟิสิคัลพาร์ติชันที่จะวางดิสก์เสมือน
  • ทำลาย- ลบพูลพาร์ติชัน zfs;
  • ถอดออก- ตัดการเชื่อมต่อฟิสิคัลพาร์ติชันจากพูล
  • เหตุการณ์ต่างๆ- ดูข้อความเคอร์เนลที่ส่งโดยโมดูล zfs
  • ส่งออก- ส่งออกพูลเพื่อถ่ายโอนไปยังระบบอื่น
  • รับ- ดูพารามิเตอร์พูล
  • ชุด- ตั้งค่าของตัวแปร
  • ประวัติศาสตร์- แสดงประวัติคำสั่ง zfs;
  • นำเข้า- พูลนำเข้า;
  • ไอโอสแตท- แสดงสถิติ I/O สำหรับพูล zfs ที่เลือก
  • รายการ- แสดงรายการพูลทั้งหมด
  • ออฟไลน์/ออนไลน์- ปิด/เปิดอุปกรณ์ทางกายภาพ ข้อมูลจะถูกบันทึกไว้ แต่ไม่สามารถอ่านหรือเปลี่ยนแปลงได้
  • ลบ- ถอดอุปกรณ์ออกจากสระ
  • แทนที่- ถ่ายโอนข้อมูลทั้งหมดจากอุปกรณ์เก่าไปยังเครื่องใหม่
  • ขัด- การตรวจสอบเช็คซัมสำหรับข้อมูลทั้งหมด
  • สถานะ- แสดงสถานะพูล

นี่คือตัวเลือกคำสั่งพื้นฐานทั้งหมดที่เราจะใช้ ตอนนี้เรามาดูตัวอย่างการตั้งค่า zfs และการจัดการพาร์ติชัน

วิธีการใช้งาน ZFS

การตั้งค่า ZFS ไม่ได้แตกต่างจาก Btrfs มากนัก ขั้นตอนพื้นฐานทั้งหมดนั้นง่ายมาก คุณจะเห็นเอง

การสร้างระบบไฟล์

อันดับแรก มาดูกันว่ามีพูล ZFS ที่สร้างไว้แล้วหรือไม่ เมื่อต้องการทำเช่นนี้ ให้เรียกใช้คำสั่งต่อไปนี้:

หากคุณกำลังติดตั้งระบบไฟล์นี้เป็นครั้งแรก จะมีรายการว่างอยู่ที่นี่ ตอนนี้เรามาสร้างพูลตามพาร์ติชันที่มีอยู่ เราจะใช้พาร์ติชัน /dev/sda6

sudo zpool สร้าง -f pool0 /dev/sda6

แม้ว่าคุณจะสามารถใช้ได้ไม่เพียง แต่พาร์ติชันเท่านั้น แต่ยังใช้ทั้งดิสก์ได้ ตอนนี้ดูรายการพูลอีกครั้ง:

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

sudo zpool สร้าง pool0 zraid /dev/sda /dev/sdb /dev/sdc

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

sudo zpool สร้างมิเรอร์ pool0 sda sdb

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

คุณสามารถเพิ่มฮาร์ดไดรฟ์หรือพาร์ติชันใหม่ลงในพูลได้:

sudo zpool แนบ pool0 /dev/sdd

หรือถอดอุปกรณ์ออกจากพูล:

sudo zpool แยก pool0 /dev/sdd

หากต้องการลบพูล ให้ใช้คำสั่ง destroy:

sudo zpool ทำลาย pool0

หากต้องการตรวจสอบข้อผิดพลาดของพาร์ติชัน ให้ใช้คำสั่ง scrub:

sudo zpool สครับพูล0

สถิติการใช้งานพูลสามารถดูได้โดยใช้คำสั่ง iostat:

sudo zpool iostat พูล0

ระบบไฟล์ ZFS

ตอนนี้คุณต้องสร้างระบบไฟล์บนพูลที่สร้างขึ้นใหม่ มาสร้างระบบไฟล์สามระบบ ข้อมูล ไฟล์และสื่อกันดีกว่า เมื่อต้องการทำเช่นนี้ ให้ใช้คำสั่ง zfs:

sudo zfs สร้าง pool0/data
$ sudo zfs สร้าง pool0/files
$ sudo zfs สร้าง pool0/media

การติดตั้ง ZFS

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

หรือคุณสามารถใช้คำสั่งนี้:

หากต้องการถอนติดตั้งระบบไฟล์สำหรับพาร์ติชันที่สร้างขึ้น ให้ใช้คำสั่ง zfs umount:

sudo zfs umount /pool0/data.sudo

จากนั้นคุณสามารถเมานต์กลับได้:

sudo zfs เมานต์ pool0/data

ตัวเลือกระบบไฟล์

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

sudo zfs รับ pool0/files ทั้งหมด

ขั้นแรก เรามาเปิดใช้งานการบีบอัด:

sudo zfs set Compression=gzip pool0/files

จากนั้นปิดการใช้งานการตรวจสอบความถูกต้อง:

sudo zfs set checksum=off pool0/files

ลองดูที่จุดเมานต์:

sudo zfs รับ mountpoint pool0/files

จากนั้นติดตั้งของเรา:

sudo zfs set mountpoint=/mnt pool0/files

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

สแนปชอต ZFS

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

sudo zfs สแน็ปช็อต pool0/files pool0/files@shot1

หากต้องการคืนค่าการใช้งาน:

sudo zfs ย้อนกลับ pool0/files@shot1

คุณสามารถดูรายการรูปภาพด้วยคำสั่ง:

รายการ sudo zfs -t สแน็ปช็อต

และหากต้องการลบรูปภาพที่ไม่จำเป็น:

sudo zfs ทำลาย pool0/files@shot1

ข้อสรุป

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

ระบบไฟล์ ZFS เป็นพื้นฐานสำหรับการจัดเก็บข้อมูลที่เชื่อถือได้และราคาไม่แพง

ในหน้าเว็บไซต์โครงการ หัวข้อการจัดการพื้นที่จัดเก็บไฟล์ได้กล่าวถึง:

  • ส่วนแรก
  • ส่วนที่สอง

ในบทความเหล่านี้มีการกล่าวถึงระบบไฟล์ แซฟเอสตอนนี้ตามที่สัญญาไว้ เรามาพูดถึงรายละเอียดเพิ่มเติมกันดีกว่า

ข้อมูลเบื้องต้นเกี่ยวกับ ZFS

คำย่อ แซฟเอสมาจากวลี zettabyte file system ซึ่งหมายถึงระบบไฟล์ที่ทันสมัยและก้าวหน้าที่สุดระบบหนึ่ง ตัวอย่างเช่นตามชื่อแล้วนี่คือเซตตะไบต์ ระบบไฟล์เพื่อให้แม่นยำยิ่งขึ้น FS นี้รองรับ 256 สี่ล้านล้านเซตตาไบต์ สำหรับการอ้างอิง หนึ่งเซตตะไบต์เท่ากับ 1,073,741,824 เทราไบต์!

ขอให้ผู้อ่านยกโทษให้ฉันด้วย แต่บทความนี้จะไม่มีข้อความทางวิชาการที่สำคัญ ฉันเสนอให้มุ่งความสนใจไปที่การปฏิบัติจริงโดยตรง กล่าวคือ การสร้างคลังข้อมูลที่ทนทานต่อข้อผิดพลาดและปรับขนาดได้ ที่เก็บข้อมูลดังกล่าวสร้างขึ้นโดยใช้เทคโนโลยีอาเรย์ RAID อย่างแน่นอน และระบบไฟล์ ZFS มีเครื่องมือมาตรฐานของตัวเองสำหรับการทำงานกับดิสก์จริงและจัดระเบียบให้เป็น RAID-Zอาร์เรย์ (คล้ายกับ RAID5) ยิ่งไปกว่านั้น ไม่เหมือนกับเทคโนโลยีที่คล้ายกัน FS นี้จะกู้คืนบล็อกที่เสียหายอย่างอิสระและแก้ไขได้ทันทีโดยที่ผู้ใช้ไม่ต้องดำเนินการใดๆ RAID-Z ตรวจสอบข้อมูลอย่างต่อเนื่องเพื่อรักษาความสมบูรณ์ของข้อมูลและสามารถระบุบล็อกที่ต้องมีการประกอบใหม่ สิ่งนี้เสร็จสิ้นก่อนที่ข้อมูลที่ร้องขอจะไปถึงผู้ใช้

ข้อได้เปรียบหลักของ FS นี้คือพื้นที่ดิสก์ไม่จำกัดในทางปฏิบัติและเครื่องมือในตัวสำหรับการสร้างอาร์เรย์ RAID-Z ที่ทนทานต่อข้อผิดพลาดซึ่งรวมถึง การบันทึกข้อมูลอะตอม- คำนี้หมายถึงสิ่งต่อไปนี้: ข้อมูลถูกเขียนลงดิสก์ทั้งหมดหรือไม่ได้เขียนเลย เทคโนโลยีนี้ช่วยให้คุณหลีกเลี่ยงปัญหาที่เกิดขึ้นในกรณีที่เครือข่ายขัดข้อง ระบบไฟฟ้าย่อย และระบบปฏิบัติการขัดข้อง

รองรับระบบปฏิบัติการ

ZFS ได้รับการพัฒนาโดย Sun Microsystems สำหรับระบบปฏิบัติการ Solaris ตอนนี้ ต้องขอบคุณหลายโปรเจ็กต์ที่ทำให้ระบบไฟล์นี้พร้อมใช้งานสำหรับระบบปฏิบัติการอื่นแล้ว ซึ่งรวมถึง - นอกเหนือจาก Solaris แล้ว ยังมี OpenSolaris, Apple Mac OS X 10.5, FreeBSD, Linux (ผ่าน FUSE หรือโมดูลเคอร์เนลแยกต่างหาก (ZFS บน Linux)) ทางเลือกของระบบปฏิบัติการเฉพาะสำหรับโครงการของคุณ หรือพูดง่ายๆ ก็คือการจัดเก็บไฟล์ก็ขึ้นอยู่กับคุณ แพร่หลายมากที่สุด ฟรีBSDและอนุพันธ์ - NAS4ฟรี

คุณสมบัติการออกแบบของระบบจัดเก็บข้อมูล

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

  • พื้นที่ดิสก์

ตามความต้องการและข้อกำหนดสำหรับปริมาณของที่เก็บข้อมูลที่สร้างขึ้น ปริมาณ ฮาร์ดดิสรุ่นต่างๆ รวมถึงประเภทการกำหนดค่า RAID-Z ฉันขอให้คำแนะนำสองสามข้อแก่คุณทันที:

— ความน่าเชื่อถือและประสิทธิภาพสูงสุดทำได้เมื่อใช้ฮาร์ดไดรฟ์รุ่นและผู้ผลิตเดียวกัน

— ไม่ควรวางระบบปฏิบัติการไว้ในที่เก็บข้อมูล ควรใช้ไดรฟ์ HDD/USB แยกต่างหาก

— จำนวนดิสก์ต้องสอดคล้องกับระบบ RAID-Z ที่เลือก

  • ตัวเลือก RAID-Z

อาร์เรย์ RAID-Z มีหลายประเภท แต่ตอนนี้เราจะมาดูสองประเภทที่ใช้งานได้จริงและเป็นที่นิยมมากที่สุด:

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

- raid-z2 - ในกรณีนี้จะมีการจัดสรรดิสก์ 2 แผ่นสำหรับการควบคุมพาริตี (ดิสก์ขั้นต่ำสำหรับการกำหนดค่านี้คือ 5) ระบบนี้ทนทานต่อข้อผิดพลาดมากขึ้น

  • ฮาร์ดไดรฟ์

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

  • ส่วนประกอบของระบบอื่นๆ

คุณควรเลือกเสื่อตามข้อกำหนดพื้นที่จัดเก็บของคุณ บอร์ด คอนโทรลเลอร์ พาวเวอร์ซัพพลาย และเคสเซิร์ฟเวอร์ที่สามารถขยายได้ เมื่อจัดระเบียบพื้นที่จัดเก็บข้อมูลระดับองค์กร คุณควรใช้เฉพาะ MB และ RAM พร้อม Parity Control (ECC)!

  • ความสามารถในการปรับขนาดของระบบ

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

มาสรุปกัน

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

ฉันขอสรุปข้อดีและคุณสมบัติของ ZFS โดยย่อ:

  • เครื่องมือในตัวสำหรับการทำงานกับพาร์ติชัน HDD และการจัดระเบียบ RAID-Z
  • ไม่มีการเชื่อมต่อกับอุปกรณ์
  • ไม่ไวต่อไฟฟ้าดับโดยไม่ได้วางแผน
  • การเปลี่ยน HDD ที่ล้มเหลวโดยอัตโนมัติ การแก้ไขข้อผิดพลาด และการสร้าง RAID ใหม่
  • รองรับวอลุ่ม ไฟล์ พูลขนาดใหญ่ รวมถึงความสามารถในการปรับขนาดพื้นที่จัดเก็บข้อมูลที่ง่ายดาย
  • การดูแลระบบ ZFS Pools ที่รวดเร็วและสะดวกสบาย
  • เมื่อ HDD เพิ่มขึ้น ประสิทธิภาพการจัดเก็บข้อมูลก็จะเพิ่มขึ้น
  • การขจัดข้อมูลซ้ำซ้อนและการบีบอัดข้อมูล

ข้อเสียของระบบไฟล์นี้คือ:

  • ความต้องการสูงสำหรับทรัพยากร CPU และ RAM
  • พื้นที่จัดเก็บข้อมูลที่ใช้สำหรับข้อมูลองค์กรที่สำคัญจะต้องสร้างโดยใช้ ECC RAM

บทความถัดไปจะใช้งานได้จริง - การทำงานกับดิสก์การสร้างและการจัดการพูลข้อมูล



 


อ่าน:



รูปแบบแป้นพิมพ์ QWERTY และ AZERTY แป้นพิมพ์ Dvorak เวอร์ชันพิเศษ

รูปแบบแป้นพิมพ์ QWERTY และ AZERTY แป้นพิมพ์ Dvorak เวอร์ชันพิเศษ

เป้าหมายของรูปแบบแป้นพิมพ์ที่มีอยู่ทั้งหมดคือการเพิ่มความเร็วและความสะดวกในการพิมพ์ข้อความของเครื่อง เลย์เอาต์ถูกสร้างขึ้นด้วยจิตวิญญาณนี้...

เกาะเซาวิเซนเต เกาะเซาวิเซนเต

เกาะเซาวิเซนเต เกาะเซาวิเซนเต

แหลมซานวินเซนเต (Cabo de São Vicente) เป็นจุดตะวันตกเฉียงใต้สุดของยุโรปและเป็นสถานที่ที่น่าสนใจมาก หน้าผาสูงชัน...

กฎที่เราฝ่าฝืน สามารถวางข้อศอกบนโต๊ะได้หรือไม่?

กฎที่เราฝ่าฝืน สามารถวางข้อศอกบนโต๊ะได้หรือไม่?

อย่าวางข้อศอกบนโต๊ะ อย่าพูดคุยขณะเคี้ยวอาหาร พ่อแม่ของเราบอกเราเกี่ยวกับกฎเหล่านี้ทั้งหมดในวัยเด็ก และกฎหลายข้อเหล่านี้เรา...

แฟลชไดรฟ์ USB ใดที่น่าเชื่อถือและเร็วที่สุด?

แฟลชไดรฟ์ USB ใดที่น่าเชื่อถือและเร็วที่สุด?

บ่อยครั้งในฟอรัมหลายคนถามเกี่ยวกับวิธีการเลือกแฟลชไดรฟ์และพารามิเตอร์ใดที่คุณควรใส่ใจเพื่อที่จะซื้อ...

ฟีดรูปภาพ อาร์เอสเอส