본문 바로가기
IT 지식정리/스토리지

리눅스: SCSI 장비 Hot add, remove, rescan

by G. Hong 2018. 3. 27.
728x90
반응형

출처: http://fibrevillage.com/storage/279-hot-add-remove-rescan-of-scsi-devices-on-linux


SCSI device 검색

매핑된 scsi 디바이스 정보는 /proc/scsi/scsi에서 확인이 가능합니다.

또는 lsscsi를 통해서도 확인이 가능합니다.

# lsscsi

[0:0:0:0]    disk    ATA      SEAGATE ST31000N SU0E  /dev/sda 

[0:0:1:0]    disk    ATA      SEAGATE ST31000N SU0E  /dev/sdb 

...

[1:0:1:0]    disk    ATA      SEAGATE ST31000N SU0E  /dev/sdj 

[1:0:2:0]    disk    ATA      SEAGATE ST31000N SU0E  /dev/sdk 

[1:0:3:0]    disk    ATA      HITACHI H7210CA3 A3CB  /dev/sdl 

[1:0:4:0]    disk    ATA      HITACHI HUA7210S AC5A  /dev/sdm 

...

[5:0:7:0]    disk    ATA      SEAGATE ST31000N SU0D  /dev/sdav

[6:0:0:0]    mediumx IBM      TS3500           0104  /dev/sch0

[6:0:1:0]    tape    IBM      ULT3580-TD5      0104  /dev/st0 

[6:0:2:0]    tape    IBM      ULT3580-TD5      0104  /dev/st1 


아래는 /proc/scsi/scsi에서 확인하는 내용입니다.

# cat /proc/scsi/scsi

Attached devices:

Host: scsi0 Channel: 00 Id: 00 Lun: 00

  Vendor: ATA      Model: SEAGATE ST31000N Rev: SU0E

  Type:   Direct-Access                    ANSI  SCSI revision: 05

Host: scsi0 Channel: 00 Id: 01 Lun: 00

  Vendor: ATA      Model: SEAGATE ST31000N Rev: SU0E

  Type:   Direct-Access                    ANSI  SCSI revision: 05

Host: scsi0 Channel: 00 Id: 02 Lun: 00

  Vendor: ATA      Model: SEAGATE ST31000N Rev: SU0E

  Type:   Direct-Access                    ANSI  SCSI revision: 05

...


위의 예시에서 Host: scsi0 Channel: 00 Id: 01 Lun: 00 이 디바이스는 lsscsi 결과에서의 [0:0:0:0] 와 동일한 디바이스 입니다.


SCSI device rescan

다음으로 SCSI bus를 rescan 을 해보겠습니다.

리부팅을 해도 scsi장비들이 rescan 되지만, 좋은 방법은 아닙니다. 

scsi bus를 rescan 하기 위해서는 device가 어디에 연결이 되었는지는 알아야 합니다. 만약에 device가 연결된 bus를 모른다면 각각의 bus를 모두 rescan 할 수 도 있습니다.

아래의 커맨드를 통해서 rescan을 할 수 있습니다.

echo "- - -" > /sys/class/scsi_host/host<H>/scan

여기서 H는 scan을 할 scsi 버스의 번호입니다.


아래의 예시를 보시면 해당 커맨드를 통해서 새로운 디바이스(sdd)가 인식이 되었습니다.

# lsscsi

...

[1:0:0:7]    disk    IBM      1814      FAStT  1060  /dev/sdb 

[1:0:0:8]    disk    IBM      1814      FAStT  1060  /dev/sdc 

[1:0:0:10]   disk    IBM      1814      FAStT  1060  /dev/sde 

# echo "- - -" > /sys/class/scsi_host/host1/scan

# lsscsi

...

[1:0:0:7]    disk    IBM      1814      FAStT  1060  /dev/sdb 

[1:0:0:8]    disk    IBM      1814      FAStT  1060  /dev/sdc

[1:0:0:9]    disk    IBM      1814      FAStT  1060  /dev/sdd 

[1:0:0:10]   disk    IBM      1814      FAStT  1060  /dev/sde


이 방법은 디스크 뿐만 아니라 scsi cd/dvd장비에도 사용할 수 있습니다.

아래의 다른 방법으로도 rescan이 가능합니다.

echo "scsi add-single-device 1 0 0 9" > /proc/scsi/scsi


SCSI device 삭제

scsi device 삭제는 아래 커맨드를 통해서 할 수 있습니다.

    echo 1 > /sys/class/scsi_device/h:c:t:l/device/delete

    또는

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

    여기서 <dev> 는 sda, sdb 와 같은 명칭입니다.


아래는 scsi device sdau를 삭제하는 예시입니다.

# echo 1 > /sys/block/sdau/device/delete 

# lsscsi | grep sdau


그리고 아래와 같은 방법으로도 삭제가 가능합니다.

echo "scsi remove-single-device h c t l" > /proc/scsi/scsi


SCSI device 추가

scsi device는 위에서 설명한 scan을 통해서 추가할 수 있습니다.

    echo "- - -" > /sys/class/scsi_host/host<h>/scan

그리고 scsi 로케이션 h:c:t:l을 알고 있다면 아래의 커맨드도 사용할 수 있습니다.

    echo "c t l" >  /sys/class/scsi_host/host<h>/scan

그리고 아래의 방법도 사용할 수 있습니다.

    echo "scsi add-single-device a b c d" > /proc/scsi/scsi


SCSI device 리스캔

아래의 커맨드를 통해서 새로운 디바이스가 아닌, 기존의 디바이스나 missing된 디바이스를 리스캔 할 수 도있습니다.

echo 1 > /sys/block/sdau/device/rescan 

또는 

echo 1 > /sys/class/scsi_device/h:c:t:l/device/rescan

728x90
반응형