Bir ext3 fs readwrite'ı bir disk hatasından salt okunur olarak bağlandıktan sonra nasıl yeniden bağlarsınız?


18

Disk yazma hatalarını algılamak ve salt okunur dosya sistemini yeniden monte etmek için ext3'te SAN'da bir şeyler ters gittiğinde bu nispeten yaygın bir sorundur. Hepsi iyi ve iyi, sadece SAN sabit olduğunda, yeniden başlatmadan dosya sistemi okuma-yazma nasıl yeniden monte edemiyorum anlayamıyorum.

Seyretmek:

[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

Her şey yolunda, şimdi LUN'u altından çekiyorum.

[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

Sadece salt okunur olduğunu düşünüyor, gerçekte orada bile değil.

[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

Hala 'bar' dosyasının orada olduğunu nasıl hatırladığı ... gizem, ama şu anda önemli değil. Şimdi LUN'u yeniden sunuyorum:

[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]

Harika değil mi? Orada [rw] yazıyor. Çok hızlı değil:

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

Tamam, otomatik olarak yapma, sadece biraz iteceğim:

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

Sen cehennemsin:

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

Noooooooooo.

Her türlü farklı mount / tune2fs / dmsetup komutlarını denedim ve blok cihazını yazma korumalı olarak işaretlemesini nasıl alacağımı anlayamıyorum. Yeniden başlatma bunu düzeltir, ancak çevrimiçi yapmayı tercih ederim. Bir saatlik googling de beni hiçbir yere götürmedi. Kurtar beni ServerFault.


3
hmm, birkaç soru 'Bir SAN'da bir şeyler ters gittiğinde bu nispeten yaygın bir sorundur' neden SAN'ınız bu kadar güvenilmez, ilk önce bunu kontrol edeyim? Sadece umount ile bağlantısını kesip tekrar monte etmeyi denediniz mi? Yeniden ödeme yapmanız için iyi bir neden var mı? Genellikle kök dosya sistemlerini bakımdan sonra yeniden monte etmem gerekir.
Unix Kapıcı

umount, genellikle aklı başında çıkmayı tercih ettiğiniz işlemlerden olan açık dosya tanıtıcılarında seker.
cagenut

SAN sorunu VM'leri diskleri salt okunur ve yeniden denemeye çalışırken OP aynı hataya neden benzer bir sorun var. VM'ler fiber kanal depolaması ile esxi 4.1 üzerindedir. VM'nin yeniden başlatılması sorunu düzeltir. Şahsen bunun çok yollu bir şey olduğunu düşünmüyorum. Elbette, yeniden başlatmadan düzeltmenin bir yolu olmalı, özellikle de bazı hizmetler (apache) salt okunur bir FS'de çalışmaya devam etme eğiliminde olduğundan.
Will

Buraya kendi sorunuma bir çözüm aramaya geldim (ki bu farklı, bozuk bir disk). Onun yerine gülümsedim. "Sen cehennemsin" için +1
user1207217 23:13

Bununla aynı sorunum var, ancak LVM kullanıyorum. Aynı lvdisplay bana bir "çoklu yol -r" yapana kadar 4096'nın 0'dan sonra 4096'dan sonra başarısız oldu: LVM her şeyi hatasız olarak görüntülemeye başladı. Yine de bölümün yeniden montajını sağlayamıyorum. Cihazın bağlantısı kesildiğini de söylüyor. Ben cihazı kullanarak tüm işlemleri kapatıldı, ben kaldırmak ve daha sonra yeniden bağlama başarıyla ama mümkün olmalıdır gibi ben sadece okuma-yazma aygıtı yeniden bağlayın edememek tercih ediyorum ...
mpontes

Yanıtlar:


6

Kısa süre önce bu sorunla karşılaştım ve yeniden başlatarak çözdüm, ancak daha fazla araştırmadan sonra aşağıdaki komutu vermenin sorunu çözebileceği anlaşılıyor.

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

Sana bakmak isteyebilirsiniz düşünüyorum : bölüm 25.14.4 bakmak Çevrimiçi Mantıksal Birimi Okuma / Yazma Durumunu Değiştirme Bu belgede ancak, yeniden öneririz.


Teşekkürler Kevin. (Un) neyse ki sorun çoktan gitti, bu yüzden test edemiyorum ama bu en umut verici seçenek gibi görünüyor.
cagenut

3
Benzer bir sorun yaşadım / sys / block / device-name / device / state zaten 'çalışıyor' olarak ayarlanmış ve yukarıdaki komut sorunu çözmedi.
Will

3

Kullanmayı deneyin:

mount -o remount,rw /mnt/fo

Linux'u değil FreeBSD'yi biliyorum. Ama fBSD için mount -rw /mnt/foo, bu benim için en doğru görünüyor.
Chris S

1
Soruda belirtilen senaryoda bu işi hiç yapmadım. Disk hatalar nedeniyle salt okunur olarak işaretlendiğinde, benim için her zaman yeniden başlatıldı.
Alex

1
Bunu OP'de düzenleyeceğim, ancak Alex tam burada, sorun dosya sisteminin altında görünüyor: [root @ localhost ~] # mount -o remount, rw / mnt / foo mount: blok cihaz / dev / mapper / mpath0 yazma korumalı, salt okunur montaj
cagenut

1
Bölümü ayırmayı ve yeniden takmayı denediniz mi? Daha önce bir sürücü ile veri hataları yaşadım, sökme (veya remount, rw) benim için düzeltti. Bu SATA sürücüler (ve daha eski EIDE / SCSI) ile oldu. Ancak, durumunuzda, sorunun kanalın sıfırlanması gerekip gerekmediğini merak ediyorum. HDIO_DRIVE_RESET'in bir şekilde ioctl üzerinden gönderilip gönderilmediğini merak ediyorum. blockdev, bunu yapabilen bölme tablosunun yeniden okunmasını zorlamak için kullanılabilir. IDE bunu hdparm -w ile gösteriyor, belki de FC sürücülerinizle, ioctl'i kanala göndermek için bir yolunuz var.

2

İlk etapta sorunu önleme hayranıyım. Çoğu kurumsal UNIX kutusu, dosya sistemi işlemlerini sonsuza dek yeniden dener. Yönetici olarak MPIO yapılandırmanızı ayarlamadan önce bazı ödevler yapmanız gerekir. Uygulamanızın cihaz kullanılabilir duruma dönmesini beklemesi gerekiyorsa, işte bir çözüm. /Etc/multipath.conf dosyasında, önem verdiğiniz aygıt türünün "no_path_retry" ayarının "kuyruk" olarak ayarlandığından emin olun. Bunu ayarlamak, geçerli bir yol olana kadar başarısız G / Ç'lerin sıraya girmesine neden olur. Bunu EMC Symmtrix / DMX kutuları için belirli koşullar altında sürücü / denetleyici / srdf yolu hataları / kurtarma hıçkırıkları hakkında çalışmak için yaptık.

Bu yaklaşım, domuz pastırmamızı sayısız kez kurtardı ve olağanüstü durumdan kurtarma için çoğaltmalı çok hücreli / çoklu satıcı SAN'da yüzlerce kutu için standardımızdır.

Sadece sizinle paylaşabileceğimi düşündüm. Kendine iyi bak.


2

Ben kullanarak çözülmesi bazı sorunu vardı hdparm ile -rmantıksal, çok yollu cihazların subdrives üzerine seçeneği.

-r Aygıt için salt okunur bayrağı al / ayarla. Ayarlandığında, Linux aygıttaki yazma işlemlerine izin vermez.


1

Bunun bu belgedeki Depolama Alanı Ağımdaki (SAN) ext3 dosya sistemleri neden tekrar tekrar salt okunur hale geliyor ?

Oldukça eski bir makale ve fiber kanaldan bahsediyor, ancak sorununuzla ilgili olabilir.


Evet, referans verdiklerinden çok daha yeni sürümler çalıştırdığım için tam olarak belirli bir hata değil, ancak benzer durumların her türlü nedeni olabilir. Fiber kanal, hbas / hba-firmware / hba-drivers, dizi bellenimi, anahtar bellenimi, kumaş tasarımı, cihaz eşleyici / çoklu yol yapılandırması, lvm ve ext3 dünyası sadece bir sürü hareketli parçadan ibarettir. Yeterli ortamlarda çalışın ve bu senaryoyu benzer ancak aynı olmayan sorunlardan oluşan bir çantadan kaynaklayın. Eldeki soru, yeniden başlatmadan nasıl geri kazanılacağı / yeniden takılacağıdır.
cagenut

0

Dosya sistemi bozulması? Deneyin:

dumpe2fs /dev/c/c | grep Filesystem\

Hatalarla temizlerseniz, taramanız ve temizlemeniz gerekir.


-4

Linux orta-büyük ölçekli SAN'larla yeterince iyi başa çıkmıyor. IO zaman aşımlarına ve çok yollu zaman aşımı işlemine biraz dikkat etmeli ve ince ayar yapmalısınız, hepsi masaüstü hazır varsayılanlarında.

("Ölü aygıta GÇ reddini" hatırlıyor musunuz?)


1
"Linux SAN'larla başa çıkmıyor" ve "masaüstü hazır varsayılanları" gibi ifadeleri referanslarla ve gerçeklerle yedeklemeniz gerekir.
Chris S

1
Varsayılan disk IO zaman aşımı 30 saniye? Yukarıdaki konu? RedHat'tan (olabildiğince güncel olmayan) bir not, "Durum değişikliği bildirimi" ni amaçlandığı şekilde ele alamayacaklarını belirtir. Redhat varsayılan olarak çok yollu bağlamaları çok yollu sürücünün yükleme zamanında erişilemeyen bir konuma (/ var / lib) koydu mu? PCI hotplug hba'yı sürekli olarak devre dışı bırakamayacağınız ve değiştirilene kadar tüm bağımlı LUN'ları geçici olarak otomatik olarak çevrimdışı tutamayacağınız. Çok iş parçacıklı HW başlangıcı olmadığı ve> 1k lun ile gelmesi "biraz zaman" alır. Udev, bir kabuk senaryosu olmak ...
darkfader
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.