본문 바로가기

GCP

GCP-영구디스크 생성 및 사용 / 스냅샷

GCE(Google Compute Engine)에서는 컴퓨터를 재시작해도 데이터가 사라지지 않는 영구디스크를 이용하는데 실행 중인 인스턴스에 연결하거나 분리할 수 있고 기존의 인스턴스에서 분리해서 다른 인스턴스에 연결할 수도 있다. 

 

 

 

영구디스크의 상태에는 3가지가 있다

1번 VM에 마운트되지 않은 상태

2번 VM은 디스크에서 읽기만 가능한 상태

3번 VM은 디스크를 읽고 쓸 수 있는 상태 

 

이 때 중요한 점은 2번 같이 읽기만 가능한 상태로 VM에 연결된 상태에서는 다른 VM에 디스크를 연결할 수 있지만, 3번 같이 읽고 쓰기가 가능한 상태로 VM에 연결된 상태에서는 다른 VM에 디스크를 연결할 수 없다

 

 

Step1. VM생성 및 디스크 생성

*실습환경: Ubuntu 

디스크 부착 및 분리를 실습하기에 앞서 2개의 VM 인스턴스를 생성한다

원하는 영역의 번호를 입력한다

 

 

VM이 생성되었으면 디스크를 생성할 차례이다

디스크의 크기와 성능은 서로 연관되어 있어 크기가 클수록 더 많은 IOPS를 처리할 수 있다

(IOPS는 Input/Output Operations Per Second의 약자로 초당 데이터 입출력을 처리하는 횟수를 수치화 한 것으로 컴퓨터 저장장치의 성능측정 단위이다)

 

 

디스크 리스트를 확인해보면 콘솔에서 생성한 'disk-1(크기 500)'이 잘 만들어진 것을 볼 수 있다

그런데 방금 만든 'disk-1'만 있는 것이 아니라 test-instance-1이 만들어진 것을 볼 수 있는데

 

 

 

이유는 인스턴스를 만들 때 GCE도 인스턴스에 대한 디스크를 만들기 때문이다 

인스턴스 생성 시 디스크 탭을 클릭해보면 자동으로 'test-instance-1' 디스크를 생성하기 위한 설정이 되어 있다

 

 

 

Step2. 디스크 연결 및 분리

 

VM과 디스크가 만들어졌다면 rw모드로 disk-1을 VM에 연결시켜보자

'Updated [https://www~~].'라는 문구가 뜨면 정상적으로 연결된 것이다

 

디스크 분리는 'attach'를 'detach'로 바꿔주면 된다

 

 

 

Step.3 디스크 사용하기

 

디스크에 여러 가지 작업(읽기, 쓰기 등)을 하기 위해서는 추가 작업이 필요하다

우선, 디스크를 연결한 VM에 SSH접속을 하고 /dev/disk/by-id 위치에 있는 디스크 목록을 보면 아까 추가한 디스크인 'google-persistent-disk-1'을 확인할 수 있다. 

 

 

disk-1을 ext4로 포맷한다 (구글에서 권장한 flag 사용)

 

 

포멧이 완료되면 디스크를 마운트할 디렉터리를 생성하고 마운트한다

$ sudo mkdir -p /mnt/disks/disk-1
$ sudo mount -o discard,defaults /dev/disk/by-id/google-disk-1 /mnt/disks/disk-1

 

 

/mnt/disks/disk-1 디렉터리에 disk-1이 마운트된 것을 확인할 수 있다

 

 

이제 디스크를 사용할 준비가 끝났다. 하지만 /mnt/disks/disk-1의 소유자는 루트사용자이므로 일반사용자들은 이용할 수 없다. 따라서 /mnt/disks/disk-1 하위에 'workspace'라는 디렉터리를 따로 생성하여 소유자를 변경하고 디스크를 이용할 것이다

/mnt/disks/disk-1/workspace에 test.txt 파일을 생성해본다

이제 자유롭게 디스크를 사용할 수 있다

 

 

 

스냅샷

 

 

스냅샷은 특정 시점에 컴퓨터의 상태를 저장해두는 것으로 실수 또는 고의에 의해 파일이 삭제되거나 시스템 동작이 불가할 때 저장한 시점의 컴퓨터의 상태로 되돌릴 때 사용한다

 

 

먼저 스냅샷을 생성한다

 

 

 

 /mnt/disks/disk-1/workspace/ 위치에 가서 기존의 test.txt 파일의 내용을 변경한다

$ echo "This is changed after the snapshot" > test.txt

 

 

이제 disk-1에는 기존의 test.txt에 있던 "This is a test" 라는 문장 대신 "This is changed after the snapshot" 이라는 문장으로 변경되었다. 다음날 기존의 test.txt 파일에 들어있던 문장을 확인해야 한다고 할 때 test.txt 파일의 내용을 수정하기 전으로 컴퓨터를 되돌려야 할 것이다.

 

test.txt 파일이 수정되기 전에 만든 스냅샷을 이용하여 디스크를 생성하고 그 디스크를 VM에 마운트하는 것으로 이 상황을 해결할 수 있다. 하지만 이번 실습에서는 스냅샷으로 생성한 디스크를 disk-1에 덮어쓰는 것이 아닌 각각 만들어서 비교만 해본다 

 

 

스냅샷에서 디스크를 생성한다

 

 

스냅샷으로 생성한 디스크를 VM에 연결하고 마운트한다

/mnt/disks/에 가면 기존의 disk-1과 스냅샷으로 생성한 디스크인 disk-2가 있는 것을 볼 수 있다

 

 

disk-2의 test.txt 파일의 내용을 확인해보면 test.txt 파일의 내용이 바뀌기 전으로

컴퓨터 상태가 돌아간 것을 확인할 수 있다

스냅샷으로 생성한 disk-2 안에 있는 test.txt 

 

기존의 disk-1 안에 있는 test.txt

 

'GCP' 카테고리의 다른 글

GCP-Cloud Datastore  (0) 2021.02.07
GCP-로드밸런싱  (0) 2021.02.05
Cloud Spanner  (0) 2021.02.03
구글 클라우드를 이용하여 워드프레스 배포  (0) 2021.02.01
GCP SDK 설치 및 사용자 인증  (0) 2021.01.29