리눅스는 USB 저장 장치도 SCSI 장치로 인식한다.
Run Level 3 로 운영 중인 리눅스 서버에 USB 저장 장치를 추가하게 되면 어떤 디바이스가 USB 장치로 잡혔는지 확인하기 쉽지 않을 수가 있다.
물론 서버에 디스크가 한 두개만 장착되어 있다면 어렵지 않지만, 외장 스토리지 LUN이 multipath로 수십개가 붙어 있는 경우에는 핵갈리 수 있다.
USB 저장장치의 host number 확인과 해당 scsi 장치의 블럭디바이스명을 확인하여 실수 없이 작업할 수 있는 방법에 대해 알아 본다.
목차
1. 테스트 장치
- 아래는 본인이 테스트한 장비
1) Hard Disk : 파티셔닝 되지 않은 1테라바이트 Western digital Hard Disk
2) Externel Device : USB Type
* 사전에 HDD의 벤더 및 모델명은 확인 필요.
2. 장치 확인하기
2.1. USB 장치 SCSI 인식 확인
- USB HDD를 꼽기 전 아래와 같은 명령으로 USB SCSI 장치 인식 확인.
- USB를 꽂으면 디바이스가 보이기 시작한다. 처음 한 줄이 보이다가 곧 3줄이 출력.
[root@rhel66-docker01 ~]# watch -d -n1 'ls -l /sys/bus/scsi/devices/* | grep usb'
lrwxrwxrwx. 1 root root 0 Jul 3 05:54 /sys/bus/scsi/devices/9:0:0:0 -> ../../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/host9/target9:0:0/9:0:0:0
lrwxrwxrwx. 1 root root 0 Jul 3 05:54 /sys/bus/scsi/devices/host9 -> ../../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/host9
lrwxrwxrwx. 1 root root 0 Jul 3 05:54 /sys/bus/scsi/devices/target9:0:0 -> ../../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/host9/target9:0:0
- 이 중에서 /sys/bus/scsi/devices/9:0:0:0 (스카시 호스트)를 확인
- 참고로 USB를 뺏다 꽂았다 할 수 록 host number 값이 증가 된다.
2.2. 장치명 확인
- 인식된 USB SCSI 장치의 블록디바이스 명을 스카시 호스트를 통해 확인
[root@rhel66-docker01 ~]# ls -d /sys/bus/scsi/devices/9\:0\:0\:0/block/*
/sys/bus/scsi/devices/9:0:0:0/block/sdb
- 테스트한 서버에서는 sdb로 확인. 시스템 환경에 따라 상이하게 표기되므로 주의해서 확인.
2.3. 해당 장치의 벤더, 모델명 확인
- Hard Disk의 모델에 따라 상이하게 표기된다.
[root@rhel66-docker01 ~]# cat /proc/scsi/scsi | egrep -A 2 'scsi9'
Host: scsi9 Channel: 00 Id: 00 Lun: 00
Vendor: WDC WD10 Model: EACS-00D6B0 Rev:
Type: Direct-Access ANSI SCSI revision: 02
- WDC (Western Digital Company) 제품임을 확인 할 수 있습니다.
- 아래 명령을 통해서도 USB Hard Disk에 대해 자세한 정보를 얻을 수 있다.
- serial number 까지 확인 가능하므로 확실하게 매칭할 수 있다.
[root@rhel66-docker01 ~]# smartctl -i /dev/sdb
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Green
Device Model: WDC WD10EACS-00D6B0
Serial Number: WD-WCAU40575612
LU WWN Device Id: 5 0014ee 256fa2f48
Firmware Version: 01.01A01
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Fri Jul 3 06:36:53 2015 KST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
3. 파티셔닝/파일시스템 생성
3.1. 파티션 유무 확인
[root@rhel66-docker01 ~]# cat /proc/partitions | grep sdb
8 16 976762584 sdb
3.2. 파티션 생성
- pared 툴을 통해 파티션 생성. 파란색 부분처럼 입력.
[root@rhel66-docker01 ~]# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 1 100%
(parted) print
Model: WDC WD10 EACS-00D6B0 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 1000GB 1000GB primary
(parted) quit
3.3. 파티션 생성 확인
[root@rhel66-docker01 ~]# cat /proc/partitions | grep sdb
8 16 976762584 sdb
8 17 976760832 sdb1
3.4. 파일시스템 생성(포맷)
[root@rhel66-docker01 ~]# mkfs.ext4 /dev/sdb1
3.5. 마운트
[root@rhel66-docker01 ~]# mkdir /DB-Backup
[root@rhel66-docker01 ~]# mount -t ext4 /dev/sdb1 /DB-Backup
- 데이터 복사가 다 끝난 후 /DB-Backup을 umount 하고 usb 포트를 빼면된다.
- 다른 서버에 USB 장착을 해서 위와 같이 확인 후 mount 해서 사용하면 되겠다.
이상이다.