it-swarm-vi.tech

Làm cách nào để Linux nhận ra ổ đĩa SATA / dev / sda mới mà tôi đã hoán đổi mà không cần khởi động lại?

Hoán đổi một ổ đĩa SATA/dev/sda không hoạt động tốt, nhưng khi tôi đổi sang một ổ đĩa mới, nó không được nhận ra:

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

Tôi đã thử một vài thứ để làm cho máy chủ tìm thấy/dev/sda mới, chẳng hạn như rescan-scsi-bus.sh nhưng chúng không hoạt động:

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

Tôi đã kết thúc việc khởi động lại máy chủ./dev/sda đã được công nhận, tôi đã sửa phần mềm RAID và mọi thứ đều ổn. Nhưng lần sau, làm cách nào để Linux có thể nhận ra ổ đĩa SATA mới mà tôi đã tráo đổi mà không cần khởi động lại?

Hệ điều hành được đề cập là RHEL5.3:

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

Ổ cứng là Seagate Barracuda ES.2 SATA 3.0-Gb/s 500 GB, model ST3500320NS.

Đây là đầu ra 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)

Cập nhật : Có lẽ trong hàng tá trường hợp, chúng tôi đã buộc phải khởi động lại máy chủ vì trao đổi nóng không "chỉ hoạt động". Cảm ơn câu trả lời để xem thêm về bộ điều khiển SATA. Tôi đã bao gồm đầu ra lspci cho hệ thống có vấn đề ở trên (tên máy chủ: fs-2). Tôi vẫn có thể sử dụng một số trợ giúp để hiểu chính xác những gì không được hỗ trợ về phần cứng thông minh về mặt trao đổi nóng cho hệ thống đó. Xin vui lòng cho tôi biết những gì đầu ra khác ngoài lspci có thể hữu ích.

Tin tốt là trao đổi nóng "chỉ hoạt động" ngày hôm nay trên một trong các máy chủ của chúng tôi (tên máy chủ: www-1), rất hiếm đối với chúng tôi. Đây là đầu ra 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

Nếu bộ điều khiển SATA của bạn hỗ trợ trao đổi nóng, nó sẽ "chỉ hoạt động (tm)."

Để buộc quét lại trên SCSI BUS (mỗi cổng SATA hiển thị dưới dạng SCSI BUS) và tìm các ổ đĩa mới, bạn sẽ sử dụng:

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

Ở trên, <n> là số BUS.

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

Khi một ổ đĩa bị lỗi trong một số trường hợp, Linux sẽ không nhận ra rằng bạn thực sự đã rút nó ra khỏi mảng. Nếu bạn gặp vấn đề đó (như tôi đã làm sáng nay), bạn có thể làm như sau:

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

Ví dụ. trong trường hợp của tôi/dev/sda đã thất bại và tôi không muốn khởi động lại máy chủ, vì vậy tôi đã làm:

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

Sau khi tôi làm điều đó, ổ đĩa mới (thực sự đã được thêm vào vật lý) ngay lập tức được nhìn thấy.

Nếu nó không hiển thị tại thời điểm này, bạn cũng có thể thực hiện việc này để buộc quét lại:

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

Rằng "- -" là ký tự đại diện cho kênh, id & LUN tương ứng, vì vậy bạn có thể hạn chế quét đối với một số tập hợp con nếu bạn muốn bằng cách chỉ định số thay thế.

Trước khi bắt đầu, bạn cũng có thể:

readlink /sys/block/<devnode>

Điều này sẽ cho bạn thấy đường dẫn có số Máy chủ phù hợp để đăng nhập/Proc/scsi/scsi cho sự biến mất sau khi xóa.

14
karora

Làm thế nào về điều này (dường như hoạt động trong Ubuntu):

Sudo partprobe

8
user59282

Tôi không thể tin rằng chưa có ai đề cập đến AHCI ... bộ điều khiển SATA của bạn phải ở chế độ AHCI để cho phép trao đổi nóng. Kiểm tra điều này bằng cách nhìn vào trình điều khiển bạn đang sử dụng:

