it-swarm-ko.tech

재부팅하지 않고 핫 스왑 된 새 SATA / dev / sda 드라이브를 Linux가 인식하도록하려면 어떻게합니까?

실패한 SATA/dev/sda 드라이브의 핫 스왑은 정상적으로 작동했지만 새 드라이브로 스왑 할 때 인식되지 않았습니다.

[[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 와 같이 서버가 새로운/dev/sda를 찾도록하기 위해 몇 가지를 시도했지만 작동하지 않았습니다.

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

서버를 재부팅했습니다./dev/sda가 인식되었고 소프트웨어 RAID를 수정했으며 이제 모든 것이 정상입니다. 그러나 다음에 리눅스를 재부팅하지 않고 핫 스왑 한 새 SATA 드라이브를 인식하도록하려면 어떻게해야합니까?

해당 운영 체제는 RHEL5.3입니다.

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

하드 드라이브는 Seagate Barracuda ES.2 SATA 3.0-Gb/s 500GB, 모델 ST3500320NS입니다.

Lscpi 출력은 다음과 같습니다.

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

Update : 아마도 십여 건의 경우 핫 스왑이 "잘 작동하지"않았기 때문에 서버를 재부팅해야했습니다. SATA 컨트롤러에 대한 답변을 찾아 주셔서 감사합니다. 위의 문제가있는 시스템에 대한 lspci 출력을 포함 시켰습니다 (호스트 이름 : fs-2). 해당 시스템의 핫 스왑 측면에서 하드웨어가 지원하지 않는 것을 이해하는 데 여전히 도움이 될 수 있습니다. lspci 이외의 다른 출력이 유용한 지 알려주십시오.

좋은 소식은 핫 스왑이 오늘날 우리 서버 중 하나 (호스트 이름 : www-1)에서 "방금 작동"되었다는 것입니다. 다음은 lspci 출력입니다.

[[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 컨트롤러가 핫 스왑을 지원하는 경우 "작동 (tm)"입니다.

SCSI BUS (각 SATA 포트가 SCSI BUS로 표시됨)를 강제로 다시 스캔하고 새 드라이브를 찾으려면 다음을 사용하십시오.

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

위의 <n>는 버스 번호입니다.

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

어떤 상황에서 드라이브가 고장 나면 Linux는 실제로 어레이에서 실제로 드라이브를 가져 왔다는 것을 인식하지 못합니다. (오늘 아침처럼) 그 문제가 있다면 다음을 수행 할 수 있습니다.

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

예 : 내 경우에는/dev/sda가 실패했고 서버를 재부팅하고 싶지 않아서 다음과 같이했습니다.

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

그렇게 한 후, 실제로 실제로 추가 된 새 드라이브가 즉시 표시되었습니다.

이 시점에서 보이지 않으면 다시 스캔하도록 할 수도 있습니다.

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

"---"는 각각 채널, id 및 LUN에 대한 와일드 카드이므로 숫자를 지정하여 원하는 경우 스캔을 일부 하위 세트로 제한 할 수 있습니다.

시작하기 전에 다음을 수행 할 수도 있습니다.

readlink /sys/block/<devnode>

다음은 제거 후 사라지는 지/proc/scsi/scsi에서 확인하기 위해 올바른 호스트 번호가있는 경로를 보여줍니다.

14
karora

어떻습니까 (우분투에서 작동하는 것 같습니다) :

Sudo Partprobe

8
user59282

아직 아무도 AHCI를 언급하지 않았다는 것을 믿을 수 없습니다. 핫 스왑을 활성화하려면 SATA 컨트롤러가 AHCI 모드에 있어야합니다. 사용중인 드라이버를보고이를 확인하십시오.

[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

그것이 어떻게 "ahci"라고 말하는지보십시오.

그렇지 않은 경우 BIOS에서 활성화하십시오. 또한 일부 BIOS, 특히 서버 또는 UEFI의 경우 디스크 당 "핫 스왑 = 활성화/비활성화"설정이 있으며 디스크가있는 경우 활성화해야합니다.

6
Peter

컴퓨터를 다시 부팅해야하는 이유는 다음과 같습니다.

방금/dev/sdc를 핫스왑했습니다. scsiadd -r 3 0 0을 사용하여 디스크를 꺼내기 전에 기존 디스크의 전원을 끕니다. 그런 다음 새 디스크를 설치 한 후 새 디스크는/dev/sdc가 아니라/dev/sdd로 나타납니다. 재부팅 후 디스크는/dev/sdc로 다시 나타납니다.

Hotswap이 작동하는 것 같습니다./dev/sd *가 더 이상 동일하지 않을 수도 있습니다.

이것이 당신의 문제에 대한 답이 될 수 있습니까?

2
Peter

Fusion-MPT SAS 컨트롤러는 저가형 RAID 컨트롤러입니다. RAID에 사용하지 않는 경우 여전히 도움이되지 않는 방해/추억의 레이어를 제공 할 수 있습니다.

실제로 버스를 스캔하려면 mpt-status 또는 lsiutil을 사용하여 RAID 컨트롤러를 찌를 필요가 있습니다.

http://hwraid.le-vert.net/wiki/LSIFusionMPT 좋은 문서가 있지만 확인했다고 말할 수는 없습니다.

1
aij

경우에 따라 핫 스왑을 마더 보드 및/또는 SATA 컨트롤러의 BIOS에서 활성화해야 할 수도 있습니다. 이것은 두 모델의 제조사와 모델에 따라 다르지만, 온보드 SATA 컨트롤러가있는 경우 should 핫스왑을 지원해야하는 경우 마더 보드 BIOS를 사용하는 것이 좋습니다. . SATA 카드에는 자체 BIOS 설정이 있거나 없을 수 있지만 많은 저급 카드에는 없지만 서버급 카드에는 일반적으로 있습니다.

올바르게 기억한다면 많은 기가 바이트 마더 보드와 다른 제조사가 필요합니다. 핫 스왑 SATA 트레이가 작동하려면 필요했습니다. 이 기능이 비활성화 된 상태에서 드라이브를 제거해도 문제가 발생하지 않았지만 재부팅 할 때까지 새 드라이브가 등록되지 않았습니다. 설정이 예상대로 작동하면 트레이에 놓인 드라이브가 즉시 회전되어 OS에서 사용할 수있게됩니다.

1
STW

Fedora 16 컴퓨터의 DVD가 SATA 인터페이스에 연결되어 있습니다. 잠겨 있었고 열리지 않거나 닫지 않았습니다. 루트로 내 CD-ROM/DVD가 다시 작동하도록 partprobe 실행 가끔 핫 스왑 문제가 발생하는 다른 컴퓨터에서 도움이 될 것이라고 생각합니다. 감사!

1
Stuart Edge

나는이 질문이 오래되었다는 것을 알고 있지만 다른 곳에서는보고되지 않은 성공을 거두었습니다. 오늘 Dell Precision 380에서도 비슷한 문제가 발생했습니다. 결국 다음을 조합하여 작동하게했습니다.

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

WARNING : 시스템의 다른 ATA 장치를 방해 할 수도 있습니다. 그러한 개발자들에게 파일 시스템을 마운트했다면, 그 결과는 나빠질 것입니다. 내 상황은 신경 쓰지 않았지만 당신의 상황 일 수도 있습니다.

현재 위의 명령 중 어떤 명령이 필요한지, 어떤 순서로 알려지지 않았는지 알 수 없습니다. 일부 명령을 반복해야 할 수도 있습니다. 추측해야 할 경우 위에 표시된 순서대로 수행하면 다른 scsi_Host가 다시 스캔됩니다. 나는 탐사에서 꽤 많은 일을했습니다.

첫 번째 명령 (scsi_Host scan)은 SCSI 미드 레이어가 모든 버스에서 새로운/변경된 장치를 스캔하도록 지시합니다. 두 번째 명령은 SCSI 대상 (디스크 장치)을 재설정하려고합니다. 마지막 두 개는 AHCI 컨트롤러 자체의 드라이버로 작업하고 있습니다.

나는 세부적인 시험과 대담한 실험을 통해 문제의 항목을 주로 발견했습니다.

Scsi_device 노드를 장치 제조업체 및 모델과 일치시킬 수 있습니다 (grep을 사용하여 내용 앞에 파일 이름을 인쇄).

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

SCSI 장치 ID의 첫 번째 숫자는 scsi_Host 번호 여야합니다. 그런 다음 다음을 사용하여 scsi_Host 노드를 해당 장치 노드와 일치시킬 수 있습니다.

ls -l /sys/class/scsi_Host

더 이상 다듬을 기회가 없을 것 같아서 다른 사람들과 더 가까워 지도록이 정보를 공유하고 싶었습니다. 더 많은 정보를 얻으면이 답변을 편집하여 반영하겠습니다.

도움이 되었기를 바랍니다.

1
Ben Scott

핫 플러그가 작동하려면 acpiphp 모듈이로드되어 있어야합니다.

[[email protected] ~]# modprobe acpiphp

부팅시이 기능을 사용하려면 부팅시로드되도록 구성해야합니다. 한 가지 방법은 /etc/rc.modules(rc.sysinit에 의해 호출 됨)를 작성/편집하고 다음 줄을 추가하는 것입니다.

modprobe acpiphp

chmod + x로이 파일을 작성하면 해당 방식으로 호출되므로이 파일을 작성하십시오.

0
nox