ระบบไฟล์รูท Xen DomU กลายเป็นแบบอ่านอย่างเดียวบนการล้มเหลว IP เสมือนของ iSCSI


9

เซิร์ฟเวอร์ Xen ของฉันคือ openSUSE 11.1 พร้อม open-iscsi ไปยังคลัสเตอร์ iSCSI SAN ของเรา โมดูล SAN อยู่ในกลุ่ม IP failover หลัง IP เสมือนที่ผู้เริ่มต้นเชื่อมต่อ

ในกรณีที่เซิร์ฟเวอร์ SAN หลักหยุดทำงานรองจะหยิบบทบาทการให้บริการเป็นเป้าหมาย ทั้งหมดนี้จัดการโดยซอฟต์แวร์ LeftHand SAN / iQ และทำงานได้ดีในสถานการณ์ส่วนใหญ่

ปัญหาที่ฉันมีคือบางครั้ง Xen DomUs ของฉันบางคนจะมีระบบไฟล์รูทของพวกเขาอ่านได้อย่างเดียวหลังจากที่ IP ล้มเหลว มันไม่สอดคล้องกันและเกิดขึ้นกับเซตย่อยที่แตกต่างกันในแต่ละครั้งที่เกิดความล้มเหลว พวกเขากำลังเรียกใช้อิมเมจซอฟต์แวร์ openSUSE 11.1 เดียวกันทั้งหมด

ระบบไฟล์รูทสำหรับแต่ละ DomU ถูกเมาท์โดย open-iscsi ใน Dom0 จากนั้น Xen ใช้ไดรเวอร์อุปกรณ์บล็อกมาตรฐานเพื่อแสดงมันไปยัง DomU

อาการที่แน่นอนก็คือในฐานะที่รูทขณะที่ทำงานอยู่touch /testจะส่งกลับข้อผิดพลาด "ระบบไฟล์แบบอ่านอย่างเดียว" อย่างไรก็ตามเอาต์พุตของmountแสดงว่าถูกเมานต์อ่าน - เขียน แน่นอนว่า I / O อื่น ๆ ทั้งหมดใน domU ก็ล้มเหลวเช่นกันในขณะนี้ดังนั้นเครื่องจึงทำงานหนัก เพียงเริ่มต้นใหม่ด้วยxmจาก Dom0 โดยไม่ต้องเชื่อมต่อเซสชัน iSCSI อีกครั้งทำให้ทุกอย่างทำงานได้อีกครั้ง

ที่ด้าน Dom0 ข้อความ syslog ในระหว่างการล้มเหลวมีลักษณะดังนี้:

kernel: connection1:0: iscsi: detected conn error (1011)
iscsid: Kernel reported iSCSI connection 1:0 error (1011) state (3)
iscsid: connection1:0 is operational after recovery (1 attempts) 

ฉันมีเวลายากที่จะหาว่าเลเยอร์ใดที่จะแก้ไขปัญหานี้มันเป็นสิ่งที่อยู่ในเคอร์เนล DomU หรือไม่? หรือที่ระดับ Dom0 หรือ Xen ฉันคิดว่ามีบางพารามิเตอร์ที่ต้องการปรับแต่งเพื่อเพิ่มการหมดเวลาบางประเภท แต่ฉันไม่แน่ใจว่าจะดูที่ไหน

ฉันไม่คิดว่ามันเป็นปัญหาของ open-iscsi เพียงเพราะอุปกรณ์บล็อกที่เชื่อมต่อนั้นยังคงสามารถอ่านและเขียนได้จาก Dom0

คำตอบ:


6

ในที่สุดฉันก็แก้ปัญหานี้โดยใช้คำแนะนำและการตั้งค่าต่อไปนี้จากเอกสาร open-iscsi:

8.2 iSCSI settings for iSCSI root
---------------------------------

When accessing the root parition directly through a iSCSI disk, the
iSCSI timers should be set so that iSCSI layer has several chances to try to
re-establish a session and so that commands are not quickly requeued to
the SCSI layer. Basically you want the opposite of when using dm-multipath.

For this setup, you can turn off iSCSI pings by setting:

node.conn[0].timeo.noop_out_interval = 0
node.conn[0].timeo.noop_out_timeout = 0

And you can turn the replacement_timer to a very long value:

node.session.timeo.replacement_timeout = 86400

หลังจากตั้งค่าการเชื่อมต่อกับ LUN แต่ละตัวตามที่อธิบายไว้ข้างต้นความล้มเหลวจะทำงานได้อย่างมีเสน่ห์แม้ว่าจะใช้เวลาหลายนาทีกว่าจะเกิดขึ้น


1
ฉันมีปัญหาเดียวกันกับ mysql prod db นั่งบนไดรฟ์ข้อมูล iscsi มีข้อผิดพลาดเดียวกันใน / var / log / ข้อความและระบบไฟล์ที่อยู่ในโหมดอ่านอย่างเดียว เคล็ดลับนี้แก้ปัญหาได้แล้ว
RainDoctor

2

ดูเหมือนว่าปัญหากับตัวเริ่ม iSCSI ที่เรียกใช้บน dom0 ผู้เริ่มต้นไม่ควรส่ง SCSI ที่ล้มเหลวในสแต็กอย่างรวดเร็ว คุณอาจต้องการตั้งค่า ConnFailTimeout ใน iscsi.conf นี่เป็นการตั้งค่าที่กำหนดระยะเวลาก่อนที่จะพิจารณาว่ามีข้อผิดพลาดในการเชื่อมต่อเกิดข้อผิดพลาดและส่งข้อผิดพลาดนั้นขึ้นในสแต็ก SCSI

