안녕하세요. 썬구루입니다. 이전 게시물에서 CentOS 7.3에 mhVTL을 설치하는 방법에 대해 알아보았습니다. 이를 여기에서 사용하는 이유는 보통 리눅스나 유닉스 책에서 백업을 할 때 파일시스템 기반 파일로 백업하는 예가 많습니다. 하지만 실무에서 백업은 아래와 같은 방법으로 행해지고 있습니다.
▶ 파일시스템 기반에 파일로 백업
▶ 단일 테이프 디바이스를 활용한 테이프 미디어 백업 (특히 DAT 또는 LTO 드라이브)
▶ 테이프 라이브러리(PTL)와 백업 솔루션을 활용한 테이프 미디어 백업
▶ 가상 테이프 라이브러리(VTL)와 백업 솔루션을 활용한 가상 테이프 미디어 백업
저가 유닉스 엔지니어를 할 때에는 테이프 드라이브와 매체를 제어하는 명령을 테스트하기 위해 수십만 원을 주고 단일 테이프 디바이스와 DDS2 미디어를 산 적이 있습니다. 지금은 너무 오래되어 고장 나서 버렸지만 말이죠. 요즘은 그런 물리적 디바이스가 없어도 할 수 있는 방법이 있습니다. 드라이브와 미디어를 제어하는 방법을 알기 위해 그리고 이를 활용한 백업/복구 방법을 알기 위해 mhVTL을 사용하는 것입니다.
저가 공부할 때 이런 프로그램에 나왔어야 하는 것인데.. 좀 아쉬움이 남긴 하네요. 자.. 그럼 관련 디바이스 확인하는 방법과 제어하는 방법에 대해 알아보도록 하겠습니다.
■ 체인저(Changer)와 테이프 드라이브(Tape Drive) 확인
아래와 같이 lsscsi 명령을 사용하면 SCSI 디바이스의 모델과 디바이스 파일 등에 대한 정보를 확인할 수 있다.
[root@centos64 ~]# lsscsi -g
[0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda /dev/sg0 [2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0 /dev/sg1 [3:0:0:0] mediumx STK L700 0105 /dev/sch0 /dev/sg10 [3:0:1:0] tape IBM ULT3580-TD5 0105 /dev/st0 /dev/sg2 [3:0:2:0] tape IBM ULT3580-TD5 0105 /dev/st1 /dev/sg3 [3:0:3:0] tape IBM ULT3580-TD4 0105 /dev/st2 /dev/sg4 [3:0:4:0] tape IBM ULT3580-TD4 0105 /dev/st3 /dev/sg5 [3:0:8:0] mediumx STK L80 0105 /dev/sch1 /dev/sg11 [3:0:9:0] tape STK T10000B 0105 /dev/st4 /dev/sg6 [3:0:10:0] tape STK T10000B 0105 /dev/st5 /dev/sg7 [3:0:11:0] tape STK T10000B 0105 /dev/st6 /dev/sg8 [3:0:12:0] tape STK T10000B 0105 /dev/st7 /dev/sg9 You have mail in /var/spool/mail/root [root@centos64 ~]# |
위 결과 내용을 보면 STK(StorageTek) L700과 L80 테이프 라이브러리가 있는 것을 확인할 수 있다. L80은 80 개까지 테이프 미디어를 보관 운영할 수 있는 백업 라이브러리이다. L700은 대략 최대 700개(실제 678개)까지 테이프를 장착할 수 있다. 아래 그림과 같은 것을 아마 과학 영화에서 한 번쯤 보신 분들도 있을 것이다.
로봇 암(Robot Arm)이 지나다니면서 슬롯(Slot)에 삽입되어 있는 미디어를 빼내어 드라이브에 삽입하는.. 그런 장면... 테이프 라이브러리는 미디어를 이동시킬 수 있는 하나 이상의 체인저(Changer)와 테이프 드라이브가 보통 2개 이상 장착시킬 수 있다.
lsscsi -g 명령에서 아래 내용은 L700과 L80 테이프 라이브러리의 체인저를 나타낸다.
[3:0:0:0] mediumx STK L700 0105 /dev/sch0 /dev/sg18
[3:0:8:0] mediumx STK L80 0105 /dev/sch1 /dev/sg19 |
lsscsi -g 명령에서 아래 내용은 L700에 장착된 테이프 드라이브를 나타낸다. 초록색으로 표시된 키워드로 인터넷 검색을 하면 관련된 사진을 확인할 수 있다.
[3:0:1:0] tape IBM ULT3580-TD5 0105 /dev/st0 /dev/sg10
[3:0:2:0] tape IBM ULT3580-TD5 0105 /dev/st1 /dev/sg11 [3:0:3:0] tape IBM ULT3580-TD4 0105 /dev/st2 /dev/sg12 [3:0:4:0] tape IBM ULT3580-TD4 0105 /dev/st3 /dev/sg13 |
아래 명령을 사용하면 디바이스에 대한 좀 더 상세한 정보를 확인할 수 있다.
[root@centos64 ~]# lsscsi -c -t [3:0:0:0]
Attached devices: Host: scsi3 Channel: 00 Target: 00 Lun: 00 Vendor: STK Model: L700 Rev: 0105 Type: Medium Changer ANSI SCSI revision: 05 [root@centos64 ~]# [root@centos64 ~]# lsscsi -c -t [3:0:1:0] Attached devices: Host: scsi3 Channel: 00 Target: 01 Lun: 00 Vendor: IBM Model: ULT3580-TD5 Rev: 0105 Type: Sequential-Access ANSI SCSI revision: 05 [root@centos64 ~]# |
■ mtx 명령
mtx 명령은 SCSI 미디어 체인저(Changer)를 제어하기 위해 사용되는 명령이다. 다시 말해 체인저를 제어하여 슬롯에 있는 백업 테이프를 드라이브에 넣거나 뺄 수 있다.
1). 명령형식
mtx [ -f SCSI Generic Device ] COMMAND [ command ... ]
2). COMMAND
체인저(Changer)에 내려질 명령을 나타낸다.
Sl_num : Slot number
Drv_num : Drive number
Command
|
내 용
|
status
|
체인저, 드라이브, 슬롯에 대한 상태 정보를 보여준다. |
load Sl_num Drv_num
|
특정 슬롯에 있는 테이프를 특정 드라이브로 옮기기 위해 사용한다. |
unload Sl_num Drv_num
|
특정 드라이브에 있는 테이프 빼내어 특정 슬롯으로 옮기기 위해 사용한다. |
inquiry
|
디바이스에 대한 정보를 확인하기 위해 사용한다. ( Product Type, Vendor ID, Product ID 등) |
inventory
|
체인저가 이동하면서 슬롯에 있는 테이프 변동사항이 있는지 확인하고 정보 업데이트를 하기 위해 사용. |
position Sl_num
|
체인터를 특정 슬롯에 위치시키기 위해 사용한다. |
3). 예제
아래는 L700에 있는 체인저, 드라이브, 슬롯에 있는 테이프 미디어 정보를 확인하기 위해 실행한 명령이다. 미디어 측면에는 이를 구분하기 위한 바코드가 붙어 있는데 E01001L4는 바코드 번호이다.
[root@centos64 ~]# mtx -f /dev/sg10 status
Storage Changer /dev/sg18:4 Drives, 43 Slots ( 4 Import/Export ) Data Transfer Element 0:Empty Data Transfer Element 1:Empty Data Transfer Element 2:Empty Data Transfer Element 3:Empty Storage Element 1:Full :VolumeTag=E01001L4 Storage Element 2:Full :VolumeTag=E01002L4 Storage Element 3:Full :VolumeTag=E01003L4 Storage Element 4:Full :VolumeTag=E01004L4 Storage Element 5:Full :VolumeTag=E01005L4 Storage Element 6:Full :VolumeTag=E01006L4 Storage Element 7:Full :VolumeTag=E01007L4 Storage Element 8:Full :VolumeTag=E01008L4 Storage Element 9:Full :VolumeTag=E01009L4 Storage Element 10:Full :VolumeTag=E01010L4 Storage Element 11:Full :VolumeTag=E01011L4 Storage Element 12:Full :VolumeTag=E01012L4 Storage Element 13:Full :VolumeTag=E01013L4 Storage Element 14:Full :VolumeTag=E01014L4 Storage Element 15:Full :VolumeTag=E01015L4 Storage Element 16:Full :VolumeTag=E01016L4 Storage Element 17:Full :VolumeTag=E01017L4 Storage Element 18:Full :VolumeTag=E01018L4 Storage Element 19:Full :VolumeTag=E01019L4 Storage Element 20:Full :VolumeTag=E01020L4 Storage Element 21:Empty Storage Element 22:Full :VolumeTag=CLN101L4 Storage Element 23:Full :VolumeTag=CLN102L5 Storage Element 24:Empty Storage Element 25:Empty Storage Element 26:Empty Storage Element 27:Empty Storage Element 28:Empty Storage Element 29:Empty Storage Element 30:Full :VolumeTag=F01030L5 Storage Element 31:Full :VolumeTag=F01031L5 Storage Element 32:Full :VolumeTag=F01032L5 Storage Element 33:Full :VolumeTag=F01033L5 Storage Element 34:Full :VolumeTag=F01034L5 Storage Element 35:Full :VolumeTag=F01035L5 Storage Element 36:Full :VolumeTag=F01036L5 Storage Element 37:Full :VolumeTag=F01037L5 Storage Element 38:Full :VolumeTag=F01038L5 Storage Element 39:Full :VolumeTag=F01039L5 Storage Element 40 IMPORT/EXPORT:Empty Storage Element 41 IMPORT/EXPORT:Empty Storage Element 42 IMPORT/EXPORT:Empty Storage Element 43 IMPORT/EXPORT:Empty [root@centos64 ~]# |
아래는 각 디바이스에 대한 정보를 확인하기 위해 사용한 명령이다.
[root@centos64 ~]# mtx -f /dev/sg10 inquiry
Product Type: Medium Changer Vendor ID: 'STK ' Product ID: 'L700 ' Revision: '0105' Attached Changer API: No [root@centos64 ~]# [root@centos64 ~]# mtx -f /dev/sg0 inquiry Product Type: Disk Drive Vendor ID: 'VMware, ' Product ID: 'VMware Virtual S' Revision: '1.0 ' Attached Changer API: No [root@centos64 ~]# |
아래는 슬롯 1번에 있는 테이프 미디어를 드라이브 0번으로 이동시키는 명령이다.
[root@centos64 ~]# mtx -f /dev/sg10 status | grep -E "Data|VolumeTag"| head
Data Transfer Element 0:Empty Data Transfer Element 1:Empty Data Transfer Element 2:Empty Data Transfer Element 3:Empty Storage Element 1:Full :VolumeTag=E01001L4 Storage Element 2:Full :VolumeTag=E01002L4 Storage Element 3:Full :VolumeTag=E01003L4 Storage Element 4:Full :VolumeTag=E01004L4 Storage Element 5:Full :VolumeTag=E01005L4 Storage Element 6:Full :VolumeTag=E01006L4 [root@centos64 ~]# [root@centos64 ~]# mtx -f /dev/sg10 load 1 0 Loading media from Storage Element 1 into drive 0...done [root@centos64 ~]# [root@centos64 ~]# mtx -f /dev/sg10 status | grep -E "Data|VolumeTag"| head Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = E01001L4 Data Transfer Element 1:Empty Data Transfer Element 2:Empty Data Transfer Element 3:Empty Storage Element 2:Full :VolumeTag=E01002L4 Storage Element 3:Full :VolumeTag=E01003L4 Storage Element 4:Full :VolumeTag=E01004L4 Storage Element 5:Full :VolumeTag=E01005L4 Storage Element 6:Full :VolumeTag=E01006L4 Storage Element 7:Full :VolumeTag=E01007L4 [root@centos64 ~]# |
아래는 드라이브 0번에 있는 테이프 미디어를 슬롯 0으로 이동시키는 명령이다.
[root@centos64 ~]# mtx -f /dev/sg10 unload 1 0
Unloading drive 0 into Storage Element 1...done [root@centos64 ~]# [root@centos64 ~]# mtx -f /dev/sg10 status | grep -E "Data|VolumeTag"| head Data Transfer Element 0:Empty Data Transfer Element 1:Empty Data Transfer Element 2:Empty Data Transfer Element 3:Empty Storage Element 1:Full :VolumeTag=E01001L4 Storage Element 2:Full :VolumeTag=E01002L4 Storage Element 3:Full :VolumeTag=E01003L4 Storage Element 4:Full :VolumeTag=E01004L4 Storage Element 5:Full :VolumeTag=E01005L4 Storage Element 6:Full :VolumeTag=E01006L4 [root@centos64 ~]# |
■ mhVTL 시작/종료
mhVTL에 관련된 프로세스들은 쉘 스크립트 파일을 통해 시작 또는 종료시킬 수 있다. 아래는 mhVTL 관련 모듈과 프로세스들을 확인하는 명령이다.
[root@centos64 ~]# lsmod | grep -i vtl
mhvtl 21952 30 [root@centos64 ~]# [root@centos64 ~]# ps -ef | grep -i vtl vtl 2714 1 0 02:47 ? 00:00:00 vtltape -q 11 -v vtl 2717 1 0 02:47 ? 00:00:00 vtltape -q 12 -v vtl 2721 1 0 02:47 ? 00:00:00 vtltape -q 13 -v vtl 2724 1 0 02:47 ? 00:00:00 vtltape -q 14 -v vtl 2727 1 0 02:47 ? 00:00:00 vtltape -q 31 -v vtl 2730 1 0 02:47 ? 00:00:00 vtltape -q 32 -v vtl 2741 1 0 02:47 ? 00:00:00 vtltape -q 33 -v vtl 2746 1 0 02:47 ? 00:00:00 vtltape -q 34 -v vtl 2752 1 0 02:47 ? 00:00:00 vtllibrary -q 10 -v vtl 2755 1 0 02:47 ? 00:00:00 vtllibrary -q 30 -v root 29335 28966 0 05:01 pts/1 00:00:00 grep -i vtl [root@centos64 ~]# |
1). mhVTL 종료
아래와 같은 명령을 사용하면 mhVTL 관련된 프로세스를 내릴 수 있다. ( /etc/init.d/mhvtl stop )
[root@centos64 ~]# /etc/init.d/mhvtl stop
shutdown of mhvtl Sending exit to 11 Sending exit to 12 Sending exit to 13 Sending exit to 14 Sending exit to 31 Sending exit to 32 Sending exit to 33 Sending exit to 34 Sending exit to 10 Sending exit to 30 [root@centos64 ~]# [root@centos64 ~]# ps -ef | grep -i vtl root 29393 28966 0 05:03 pts/1 00:00:00 grep -i vtl [root@centos64 ~]# |
2). mhVTL 시작
아래와 같은 명령을 실행하면 mhVTL 프로세스를 실행시킬 수 있다. ( /etc/init.d/mhvtl start )
[root@centos64 ~]# /etc/init.d/mhvtl start
You should think updating the kernel module for these daemons to 0.18.15. Please see https://sites.google.com/site/linuxvtl2/home?pli=1#mhvtl-kernel-module vtllibrary process PID is 29599 vtllibrary process PID is 29602 [root@centos64 ~]# [root@centos64 ~]# ps -ef | grep -i vtl vtl 29513 1 0 05:06 ? 00:00:00 vtltape -q 11 -v vtl 29516 1 0 05:06 ? 00:00:00 vtltape -q 12 -v vtl 29522 1 0 05:06 ? 00:00:00 vtltape -q 13 -v vtl 29563 1 0 05:06 ? 00:00:00 vtltape -q 14 -v vtl 29570 1 0 05:06 ? 00:00:00 vtltape -q 31 -v vtl 29577 1 0 05:06 ? 00:00:00 vtltape -q 32 -v vtl 29584 1 0 05:06 ? 00:00:00 vtltape -q 33 -v vtl 29591 1 0 05:06 ? 00:00:00 vtltape -q 34 -v vtl 29599 1 0 05:06 ? 00:00:00 vtllibrary -q 10 -v vtl 29602 1 0 05:06 ? 00:00:00 vtllibrary -q 30 -v root 29607 28966 0 05:06 pts/1 00:00:00 grep -i vtl [root@centos64 ~]# |
■ mhVTL 구성 파일 및 디렉터리
1). /opt/mhvtl
이 디렉터리는 파일로 된 가상 테이프 미디어가 존재하는 디렉터리이다. 각 이름은 테이프에 대한 바코드 번호를 나타낸다. 이 디렉터리의 특정 파일에 백업한 데이터가 누적되도록 되어 있다.
[root@centos64 mhvtl]# cd /opt/mhvtl
[root@centos64 mhvtl]# ls CLN101L4 E01007L4 E01016L4 F01034L5 G03004TA G03013TA G03022TA G03031TA CLN102L5 E01008L4 E01017L4 F01035L5 G03005TA G03014TA G03023TA G03032TA CLN303TA E01009L4 E01018L4 F01036L5 G03006TA G03015TA G03024TA G03033TA E01001L4 E01010L4 E01019L4 F01037L5 G03007TA G03016TA G03025TA G03034TA E01002L4 E01011L4 E01020L4 F01038L5 G03008TA G03017TA G03026TA G03035TA E01003L4 E01012L4 F01030L5 F01039L5 G03009TA G03018TA G03027TA G03036TA E01004L4 E01013L4 F01031L5 G03001TA G03010TA G03019TA G03028TA G03037TA E01005L4 E01014L4 F01032L5 G03002TA G03011TA G03020TA G03029TA G03038TA E01006L4 E01015L4 F01033L5 G03003TA G03012TA G03021TA G03030TA G03039TA [root@centos64 mhvtl]# |
2). /etc/mhvtl/device.conf
mhvtl에 의해 사용되는 테이프 라이브러리, 드라이브에 관련된 디바이스 정보를 가지고 있는 파일이다. 사용하지 않을 디바이스들은 # 기호로 주석 처리를 하면 된다.
# Each 'record' starts at column 1
# Serial num max len is 10. # Compression: factor X enabled 0|1 # Where X is zlib compression factor 1 = Fastest compression # 9 = Best compression # enabled 0 == off, 1 == on # # fifo: /var/tmp/mhvtl # If enabled, data must be read from fifo, otherwise daemon will block # trying to write. # e.g. cat /var/tmp/mhvtl (in another terminal) Library: 10 CHANNEL: 00 TARGET: 00 LUN: 00 Vendor identification: STK Product identification: L700 Unit serial number: XYZZY_A NAA: 10:22:33:44:ab:00:00:00 Home directory: /opt/mhvtl PERSIST: False Backoff: 400 # fifo: /var/tmp/mhvtl |
3). /etc/mhvtl/mhvtl.conf
mhvtl에 의해 사용되는 테이프 미디어에 관련된 용량 최대 크기와 구성 파일이 존재하는 디렉터리 정보를 가지고 있는 파일이다. 보통 용량(CAPACITY)에 대한 설정만 변경한다.
[root@centos64 mhvtl]# more /etc/mhvtl/mhvtl.conf
# Home directory for config file(s) MHVTL_CONFIG_PATH=/etc/mhvtl # Default media capacity (500 M) CAPACITY=500 # Set default verbosity [0|1|2|3] VERBOSE=1 # Set kernel module debuging [0|1] VTL_DEBUG=0 [root@centos64 mhvtl]# |
여기까지 mhvtml에 대한 구성 파일과 서비스를 올리고 내리는 방법 그리고 테이프 미디어를 이동시키는 방법에 대해 알아보았습니다. 다음 게시물에서는 tar 와 mt 명령에 대해 알아보도록 하겠습니다.
No comments:
Post a Comment