it-swarm.asia

Linux'un yeniden takılmadan çalışırken değiştirdiğim yeni bir SATA / dev / sda sürücüsünü tanımasını nasıl sağlarım?

Başarısız bir SATA/dev/sda sürücüsünün değiştirilmesi iyi çalıştı, ancak yeni bir sürücüde takas etmeye gittiğimde tanınmadı:

[[email protected] ~]# tail -18 /var/log/messages
May 5 16:54:35 fs-2 kernel: ata1: exception Emask 0x10 SAct 0x0 SErr 0x50000 action 0xe frozen
May 5 16:54:35 fs-2 kernel: ata1: SError: { PHYRdyChg CommWake }
May 5 16:54:40 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:54:45 fs-2 kernel: ata1: device not ready (errno=-16), forcing hardreset
May 5 16:54:45 fs-2 kernel: ata1: soft resetting link
May 5 16:54:50 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:54:55 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:54:55 fs-2 kernel: ata1: soft resetting link
May 5 16:55:00 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:55:05 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:05 fs-2 kernel: ata1: soft resetting link
May 5 16:55:10 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:55:40 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:40 fs-2 kernel: ata1: limiting SATA link speed to 1.5 Gbps
May 5 16:55:40 fs-2 kernel: ata1: soft resetting link
May 5 16:55:45 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:45 fs-2 kernel: ata1: reset failed, giving up
May 5 16:55:45 fs-2 kernel: ata1: EH complete

rescan-scsi-bus.sh gibi sunucunun yeni/dev/sda bulmasını sağlamak için birkaç şey denedim ama işe yaramadı:

[[email protected] ~]# echo "---" > /sys/class/scsi_Host/host0/scan
-bash: echo: write error: Invalid argument
[[email protected] ~]#
[[email protected] ~]# /root/rescan-scsi-bus.sh -l
[snip]
0 new device(s) found.
0 device(s) removed.
[[email protected] ~]#
[[email protected] ~]# ls /dev/sda
ls: /dev/sda: No such file or directory

Sunucuyu yeniden başlattım./dev/sda tanındı, RAID yazılımını düzelttim ve şimdi her şey yolunda. Ama bir dahaki sefere, Linux'u yeniden başlatmadan çalışırken değiştirdiğim yeni bir SATA sürücüsünü tanımasını nasıl sağlayabilirim?

Söz konusu işletim sistemi RHEL5.3'tür:

[[email protected] ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

Sabit disk bir Seagate Barracuda ES.2 SATA 3.0-Gb/s 500-GB, model ST3500320NS'dir.

İşte lscpi çıkışı:

[[email protected] ~]# lspci
00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)
00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:09.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:0a.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0d.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0e.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02)
04:00.0 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
04:00.1 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)

Güncelleme : Belki bir düzine durumda, hot swap "henüz işe yaramadı" için sunucuları yeniden başlatmaya zorlandık. Yanıtların SATA denetleyicisine daha fazla bakması için teşekkür ederiz. Yukarıdaki sorunlu sistem için lspci çıktı dahil ettik (hostname: fs-2). Yine de, o sistem için çalışırken takas açısından donanım açısından tam olarak neyin desteklenmediğini anlamaya yardımcı olabilirim. Lütfen lspci dışında başka çıktıların faydalı olabileceğini bana bildirin.

İyi haber şu ki bizim için çok nadir bulunan hot swap sunucularımızdan birinde (hostname: www-1) "az önce çalıştı". İşte lspci çıktısı:

[[email protected] ~]# lspci
00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)
00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:09.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
00:19.4 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02)
04:00.0 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
04:00.1 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
09:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS (rev 04)
44
Philip Durbin

SATA denetleyiciniz çalışırken değiştirmeyi destekliyorsa, "sadece çalışır (tm)" olmalıdır.

Bir SCSI BUS'ta (her SATA bağlantı noktası SCSI BUS olarak gösterilir) yeniden taramayı zorlamak ve yeni sürücüler bulmak için şunları kullanırsınız:

echo "0 0 0" >/sys/class/scsi_Host/host<n>/scan

Yukarıda <n> BUS numarasıdır.

45
user1797
echo "- - -" >/sys/class/scsi_Host/host<n>/scan
       ^ ^
        \_\_______ note spaces between the dashes.
19
Noah

