"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
시스템에 액세스하여 지연된 디스크 부팅 및 파티션 감지의 이점을 누릴 수 있습니다.