สามารถติดตั้งดิสก์ ext4 เดียวกันจากสองโฮสต์ได้เพียงเครื่องเดียวหรือไม่


17

ฉันรู้ว่าการติดตั้งดิสก์เดียวกันกับระบบไฟล์ ext4 จากเซิร์ฟเวอร์ที่แตกต่างกันสองตัว (เป็น iSCSI vloume) จะทำให้ข้อมูลเสียหายบนดิสก์ คำถามของฉันจะสร้างความแตกต่างหรือไม่หากเซิร์ฟเวอร์ตัวใดตัวหนึ่งเมานต์ดิสก์แบบอ่านอย่างเดียวในขณะที่อีกอันนั้นเมานต์แบบอ่าน - เขียน

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


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

@frostschutz ใช่แล้ว ro ทั้งสองจะทำงานได้ แต่ไม่มีเล่ห์เหลี่ยมเนื่องจาก ro-mount ของ ext4 จะเขียนลงดิสก์จริง (ต้องการ ro-loop และ overlayfs แต่ละอัน)
Ned64

ฉันจะแบ่งปันกรณีการใช้งานที่นี่: ฟิสิคัลเซิร์ฟเวอร์และเซิร์ฟเวอร์เสมือนกำลังแชร์ฟิสิคัลดิสก์กับการส่งผ่านดิสก์ เซิร์ฟเวอร์เสมือนกำลังเมานต์ดิสก์เป็น rw ฉันต้องการคัดลอกข้อมูลจำนวนมากจากดิสก์ แต่เครือข่ายช้าเกินไป มันจะดีมากถ้าฉันสามารถเมานดิสก์ทางกายภาพเหมือนกับ ro ในโฮสต์ระบบปฏิบัติการและคัดลอกข้อมูลไปยังไดรฟ์ USB ภายนอก โฮสต์เซิร์ฟเวอร์มีคอนโทรลเลอร์ USB เพียงตัวเดียวดังนั้น PCI-passthrough จึงไม่ใช่ตัวเลือก
Zhuoyun Wei

คำตอบ:


26

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

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


5
อย่างที่คุณพูดการติดตั้งแบบอ่านอย่างเดียวไม่รับประกันว่าระบบไฟล์จะไม่ถูกแตะต้อง หากคุณยังคงต้องการที่จะลองเพื่อวัตถุประสงค์ "การศึกษา" โดยไม่คำนึงถึงความเสี่ยงที่คุณควรตั้งค่าของอุปกรณ์blockdev --setro /dev/sda1อ่านได้อย่างเดียว:
Totor

ข้อมูลที่น่าสนใจเกี่ยวกับ ext4 mount ฉันคิดว่าสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการบังคับให้เมานต์อ่านอย่างเดียว ext2?
Bananguin

1
ฉันพบข้อมูลโค้ดนี้ซึ่งให้ฉันติดตั้งอุปกรณ์บล็อกแบบอ่านอย่างเดียวใน VM: sudo mount -t ext4 -o ro,loop,noload /dev/vda /mnt/ digital-forensics.sans.org/blog/2011/06/14/…
isaaclw

0

สิ่งนี้จะหลีกเลี่ยงความเสียหายของข้อมูล แต่อาจจะไม่ใช่สิ่งที่คุณต้องการทำ ฉันไม่เคยสังเกตเห็นปัญหาใด ๆ ที่ติดตั้งไดรฟ์ข้อมูลแบบอ่านอย่างเดียวบนโหนดอื่น แม้ว่าสิ่งที่ไม่ตรงกับโหนด ro มักจะเพียงแค่ "inode ฟรีที่ไม่คาดคิดโปรดเรียกใช้ e2fsck" หรือสิ่งที่ชอบลงใน / var / log / ข้อความ หากสิ่งที่คาดไม่ถึงอย่างน่ากลัวเกี่ยวกับระบบไฟล์ที่ไม่สำคัญ ("/ opt / mySpecialmount") โดยปกติแล้ว Linux จะเพิ่งติดตั้งไดรฟ์ข้อมูลแบบอ่านอย่างเดียว หากคุณกังวลอย่างมากเกี่ยวกับการแคชเอฟเฟกต์คุณสามารถลองใช้ระบบ drop_caches / vfs_cache_pressure

เพื่อหลีกเลี่ยงการเล่นซ้ำเจอร์นัลเพิ่ม "noload" ลงในเมานต์ args ให้ทำพร้อมกับข้อผิดพลาด = remount-ro (เพื่อทำผิดด้านความระมัดระวัง)

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


1
" นี้จะหลีกเลี่ยงความเสียหายของข้อมูล ": มันอาจจะไม่ได้ดูคำตอบ sourcejedi และความคิดเห็นของฉัน
Totor

1
"กระโดดข้าม replay วารสารจะนำไปสู่ระบบแฟ้มที่มีความไม่สอดคล้องกันที่สามารถนำไปสู่จำนวนของปัญหาใด ๆ" man mount- ฉันสามารถจินตนาการได้ว่ามีแอปพลิเคชันที่จะตรวจจับและ / หรือทนต่อข้อมูลที่ไม่สอดคล้องกันในไฟล์ของพวกเขา แต่คุณยังไม่ได้พูดถึงข้อแม้ใด ๆ :)
sourcejedi

@sourcejedi พวกเขาพูดอย่างนั้นเพราะพวกเขากำลังพยายามบอกความเสี่ยงของการกีดกันวารสารได้อย่างมีประสิทธิภาพ ไม่เป็นไรเพราะข้อสันนิษฐานคือโหนดอื่นจะทำวารสารให้ทำงานสำหรับโหนดอื่นเราแค่พยายามหลีกเลี่ยงการทำงานซ้ำซ้อน เราทำสิ่งนี้ในหนึ่งในเซิร์ฟเวอร์การพัฒนาของเรา (ไม่ใช่ตัวเลือกของฉันฉันจะทำ NFS) และมีสิ่งที่ติดตั้งโดยไม่มีแม้แต่ drop_caches สำหรับใกล้ปีโดยไม่มีปัญหาใด ๆ เลย เราทั้งคู่กล่าวว่ารายการแคช FS ที่ไม่เก่าสามารถแสดงข้อมูลเก่าได้ แต่ในที่สุดมันก็ขึ้นอยู่กับผู้ดูแลระบบในการตัดสินใจว่าสิ่งนี้สามารถใช้งานได้หรือไม่
Bratchley

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

1
มองย้อนกลับไปที่ความคิดเห็นของคุณฉันคิดว่าคุณอาจพยายามอ้างอิงถึงการแคชระดับบล็อกซึ่งเป็นการแคชอุปกรณ์บล็อก I / O ในหน่วยความจำ ในกรณีนี้ไม่ใช่การแคชที่เกิดขึ้นในข้อมูลเมตาเอง แต่เป็นการแคชของข้อมูลเมตาเอง นอกจากนี้ยังมีอยู่นอกไดรเวอร์ระบบไฟล์ใด ๆ ดังนั้น ext4 / btrfs / etc ไม่มีการจัดการใด ๆ
Bratchley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.