คุณจะเมานต์ read3 แบบ ext3 fs อีกครั้งหลังจากที่มันถูกเมาท์แบบอ่านอย่างเดียวจากข้อผิดพลาดของดิสก์


18

เป็นปัญหาที่ค่อนข้างบ่อยเมื่อมีสิ่งผิดปกติใน SAN สำหรับ ext3 เพื่อตรวจหาข้อผิดพลาดในการเขียนดิสก์และติดตั้งระบบไฟล์เป็นแบบอ่านอย่างเดียว นั่นคือทั้งหมดที่ดีและดีเฉพาะเมื่อ SAN ได้รับการแก้ไขฉันไม่สามารถหาวิธีการติดตั้งระบบไฟล์อ่าน - เขียนอีกครั้งโดยไม่ต้องรีบูตเครื่อง

ดูเถิด:

[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 1:0:0:1 sdb 8:16  [active][ready]
\_ 2:0:0:1 sdc 8:32  [active][ready]
[root@localhost ~]# mount /dev/mapper/mpath0 /mnt/foo
[root@localhost ~]# touch /mnt/foo/blah

ทุกอย่างดีตอนนี้ฉันดึง LUN ออกจากใต้มัน

[root@localhost ~]# touch /mnt/foo/blah
[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system
[root@localhost ~]# tail /var/log/messages
Mar 18 13:17:33 localhost multipathd: sdb: tur checker reports path is down
Mar 18 13:17:34 localhost multipathd: sdc: tur checker reports path is down
Mar 18 13:17:35 localhost kernel: Aborting journal on device dm-2.
Mar 18 13:17:35 localhost kernel: Buffer I/O error on device dm-2, logical block 1545
Mar 18 13:17:35 localhost kernel: lost page write due to I/O error on dm-2
Mar 18 13:17:36 localhost kernel: ext3_abort called.
Mar 18 13:17:36 localhost kernel: EXT3-fs error (device dm-2): ext3_journal_start_sb:   Detected aborted journal                      
Mar 18 13:17:36 localhost kernel: Remounting filesystem read-only

มันแค่คิดว่าอ่านอย่างเดียว แต่ในความเป็นจริงมันไม่ได้อยู่ที่นั่น

[root@localhost ~]# multipath -ll
sdb: checker msg is "tur checker reports path is down"
sdc: checker msg is "tur checker reports path is down"
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 1:0:0:1 sdb 8:16  [failed][faulty]
 \_ 2:0:0:1 sdc 8:32  [failed][faulty]
[root@localhost ~]# ll /mnt/foo/
ls: reading directory /mnt/foo/: Input/output error
total 20
-rw-r--r-- 1 root root     0 Mar 18 13:11 bar

มันยังคงจำแฟ้ม 'บาร์' อยู่ที่นั่นได้อย่างไรลึกลับ แต่ไม่สำคัญตอนนี้ ตอนนี้ฉันนำเสนอ LUN อีกครั้ง:

[root@localhost ~]# tail /var/log/messages
Mar 18 13:23:58 localhost multipathd: sdb: tur checker reports path is up
Mar 18 13:23:58 localhost multipathd: 8:16: reinstated
Mar 18 13:23:58 localhost multipathd: mpath0: queue_if_no_path enabled
Mar 18 13:23:58 localhost multipathd: mpath0: Recovered to normal mode
Mar 18 13:23:58 localhost multipathd: mpath0: remaining active paths: 1
Mar 18 13:23:58 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:58 localhost multipathd: dm-2: devmap already registered
Mar 18 13:23:59 localhost multipathd: sdc: tur checker reports path is up
Mar 18 13:23:59 localhost multipathd: 8:32: reinstated
Mar 18 13:23:59 localhost multipathd: mpath0: remaining active paths: 2
Mar 18 13:23:59 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:59 localhost multipathd: dm-2: devmap already registered
[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][enabled]
 \_ 1:0:0:1 sdb 8:16  [active][ready]
 \_ 2:0:0:1 sdc 8:32  [active][ready]

เยี่ยมมาก มันบอกว่า [rw] ตรงนั้น ไม่เร็วมาก:

[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system

ตกลงไม่ทำโดยอัตโนมัติฉันจะให้มันเล็กน้อย:

[root@localhost ~]# mount -o remount /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only

นรกที่คุณอยู่:

[root@localhost ~]# mount -o remount,rw /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only

noooooooooo

ฉันได้ลองใช้คำสั่ง mount / tune2fs / dmsetup ที่แตกต่างกันทุกประเภทและฉันไม่สามารถหาวิธีที่จะทำให้แฟล็กอุปกรณ์บล็อกถูกยกเลิกการป้องกันการเขียนได้ การรีบูตเครื่องจะแก้ไข แต่ฉันต้องการทำออนไลน์มาก หนึ่งชั่วโมงของ googling ทำให้ฉันไม่มีที่ไหนเลย ช่วยฉัน ServerFault


3
อืมคำถามสองสามข้อ 'มันเป็นปัญหาที่พบได้บ่อยเมื่อมีบางอย่างผิดปกติใน SAN' ทำไมซานของคุณไม่น่าเชื่อถือดังนั้นฉันต้องตรวจสอบก่อน คุณลองยกเลิกการต่อเชื่อมกับ umount แล้วติดตั้งอีกครั้งหรือไม่ มีเหตุผลที่ดีที่คุณต้องทำการนับใหม่หรือไม่? ฉันมักจะต้องติดตั้งระบบไฟล์รูทของฉันอีกครั้งหลังจากทำการบำรุงรักษา
The Unix Janitor

เพิ่มจำนวนการตีกลับในการจัดการไฟล์ที่เปิดซึ่งมักจะมาจากกระบวนการที่คุณต้องการออกอย่างมาก
cagenut

ฉันมีปัญหาที่คล้ายกันซึ่งหลังจากดิสก์ SAN ปัญหา VM อ่านอย่างเดียวและพยายามที่จะนับใหม่ทำให้เกิดข้อผิดพลาดเดียวกันใน OP VMs อยู่บน esxi 4.1 พร้อมที่เก็บข้อมูลไฟเบอร์แชนแนล การรีบูตของ VM ช่วยแก้ปัญหา ฉันไม่คิดว่าเป็นการส่วนตัวที่เกี่ยวข้องกับ multipath แน่นอนต้องมีวิธีการแก้ไขโดยไม่ต้องรีบูตเครื่องโดยเฉพาะอย่างยิ่งเนื่องจากบริการบางอย่าง (apache) มีแนวโน้มที่จะทำงานบน FS แบบอ่านอย่างเดียวเท่านั้น
จะ

ฉันมาที่นี่เพื่อค้นหาวิธีแก้ไขปัญหาของฉันเอง (ซึ่งแตกต่างจากดิสก์เสียหาย) ฉันยิ้มแทน +1 สำหรับ "นรกของคุณ"
user1207217

ฉันมีปัญหาแบบเดียวกันนี้ แต่ฉันใช้ LVM lvdisplay เดียวกันจะให้ฉัน "อ่านล้มเหลวหลังจาก 0 ของ 4096 ที่ 449197309952: ข้อผิดพลาดอินพุต / เอาท์พุต" จนกว่าฉันจะทำ "multipath -r" แล้ว LVM เริ่มแสดงทุกอย่างถูกต้องโดยไม่มีข้อผิดพลาด ฉันยังคงไม่สามารถรับพาร์ติชันใหม่ได้ ไม่สามารถถอดออกได้เช่นกันกล่าวว่าอุปกรณ์ไม่ว่าง หากฉันปิดกระบวนการทั้งหมดโดยใช้อุปกรณ์ฉันสามารถยกเลิกการต่อเชื่อมและติดตั้งใหม่ได้สำเร็จ แต่ฉันต้องการเพียงแค่ความสามารถในการติดตั้งอุปกรณ์อ่าน - เขียนใหม่เนื่องจากฉันควรจะสามารถ ...
mpontes

คำตอบ:


6

ฉันเพิ่งพบปัญหานี้และแก้ไขได้โดยการรีบูตเครื่อง แต่หลังจากตรวจสอบเพิ่มเติมปรากฏว่าการออกคำสั่งต่อไปนี้อาจแก้ไขได้

echo running > /sys/block/device-name/device/state

ฉันคิดว่าคุณอาจต้องการดูหัวข้อ 25.14.4: การเปลี่ยนสถานะการอ่าน / เขียนของ Online Logical Unitในเอกสารนี้อย่างไรก็ตามฉันขอแนะนำให้ทำการรีบูตเครื่อง


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

3
ในปัญหาที่คล้ายกันฉันมีประสบการณ์ / sys / บล็อก / อุปกรณ์ชื่อ / อุปกรณ์ / สถานะถูกตั้งค่าเป็น 'ทำงาน' แล้วและคำสั่งดังกล่าวไม่ได้แก้ปัญหา
Will

3

ลองใช้:

mount -o remount,rw /mnt/fo

ฉันรู้จัก FreeBSD ไม่ใช่ Linux แต่สำหรับ fBSD มันเป็นmount -rw /mnt/fooดังนั้นสิ่งนี้ดูเหมาะสมที่สุดสำหรับฉัน
Chris S

1
ฉันไม่เคยมีงานนี้ในสถานการณ์ที่สรุปไว้ในคำถาม เมื่อดิสก์ถูกทำเครื่องหมายว่าอ่านได้อย่างเดียวเนื่องจากข้อผิดพลาดมันจะรีบูตเครื่องให้ฉันเสมอ
Alex

1
ฉันจะแก้ไขสิ่งนี้ใน OP แต่อเล็กซ์อยู่ที่นี่ปัญหาดูเหมือนว่าอยู่ด้านล่างระบบไฟล์: [root @ localhost ~] # เมานต์ -o เมานต์เมาท์ rw / mnt / foo เมา: อุปกรณ์บล็อก / dev / mapper / mpath0 มีการป้องกันการเขียนติดตั้งแบบอ่านอย่างเดียว
cagenut

1
คุณลองยกเลิกการต่อเชื่อมพาร์ติชั่นแล้วทำการติดตั้งใหม่หรือไม่? ฉันมีข้อผิดพลาดของข้อมูลมาก่อนด้วยไดรฟ์การยกเลิกการต่อเชื่อม (หรือ remount, rw) ได้แก้ไขให้ฉัน นี่คือกับไดรฟ์ SATA (และ EIDE / SCSI ที่เก่ากว่า) อย่างไรก็ตามในสถานการณ์ของคุณฉันสงสัยว่าปัญหาคือต้องรีเซ็ตช่องสัญญาณของไดรฟ์หรือไม่ ฉันสงสัยว่า HDIO_DRIVE_RESET ส่งผ่าน ioctl หรือไม่ blockdev สามารถใช้เพื่อบังคับให้อ่านตารางพาร์ติชันซึ่งอาจทำได้ IDE เปิดเผยสิ่งนี้ด้วย hdparm -w บางทีด้วยไดรฟ์ FC ของคุณคุณมีวิธีส่ง ioctl ไปที่ช่อง

2

ฉันเป็นแฟนตัวยงของการป้องกันปัญหาตั้งแต่แรก กล่อง UNIX ขององค์กรส่วนใหญ่จะลองการดำเนินการของระบบไฟล์อีกครั้งอย่างถาวร คุณในฐานะผู้ดูแลระบบต้องทำการบ้านก่อนที่จะทำการปรับแต่ง MPIO ของคุณ หากแอปพลิเคชันของคุณควรรอจนกว่าอุปกรณ์จะกลับสู่สถานะใช้งานได้นี่คือวิธีแก้ปัญหา ใน /etc/multipath.conf ตรวจสอบให้แน่ใจว่าประเภทอุปกรณ์ที่คุณสนใจมีการตั้งค่าสำหรับ "no_path_retry" ตั้งค่าเป็น "คิว" การตั้งค่านี้จะทำให้ I / Os ล้มเหลวในการจัดคิวจนกว่าจะมีเส้นทางที่ถูกต้อง เราได้ทำสิ่งนี้เพื่อกล่อง EMC Symmtrix / DMX ของเราเพื่อทำงานเกี่ยวกับอาการสะอึกภายใต้เงื่อนไขบางประการที่ความล้มเหลว / การกู้คืนพา ธ / คอนโทรลเลอร์ / srdf

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

แค่คิดว่าฉันจะแบ่งปันกับคุณทุกคน ดูแล.


2

ฉันมีปัญหาบางอย่างซึ่งฉันได้แก้ไขโดยใช้hdparmพร้อม-rตัวเลือกในการย่อยของอุปกรณ์แบบมัลติพลาสแบบตรรกะ

-r รับ / ตั้งค่าสถานะอ่านอย่างเดียวสำหรับอุปกรณ์ เมื่อตั้งค่าไว้ Linux จะปิดการทำงานการเขียนบนอุปกรณ์


1

คุณคิดว่ามันเกี่ยวข้องกับหัวข้อในเอกสารนี้หรือไม่เพราะเหตุใดระบบไฟล์ ext3 ใน Storage Area Network (SAN) ของฉันจึงกลายเป็นอ่านอย่างเดียวซ้ำ ๆ ?

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


ใช่มันไม่ใช่ข้อผิดพลาดที่เฉพาะเจาะจงอย่างแน่นอนเนื่องจากฉันใช้เวอร์ชันที่ใหม่กว่ามากกว่าที่อ้างอิง แต่สถานการณ์ทุกประเภทที่คล้ายกันอาจทำให้เกิดปัญหาได้ โลกของไฟเบอร์แชนเนล hbas / hba-firmware / hba-drivers อาร์เรย์เฟิร์มแวร์สวิตช์เฟิร์มแวร์การออกแบบผ้าการปรับแต่งอุปกรณ์ mapper / multipathd lvm และ ext3 เป็นส่วนที่เคลื่อนไหวได้ง่าย ทำงานในสภาพแวดล้อมที่เพียงพอและคุณจะเห็นสถานการณ์นี้เกิดจากปัญหาที่คล้ายกัน แต่ไม่เหมือนกัน คำถามที่อยู่คือวิธีการกู้คืน / remount โดยไม่ต้องรีบูตเครื่อง
cagenut

0

ระบบไฟล์เสียหายหรือไม่ ลอง:

dumpe2fs /dev/c/c | grep Filesystem\

หากทำความสะอาดด้วยข้อผิดพลาดคุณต้องสแกนและทำความสะอาด


-4

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

(จำได้ไหมว่า "ปฏิเสธ IO ไปยังอุปกรณ์ที่ไม่ทำงาน"?)


1
คุณจำเป็นต้องสำรองข้อมูลงบเช่น "Linux ไม่สามารถรับมือกับ SANs" และ "ค่าเริ่มต้นพร้อมเดสก์ท็อป" พร้อมการอ้างอิงและข้อเท็จจริงอย่างหนัก
Chris S

1
ดิสก์เริ่มต้น IO หมดเวลา 30 วินาทีหรือไม่ ด้ายข้างต้น? หมายเหตุจาก RedHat (ล้าสมัยเนื่องจากอาจ) ระบุว่าพวกเขาไม่สามารถจัดการ "การแจ้งเตือนการเปลี่ยนแปลงสถานะ" ได้อย่างสง่างามตามที่ตั้งใจไว้ โดยค่าเริ่มต้นอะไรที่ทำให้การเชื่อมหลายเส้นทางในตำแหน่ง (/ var / lib) ที่ไม่สามารถเข้าถึงได้ในเวลาโหลดของไดรเวอร์มัลติพา ธ ที่คุณไม่สามารถปิดการใช้งาน hot hot hot hot hot hot swap hba แบบ PCI ซ้ำ ๆ และใช้ LUN ที่พึ่งพาทั้งหมดแบบออฟไลน์โดยอัตโนมัติจนกว่าจะถูกแทนที่ มันไม่มี HW init แบบมัลติเธรดและใช้เวลา "ชั่วครู่" ในการสร้าง> 1k luns udev เป็นสคริปต์เปลือก ...
darkfader
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.