버스에 SATA HDD가 있는 삼성 노트북(Chronos s7)이 있는데, 이는 , 및 나머지 SATA 인터페이스의 다양한 장치에서 8G SSD ata:1
로 감지됩니다 ./dev/sda
ata:2
/dev/sdb
문제는 SSD 디스크입니다.
- 마더보드에 납땜됨(분리 가능)
- 실패(모든 작업에 대해 I/O 오류만 발생함)
- BIOS에 표시되지 않습니다(아마도 손상되었기 때문일 수 있음).
이제 이 디스크는 다음과 같습니다.
- 실패한 디스크를 검색하는 동안 시작이 3~5분 정도 지연됩니다. 이는 짜증나는 일입니다.
- 하지만 가장 짜증나는 점은 시스템이
/dev/sdb
중단되지 않는다는 것입니다.
저는 시작 시 지연을 감수할 수 있습니다. 제가 걱정하는 것은 재개/일시 중지입니다.
질문은 다음과 같습니다.ata:2에서 장치를 검색하지 않도록 커널에 지시할 수 있나요?
이전 커널(<3.0)에는 여전히 소스 코드를 조사할 수 있었을 때 hdb=ignore
이를 수행할 수 있는 명령줄 인수 스타일이 있었습니다.
아래에 제안된 모든 트릭 udev
과 커널 매개변수를 시도했지만 libata:force
성공하지 못했습니다. 특히 다음은 작동하지 않습니다.
/etc/udev/rules.d/
다음 파일 중 하나 에 추가합니다 (초기 실행00-ignoredisk.rules
또는 후반 실행99-ignoredisk.rules
또는 두 위치 모두).SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
...도 아니다
KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
중간 솔루션도 많지 않습니다. 즉, 부팅 후 디스크에 액세스할 수 없지만 부팅 시 검사하고 일시 중지 시 검사를 수행하여 일시 중지가 실패하게 됩니다.
시스템 파일
/lib/udev/rules.d/60-persistent-storage.rules
(및udisks
,udisks2
) 변경 사항 편집KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
도착하다
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
다시 말하지만, 이는 사용자 공간으로부터 디스크를 보호하는 효과가 있지만 디스크는 커널에 계속 표시됩니다.
가능한 모든 매개변수 조합으로 시작하세요(글쎄요, 많이)
libata:force
(예: find여기) DMA를 비활성화하거나 속도를 늦추거나 장애가 발생한 디스크에 관한 모든 작업을 수행하는 것은 작동하지 않습니다. 이 매개변수가 사용되었지만 디스크가 여전히 검색되어 오류가 발생했습니다.전체
udevadm info -a -n /dev/sdb
붙여넣기http://paste.ubuntu.com/6186145/smartctl -i /dev/sdb -T permissive
다음을 제공합니다:root@samsung-romano:/home/romano# smartctl -i /dev/sdb -T permissive smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-31-generic] (local build) Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net Vendor: /1:0:0:0 Product: User Capacity: 600,332,565,813,390,450 bytes [600 PB] Logical block size: 774843950 bytes >> Terminate command early due to bad response to IEC mode page
이것은 분명히 잘못된 것입니다. 그럼에도 불구하고:
root@samsung-romano:/home/romano# fdisk -b 512 -C 970 -H 256 -S 63 /dev/sdb fdisk: unable to read /dev/sdb: Input/output error
(SSD 데이터http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579).
답변1
libata
noprobe 옵션은 전혀 없습니다. 이는 레거시 IDE 옵션입니다.
하지만 나는 가서 커널을 작성했습니다수리하다당신을 위해 그것을 실현하십시오. 많은 커널에서 매우 쉽게 작동합니다(위 줄은 2013-05-21/v3.10-rc1*에 추가되었지만 줄 없이 수동으로 안전하게 적용할 수 있습니다).
고쳐 쓰다패치는 지금상류(적어도 3.12.7 안정 커널에서는). Ubuntu 14.04(3.13-stable 기반)와 함께 배포되는 표준 커널에 있습니다.
패치 설치 후 추가
libata.force=2.00:disable
커널 부팅 매개변수에 추가하면 Linux 커널에서 디스크가 숨겨집니다. 번호가 올바른지 다시 확인하세요. 장치 이름을 검색하면 도움이 됩니다(분명히 커널 메시지를 확인해야 합니다).앞으로시작 매개변수 추가):
(0)samsung-romano:~% dmesg | grep iSSD
[ 1.493279] ata2.00: ATA-8: SanDisk iSSD P4 8GB, SSD 9.14, max UDMA/133
[ 1.494236] scsi 1:0:0:0: Direct-Access ATA SanDisk iSSD P4 SSD PQ: 0 ANSI: 5
중요한 숫자는 ata2.00
위의 첫 번째 행에 있는 숫자입니다.
답변2
하드웨어 문제에는 물리적 하드웨어 솔루션이 있습니다. 드라이브의 납땜을 제거하거나 전원을 차단하는 것을 고려해 보셨나요?
편집: 글쎄, 이것이 사람들이 이전에 하드 드라이브를 핫플러그하는 데 사용했던 옵션이 아니었다면 말이죠. 이를 사용하여 드라이브를 비활성화할 수 있습니다.
echo 1 > /sys/block/sdb/device/delete
다른 프로세스에서는 SATA 버스를 강제로 검색한 다음 다시 반환할 수 있습니다. 노트북을 최대 절전 모드로 전환하기 전에 이 작업을 수행해 보세요.
OP 편집:효율적인. 다음 파일을 추가했습니다.
-rwxr-xr-x 1 root root 204 Dec 6 16:03 99_delete_sdb
콘텐츠:
#!/bin/sh
# Tell grub that resume was successful
case "$1" in
suspend|hibernate)
if [ -d /sys/block/sdb ]; then
echo Deleting device sdb
echo 1 > /sys/block/sdb/device/delete
fi
;;
esac
...이제 시스템이 올바르게 일시중단(및 재개)됩니다.
답변3
바이오스
BIOS를 통해 장치가 어떤 방식으로든 표시되지 않습니까?
일반적으로 하드 드라이브는 "자동" 모드로 구성되며, 하드 드라이브 하나만 명시적으로 활성화하고 나머지는 모두 비활성화하는 경우에도 해당 장치가 비활성화되어 있는지 확인합니다.
커널 부팅 옵션
일반적으로 Linux 커널에 스위치로 전달될 수 있는 다양한 부팅 옵션을 사용하여 Linux 커널 자동 감지로 부팅되는 다양한 하위 시스템을 비활성화할 수 있습니다.
전부는 아니지만 대부분의 옵션이 여기에 나열되어 있습니다.
리눅스 간결한 책
O'Reilly의 책을 찾아보고 싶을 수도 있습니다.리눅스 커널에 대한 간략한 소개, 구체적으로,7장: 커널 사용자 정의.
이 책은 작가 Greg Kroah-Hartman의 개인 웹사이트에서 무료로 제공됩니다. 책 전체를 다운로드할 수도 있습니다.
답변4
Linux가 잠금을 확인하는 방법: ( sudo hdparm -I /dev/sdX
X = a..z를 사용하십시오. 물론 드라이브가 어떤 장치인지 알아야 합니다). (큰) 출력이 끝나면 마지막 10줄을 읽을 수 있어야 합니다 *not* locked
.