나는 인터넷에서 낮은 메모리 시스템의 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에 사용할 다른 시스템 128GiB의 eMMC에 있을 수도 있습니다.
현재 디스크 사용량(
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가상화. 또는 SolarisInternals Guide(현재 archive.org를 통해서만 사용 가능)를 살펴보십시오. 여기서는 512MB가 최소 권장 사항, 1GB가 최소 권장 사항, 2GB가 전체 권장 사항으로 언급되어 있습니다.
그래도 중복 제거는 멀리하겠습니다. 페이징 메모리로 인해 속도가 느려지는 것이 아니라, 시스템이 정지되면 중복 제거되지 않은 상태로 돌아갈 수 없기 때문입니다. 또한 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 내부/악 튜닝 가이드 사이트를 확인하거나ZFS 블로그구체적인 내용은. 그러나 이러한 조정 및 기능의 대부분은 Solaris 11.x 버전의 ZFS에서만 찾을 수 있습니다.
메모리가 정말로 걱정된다면 중복 제거를 사용하고 싶지 않을 것입니다. 중복 제거가 실행되고 메모리에 중복 제거 테이블을 보유해야 하기 때문에 상당한 양의 메모리가 필요하기 때문입니다.