ฉันต้องดูด้วยว่าการล้มเหลวนั้นใช้เวลานานแค่ไหนมันอาจใช้เวลานานกว่าที่คุณคาดไว้ ถ้าเป็นเช่นนั้น VIP ล้มเหลวอาจใช้เวลานานเกินไปเนื่องจากปัญหาที่เกี่ยวข้องกับ ARP


ฉันคิดว่านี่เป็นสิ่งที่ฉันต้องการ
Kamil Kisiel

0

มีข้อความใด ๆ ใน dom0 ที่ระบุถึงข้อผิดพลาดในการอ่าน / เขียนหรือข้อผิดพลาดของ scsi ในขณะที่เกิดความล้มเหลวหรือไม่? ถ้าเป็นเช่นนั้นดูเหมือนว่าข้อผิดพลาดในการเขียนนี้กำลังถูกส่งไปยัง domU domU ไม่ "รู้" ว่าเป็นอุปกรณ์ iSCSI ดังนั้นมันจึงทำตัวราวกับว่าแผ่นดิสก์ต้นแบบหายไปแล้วและติดตั้งระบบไฟล์แบบอ่านอย่างเดียว (ดู manpage (1) - errors=continue / errors=remount-ro / errors=panic)

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

คุณพูดถึงว่า "I / O อื่น ๆ ทั้งหมดล้มเหลว" ในเวลานี้ - คุณหมายถึง domU หรือ dom0 หรือไม่

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


อัปเดตคำอธิบายดั้งเดิมพร้อมคำตอบสำหรับคำถามของคุณ ฉันคิดว่าฉันสามารถค้นหา multipathing แทนได้ แต่ระบบนั้นเหมาะสำหรับการ failover IP เสมือนในรูปแบบปัจจุบันมากกว่า ฉันไม่แน่ใจว่าวิธีการเรพลิเคทระดับบล็อกจะมาพร้อมกับการเล่นหลายแบบโดยเฉพาะอย่างยิ่งเนื่องจากหนึ่งในหน่วย SAN จำเป็นต้องมีการกำหนดหลัก ขอบคุณที่ชี้นำฉันไปยังส่วนที่เกี่ยวกับระบบไฟล์ ฉันคิดว่ามันค่อนข้างอธิบายได้ ฉันคิดว่าฉันสามารถลองเปลี่ยนเป็นโหมด 'ดำเนินการต่อ' หรืออาจดูการเปลี่ยนระบบไฟล์เป็นสิ่งที่ยืดหยุ่นกว่าเช่น XFS
Kamil Kisiel

1
ไม่มีอะไรที่ไม่ดีเกี่ยวกับ ext3 โดยเนื้อแท้ - คุณจะมีปัญหาคล้ายกับ XFS และฉันจะไม่แนะนำให้ใช้ onerror = ดำเนินการต่อ - ระบบจะเชื่อว่าบล็อกนั้นไม่สามารถอ่านได้และคุณจะสูญเสียข้อมูล Multipathing ไม่ได้ทำการมิเรอร์ - คุณไม่จำเป็นต้องกังวลเกี่ยวกับการจำลองแบบใด ๆ บนโฮสต์ คุณจะเชื่อมต่อผ่าน iSCSI กับทั้งเป้าหมายหลักและเป้าหมายรองและโฮสต์จะรู้ว่าหากต้นแบบล้มเหลวไม่ส่งข้อผิดพลาดขึ้นสแต็ก แต่ลองใช้คำสั่งเดียวกันกับเป้าหมายรอง
MikeyB

ความคิดเห็นของฉันเกี่ยวกับการจำลองแบบเกี่ยวกับข้อเท็จจริงที่ว่าเซิร์ฟเวอร์ SAN สองเครื่องจำเป็นต้องซิงโครไนซ์ข้อมูล ภายในฉันคิดว่าระบบทำงานคล้ายกับ drbd โดยมีหนึ่งในหน่วย (อันที่ปัจจุบันมี VIP) เป็นหลัก มันอาจใช้งานได้หลายแบบ แต่ฉันอยากจะแก้ปัญหานี้โดยไม่เปลี่ยนจากสถาปัตยกรรมปัจจุบัน ควรมีวิธีที่จะทำให้การทำงานนี้เป็นอย่างอื่นระบบของฉันที่ติดตั้งไดรฟ์ข้อมูล iSCSI โดยตรงไม่เคยมีปัญหากับไดรฟ์ข้อมูลแบบอ่านอย่างเดียว
Kamil Kisiel

-1

อืม ... ปัญหาส่วนหนึ่งก็คือคุณไม่ได้ทำงาน / เป็น RO แนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุดคุณควรมีเมานต์ "/" และระบบไฟล์ใด ๆ ที่ต้องการ rw ควรถูกเมาท์แยกต่างหาก (เช่น / var และ / tmp) หากมีไดเร็กทอรีภายใต้ / etc ที่จำเป็นต้องมีการเขียนควรย้ายไปยัง / var / etc / path และเชื่อมโยงไปยัง / etc

"/" ควรติดตั้ง RW ในโหมดผู้ใช้คนเดียวเท่านั้น

การตั้งค่าในแบบนี้สามารถป้องกัน segfault ในสถานการณ์ข้างต้นเมื่อรวมกับคำแนะนำอื่น ๆ


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