Bir sürücü bazı durumlarda başarısız olduğunda, Linux aslında onu fiziksel olarak diziden aldığınızın farkına varmaz. Bu sorunla karşılaşırsanız (bu sabah yaptığım gibi) aşağıdakileri yapabilirsiniz:

echo 1 > /sys/block/<devnode>/device/delete

Örneğin. benim durumumda/dev/sda başarısız olmuştu ve ben sunucuyu yeniden başlatmak istemiyordu, bu yüzden yaptım:

echo 1 > /sys/block/sda/device/delete

Bunu yaptıktan sonra, (aslında fiziksel olarak zaten eklenmiş olan) yeni sürücü hemen görünüyordu.

Bu noktada görünmüyorsa, yeniden taramayı zorlamak için de yapabilirsiniz:

echo "- – -" > /sys/class/scsi_Host/host<n>/scan

Bu "- - -" sırasıyla kanal, id ve LUN için joker karakterdir, dolayısıyla bunun yerine sayıları belirterek taramayı bazı alt kümelerle sınırlandırabilirsiniz.

Başlamadan önce şunları da yapabilirsiniz:

readlink /sys/block/<devnode>

Bu işlem,/proc/scsi/scsi'yi kaldırdıktan sonra kaybolma durumunu kontrol etmek için doğru Ana Bilgisayar numarasına sahip yolu gösterir.

14
karora

