나는 저메모리 시스템의 ZFS에 관해 인터넷에서 논란의 여지가 있는 많은 진술을 읽었지만 대부분의 사용 사례는 고성능 데이터 저장을 위한 것입니다.
성능상의 이유가 아니라 투명한 압축 및 중복 제거(후자는 선택 사항일 수 있음)를 지원하고 여전히 BTRFS보다 더 성숙해 보이기 때문에 ZFS를 사용하고 싶습니다. RAID 구성을 사용하고 싶지 않습니다.
디스크 성능보다 루트 및 메인 파일 시스템, 저장 공간 및 데이터 보안(정전 또는 기타 임의의 불일치 후 복구 가능성, 낮은 RAM으로 인한 손상 위험이 매우 낮음 등)을 위해 노트북에서 사용하고 싶습니다. 나는 ext2/3/4와 동일한 보안을 원합니다.
ZVOL에서 ext4를 사용하고 싶습니다.
따라서 질문은 다음과 같습니다.
- ZFS가 작동하도록 구성할 수 있습니까?안정적으로IO 성능/캐시에 관심이 없고 RAID 기능이 필요하지 않다면 "낮은 RAM"을 사용하시겠습니까?
- ZFS를 파일 시스템 자체로 사용하지 않고 ZVOL을 사용하여 다른 파일 시스템을 맨 위에 놓는 경우 필요한 RAM은 어떻게 변경됩니까?
- 중복 제거가 켜져 있을 때 필요한 RAM은 어떻게 변경됩니까? 중복 제거가 켜져 있고 RAM이 부족해지기 시작하더라도 여전히 안전합니까? ZFS가 중복 제거를 일시 중지하고 RAM을 더 적게 사용할 수 있습니까?
- 자동 중복 제거를 비활성화하고 때때로 수동으로 실행할 수 있습니까?
- ZVOL의 ext4는 RAM이 적은 경우에도 데이터를 안정적으로 저장할 수 있습니까? 불일치가 발생하면 수정이 성공할 가능성이 높습니까(ext2/3/4와 동일)? ZVOL 위에 ext4가 ext4의 견고성을 추가하여 견고성을 높입니까, 아니면 데이터가 기본 ZVOL만큼 강력합니까?
시스템 사양:
- 리눅스
- 8GiB RAM(그래픽 카드와 공유), 그러나 대부분(최소 7GiB)은 사용자 공간 소프트웨어에 사용할 수 있어야 합니다.
- ZFS용 약 700GiB SSD 스토리지,
- 다른 시스템에는 ZFS용 eMMC 128GiB가 있을 수 있습니다.
현재 디스크 사용량(
du -sh
의 더 큰 디렉토리/
)(/는 ext4이고, 맨 위에 마운트된 /var은 reiserfs)(투명 압축을 사용하여 스토리지로 이동하려고 함):74M /etc 342G /home 5.0G /opt 1.5G /root 261M /tmp 35G /usr 30G /var
아니면 그냥 BTRFS를 사용하세요("버그"로 인해 심각하거나 복구할 수 없는 데이터 손실이 발생할 수 있다는 내용을 읽었지만 이는 모두 논쟁의 여지가 있습니다...).
답변1
짧은 답변:
- 예, ZFS에서는 낮은 RAM(~1GB)을 성공적으로 사용할 수 있습니다.
- 중복 제거를 사용하면 안 되지만 일반적으로 RAID와 압축이 사용됩니다.
- 복제가 활성화되면 새로 작성된 모든 데이터에 적용되며 쉽게 삭제할 수 없습니다.
- 중복 제거 소급 기능은 온라인 데이터에서만 작동하므로 활성화할 수 없습니다.
- 귀하의 아이디어는 정당한 이유 없이 불필요하게 복잡하므로 ZFS를 사용하고 하루 만에 끝내는 것이 좋습니다.
긴 답변:
IO 성능/캐싱이 문제가 되지 않고 RAID 기능이 필요하지 않은 경우 "낮은 RAM"에서 안정적으로 작동하도록 ZFS를 구성할 수 있습니까?
예, RAID 기능이 활성화된 경우에도 마찬가지입니다. 사람들이 온라인에서 주장하는 것보다 훨씬 적은 양이 필요합니다. 예를 들어 FreeBSD, 2코어 및768MB가상화. 또는 최소 512MB, 최소 권장 사항 1GB, 전체 권장 사항 2GB를 언급하는 SolarisInternals Guide(현재 archive.org를 통해서만 사용 가능)를 확인하십시오.
그래도 중복 제거는 멀리하겠습니다. 페이징된 메모리로 인해 속도가 느려지는 것이 아니라, 시스템이 다운되면 중복제거를 하지 않은 상태로 돌아갈 수 없기 때문입니다. 또한 이는 RAM과 디스크 사이의 거래이며 예산 시스템에서는 둘 다 얻지 못하므로 많은 것을 얻을 수 없습니다.
ZFS를 파일 시스템 자체로 사용하지 않고 ZVOL을 사용하여 다른 파일 시스템을 맨 위에 놓는 경우 필요한 RAM은 어떻게 변경됩니까?
액세스 계획(KVM, FUSE, iSCSI 등과 같은 가상화)에 따라 ZFS 위의 두 번째 파일 시스템 및 계층에 대한 추가 메모리가 필요합니다.
중복 제거가 켜져 있을 때 필요한 RAM은 어떻게 변경됩니까? 중복 제거가 켜져 있고 RAM이 부족해지기 시작하더라도 여전히 안전합니까? ZFS가 중복 제거를 일시 중지하고 RAM을 더 적게 사용할 수 있습니까?
중복 제거를 일시 중지할 수는 없지만 데이터는 안전하게 유지됩니다. 메모리 교환 및 대기가 많아 유용성이 떨어질 수 있습니다. 중복 제거는 온라인이므로 비활성화하려면 중복 제거를 끄고 모든 데이터를 다시 써야 합니다(이렇게 하면 기본적으로 모든 데이터가 새 파일 시스템에 복사되고 이전 파일 시스템이 삭제됩니다).
자동 중복 제거를 비활성화하고 때때로 수동으로 실행할 수 있습니까?
아니요. 정적 데이터에는 영향을 미치지 않기 때문입니다. 중복 제거를 활성화하고 블록을 쓰려는 경우 ZFS는 해당 블록이 중복 제거 테이블에 존재하는지 확인합니다. 그렇다면 쓰기가 삭제되고 참조가 중복 제거 테이블에 추가됩니다. 그렇지 않은 경우 첫 번째 참조가 작성되고 추가됩니다. 즉, 이전 데이터는 중복 제거의 영향을 받지 않으며 새 블록을 쓰지 않고 데이터를 열어도 이전 데이터의 사용된 크기에는 영향을 미치지 않습니다.
ZVOL의 ext4는 RAM이 적은 경우에도 데이터를 안정적으로 저장할 수 있습니까? 불일치가 발생하면 수정이 성공할 가능성이 높습니까(ext2/3/4와 동일)? ZVOL 위에 ext4가 ext4의 견고성을 추가하여 견고성을 높입니까, 아니면 데이터가 기본 ZVOL만큼 강력합니까?
제 생각에는 새로운 기능(예: 스냅샷 등 아래 ext4 및 위 ZFS의 반대 경우)을 얻지 못하고 fsck
더 많은 fdisk
형식 지정 연습과 같은 몇 가지 새로운 책임도 가지게 되므로 이는 불필요한 복잡성입니다.
내가 이와 같은 작업을 수행할 유일한 사용 사례는 특정 파일 시스템의 하위 수준 기능이 필요하거나 하드 코딩된 가정이 있는 특수 응용 프로그램이 있는 경우입니다(다행히 이 동작은 최근에 사라진 것 같습니다).
답변2
user121391님이 좋은 정보를 주셨으니 메모리 문제에 대해서만 이야기하고 싶습니다.
메모리에 관한 한, 그렇습니다. ZFS는 많은 메모리를 차지할 수 있습니다. 캐싱을 위해 사용 가능한 시스템 메모리를 활용합니다. 수년에 걸쳐 Sun(현재 Oracle)은 성능, 안정성 및 메모리 사용량을 향상시키는 조정 작업을 수행했습니다. ZFS Internals/Evil Tuning Guide 사이트를 확인하거나ZFS 블로그구체적인 내용을 알아보세요. 그러나 이러한 조정 및 기능의 대부분은 Solaris 11.x 버전의 ZFS에서만 찾을 수 있습니다.
메모리 문제가 정말로 걱정된다면 중복 제거는 실시간으로 이루어지고 중복 제거 테이블은 메모리에 보관되어야 하므로 상당한 양의 메모리가 필요하므로 중복 제거를 사용하고 싶지 않을 것입니다.