집에서 만든 NAS 어레이에 ZFS를 사용할 생각입니다. Ubuntu Server 10.04 시스템의 raidz에는 4개의 HDD가 있습니다.
데이터를 저장할 때 스냅샷 기능과 중복 제거 기능을 사용하고 싶습니다. N 무선 네트워크를 통해 기기에 액세스하고 병목 현상이 발생할 수 있으므로 속도에 대해서는 크게 걱정하지 않습니다.
그렇다면 이러한(또는 유사한) 구성에서 zfs-fuse 0.6.9를 사용해 본 실제 경험이 있는 사람이 있습니까?
답변1
내 집 NAS(debian lenny)의 zfs-fuse 미러 설정에는 2개의 500GB 드라이브가 있습니다. 현재 거의 6개월째 운영중인데 아무런 문제가 없었습니다. 자세한 내용은여기내 블로그에.
답변2
이제네이티브 리눅스 포트ZFS의. 최근에야 이 사실을 알게 되었기 때문에 테스트해 볼 기회가 없었습니다. 하지만 활발하게 개발되고 있다는 것은 좋은 징조입니다. 커널 모듈과 도구를 스스로 컴파일해야 하는 것에 대해 두려워하지 않는 한 시도해 볼 가치가 있을 것입니다.
작동하게 할 수 있다면 의심할 여지 없이 zfs-fuse보다 훨씬 더 나은 성능을 발휘할 것입니다.
답변3
나는 이 스레드가 아주 오래된 것이라는 것을 알고 있지만 그 이후로 상황이 상당히 바뀌었습니다. (예: ZFS-FUSE 상태 및 커널 내 옵션, 논란의 여지가 있는 "오픈" Solaris의 사라짐 등)
우선, ZFS의 커널 포트는필연적으로"의심할 여지 없이" ZFS-FUSE보다 훨씬 더 나은 성능을 발휘합니다. 그 대답은 FUSE 파일 시스템이 항상 커널 내보다 성능이 나쁘다는 일반적인 오해를 반영하는 것 같습니다. (아직 모르는 경우를 대비해 간단히 말하면, 이론적으로 커널 파일 시스템은 더 나은 성능을 발휘하고 다른 모든 것은 동일합니다. 그러나 커널과 사용자 공간보다 더 큰 영향을 미치며 성능에 영향을 미치는 다른 많은 요소가 있습니다.) 그러나 ZFS-FUSE를 사용하면 벤치마크에 따르면 어떤 경우에는 기본 ZFS(또는 BTRFS)보다 상당히 느린 것으로 나타납니다. 그래도 내 용도로는 괜찮습니다.
Ubuntu에는 이제 PPA 저장소 시스템을 통해 "ubuntu-zfs" 패키지가 있습니다. 이는 기본 zfs-on-linux 프로젝트의 멋진 패키징 및 자동 모듈 구축에 불과합니다. 커널 공간에서 실행되며 현재 zfs-fuse보다 높은 zpool 버전을 지원합니다.
저는 대규모 중복 20TB 서버에서 OpenSolaris를 사용했고 지금은 그 서버에서 Oracle Solaris 11을 사용하고 있습니다. Solaris에는 몇 가지 중요한 문제와 과제가 있으며(특히 구식 UNIX가 아닌 Linux 구성 및 관리에 익숙한 경우) OS 버전과 업데이트 간의 많은 하드웨어 관리 및 기타 구성 인터페이스를 대폭 변경하여 종종 매우 실망스러운 움직이는 목표입니다(다음 버전으로 업그레이드하기 전에 최종적으로 버전을 마스터한 후에도). 그러나 올바른(호환되는) 하드웨어와 변경, 학습 및 조정에 대한 많은 인내심을 갖춘다면 파일 시스템 측면에서 놀라운 선택이 될 수 있습니다.
한 가지 더 조언하자면, 내장된 CIFS 지원을 사용하지 마십시오. 삼바를 사용하세요. 기본 제공 지원이 중단되어 제대로 작동하지 않을 수 있습니다. 마지막으로 확인했을 때 Samba를 사용하는 엔터프라이즈 설치는 많았지만 권한 관리 문제로 인해 CIFS를 사용하는 설치는 단 하나도 없었습니다.
나는 또한 Ubuntu에서 매일(개인 워크스테이션에서) ZFS-FUSE를 사용하고 있으며 이것이 매우 견고하고 멋진 솔루션이라는 것을 알았습니다. ZFS-FUSE에서 구체적으로 생각할 수 있는 문제는 다음과 같습니다.
적어도 소스 코드에 플래그를 설정하고 자신을 컴파일하지 않고는 ZIL(쓰기 캐시)을 비활성화할 수 없습니다. 그런데 일반적인 오해와는 달리 ZIL을 비활성화해도 충돌 시 풀이 손실되지는 않습니다. 그 당시 쓰여졌던 모든 것을 잃게 됩니다. 이는 대부분의 파일 시스템과 다르지 않습니다. 이는 많은 미션 크리티컬 서버 시나리오에 적합하지 않을 수 있지만(어차피 기본 Oracle Solaris를 사용해야 하는 경우) 일반적으로 대부분의 워크스테이션/개인 사용 사례에서는 매우 가치 있는 절충안입니다. 소규모 설정의 경우 ZIL은 기본적으로 캐시가 풀 자체에 분산되어 있기 때문에 쓰기 성능에 큰 문제가 될 수 있습니다. 이는 특히 패리티 스트라이프 설정(RAIDZx)의 경우 상당히 느릴 수 있습니다. Oracle Solaris에서는 비활성화하는 것이 쉽습니다. 풀의 "동기화" 속성 IIRC라고 생각합니다. (네이티브 리눅스 커널 버전에서 쉽게 비활성화할 수 있는지는 모르겠습니다.)
또한 ZFS-FUSE를 사용하면 zpool 버전이 최신 버전의 더 나은 풀 복구 옵션을 지원할 만큼 높지 않습니다. 따라서 쓰기 캐시를 하나 이상의 SSD 또는 램 드라이브로 오프로드하기로 결정한 경우 주의하세요. . (그리고 항상 미러링하세요!) ZIL을 잃으면 거의 확실하게 전체 풀도 잃게 됩니다. (OpenSolaris를 사용하면서 이런 일이 저에게 일어났습니다.) Oracle Solaris의 최신 zpool 버전에서는 이 문제가 완화되었습니다. 커널 수준 Linux 포트에 해당 완화 기능이 통합되어 있는지 여부를 확인할 수 없는 것 같습니다.
또한 그 사람이 토론에 스팸을 보내는 것처럼 보이는 "ZFS ARC 버그" 경보를 무시해도 됩니다. 전 세계의 수많은 프로덕션 서버와 마찬가지로 내 서버도 심하게 망가졌는데, 그런 경험은 한 번도 해본 적이 없습니다.
개인적으로 저는 Solaris를 매우 싫어하지만 ZFS는 정말 놀랍습니다. 이제 그 기능에 의존하게 되었기 때문에 ZFS 없이는 할 수 없습니다. Windows 노트북에서도 사용합니다. (복잡하지만 매우 안정적인 가상화 솔루션과 덮개에 벨크로로 고정된 USB 드라이브를 통해.)
편집: 명확성, 관련성 및 ZFS-FUSE 성능 제한 인정을 위한 몇 가지 사소한 편집입니다.
답변4
풀을 OpenSolaris로 마이그레이션하기 전에 Ubuntu에서 거의 1년 동안 아무런 문제 없이 ZFS-FUSE를 실행했습니다. 즉, 다중 TB 풀의 Dedup에 대한 메모리 요구 사항은 홈 Linux 서버의 메모리를 초과할 가능성이 높습니다. 쉽게 사용할 수 있도록 L2ARC용 SSD가 없으면 중복 제거 테이블이 ARC(기본 메모리 캐시)에서 넘치면 중복 제거 성능이 끔찍해집니다. 메모리에 중복 제거 테이블이 없으면 여러 작업(파일 디렉터리 삭제, 스냅샷 삭제 등)이 믿을 수 없을 정도로 느려질 수 있습니다. 스냅샷은 중복 제거 없이 작동할 수 있으며 자체적으로 오버헤드가 거의 없습니다. 따라서 많은 중복을 저장하고 문제를 해결할 수 있는 8~16GB의 RAM 및/또는 SSD가 없다면 중복 제거를 건너뛰겠습니다.