IT이야기2010. 9. 14. 12:30
ZFS 파일시스템은 snapshot(스냅샷) 기능을 제공하여, 원하면 언제든지 snapshot시점으로 복원할 수 있다. 명령어 한줄로 snapshot을 만들고, 명령어 한줄로 복원한다. snapshot 생성을 매일 1회 이상 자동으로 실행되도록 해주면, 데이터 복원에 유용할 것이다.

ZFS 파일시스템

참고로 FreeBSD 8.0은 ZFS v13을, 8.1은 v14를 지원한다. FreeBSD 8.2 또는 9.0에서는 v15를 지원할 예정이다. ZFS v15는 Solaris 10 update 8과 FreeBSD간의 호환성이 좋아졌으며, ZFS파일시스템에 php 코드가 있을 경우에 기존보다 15~20%정도 RPS가 향상되었다.

이 글은 FreeBSD에서 ZFS파일시스템을 운영한 것을 토대로 작성했지만 OS와 상관없이 ZFS파일시스템이라면 동일하게 적용된다.

1. snapshot 만들기

이론적으로 snapshot은 최대 2의 64제곱개까지 만들 수 있다. snapshot은 같은 스토리지 풀(파일시스템, 볼륨)의 공간을 사용한다.

snapshot을 만들어보자. snapshot시에 형식은 '파일시스템@snapshot명' 또는 '볼륨@snapshot명'이다. snapshot 이름은 기존 이름과 중복되지 않으면 임의로 만들면 된다.

# zfs snapshot data/log@2010_0621_1740_Mon

snapshot이름은 개인적으로 '년월일' 형식을 선호한다. snapshot 목록을 볼 때, 별도 속성 옵션(-o creation)을 줘야 생성일자를 볼 수 있는 불편함 때문이다. 좀 더 직관적으로 표기하기위해 요일까지 붙여줘도 좋다.

2. snapshot 확인하기

생성된 snapshot 목록을 살펴보자. 생성일시를 알고 싶다면 -o creation의 추가 옵션이 필요하다.

# zfs list -t snapshot
NAME                          USED  AVAIL  REFER  MOUNTPOINT
... 생략 ...
 data/log@2010_0619_0701_Sat   26K      -  20.9M  -
 data/log@2010_0620_0701_Sun   30K      -  21.5M  -
 data/log@2010_0621_0701_Mon   31K      -  21.5M  -
 data/log@2010_0621_1740_Mon     0      -  28.5M  -

3. snapshot rollback하기

rollback은 snapshot 방법과 동일하다. 특정 시점으로 되돌리고 싶으면 해당 'snapshot명'을 지정하기만 하면 된다.

# zfs rollback data/log@2010_0621_1740_Mon
cannot rollback to 'data/log@2010_0621_1740_Mon': more recent snapshots exist
use '-r' to force deletion of the following snapshots:
data/log@2010_0621_1750_Mon
data/log@2010_0621_1813_Mon

위의 경우는 data/log@2010_0621_1740_Mon 스냅샷 이후(즉, 보다 최근)에 2개의 스냅샷이 존재하기 때문에 나오는 메시지이다. 이를 무시하고 롤백하려면 -r 옵션(Recursively)을 주면 된다.

# zfs rollback -r data/log@2010_0621_1740_Mon

※ 여기서는 snapshot 생성, 확인, 복원에 대해 간단하게 적었으며, 자세한 글은 '커피닉스(coffeenix.net)'에 올려뒀다.

* 관련글
2009/02/26 - [시스템이야기] - FreeBSD 7에서 ZFS 사용 (유연성은 좋으나, 성능은 불만족)

Posted by 좋은진호