RHEL6환경에서 HBA에 연결된 디바이스들을 확인하는 방법에 대해서 포스팅하도록 하겠습니다.
출처: http://fibrevillage.com/storage/8-check-and-list-luns-attached-to-hba-in-rhel6
먼저 lspci커맨드를 통해서 설치된 HBA카드를 확인합니다.
# lspci | grep Fibre
15:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)
15:00.1 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)
그리고 HBA 디테일 정보를 확인합니다.
# lspci -v -s 15:00.0
15:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)
Subsystem: QLogic Corp. Device 015d
Physical Slot: 2
Flags: bus master, fast devsel, latency 0, IRQ 24
I/O ports at 2200 [size=256]
Memory at 97b00000 (64-bit, non-prefetchable) [size=16K]
Expansion ROM at 90000000 [disabled] [size=256K]
Capabilities: [44] Power Management version 3
Capabilities: [4c] Express Endpoint, MSI 00
Capabilities: [88] MSI: Enable- Count=1/32 Maskable- 64bit+
Capabilities: [98] Vital Product Data
Capabilities: [a0] MSI-X: Enable+ Count=2 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [138] Power Budgeting <?>
Kernel driver in use: qla2xxx
Kernel modules: qla2xxx
위의 결과에서는 HBA가 PCI slot2에 있고 2개의 FC포트가 있는것을 확인 할 수 있습니다.
다음으로 pci 슬롯과 scsi_host 맵핑을 확인합니다.
# ls -l /sys/class/scsi_host
total 0
...
lrwxrwxrwx 1 root root 0 Oct 9 12:58 host4 -> ../../devices/pci0000:00/0000:00:1f.5/host4/scsi_host/host4
lrwxrwxrwx 1 root root 0 Oct 9 12:58 host5 -> ../../devices/pci0000:00/0000:00:03.0/0000:15:00.0/host5/scsi_host/host5
lrwxrwxrwx 1 root root 0 Oct 9 12:58 host6 -> ../../devices/pci0000:00/0000:00:03.0/0000:15:00.1/host6/scsi_host/host6
여기서 slot 2의 첫 번째 포트는 host5, 다른 포트는 host6으로 매핑이 된 것을 알 수 있습니다.
HBA포트의 타겟 LUN을 찾아보겠습니다.
위의 예시를 계속 사용해서 15:00.0을 계속 사용해보면 아래의 커맨드로 확인이 가능합니다.
#find /sys/class/pci_bus/0000\:15/device/0000\:15\:00.0/host*/rport-*/target*/*/state | awk -F'/' '{print $11}' | sort
...
5:0:0:0
5:0:0:1
5:0:0:10
5:0:0:11
5:0:0:2
5:0:0:3
5:0:0:31
5:0:0:4
5:0:0:5
...
이 내용들은 /proc/scsi/scsi에서도 확인이 가능합니다.
#cat /proc/scsi/scsi | grep scsi5
...
Host: scsi5 Channel: 00 Id: 04 Lun: 04
Host: scsi5 Channel: 00 Id: 04 Lun: 05
Host: scsi5 Channel: 00 Id: 04 Lun: 06
Host: scsi5 Channel: 00 Id: 04 Lun: 07
Host: scsi5 Channel: 00 Id: 04 Lun: 08
Host: scsi5 Channel: 00 Id: 04 Lun: 09
Host: scsi5 Channel: 00 Id: 04 Lun: 10
Host: scsi5 Channel: 00 Id: 04 Lun: 11
Host: scsi5 Channel: 00 Id: 04 Lun: 31
...
Note: 만약 SAS로 연결된 경우라면 'rport' 대신 'port'로 검색을 하시면 됩니다.
테입드라이브, 디스크 LUN과 같은 블록디바이스를 찾는다면 아래처럼 찾을 수 있습니다.
# find /sys/class/pci_bus/0000\:15/device/0000\:15\:00.0/host*/rport-*/target*/*/block/*/stat | awk -F'/' '{print $11,$13}'
5:0:0:0 sdb
5:0:0:1 sdc
5:0:0:10 sdl
5:0:0:11 sdm
5:0:0:2 sdd
5:0:0:3 sde
5:0:0:4 sdf
5:0:0:5 sdg
5:0:0:6 sdh
만약 반대로 /dev/sdd 디바이스가 어디에 연결이 되었는지 확인을 하기 위해서는 udevadm 커맨드를 사용할 수 있습니다.
# udevadm info --query=path --name /dev/sdd
/devices/pci0000:00/0000:00:03.0/0000:15:00.0/host5/rport-5:0-0/target5:0:0/5:0:0:2/block/sdd
Multipath 커맨드를 사용해서도 확인이 가능합니다.
multipath -ll | grep sdd
`- 5:0:0:2 sdd 8:48 active ready running
또는 /dev/disk/by-path 트리를 통해서 확인할 수 도 있습니다.
...
lrwxrwxrwx 1 root root 10 Aug 15 16:49 /dev/disk/by-path/pci-0000:15:00.1-fc-0x22430080e524ebac-lun-4 -> ../../sdcx
lrwxrwxrwx 1 root root 10 Aug 15 16:49 /dev/disk/by-path/pci-0000:15:00.1-fc-0x22430080e524ebac-lun-5 -> ../../sdcy
...
HBA WWNA정보는 아래와 같이 확인이 가능합니다.
# for port in /sys/class/fc_host/host[0-9]/port_name; { echo -n "$port : "; cat $port; }
/sys/class/fc_host/host5/port_name : 0x21000024ff3434e4
/sys/class/fc_host/host6/port_name : 0x21000024ff3434e5
다이나믹으로 scsi디바이스를 추가 또는 제거할 수 도 있습니다.
아래는 hot remove 에 대한 예시입니다.
echo 1 > /sys/class/scsi_device/h:c:t:l/device/delete
또는
echo 1 > /sys/block/<dev>/device/delete
여기서 <dev> 는 sda, sdb 등..
또는
echo "scsi remove-single-device a b c d" > /proc/scsi/scsi
그리고 hot add 도 유사하게 진행합니다.
echo "c t l" > /sys/class/scsi_host/host<h>/scan
또는
echo "- - -" > /sys/class/scsi_host/host<h>/scan
또는
echo "scsi add-single-device h c t l" > /proc/scsi/scsi
여기서
h == hostadapter id (first one being 0)
c == SCSI channel on hostadapter (first one being 0)
t == ID
l == LUN (first one being 0)
'IT 지식정리 > 스토리지' 카테고리의 다른 글
리눅스: SCSI 장비 Hot add, remove, rescan (0) | 2018.03.27 |
---|---|
리눅스에서 테입 장비 확인 (0) | 2018.03.21 |
리눅스에서 iscsi 연결설정하기 (iscsi initiator) (0) | 2018.03.19 |
백업의 방식 및 종류 2015. 8. 7. (0) | 2017.11.04 |
SSD,HDD와 Tape간의 퍼포먼스를 비교.. 2013. 9. 11. (0) | 2017.11.04 |