Ubuntu Server 18.04 LTS 기반에서 iSCSI Target을 이용한 diskless system을 만들려고 한다. iSCSI Target의 설치 및 설정 과정은 다음과 같이 진행된다. 여기서는, btrfs subvolume 스냅샷 생성을 다룬다. 


2-5 btrfs subvolume 스냅샷 생성

iSCSI Target 을 통해서 iSCSI Initiator에게 이미지를 제공한다. 제공하는 이미지는 사본의 이미지로 관리자에 의해서 관리되는 이미지를 스냅샷 한 것이다. 즉, 특정 시점에서 원본과 동일한 이미지를 만든 것으로 원본이 달라져도 스냅샷된 이미지는 달라지지 않고, 사본의 이미지가 변경되어도 원본에 영향을 미치지 않는다. 

스냅샷 할 수 있는 파일시스템에는 여러 가지가 있다. 본 문에서는 btrfs 파일시스템에서 이미지를 생성하고, 해당 이미지의 subvolume을 스냅샷한다. btrfs 파일시스템의 이미지를 subvolume 스냅샷 하는 명령은 다음과 같다. 여기서, /iscsi1/ 는 btrfs 로 포맷된 파일시스템이고, /iscsi/disk1/ 은 btrfs subvolume 으로 생성된 것이고, 해당 디렉토리 안에는 disk1.img 의 이미지 파일이 있다.


btrfs subvolume snapshot /iscsi1/disk1 /iscsi1/disk1pc01


위 명령이 실행되고 나면, btrfs의 subvolume 원본으로부터 사본의 스냅샷 subvolume을 경로 /iscsi1/disk1pc11 에 만들게 된다. 만들어진 subvolume의 스냅샷 디렉토리에도 disk1.img가 생성된다. 그 결과는 아래 그림과 같다. 아래 그림은 두개의 스냅샷을 만든 것이다. 


생성한 btrfs subvolume의 스냅샷의 삭제 명령은 다음과 같다. 


btrfs subvolume delete /iscsi1/disk1pc11


18.04 LTS 버전에서는 iSCSI Target의 LUN에 연결된 스냅샷 이미지가 있어도 스냅샷이 삭제되는 문제가 있다. btrfs subvolume의 스냅샷의 iSCSI Target LUN 연결 해제 후 해당 스냅샷을 삭제하도록 하자. 


Example, 

btrfs subvolume을 생성하고 이미지를 생성한 후, iSCSI Initiator에 제공할 btrfs subvolume의 스냅샷을 생성한다. 그리고, iSCSI Target의 tid에 맞게 LUN에 연결하여 iSCSI Initiator에 제공하는 명령들을 모으면 아래와 같다. 


btrfs subvolume create /iscsi1/disk1
btrfs subvolume create /iscsi2/disk2
btrfs subvolume create /iscsi3/disk3

chmod 755 /iscsi1/disk1
chmod 755 /iscsi2/disk2
chmod 755 /iscsi3/disk3

dd if=/dev/zero of=/iscsi1/disk1/disk.img bs=1G count=360
dd if=/dev/zero of=/iscsi2/disk2/disk.img bs=1G count=360
dd if=/dev/zero of=/iscsi3/disk3/disk.img bs=1G count=360

btrfs subvolume snapshot /iscsi1/disk1 /iscsi1/disk1pc01
btrfs subvolume snapshot /iscsi2/disk2 /iscsi2/disk2pc01
btrfs subvolume snapshot /iscsi3/disk3 /iscsi3/disk3pc01

btrfs subvolume snapshot /iscsi1/disk1 /iscsi1/disk1pc02
btrfs subvolume snapshot /iscsi2/disk2 /iscsi2/disk2pc02
btrfs subvolume snapshot /iscsi3/disk3 /iscsi3/disk3pc02

...

btrfs subvolume snapshot /iscsi1/disk1 /iscsi1/disk1pc79
btrfs subvolume snapshot /iscsi2/disk2 /iscsi2/disk2pc79
btrfs subvolume snapshot /iscsi3/disk3 /iscsi3/disk3pc79


tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.server.ubuntu:duripc01
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /iscsi1/disk1pc01/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 2 -b /iscsi2/disk2pc01/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 3 -b /iscsi3/disk3pc01/disk.img

tgtadm --lld iscsi --op bind --mode target --tid 1 -I 210.182.xxx.x01

tgtadm --lld iscsi --op new --mode target --tid 2 -T iqn.server.ubuntu:duripc02
tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 1 -b /iscsi1/disk1pc02/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 2 -b /iscsi2/disk2pc02/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 3 -b /iscsi3/disk3pc02/disk.img
tgtadm --lld iscsi --op bind --mode target --tid 2 -I 210.182.xxx.x02

...

tgtadm --lld iscsi --op new --mode target --tid 79 -T iqn.server.ubuntu:duripc79
tgtadm --lld iscsi --op new --mode logicalunit --tid 79 --lun 1 -b /iscsi1/disk1pc79/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 79 --lun 2 -b /iscsi2/disk2pc79/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 79 --lun 3 -b /iscsi3/disk3pc79/disk.img
tgtadm --lld iscsi --op bind --mode target --tid 79 -I 210.182.xxx.x79

tgtadm --lld iscsi --op new --mode target --tid 80 -T iqn.server.ubuntu:duripc80
tgtadm --lld iscsi --op new --mode logicalunit --tid 80 --lun 1 -b /iscsi1/disk1/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 80 --lun 2 -b /iscsi2/disk2/disk.img
tgtadm --lld iscsi --op new --mode logicalunit --tid 80 --lun 3 -b /iscsi3/disk3/disk.img
tgtadm --lld iscsi --op bind --mode target --tid 80 -I 210.182.xxx.x80

tgt-admin --dump | tee /etc/tgt/conf.d/disk.conf



Posted by 두리PC
,