,

OCI에 zfs를 사용시 예상되는 문제

이전에 공개한 OCFS2 VS GlusterFS글에서 GlusterFS를 사용하기로 하였습니다
그 이유로 Filesystem의 장점을 사용할 수 있다는 언급을 드렸죠.

그래서 당연히 익숙한 zfs를 사용하려고 했습니다.
그런데 문제에 봉착합니다.

설치 과정의 복잡함

OCI에 zfs 기반의 fedora 인스턴스를 생성하는 과정은 간략하게 말해서 다음과 같습니다.

1. fedora 설치(또는 live 이미지로 boot)
2. arm용 fedora에서는 zfs를 빌드/설치
3. zfs 디스크 생성 후 zfs disk에 fedora 설치
4. composer를 이용해서 cloud 이미지로 변환
5. 이미지를 OCI object storage(bucket)에 업로드
6. 이미지를 custom image로 변환
7. 인스턴스 생성

문제는 fedora는 반년마다 판올림이 출시되는 특성상, 인스턴스를 새로 만들 때마다 이 행위를 반복해야 할 가능성이 매우 높습니다.

안그러면 반년 뒤에 인스턴스 만들면 가장 먼저 판올림부터 해야하니까요.

zfs의 가장 큰 장점이 의미가 없어짐

zfs의 가장 큰 장점은 단연코 안정성입니다.
그런데 퍼블릭 클라우드의 인스턴스에 연결되는 스토리지는 물리 디스크가 아니라 가상 디스크가 연결되는 것이죠.
이 디스크가 불안정하여 문제가 발생할 가능성이 있을까요?

대안: BTRFS

그럼 대안을 생각해보기 전에 zfs의 장점을 살펴보겠습니다.
그 장점들이 btrfs에서 가능한지 봐야하니까요.

성능: ARC, ZIL

라즈베리파이 같은 곳에서 엄청난 성능향상을 체감하실 수 있습니다.
sdcard는 대략 100~300IOPS 정도 되는데, 읽기 쓰기를 ram에 할수 있기 때문이죠.
읽기 캐시는 알고리즘이 arc가 아니어서 그렇지, 대부분의 리눅스 파일 시스템이 제공해주고 있습니다.
하지만 쓰기 캐시는 거의 유일하죠.

커널 5.15(zfs와 달리 btrfs는 커널에 내장되는 모듈입니다. 커널 버전에 따라 성능이 달라집니다.)와 zfs 2.1.6 비교를 보면 읽기는 btrfs가 대체로 높고, 쓰기는 zfs가 더 높더군요.

btrfs는 5.18인가 5.19에서 엄청난 성능 향상이 있었습니다.

이 글 작성 시점으로 zfs/2.1.10이 나오지는 않았지만, zfs도 zfs/2.1.10에서는 성능 향상이 예견되어있긴 하더군요.
특히 zfs의 가장 큰, 고질적인 문제,
읽기 쓰기 사이에 ARC를 비롯한 굉장히 많은 단계 때문에 iops가 낮은 편입니다.
이 문제가 많이 개선된다고 합니다.

스냅샷

이 부분이 가장 큰 문제였습니다.
저는 스냅샷 덕분에 살아난 경험이 꽤 많아요.
zfs 스냅샷을 찍은 것을 커맨드 없이 몇번의 터치 또는 클릭으로 zfs 스냅샷에서 파일을 복구할 수 있습니다.

스냅샷을 클론하고, 마운트 한 후에
마운트 된 디렉토리에서 복원할 파일을 덮어쓰면 되죠.

하지만 btrfs(구)는 너무 많은 기능이 안됩니다.
서브 볼륨마다 스냅샷 찍는 것도 안되고, 서브볼륨마다 스냅샷의 보관 기간을 다르게 하는 것도 불가능하며, 웹 콘솔에서 btrfs 스냅샷을 관리하기도 힘듭니다.

그런데 말입니다…
이게 안되는데, 되더군요?

fedora의 btrfs

저는 BTRFS = SUSE라고 생각했습니다.
SUSE는 btrfs의 스냅샷으로 부팅할 수 있는 GRUBzypper/yast와 연동된 스냅샷 기능을 제공하기 때문이죠.
btrfs에 진심인 SUSE에서 안되던 기능들이기 때문에 btrfs의 한계라고 생각했습니다.

그런데 fedora에서는 다 됩니다.
fedora는 현재 커널 6.2.7까지 나와있어서 그런것 같아요.
zfs와 달리 btrfs는 커널에 따라서 기능과 성능이 달라지니까요.

btrbk

btrbk는 zfs-auto-snapshot처럼 일정 주기마다 스냅샷을 찍는 기능을 제공합니다.
zfs는 이 스냅샷에서 일부 파일을 복원하려면, snapshot은 마운트할 수 없기 때문에, snapshot을 클론을 해야 합니다.
그리고 클론한 볼륨을 마운트하고, 마운트 된 폴더에서 백업본을 찾아 현재 파일에 덮어쓰는 것으로 복원할 수 있게 됩니다.

btrfs snapshot mount/rollback

btrbk는 스냅샷을 찍고 자동으로 마운트 해줍니다.
이 점은 zfs가 아무리 노력해도 불가능한 사항입니다.

zfs와 달리 btrfs는 snapshot을 읽기 전용으로 마운트가 가능하기 때문에 btrbk가 자동으로 마운트 해줄 수 있는 것입니다.

또한 btrfs는 최근 스냅샷을 지우지 않고 롤백이 가능합니다.
그럼 zfs는 안되..?
네. 안됩니다.
1달 전으로 롤백 하면 그 이후의 스냅샷을 전부 제거해야 합니다.

kernel에 포함된 모듈

btrfs를 사용하면 sudo dnf update로 커널까지 업데이트 할수 있습니다.
그럼 zfs는 못하나요?
하기 전에 zfs가 지원하는 커널 버전을 확인해야하지요.

btrfs vs zfs in fedora

이 전에는 alma linux를 사용해왔습니다.
그러다보니 zfs가 너무 좋았습니다.
어차피 커널은 아직 5.14이고, 커널 버전이 오르지 않아도 zfs 업데이트로 성능이 꾸준히 개선될 수 있죠.
하지만 RHEL 9(Almalinux 9) 나온지 1년이 지났고, 아직 1년은 더 있어야 커널 버전이 올라갑니다.

제가 almalinux를 사용한 이유에는 RHEL의 안정성이 포함되어있지 않았어요.
단순히 dnf가 apt가 좋았기 때문에 사용한 것이죠.
그래서 커널 버전 높은 fedora를 알아보았고, 오히려 커널 버전에 따라 부팅이 안될수 있는 zfs보다,
커널 버전이 계속 올라가는 fedora에서는
btrfs가 훨씬 좋다는 결론을 내렸죠.
또 제가 원하는 기능을 모두 제공해주기도 하구요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock