
Linux의 zfs에 있는 zfs 파일 시스템에 데이터가 기록되는 순서는 무엇입니까?
내가 찾은 유일한 특정 문서는http://docs.oracle.com/cd/E36784_01/html/E36835/gkknx.html말한다;When a file is written, the data is compressed, encrypted, and the checksum is verified. Then, the data is deduplicated, if possible.
그러나 이것이 사실이라면 중복 제거는 다른 압축 알고리즘으로 압축된 블록을 중복 제거하지 않습니다.
나는 mysqlf를 테스트했고 순서는 다음과 같다고 생각합니다 dedup, compress, encrypt
.
내 테스트 설정:
zpool create tank /dev/sdb
zfs create tank/lz4
zfs create tank/gzip9
zfs set compression=lz4 tank/lz4
zfs set compression=gzip-9 tank/gzip9
zfs set dedup=on tank
출력zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 106K 19,3G 19K /tank
tank/gzip9 19K 19,3G 19K /tank/gzip9
tank/lz4 19K 19,3G 19K /tank/lz4
다음을 사용하여 임의의 파일을 생성합니다.dd if=/dev/urandom of=random.txt count=128K bs=1024
131072+0 Datensätze ein
131072+0 Datensätze aus
134217728 Bytes (134 MB) kopiert, 12,8786 s, 10,4 MB/s
빈 풀의 zpool 목록 출력:
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 19,9G 134K 19,9G - 0% 0% 1.00x ONLINE -
그런 다음 파일을 다른 압축 알고리즘을 사용하여 데이터세트에 복사합니다.
cp random.txt /tank/lz4
cp random.txt /tank/gzip9
zfs list
복사 후 출력 :
NAME USED AVAIL REFER MOUNTPOINT
tank 257M 19,1G 19K /tank
tank/gzip9 128M 19,1G 128M /tank/gzip9
tank/lz4 128M 19,1G 128M /tank/lz4
zpool list
복사 후 출력 :
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 19,9G 129M 19,7G - 0% 0% 2.00x ONLINE -
중복제거 비율은 다음과 같습니다.2.0동일한 파일을 다른 데이터세트에 복사한 후 제 생각에는 이는 중복 제거가 수행되었음을 의미합니다.데이터-압축 및 암호화 전에 차단됩니다.
누군가 이것이 올바른지 확인해 줄 수 있습니까?
답변1
그것은 밝혀졌다http://docs.oracle.com/cd/E36784_01/html/E36835/gkknx.html맞습니다.
파일이 작성되면 데이터가 압축되고 암호화되며 체크섬이 확인됩니다. 그런 다음 가능한 경우 데이터가 중복 제거됩니다.
무작위 파일에 대한 나의 가정은 틀렸습니다. ZFS는 특정 최소 압축 비율을 달성할 수 없으면 압축을 중단하는 것 같습니다.
인용하다https://wiki.illumos.org/display/illumos/LZ4+압축
주목해야 할 또 다른 특별한 점은 압축할 수 없는 데이터에 대한 LZ4의 성능이 매우 높다는 것입니다. LZ4가 예상되는 최소 압축 비율(ZFS의 경우 12.5%)을 충족할 수 없는 경우 트리거되는 "조기 중단" 메커니즘을 통합하여 이를 달성합니다.
테스트를 위해 내 파일 시스템에서 find / >> tree.txt
.
파일을 두 데이터세트에 복사한 후 zpool get dedupratio
다음을 반환했습니다.
NAME PROPERTY VALUE SOURCE
tank dedupratio 1.00x -
중복 제거는 실제로 이 쓰기 체인의 마지막 부분입니다. 다른 압축 알고리즘을 선택하면 중복 제거 성능이 저하됩니다!
불행히도 내 ZoL 버전은 암호화를 지원하지 않습니다. 그러나 서로 다른 데이터 세트를 암호화하면 중복 제거가 망가질 수도 있는 것 같습니다. 암호화 정보:https://docs.oracle.com/cd/E53394_01/html/E54801/gkkih.html