File system di compressione trasparente in combinazione con ext4

Sto provando a provare un progetto che necessiti di archiviazione compressa con l'utilizzo del file system ext4 poiché l'applicazione che utilizzo utilizza le funzionalità di ext4.

Ci sono soluzioni di produzione / stabili là fuori per la compressione trasparente su ext4?

Quello che ho provato:

Ext4 sopra il volume ZFS con la compressione abilitata. Questo ha effettivamente avuto un effetto negativo. Ho provato a creare un volume ZFS con la compressione lz4 abilitata e facendo un filesystem ext4 su / dev / zvol / … ma il volume zfs ha mostrato il doppio dell'utilizzo effettivo e la compressione non sembra avere alcun effetto.

# du -hs /mnt/test **1.1T** /mnt/test # zfs list NAME USED AVAIL REFER MOUNTPOINT pool 15.2T 2.70G 290K /pool pool/test 15.2T 13.1T **2.14T** - 

Comandi di creazione ZFS

 zpool create pool raidz2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde2 /dev/sdf1 /dev/sdg1 /dev/sdh2 /dev/sdi1 zfs set recordsize=128k pool zfs create -p -V15100GB pool/test zfs set compression=lz4 pool/test mkfs.ext4 -m1 -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink /dev/zvol/pool/test 

Fusecompress: sembrava funzionare ma non stabile al 100%. Ricerca di alternative.

LessFS: è ansible utilizzare Lessf in combinazione con ext4? Non ho ancora provato, ma sarei interessato alla comprensione dell'utente.

Un grosso problema: non la vera trasparenza

