มันขึ้นอยู่กับว่าคุณต้องการให้พูลอ่านเป็นอย่างไร และไม่ใช่นั่นไม่ใช่เรื่องตลก
ก่อนอื่นคำศัพท์เล็กน้อย: ใน ZFS คุณจะนำเข้ากลุ่มและเลือกที่จะติดตั้งระบบไฟล์ (ใด ๆ ) ที่อยู่ภายใน คุณสามารถนำเข้าสระว่ายน้ำโดยไม่ต้องติดตั้งระบบไฟล์ใด ๆ โดยผ่าน-N
ไปzpool import
แล้วภายหลังการติดตั้งระบบไฟล์ใด ๆ zfs mount
ที่ต้องการใช้ (นี่เป็นสถานการณ์สมมติที่สมบูรณ์แบบถ้าเช่นคุณต้องการเข้าถึงระบบไฟล์เดียวจากหลาย ๆ ระบบหรือถ้าคุณต้องการทำบางสิ่งที่คล้ายกับการขัดออฟไลน์ของพูล)
ZFS ไม่ใช่แฟนตัวยงของการเข้าถึงแบบอ่านอย่างเดียว ตัวอย่างเช่นหาก ZFS ตรวจพบข้อผิดพลาดที่สามารถซ่อมแซมได้ฉันเชื่อว่ามันจะซ่อมแซมข้อผิดพลาดและเขียนข้อมูลที่ได้รับการซ่อมแซมไปยังดิสก์แม้ว่าคุณจะนำเข้ากลุ่มเป็นแบบอ่านอย่างเดียว ความเข้าใจของฉันคือว่าใน ZFS parlace "อ่านอย่างเดียว" จะใช้กับสถานะที่ผู้ใช้มองเห็นได้ของพูลและชุดข้อมูล หากคุณทำสำเนาไบนารีของดิสก์ไปยังไฟล์ (หรือชุดของไฟล์) ทำให้ไฟล์เหล่านั้นอ่านได้อย่างแท้จริงเท่านั้นและพยายามนำเข้าพูลจากที่นั่น ZFS จะไม่สามารถนำเข้า ไม่ว่าคุณจะพยายามมากแค่ไหน หากคุณทำให้ไฟล์เขียนได้มันจะทำงานได้ดี (จริง ๆ แล้วฉันพยายามทำสิ่งนี้เมื่อไม่กี่สัปดาห์ที่ผ่านมาถึงแม้ว่าจะใช้ zvol และ ZFS ก็ปฏิเสธอย่างรุนแรงเพื่อนำเข้าพูล เมื่อฉันตั้งค่า zvol ให้อ่าน / เขียนแทนการอ่านอย่างเดียวพูลนำเข้าได้ดี) ระบบไฟล์อื่น ๆ เช่น (บน Linux) ext4 และคนอื่น ๆ อาจจัดการกับสถานการณ์นี้ได้อย่างสวยงาม แต่ ZFS balks
หากคุณเป็นผู้โชคร้ายและไม่ได้มี ECC RAMที่ติดตั้งในระบบที่คุณกำลังนำเข้าสระว่ายน้ำแล้ว ZFS' ความพยายามที่จะแก้ไขข้อผิดพลาดใด ๆ ก็เจอจริงอาจทำให้สิ่งเลวแม้จะมีความคิดเห็นที่แตกต่างกันกับว่านี้เป็นจริงความเสี่ยงที่แท้จริง ในทางปฏิบัติ โดยส่วนตัวแล้วฉันเห็นว่าข้อมูลใด ๆ ที่ฉันสนใจเพียงพอที่จะปกป้องด้วย ZFS และสแน็ปช็อตและการสำรองและสำรองข้อมูลในระดับที่เก็บข้อมูลและสิ่งที่ไม่ควรได้รับการปกป้องจาก ECC RAM เช่นกัน แต่พีซีจำนวนมากไม่มี ECC RAM
ดังนั้นคุณสามารถนำเข้าพูลในโหมดอ่านอย่างเดียวโดยมีรูตสำรองที่เฉพาะเจาะจงเพื่อป้องกันไม่ให้เหยียบนิ้วเท้าอื่น แต่คุณต้องระวังว่าไม่จำเป็นต้องอ่านอย่างเดียวจริงๆ (มันจะได้ แต่ให้แน่ใจว่าคุณไม่ได้ตั้งใจเปลี่ยนแปลงอะไรในสระว่ายน้ำ.) โดยให้ทำการนำเข้าอ่านอย่างเดียวสมมติว่าสระว่ายน้ำเป็นชื่อtank
และที่โหนดอุปกรณ์ (s) / อยู่ในที่มีอยู่/dev
คุณจะ ใช้คำสั่งเช่น:
# zpool import tank -d /dev -o readonly=on -R /mnt/someplace
นี้จะมองใน/dev
สิ่งใดถือ ZFS สระว่ายน้ำที่มีชื่อtank
, นำเข้าชั่วคราวตั้งค่าคุณสมบัติสระว่ายน้ำreadonly
ไปon
(ซึ่งหมายความว่าทุกการเขียนโดยผู้ใช้จะถูกปฏิเสธ) และการตั้งค่าชั่วคราวของคุณสมบัติการaltroot
/mnt/someplace
(ค่าคุณสมบัติเหล่านี้เป็น "ชั่วคราว" ในแง่ที่ว่าพวกเขาจะไม่คงอยู่กับดิสก์เป็นค่าคุณสมบัติปัจจุบันดังนั้นหากคุณส่งออกและนำเข้าพูลอีกครั้งโดยไม่มีค่าเหล่านั้นค่าจะกลับสู่ปกติ อาจถูกเขียนลงในประวัติพูลแม้ว่าเมื่อนำเข้าพูลแล้วคุณสามารถดูได้zpool history tank
หากคุณเอียงมาก) เมื่อนำเข้าพูลคุณจะเห็นไฟล์ของคุณภายใต้ / mnt / someplace และมีการเข้าถึงแบบอ่านอย่างเดียวตามปกติรวมถึงสแน็ปช็อตใด ๆ ที่ทำบนชุดข้อมูลในพูลแล้ว
จากตัวอย่างของคุณฉันสงสัยว่าคุณจะใช้บางอย่างตามแนวของ:
# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint
เมื่อเสร็จแล้วอย่าลืมส่งออกกลุ่มข้อมูลให้สะอาด:
# zpool export tank
หรือบางที
# zpool export zroot02
ซึ่งจะถอนติดตั้งระบบไฟล์และชุดข้อมูลอื่น ๆ ภายในพูลล้างบัฟเฟอร์ทั้งหมด (เท่าที่จำเป็นต้องมีการฟลัชในตอนแรก) ทำเครื่องหมายพูลว่าไม่ได้อิมพอร์ตบนอุปกรณ์ที่เป็นส่วนประกอบทั้งหมดและดำเนินการดูแลทำความสะอาดอื่น ๆ ที่จำเป็น สามารถย้ายพูลไปยังระบบอื่นได้อย่างปลอดภัยและนำเข้าที่นั่นในภายหลัง