Ubuntu 22 에서 ZFS를 설치하고 사용하는방법.
안녕하세요. 달소입니다.
이번편은 ZFS를 Ubuntu에서 직접 사용하는방법입니다.
ZFS의 경우 Ubuntu에서 사용되는 보편적인 파일시스템인 ext4와 비교하여 여러가지 장점이 있으며
가장 큰 장점은 lz4 압축을 지원한다는 점 입니다.
아래는 ZFS에 대한 간단한 특징입니다.
파일시스템 네이티브 Raid 기능
Copy-On-Write 트랜젝션
데이터 압축 기능
데이터 중복 제거 기능
지속적인 데이터 무결성 검사 및 자동 복구
Read / Write Cache
최대 크기 16EB
저장소가 제약되는 환경(Oracle 클라우드, 라즈베리파이, 기타 HDD)환경에서 디스크를 추가하기 어려울때 ZFS로 구축해놓는다면
기존용량의 최대 2~3배의 효율을 낼수있습니다.
https://facebook.github.io/zstd/ 만 참고하시더라도 lz4의 경우 적당한 압축률 2.1배에 엄청난 압축속도를 제공해줍니다.
단점으로는 메모리나 CPU를 더 사용한다는 점 이지만 저장소에 비하면 남는장사지요.
뭐 설명은 이정도로 마치고 직접 설치해서 테스트해보겠습니다.
사전준비
테스트를 위해 기존의 부트 디스크를 제외하고 데이터용으로 30G짜리를 하나 더 붙였습니다.
디스크를 추가하고 fdisk -l 명령어로 추가된 디스크를 확이ㅏㄴ가능합니다.
이제 본격적으로 시작해보겠습니다.
1. Ubuntu에 ZFS 설치하기.
apt 명령어를 통해 zfs 패키지를 설치해줍니다.
sudo apt install zfs-dkms
sudo modprobe zfs
설치가 완료되면 sudo modprobe zfs도 진행해주시면됩니다.
zfs list를 쳤을때 아래처럼 나오면 설치가 완료된것입니다.ㅅㅅㅅ휴76ㅠㅜ8ㅝ65ㅗㅗㄱ
2. Pool 생성하기.
앞서 디스크의 장치번호를 확인했는데요.
이 장치번호를 통해서 zfs pool을 만들어줄수있습니다.
sudo zpool create [풀이름] /dev/sdb
만약에 여러개의 장치를 Stripe로 추가한다면
sudo zpool create [풀이름] /dev/sdb /dev/sdc 처럼작성해주시고
미러를 사용하신다면 아래처럼 mirror를 추가해서 작성해주시면됩니다.
sudo zpool create [풀이름] mirror /dev/sdb /dev/sdc
생성후 zfs list를 통해 zpool을 확인할 수 있고
zpool status [풀이름] 으로 상세디스크도 확인가능합니다.
3. Pool 삭제하기.
zpool destroy [풀이름] 으로 삭제가능합니다.
4. Pool 튜닝하기
https://openzfs.github.io/openzfs-docs/Performance and Tuning/Workload Tuning.html
sudo zfs set compression=lz4 [풀이름]
sudo zfs set atime=off [풀이름]
sudo zfs set sync=disabled [풀이름]
sudo zfs set dnodesize=auto [풀이름]
sudo zfs set redundant_metadata=most [풀이름]
sudo zfs set xattr=sa [풀이름]
sudo zfs set recordsize=128k [풀이름]
4. 테스트
3기가짜리 img파일의 경우 아래처럼 838MiB로 표시됩니다.
압축률을 확인해보면 2.15배로 압축되었네요