Un problema che ho visto con fusecompress è stato le quote. Ad esempio, se ho abilitato la compressione sul file system, vorrei che il mio sistema avrebbe beneficiato della compressione, non necessariamente dell'utente finale. Se ho abilitato una quota di 1 GB per un utente, con un rapporto di compressione di 1,5, potranno caricare 1,5 GB di dati, piuttosto che 1 GB di dati e il sistema che beneficia della compressione. Anche questo sembrava mostrarsi su df-h. C'è una soluzione per avere la compressione trasparente ai contingenti?

  • "Zfs ricevono" un'operazione atomica?
  • ZFS: RAIDZ e RAIDZ2 dimensione utilizzabile?
  • È ansible accedere ai controlli ZFS per confrontare i file
  • ZFS, NFS e Nexenta
  • Richiede spazio libero
  • iSCSI: LUN per target?
  • Quanto stabile è zfs-fuse 0.6.9 su Linux?
  • zfs - due piscine con punti di assembly nidificati e ordine di assembly in conflitto
  • 2 Solutions collect form web for “File system di compressione trasparente in combinazione con ext4”

    Io uso ZFS su Linux come gestore di volume e un mezzo per fornire ulteriori protezioni e funzionalità ai filesystem tradizionali. Ciò include la creazione di istantanee a livello di block, la replica, la deduplicazione, la compressione e la cache avanzata nei filesystem XFS o ext4.

    Vedere: https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ per un'altra spiegazione.

    Nel mio caso di utilizzo più comune, faccio leva sulla funzionalità zvol ZFS per creare un volume sparso su un pool esistente. Quelle properties; di zvol possono essere impostate come un file system ZFS normale. A questo punto, è ansible impostare properties; come il tipo di compressione, la dimensione del volume, il metodo di caching, ecc.

    Creare questo zvol presenta un dispositivo di block a Linux che può essere formattato con il filesystem di tua scelta. Utilizza fdisk o partizionato per creare la tua partizione e mkfs il volume finito.

    Montare questo e tu hai essenzialmente un filesystem supportto da un zvol e con tutte le sue properties;.


    Ecco il mio stream di lavoro …

    Crea una zpool composta da quattro dischi:
    ashift=12 direttiva ashift=12 per il tipo di dischi che stai utilizzando. In questo caso il nome di zpool è "vol0".

    zpool creare -o ashift = 12 -f vol0 specchio scsi-AccOW140403AS1322043 scsi-AccOW140403AS1322042 spec scsi-AccOW140403AS1322013 scsi-AccOW140403AS1322044

    Imposta le impostazioni iniziali di zpool:
    Ho impostato autoexpand=on al livello zpool nel caso in cui sostituiamo i dischi con unità più grandi o espandere la piscina in un setup di mirror ZFS . Di solito non uso ZFS raidz1 / 2/3 a causa delle scarse performance e dell'incapacità di espandere il pool.

     zpool set autoexpand=on vol0 

    Imposta le properties; iniziali dei file system zfs:
    Utilizzare l' algorithm di compressione lz4 per le nuove installazioni ZFS. Va bene lasciare tutto il tempo.

     zfs set compression=lz4 vol0 zfs set atime=off vol0 

    Crea zef zvol:
    Per ZFS su Linux, è molto importnte utilizzare una grande dimensione del block. -o volblocksize=128k è assolutamente essenziale qui. L'opzione -s consente di creare uno scarto ridotto e non consumare lo spazio della piscina fino a quando non sia necessario. È ansible scavalcare qui, se conosci bene i tuoi dati. In questo caso, ho circa 444 GB di spazio su disco disponibile in piscina, ma sto presentando un volume da 800 GB a XFS.

     zfs create -o volblocksize=128K -s -V 800G vol0/pprovol 

    Partizione dispositivo zvol:
    ( dovrebbe essere / dev / zd0 per il primo zvol; / dev / zd16, / dev / zd32, ecc per i successivi zvols )

     fdisk /dev/zd0 # (create new aligned partition with the "c" and "u" parameters) 

    Creare e montare il filesystem:
    mkfs.xfs o ext4 sulla partizione appena creata, / dev / zd0p1.

     mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/zd0p1 

    Prendi l'UUID con blkid e modifica /etc/fstab .

     UUID=455cae52-89e0-4fb3-a896-8f597a1ea402 /ppro xfs noatime,logbufs=8,logbsize=256k 1 2 

    Montare il nuovo filesystem.

     mount /ppro/ 

    Risultati …

     [root@Testa ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sde2 20G 8.9G 9.9G 48% / tmpfs 32G 0 32G 0% /dev/shm /dev/sde1 485M 63M 397M 14% /boot /dev/sde7 2.0G 68M 1.9G 4% /tmp /dev/sde3 12G 2.6G 8.7G 24% /usr /dev/sde6 6.0G 907M 4.8G 16% /var /dev/zd0p1 800G 398G 403G 50% /ppro <-- Compressed ZFS-backed XFS filesystem. vol0 110G 256K 110G 1% /vol0 

    Elenco dei filesystem ZFS.

     [root@Testa ~]# zfs list NAME USED AVAIL REFER MOUNTPOINT vol0 328G 109G 272K /vol0 vol0/pprovol 326G 109G 186G - <-- The actual zvol providing the backing for XFS. vol1 183G 817G 136K /vol1 vol1/images 183G 817G 183G /images 

    Lista zpool ZFS.

     [root@Testa ~]# zpool list -v NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT vol0 444G 328G 116G 73% 1.00x ONLINE - mirror 222G 164G 58.1G - scsi-AccOW140403AS1322043 - - - - scsi-AccOW140403AS1322042 - - - - mirror 222G 164G 58.1G - scsi-AccOW140403AS1322013 - - - - scsi-AccOW140403AS1322044 - - - - 

    Zef zvol properties ( prendere nota di referenced , compressratio e volsize ).

     [root@Testa ~]# zfs get all vol0/pprovol NAME PROPERTY VALUE SOURCE vol0/pprovol type volume - vol0/pprovol creation Sun May 11 15:27 2014 - vol0/pprovol used 326G - vol0/pprovol available 109G - vol0/pprovol referenced 186G - vol0/pprovol compressratio 2.99x - vol0/pprovol reservation none default vol0/pprovol volsize 800G local vol0/pprovol volblocksize 128K - vol0/pprovol checksum on default vol0/pprovol compression lz4 inherited from vol0 vol0/pprovol readonly off default vol0/pprovol copies 1 default vol0/pprovol refreservation none default vol0/pprovol primarycache all default vol0/pprovol secondarycache all default vol0/pprovol usedbysnapshots 140G - vol0/pprovol usedbydataset 186G - vol0/pprovol usedbychildren 0 - vol0/pprovol usedbyrefreservation 0 - vol0/pprovol logbias latency default vol0/pprovol dedup off default vol0/pprovol mlslabel none default vol0/pprovol sync standard default vol0/pprovol refcompressratio 3.32x - vol0/pprovol written 210M - vol0/pprovol snapdev hidden default 

    È inoltre necessario abilitare il discard sul file system ext4. Senza scartare, zfs non recupera lo spazio quando i file vengono rimossi. Ciò può finire per portre a grandi discrepanze tra ciò che i report del filesystem ext4 e il report dei volumi zfs.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.