시작 중에 SCSI 버스 스캔을 건너뛰거나 제외하는 방법은 무엇입니까?

시작 중에 SCSI 버스 스캔을 건너뛰거나 제외하는 방법은 무엇입니까?

"Linux debian 3.2.0-0.bpo.3-amd64 #1 SMP Thu Aug 23 07:41:30 UTC 2012 x86_64 GNU/Linux" 시스템에는 최소한 5개의 SCSI 호스트가 있습니다:

root@debian:~# ls /sys/class/scsi_host
host0  host1  host2  host3  host4

root@debian:~# cat /sys/class/scsi_host/host0/proc_name  
mpt2sas
root@debian:~# cat /sys/class/scsi_host/host1/proc_name
ata_piix
root@debian:~# cat /sys/class/scsi_host/host2/proc_name
ata_piix
root@debian:~# cat /sys/class/scsi_host/host3/proc_name
ata_piix
root@debian:~# cat /sys/class/scsi_host/host4/proc_name
ata_piix

mpt2sas SCSI 버스에는 32개의 드라이브가 연결되어 있습니다. 시동 시(재시작 후) 드라이브는 대부분 대기 모드(속도 저하)에 있습니다. 이로 인해 각 드라이브가 순차적으로 회전하게 됩니다. 일반적인 드라이브 회전 시간은 8~9초입니다. 따라서 재부팅 후 부팅에는 약 5분 정도 소요됩니다.

scsi 버스를 비동기적으로 스캔하도록 커널을 구성해도 GRUB_CMDLINE_LINUX="scsi_mod.scan=async"재부팅 후 부팅 시간이 향상되지 않습니다. 그리고 설정으로 scsi_mod.scan=none인해 시스템을 전혀 부팅할 수 없게 됩니다.

최종 목표는 또 다른 scsi_host인 USB를 통해 부팅하는 것입니다.

# cat /sys/class/scsi_host/host5/proc_name
usb-storage

재부팅 후 시작하는 동안 mpt2sas 또는 (mpt2sas 및 ata_piix) 버스가 모든 드라이브를 회전시키지 않도록 이 시스템을 구성하려면 어떻게 해야 합니까?

답변1

대형 어레이는 별도의 컨트롤러 유형(제조업체와 모델 또는 칩셋)에 있고 시스템 부팅 프로세스에는 아무 것도 필요하지 않으므로 지연된 컨트롤러 초기화를 강제하여 이 문제를 해결할 수 있습니다. 가장 간단한 방법은 커널 초기화를 수행하는 커널 모듈을 블랙리스트에 추가한 다음 부팅 프로세스가 끝날 때 수동으로 로드하는 것입니다.

노트:이 작업은 시스템이 제대로 시작하는 데 필요한 어떤 것도 포함하지 않은 컨트롤러로만 수행되는 것이 매우 중요합니다. 그렇지 않으면 서비스 시작 실패, 잘못된 위치에서 파일 읽기/쓰기, 완전한 커널 패닉 등 시작 실패를 경험할 수 있습니다. 그러한 계획을 실행하기 전에 이 점을 명심하십시오.

먼저 문제의 컨트롤러를 처리하는 커널 모듈을 찾으십시오. 질문에 제공된 정보를 기반으로 한 빠른 Google 검색은 이것이 실제로 모듈일 수 있음을 시사합니다 mpt2sas. 둘째, 코드가 실제로 모듈로 컴파일되었는지 확인하세요 find "/lib/modules/$(uname -r)" -name 'mpt2sas*' -print. (예, 이것이 -print기본값이라는 것을 알고 있지만 명시적으로 말하고 싶습니다...) 로드된 모듈로서의 상태를 확인합니다 lsmod | grep mpt2sas.

그런 다음 모듈 블랙리스트 파일에 모듈을 추가하십시오. /etc/modprobe.d/blacklist.conf 또는 /etc/modprobe.d/mpt2sas.conf와 같은 별도의 구성 파일에 추가할 수 있습니다. 해당 파일에 다음 줄을 추가하기만 하면 됩니다.

blacklist mpt2sas

이렇게 하면 비활성화됩니다.자동적 인관련 모듈을 로드합니다. 여전히 로드할 수 있다는 점을 활용하겠습니다.수동예를 들어 modprobe를 사용하세요. 여기서 "수동"은 "스크립트에서"를 의미할 수 있습니다.

편집기에서 /etc/rc.local을 열고(다른 모든 rc 스크립트 이후에 실행됨) 그 안에 다음 줄을 추가합니다.

modprobe mpt2sas
mount -a

파일의 뒷부분에 배치하고 싶을 수도 있지만 분명히 다른 exit지시문이나 유사한 지시문 앞에 배치할 수 있습니다. 이는 mount -a파일 시스템이 부팅 시 실제로 마운트되는지 여부와 커널 디스크 파티션 검색에서 검색할 때 자동으로 마운트되는지 여부에 따라 필요할 수도 있고 필요하지 않을 수도 있습니다. 원하시면 먼저 사용하지 마시고, 시스템이 작동하지 않으면 안전하게 시스템에 접속하실 수 있습니다. RAID 등을 시작하기 위해 특별한 것이 필요한 경우 modprobe와 사이에 있습니다 mount. 특정 서비스에서 대규모 배열을 사용해야 하는 경우 별도의 rc 스크립트를 만들어 배열을 시작하고 해당 서비스를 시작하기 전에 실행되도록 지정할 수 있습니다. 와 같은 구문을 사용하여 하위 쉘에 래핑하여 백그라운드에서 실행되도록 할 수 있지만 ( commands ) &파티션 검색이 커널에서 수행되므로 결과에 큰 영향을 미치지 않을 수 있습니다. 드라이브에 거의 액세스하지 않는 경우 hdparm파티션을 마운트한 후 스핀다운 드라이브를 사용할 수 있습니다. 요컨대,이것은 특정 요구 사항에 맞게 사용자 정의할 수 있는 섹션입니다..

그런 다음 root 로 실행하여 initramfs를 업데이트합니다 update-initramfs -u.

아무런 문제가 없다면 이제 reboot시스템에 액세스하여 지연된 디스크 부팅 및 파티션 감지의 이점을 누릴 수 있습니다.

관련 정보