Buna ne dersin (Ubuntu'da çalışıyor gibi görünüyor):

Sudo parça probu

8
user59282

Hiç kimsenin AHCI'den bahsetmediğine inanamıyorum ... çalışırken değiştirmeyi etkinleştirmek için SATA denetleyicinizin AHCI modunda olması gerekiyor. Kullandığınız sürücüye bakarak bunu kontrol edin:

[email protected]:~ # find /sys -name sdk
/sys/devices/pci0000:00/0000:00:11.0/ata5/Host4/target4:0:0/4:0:0:0/block    /sdk
/sys/block/sdk
/sys/class/block/sdk

[email protected]:~ # readlink /sys/devices/pci0000:00/0000:00:11.0/driver
../../../bus/pci/drivers/ahci

[email protected]:~ # lspci -k | less
[... big long output... search for ahci or your pci address, or use the awk below ...]

[email protected]:~ # lspci -k | awk '$1 == "00:11.0" {x=1}; x && /in use/ {print $0; exit}'
    Kernel driver in use: ahci

Bakın nasıl "ahcı" yazıyor orada.

Başlamazsa, sadece BIOS'unuzda etkinleştirin. Ayrıca, bazı sunucularda, özellikle sunucularda veya UEFI'de, disk başına "Çalışırken Değiştir = etkin/devre dışı" ayarı vardır ve bu ayar varsa etkinleştirmeniz gerekir.

6
Peter

Bilgisayarı yeniden başlatmamın nedeni ...

/ Dev/sdc'mi çalışırken değiştirdim. Eski diski çıkarmadan önce kapatmak için scsiadd -r 3 0 0 kullandım. Sonra yeni diski taktıktan sonra yeni disk/dev/sdc olarak değil,/dev/sdd olarak görünür. Yeniden başlatıldıktan sonra disk tekrar/dev/sdc olarak yeniden görünür.

Bu yüzden hotswap çalışıyor gibi görünüyor Tamam, sadece/dev/sd * artık aynı olmayabilir.

Bu sorunun cevabı olabilir mi?

2
Peter

Fusion-MPT SAS denetleyiciniz bir alt uç RAID denetleyicisidir. RAID için kullanmıyorsanız, yine de yararsız bir engel/soyutlama katmanı sağlıyor olabilir.

Veriyolunu gerçekten taramasını sağlamak için RAID denetleyicisine mpt-status veya lsiutil ile poke etmeniz gerekebilir.

http://hwraid.le-vert.net/wiki/LSIFusionMPT Çok sayıda belge var, ancak doğruladığımı söyleyemem.

1
aij

Bazı durumlarda, anakart ve/veya SATA denetleyicisinin BIOS'unda çalışırken değiştirilebilir özelliğin etkinleştirilmesi gerekebilir. Bu tamamen her ikisinin yapısına ve modeline bağlıdır, ancak yerleşik SATA denetleyicileriniz varsa gerekir hotswap'ı destekliyorsa, anakart BIOS'u taramaya değer. SATA kartlarının kendi BIOS ayarları olabilir veya olmayabilir, birçok alt uç kartta yoktur, ancak genellikle sunucu sınıfı kartlarda bulunur.

Doğru hatırlıyorsam buna bir kaç Gigabyte anakart ve belki de başka markalarla ihtiyacım vardı. Çalışırken değiştirilebilir bir SATA tepsisinin çalışması için ona ihtiyacım vardı; özelliği devre dışı bırakıldığında sürücünün çıkarılması sorunlara neden olmadı, ancak yeniden başlatılana kadar yeni bir sürücü kaydedilmedi. Ayarın beklendiği gibi çalışmasını sağlamak, tepsiye yerleştirilen sürücüler hemen döndürülmüş ve işletim sistemi tarafından kullanılabilir.

1
STW

Fedora 16 makinemdeki DVD'm SATA arayüzüne bağlı. Kilitlendi ve açılmayacak veya kapanmayacaktı. Çalışan partprobe root olarak cdrom/DVD'mi tekrar çalıştırdı. Ben zaman zaman hot swap sorunu olan anther makinede yardımcı olacağını düşünüyorum. Teşekkürler!

1
Stuart Edge

Bu sorunun eski olduğunu biliyorum, ama başka bir yerde rapor görmediğim bazı başarılar elde ettim. Bugün Dell Precision 380'de de benzer sıkıntılar vardı. Sonunda aşağıdakilerin bir kombinasyonunu yaparak işe yaradı:

echo "- - -" > /sys/class/scsi_Host/host2/scan
echo 1 > /sys/class/scsi_device/2:0:0:0/device/reset
echo 1 > /sys/devices/pci0000:00/0000:00:1f.2/rescan
echo 1 > /sys/devices/pci0000:00/0000:00:1f.2/reset

YARI: Bu, sistemdeki diğer ATA aygıtlarını da bozabilir. Bu cihazlara dosya sistemleri eklediyseniz, bu durum muhtemelen kötü sonuçlanır. Durumum umursamadı, ama seninki olabilir.

Yukarıdaki komutlardan hangisine ihtiyaç duyulduğu ve şu anda hangi sırada bilinmediği. Bazı komutların tekrarlanması gerekebilir. Tahmin etmek zorunda kalsaydım, yukarıda gösterilen sırayla, sonra tekrar başka bir scsi_Host taraması söyleyebilirim. Keşiflerimde birkaç tane daha yaptım.

İlk komut (scsi_Host tarama) SCSI orta katmanına yeni/değiştirilmiş aygıtlar için tüm veri yollarını taramasını söyler. İkinci komut SCSI hedefini (disk aygıtı) sıfırlamaya çalışır. Son ikisi AHCI denetleyicisinin kendisi için sürücü ile çalışıyor.

Söz konusu maddeleri daha ayrıntılı inceleme ve cesur deneylerle buldum.

Scsi_device düğümlerini cihaz markası ve modeliyle eşleştirebilirsiniz (içeriğin önüne dosya adlarını yazdırmak için grep kullanarak):

grep . /sys/class/scsi_device/*/device/model

SCSI aygıt kimliğinin ilk basamağı scsi_Host numarası olmalıdır. Daha sonra scsi_Host düğümlerini cihaz düğümleriyle eşleştirebilirsiniz:

ls -l /sys/class/scsi_Host

Asla daha fazla rafine etme şansım olmayacağından şüpheleniyorum, bu yüzden bu bilgileri başkalarını yakınlaştırma umuduyla paylaşmak istedim. Daha fazla bilgi alırsam, bu yanıtı yansıtacak şekilde düzenleyeceğim.

Bu yardımcı olur umarım.

1
Ben Scott

Hotplug'un çalışması için acpiphp modülünün yüklü olması gerekir.

[[email protected] ~]# modprobe acpiphp

açıkçası bunun önyüklemede çalışmasını istiyorsanız, önyükleme sırasında yüklenecek şekilde yapılandırmanız gerekir - bir yol /etc/rc.modules oluşturmak/düzenlemek (rc.sysinit tarafından çağrılır) ve satırı eklemektir:

modprobe acpiphp

bu dosyayı chmod + x olarak oluşturmak için oluşturduğunuzu unutmayın.

0
nox