[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

Xem cách nó nói "ahci" ở đó.

Nếu không, hãy kích hoạt nó trong BIOS của bạn. Ngoài ra, một số BIOS, đặc biệt là trên các máy chủ hoặc UEFI có cài đặt "Hoán đổi nóng = bật/tắt" cho mỗi đĩa mà bạn cũng nên bật nếu nó tồn tại.

6
Peter

Đây là lý do tại sao tôi cần khởi động lại máy tính ...

Tôi chỉ trao đổi nóng/dev/sdc của tôi. Tôi đã sử dụng scsiadd -r 3 0 0 để tắt nguồn đĩa cũ trước khi rút nó ra. Sau đó, sau khi cài đặt đĩa mới, đĩa mới không xuất hiện dưới dạng/dev/sdc mà là/dev/sdd. Sau khi khởi động lại, đĩa sẽ xuất hiện lại dưới dạng/dev/sdc.

Vì vậy, có vẻ như hotswap hoạt động Ok, có thể chỉ là/dev/sd * không còn như trước nữa.

Đây có thể là một câu trả lời cho vấn đề của bạn?

2
Peter

Bộ điều khiển Fusion-MPT SAS bạn có là bộ điều khiển RAID cấp thấp. Nếu bạn không sử dụng nó cho RAID, nó vẫn có thể cung cấp một lớp cản trở/trừu tượng không có ích.

Bạn có thể cần chọc vào bộ điều khiển RAID với trạng thái mpt hoặc lsiutil để làm cho nó thực sự quét xe buýt.

http://hwear.le-vert.net/wiki/LSIFusionMPT có số lượng tài liệu tốt, nhưng tôi không thể nói rằng tôi đã xác minh nó.

1
aij

Trong một số trường hợp, trao đổi nóng có thể cần phải được bật trên BIOS của bo mạch chủ và/hoặc bộ điều khiển SATA. Điều này hoàn toàn phụ thuộc vào kiểu dáng và kiểu dáng của cả hai, nhưng nếu bạn có bộ điều khiển SATA tích hợp mà nên hỗ trợ hotswap thì thật đáng để thử qua BIOS bo mạch chủ. Thẻ SATA có thể có hoặc không có cài đặt BIOS riêng, nhiều thẻ cấp thấp hơn không có, nhưng thẻ cấp máy chủ thường làm.

Nếu tôi nhớ lại một cách chính xác thì tôi cần điều này với một số bo mạch chủ Gigabyte, và có lẽ một số khác. Tôi cần nó để một khay SATA trao đổi nóng hoạt động; với tính năng bị vô hiệu hóa, việc xóa ổ đĩa không gây ra sự cố nhưng một ổ đĩa mới sẽ không đăng ký cho đến khi khởi động lại. Kích hoạt cài đặt hoạt động như mong đợi, các ổ đĩa được đặt trong khay ngay lập tức được tạo ra và có sẵn cho HĐH.

1
STW

DVD của tôi trên máy Fedora 16 của tôi được kết nối với giao diện SATA. Nó đã bị khóa và sẽ không mở hoặc đóng. Chạy partprobe khi root giúp cdrom/DVD của tôi hoạt động trở lại. Tôi nghĩ nó sẽ giúp ích cho máy bao phấn nơi tôi gặp vấn đề trao đổi nóng thường xuyên. Cảm ơn!

1
Stuart Edge

Tôi biết câu hỏi này đã cũ, nhưng tôi đã có một số thành công mà tôi không thấy báo cáo ở nơi khác. Có vấn đề tương tự trên Dell Precision 380 ngày hôm nay. Cuối cùng, nó đã hoạt động bằng cách thực hiện một số kết hợp sau:

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

CẢNH BÁO : Điều này cũng có thể phá vỡ các thiết bị ATA khác trên hệ thống. Nếu bạn đã gắn hệ thống tập tin trên các i dev đó, điều đó có khả năng kết thúc tồi tệ. Tình hình của tôi không quan tâm, nhưng có thể bạn.

Chính xác thì những lệnh nào ở trên là cần thiết, và theo thứ tự nào, tôi không biết vào lúc này. Một số lệnh có thể cần phải được lặp lại. Nếu tôi phải đoán, tôi sẽ nói làm theo thứ tự hiển thị ở trên, sau đó một scsi_host khác quét lại vào cuối. Tôi đã làm khá nhiều trong những khám phá của tôi.

Lệnh đầu tiên (quét scsi_host) báo cho người trung gian SCSI quét tất cả các xe buýt để tìm thiết bị mới/thay đổi. Lệnh thứ hai cố gắng đặt lại mục tiêu SCSI (thiết bị đĩa). Hai cái cuối cùng đang làm việc với trình điều khiển cho chính bộ điều khiển AHCI.

Tôi tìm thấy các mục trong câu hỏi chủ yếu bằng cách kiểm tra chi tiết và thử nghiệm táo bạo.

Bạn có thể khớp các nút scsi_device với thiết bị và mô hình thiết bị với (sử dụng grep để in tên tệp ở phía trước nội dung):

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

Chữ số đầu tiên của ID thiết bị SCSI phải là số scsi_host. Sau đó, bạn có thể khớp các nút scsi_host với các nút thiết bị của họ với:

ls -l /sys/class/scsi_Host

Tôi nghi ngờ mình sẽ không bao giờ có cơ hội tinh chỉnh thêm nữa, vì vậy tôi muốn chia sẻ thông tin này với hy vọng giúp người khác đến gần hơn. Nếu tôi có thêm thông tin, tôi sẽ chỉnh sửa câu trả lời này để phản ánh.

Hi vọng điêu nay co ich.

1
Ben Scott

Để hotplug hoạt động, bạn phải tải mô-đun acpiphp.

[[email protected] ~]# modprobe acpiphp

rõ ràng nếu bạn muốn nó hoạt động khi khởi động, bạn sẽ phải cấu hình nó sẽ được tải vào lúc khởi động - một cách là tạo/chỉnh sửa /etc/rc.modules (được gọi bởi RC.sysinit) và thêm dòng:

modprobe acpiphp

hãy nhớ nếu bạn tạo tệp này để chmod + x nó, vì nó được gọi theo cách đó.

0
nox