Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
linux_faq:deduplication_win2012r2_vs_ubuntuzfs [2019/02/11 09:13] – external edit 127.0.0.1linux_faq:deduplication_win2012r2_vs_ubuntuzfs [2019/03/13 08:14] (current) – [Выводы] admin
Line 1: Line 1:
 +Сравнение дедупликации **Windows 2012 R2**, **ZFS**, **BTRFS** и **SDFS** на базе **Ubuntu 16.04**
  
 +====== Условия тестирования ======
 +К виртуальным машинам на базе  **Windows 2012 R2** и  **Ubuntu 16.04** прицеплены диски **50Gb**. \\
 +В **Windows 2012 R2** просто создан том и включена дедупликация. \\
 +В **Ubuntu** включаются различные варианты настроек файловых систем. \\
 +После этого тома заполняются одинаковым набором данных - архивы и дистрибутивы. То есть типичная файлопомойка. 
 +На **BTRFS** дедупликация выполняется после записи данных с помощью **duperemove**. 
 +\\
 +\\
 +Если отдельно не указано - на всех файловых системах используются дефолтные настройки.
 +
 +====== ZFS + deduplication ======
 +
 +Перед заполнением данными на **ZFS** включена дедупликация со сжатием:
 +  zfs set compression=on zroot
 +  zfs set dedup=on zroot
 +  
 +<code>
 +sudo zfs get used,available,logicalused testdedup
 +NAME       PROPERTY     VALUE  SOURCE
 +testdedup  used         47.1G  -
 +testdedup  available    4.65G  -
 +testdedup  logicalused  47.0G  -
 +
 +df -h
 +Filesystem    Size  Used Avail Use% Mounted on
 +testdedup     52G   47G  4.7G  91% /testdedup
 +</code>
 +====== ZFS + deduplication + compression======
 +<code>sudo zfs get used,available,logicalused testdedup
 +NAME       PROPERTY     VALUE  SOURCE
 +testdedup  used         44.0G  -
 +testdedup  available    6.96G  -
 +testdedup  logicalused  46.4G  -
 +
 +df -h
 +Filesystem  Size  Used Avail Use% Mounted on
 +testdedup   51G   44G  7.0G  87% /testdedup
 +</code>
 +
 +====== ZFS + deduplication, recordsize=4k======
 +  sudo zfs set dedup=on testdedup
 +  sudo zfs set recordsize=4k testdedup
 +Производительность на запись упала очень сильно. С **recordsize=4k** ZFS как файлопомойка не эффективна.
 +
 +====== ZFS + deduplication + compression , recordsize=64k======
 +  sudo zfs set dedup=on testdedup
 +  sudo zfs set compress=on testdedup
 +  sudo zfs set recordsize=64k testdedup
 +Результат:
 +<code>
 +sudo zfs get used,available,logicalused,compressratio testdedup
 +NAME       PROPERTY       VALUE  SOURCE
 +testdedup  used           44.1G  -
 +testdedup  available      6.85G  -
 +testdedup  logicalused    46.4G  -
 +testdedup  compressratio  1.05x  -
 +
 +df -h
 +Filesystem  Size  Used Avail Use% Mounted on
 +testdedup   51G   44G  6.9G  87% /testdedup
 +</code>
 +
 +====== BTRFS + duperemove v0.11.beta4 ======
 +Связка **BTRFS** + **duperemove** 
 +<code>
 +sudo btrfs filesystem df -h /mnt
 +Data, single: total=48.73GiB, used=43.96GiB
 +System, single: total=4.00MiB, used=16.00KiB
 +Metadata, single: total=264.00MiB, used=56.44MiB
 +GlobalReserve, single: total=32.00MiB, used=0.00B
 +
 +df -h
 +Filesystem  Size  Used Avail Use% Mounted on
 +/dev/xvdb   50G   45G  5.8G  89% /mnt
 +</code>
 +
 +====== BTRFS + compress-force=zlib + duperemove v0.11.beta4 ======
 +**BTRFS** смонтирован с опцией **compress-force**, дедупликация выполнена **duperemove**.
 +<code>sudo btrfs filesystem df -h /mnt
 +System, single: total=4.00MiB, used=12.00KiB
 +Data+Metadata, single: total=45.01GiB, used=40.50GiB
 +GlobalReserve, single: total=512.00MiB, used=0.00B
 +
 +df -h
 +Filesystem   Size  Used Avail Use% Mounted on
 +/dev/xvdb    50G   42G  9.5G  82% /mnt
 +</code>
 +
 +
 +====== ext4 + SDFS default settings ======
 +  wget http://www.opendedup.org/downloads/sdfs-latest.deb
 +  sudo dpkg -i sdfs-latest.deb
 +  sudo apt-get -f install 
 +  sudo su
 +  sudo mkfs.ext4 /dev/xvdb
 +  sudo mkdir --parents /opt/sdfs/
 +  sudo mount /dev/xvdb /opt/sdfs/
 +
 +Вот объем незанятного места:  
 +  df -h
 +  
 +  Filesystem   Size  Used Avail Use% Mounted on
 +  /dev/xvdb    50G   52M   47G   1% /opt/sdfs
 +
 +Создаем том:
 +  sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=50GB
 +  sudo mount.sdfs pool0 /mnt
 +Настройки по-умолчанию получились такие:
 +  io chunk-size="256" 
 +  dedup-files="true"
 +  hash-type="VARIABLE_MURMUR3"
 +**hash-type="VARIABLE_MURMUR3"** означает, что используется переменный размер блока для дедупликации, вычисляемый автоматически.
 +
 +Вот результаты после заливки файлов:
 +  df -h
 +  Filesystem                                  Size  Used Avail Use% Mounted on
 +  /dev/xvdb                                   50G   41G  6.2G  87% /opt/sdfs
 +  sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   39G   12G  77% /mnt
 +И статистика по тому:
 +<code>sdfscli --volume-info
 +Files : 3578
 +Volume Capacity : 50 GB
 +Volume Current Logical Size : 46.84 GB
 +Volume Max Percentage Full : 95.0%
 +Volume Duplicate Data Written : 8.76 GB
 +Unique Blocks Stored: 38.3 GB
 +Unique Blocks Stored after Compression : 38.4 GB
 +Cluster Block Copies : 2
 +Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
 +Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 18.02%
 +Compression Rate: -0.25% </code>
 +
 +====== BTRFS + compression=zlib + SDFS ======
 +Данные SDFS размещены на томе **BTRFS**, на котором включена компрессия **zlib**. \\
 +**SDFS**:
 +  io chunk-size="256" 
 +  dedup-files="true"
 +  hash-type="VARIABLE_MURMUR3"
 +
 +  df -h
 +  Filesystem                                 Size  Used Avail Use% Mounted on
 +  /dev/xvdb                                   50G   37G   13G  75% /opt/sdfs
 +  sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   39G   12G  77% /mnt
 +
 +<code>
 +sdfscli --volume-info
 +Files : 3578
 +Volume Capacity : 50 GB
 +Volume Current Logical Size : 46.84 GB
 +Volume Max Percentage Full : 95.0%
 +Volume Duplicate Data Written : 8.76 GB
 +Unique Blocks Stored: 38.3 GB
 +Unique Blocks Stored after Compression : 38.4 GB
 +Cluster Block Copies : 2
 +Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
 +Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 18.02%
 +Compression Rate: -0.25%
 +</code>
 +
 +Производительность:
 +<code>
 +dd if=/dev/zero of=/mnt/TEST.ZERO bs=16384
 +1478190+0 records in
 +1478190+0 records out
 +24218664960 bytes (24 GB, 23 GiB) copied, 148.419 s, 163 MB/s
 +
 +Tasks: 586 total,   2 running, 584 sleeping,   0 stopped,   0 zombie
 +%Cpu(s): 43.3 us, 34.3 sy,  0.0 ni, 21.8 id,  0.0 wa,  0.0 hi,  0.2 si,  0.4 st
 +KiB Mem :  4037716 total,  2282464 free,   874880 used,   880372 buff/cache
 +KiB Swap:  1171452 total,  1154028 free,    17424 used.  3067036 avail Mem 
 +
 +  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                      
 +24084 root      20   0 3943336 768132  23104 S 141.4 19.0   4:29.02 jsvc                                                                                                                                                         
 +24251 root      20      7332    696    620 R  15.1  0.0   0:19.55 dd                                                                                                                                                           
 +24342 user      20     42348   4108   3132 R   0.7  0.1   0:00.09 top 
 +</code>
 +====== BTRFS + SDFS + sdfs compression LZ4 ======
 +  sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=50GB --chunk-store-compress=true --compress-metadata=true
 +  sudo mount.sdfs pool0 /mnt
 +  
 +После заливки файлов:
 +<code>
 +df -h
 +Filesystem                                 Size  Used Avail Use% Mounted on
 +/dev/xvdb                                   50G   38G   12G  77% /opt/sdfs
 +sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   37G   14G  74% /mnt
 +
 +
 +sdfscli --volume-info
 +Files : 3578
 +Volume Capacity : 50 GB
 +Volume Current Logical Size : 46.84 GB
 +Volume Max Percentage Full : 95.0%
 +Volume Duplicate Data Written : 8.76 GB
 +Unique Blocks Stored: 38.3 GB
 +Unique Blocks Stored after Compression : 36.9 GB
 +Cluster Block Copies : 2
 +Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
 +Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 21.21%
 +Compression Rate: 3.65%
 +</code>
 +
 +Производительность:
 +<code>
 +dd if=/dev/zero of=/mnt/TEST.ZERO bs=16384
 +497921+0 records in
 +497921+0 records out
 +8157937664 bytes (8.2 GB, 7.6 GiB) copied, 52.3913 s, 156 MB/s
 +
 +Tasks: 582 total,   2 running, 580 sleeping,   0 stopped,   0 zombie
 +%Cpu(s): 47.4 us, 34.0 sy,  0.0 ni, 16.4 id,  0.0 wa,  0.0 hi,  0.0 si,  2.2 st
 +KiB Mem :  4037716 total,   206404 free,  1101492 used,  2729820 buff/cache
 +KiB Swap:  1171452 total,  1152020 free,    19432 used.  2839380 avail Mem 
 +
 +  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                      
 +20824 root      20   0 4020188 1.226g 319568 S 151.3 31.8  20:51.12 jsvc                                                                                                                                                         
 +23450 root      20      7332    688    616 R  15.2  0.0   0:02.28 dd                                                                                                                                                           
 +23487 user      20     42348   3996   3020 R   0.3  0.1   0:00.07 top 
 +</code>
 +
 +====== BTRFS + SDFS - no compression ======
 +После заливки файлов:
 +<code>df -h
 +Filesystem                                 Size  Used Avail Use% Mounted on
 +/dev/xvdb                                   50G   41G  9.6G  81% /opt/sdfs
 +sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   39G   12G  77% /mnt
 +
 +
 +sdfscli --volume-info
 +Files : 3578
 +Volume Capacity : 50 GB
 +Volume Current Logical Size : 46.84 GB
 +Volume Max Percentage Full : 95.0%
 +Volume Duplicate Data Written : 8.76 GB
 +Unique Blocks Stored: 38.3 GB
 +Unique Blocks Stored after Compression : 38.4 GB
 +Cluster Block Copies : 2
 +Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
 +Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 18.02%
 +Compression Rate: -0.25%
 +</code>
 +
 +Производительность:
 +<code>dd if=/dev/zero of=/mnt/TEST.ZERO bs=16384
 +401942+0 records in
 +401942+0 records out
 +6585417728 bytes (6.6 GB, 6.1 GiB) copied, 41.545 s, 159 MB/s
 +
 +
 +
 +Tasks: 581 total,   2 running, 579 sleeping,   0 stopped,   0 zombie
 +%Cpu(s): 44.8 us, 35.8 sy,  0.0 ni, 18.9 id,  0.2 wa,  0.0 hi,  0.0 si,  0.3 st
 +KiB Mem :  4037716 total,   119480 free,  2389112 used,  1529124 buff/cache
 +KiB Swap:  1171452 total,  1157324 free,    14128 used.  1533060 avail Mem 
 +
 +  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                      
 + 3024 root      20   0 4008900 1.273g 320148 S 143.2 33.1  18:12.32 jsvc                                                                                                                                                         
 + 5337 root      20      7332    704    632 R  14.9  0.0   0:03.98 dd                                                                                                                                                           
 + 5345 user      20     42348   4052   2996 R   1.0  0.1   0:00.16 top 
 +</code>
 +
 +====== Windows 2012R2 + NTFS + deduplication ======
 +В то же время с тем же набором данных на NTFS:
 +<code>
 +PS C:\Windows\system32> Get-DedupStatus F: | fl
 +
 +
 +Volume                             : F:
 +VolumeId                           : \\?\Volume{69c27e73-82e4-4962-bce6-d83d0b7e0616}\
 +Capacity                           : 49.87 GB
 +FreeSpace                          : 10.8 GB
 +UsedSpace                          : 39.07 GB
 +UnoptimizedSize                    : 48.35 GB
 +SavedSpace                         : 9.28 GB
 +SavingsRate                        : 19 %
 +OptimizedFilesCount                : 1967
 +OptimizedFilesSize                 : 47.69 GB
 +OptimizedFilesSavingsRate          : 19 %
 +InPolicyFilesCount                 : 1967
 +InPolicyFilesSize                  : 47.69 GB
 +LastOptimizationTime               : 4/21/2017 10:45:09 AM
 +LastOptimizationResult             : 0x00000000
 +LastOptimizationResultMessage      : The operation completed successfully.
 +LastGarbageCollectionTime          : 4/20/2017 4:44:56 PM
 +LastGarbageCollectionResult        : 0x00565302
 +LastGarbageCollectionResultMessage : There are no actions associated with this job.
 +LastScrubbingTime                  :
 +LastScrubbingResult                :
 +LastScrubbingResultMessage         :
 +</code>
 +
 +====== Windows 2012R2 + NTFS + compression + deduplication ======
 +А вот результат, если применить к тому компрессию NTFS, а затем дедуплицировать данные:
 +<code>
 +PS C:\Windows\system32> Get-DedupStatus F: | fl
 +
 +
 +Volume                             : F:
 +VolumeId                           : \\?\Volume{69c27e73-82e4-4962-bce6-d83d0b7e0616}\
 +Capacity                           : 49.87 GB
 +FreeSpace                          : 11.7 GB
 +UsedSpace                          : 38.18 GB
 +UnoptimizedSize                    : 47.45 GB
 +SavedSpace                         : 9.28 GB
 +SavingsRate                        : 19 %
 +OptimizedFilesCount                : 1963
 +OptimizedFilesSize                 : 46.82 GB
 +OptimizedFilesSavingsRate          : 19 %
 +InPolicyFilesCount                 : 1963
 +InPolicyFilesSize                  : 46.82 GB
 +LastOptimizationTime               : 4/25/2017 9:26:35 AM
 +LastOptimizationResult             : 0x00000000
 +LastOptimizationResultMessage      : The operation completed successfully.
 +</code>
 +
 +Эффективность немного выше, чем без компрессии.
 +====== Выводы ======
 +Эффективность дедупликации **Windows 2012R2** существенно превышает эффективность дедупликации **ZFS** и **BTRFS**. На одинаковом наборе данных дедупликация **Windows 2012R2** сохраняет больше места, чем **ZFS** и **BTRFS**, которые показывают примерно одинаковую эффективность дедупликации. \\
 +Конкурировать с дедупликацией **Windows** может только **SDFS** - http://www.opendedup.org. Значительно (по сравнениею с **Windows 2012R2**) сэкономить место позволила конфигурация в которой контейнер **SDFS** размещен на томе **BTRFS**. В **Windows 2012R2** после размещения файлов осталось свободно около **11Gb**, на томе **BTRFS** с контейнером **SDFS** осталось свободно около **13Gb**. \\
 +
 +Важно отметить, что **Windows** и **BTRFS** выполняют дедупликацию уже размещенных данных по расписанию, а **ZFS** и **SDFS** дедуплицирует данные в момент записи данных **in-line**. При этом, для нормальной работы дедупликации на **ZFS** система должна иметь много памяти. По разным оценкам - от **2Gb** до **5Gb RAM** на **1Tb** данных - https://wiki.freebsd.org/ZFSTuningGuide. **SDFS** расходует память значительно экономичнее. \\
 +
 +Даже на плохосжимаемых данных компрессия **ZFS** дает больший выигрыш, чем дедупликация, а уменьшение **recordsize** выигрыша в свободном пространстве не дает, но снижает производительность. 
 +
 +В результате лидером по количеству сэкономленного места, по моим наблюдениям, стала связка **BTRFS compress-force=zlib + SDFS**.
  • linux_faq/deduplication_win2012r2_vs_ubuntuzfs.txt
  • Last modified: 2019/03/13 08:14
  • by admin