Connect with us

Linux

Come impostare la dimensione ZFS ARC su FreeBSD


WQuando si lavora con FreeBSD e ZFS, si incontreranno problemi di dimensione della cache ZFS. Non tutti i server FreeBSD sono file server. Alcuni server fungono da server di backup. Altri potrebbero eseguire Linux e Windows VM in cui si desidera che le VM guest gestiscano la propria memorizzazione nella cache. Sarebbe utile se avessi tonnellate di RAM per ZFS, ma potresti non avere quel lusso nella vita reale. Questa pagina spiega come impostare la dimensione dell’arco ZFS su FreeBSD per lavorare con meno RAM per evitare che il computer esaurisca la memoria nel kernel.

Dettagli tutorial
Livello di difficoltà Avanzate
Privilegi di root
Requisiti FreeBSD con ZFS
Est. momento della lettura 7 minuti

Le informazioni presentate e le opzioni di configurazione di seguito funzionano solo con FreeBSD. Non funzionerà con Linux o altri sistemi in cui è supportato ZFS. Vedi come impostare la dimensione ZFS ARC su Ubuntu/Debian Linux per maggiori informazioni.

Cos’è l’ARC?

ZFS è un file system avanzato inizialmente creato da Sun Microsystems. ARC è l’acronimo di Adaptive Replacement Cache. È un algoritmo moderno per la memorizzazione nella cache dei dati nella DRAM. In altre parole, ARC non è nulla, ma contiene dati memorizzati nella cache come dati e metadati del filesystem. ZFS proverà a utilizzare una RAM libera per accelerare le operazioni del server.

C’è anche una cache secondaria chiamata L2ARC (livello II Adaptive Replacement Cach). Perché usare L2ARC? Sai come la DRAM è costosa e limitata su tutti i sistemi. Quindi quello che facciamo è utilizzare SSD più veloci o storage PCIe NVMe a tale scopo.

Esempi

Ecco come appare in genere su un server aziendale:

  1. DRAM – ARC – 16 Gbyte
  2. L2ARC – SSD NVMe/SATA – 512G
  3. Archiviazione ZFS: più dischi con mirroring (diciamo 12 TB)

Come sintonizzare ARC su FreeBSD

Sfortunatamente, non esiste una formula facile per tutti. Devi scoprire il tuo ruolo del server e, in base alle tue esigenze, devi configurare ARC e L2ARC. Questo è il tuo lavoro come amministratore di sistema Unix. Per file server come CIFS/NFS, possiamo impostare un grande ARC con L2ARC per velocizzare l’operazione. Per MariaDB/PostgreSQL, ho impostato un piccolo ARC e ho ottimizzato la memorizzazione nella cache del database insieme a Redis o Memcached. In questo esempio, il mio server di casa FreeBSD svolge molti ruoli, ho una RAM limitata e non c’è ancora spazio per L2ARC. Ho più macchine virtuali Linux e anche loro hanno bisogno di DRAM. Un paio di jail per testare le mie app. Il server funge anche da server di backup per tutti gli altri computer. Non ho NFS o CIFS. In altre parole, ogni configurazione è unica e devi pensare alle tue esigenze.

Basta parlare; sporchiamoci le mani.

Come impostare la dimensione dell’arco ZFS su FreeBSD

Devi modificare il file /boot/loader.conf, eseguire:
sudo vim /boot/loader.conf
Impostiamo la dimensione massima dell’ARC su 4 GB e la dimensione minima su 2 GB in byte:

Guide solo per i sostenitori di Patreon ????

  • Nessuna pubblicità e tracciamento
  • Guide approfondite per sviluppatori e amministratori di sistema su Opensourceflare✨
  • Unisciti al mio Patreon per supportare i creatori di contenuti indipendenti e iniziare a leggere le ultime guide:

Aderire Patreon ?

# Setting up ZFS ARC size on FreeBSD as per our needs
# Must be set in bytes and not in GB/MB etc
# Set Max size = 4GB = 4294967296 Bytes
vfs.zfs.arc_max="4294967296"
 
# Min size = 2GB
vfs.zfs.arc_min="2147483648"

Salva e chiudi il file. Assicurati di riavviare la casella di FreeBSD:
sudo reboot

Verifica

$ sysctl vfs.zfs.arc_max vfs.zfs.arc_min
# see all values #
$ sysctl vfs.zfs.arc

Come visualizzare le statistiche ZFS

Possiamo usare zfs-stats comando per vedere le statistiche ZFS in formato leggibile dall’uomo su FreeBSD incluso:

  • ARCO
  • L2ARC
  • zfetch (DMU)
  • statistiche della cache vdev e altro.

Installare zfs-stats su FreeBSD

Digita il seguente comando pkg:
$ sudo pkg install zfs-stats

Updating FreeBSD repository catalogue...
Fetching packagesite.txz: 100%    6 MiB   6.5MB/s    00:01    
Processing entries: 100%
FreeBSD repository update completed. 30370 packages processed.
All repositories are up to date.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):
 
New packages to be INSTALLED:
	zfs-stats: 1.3.0_2
 
Number of packages to be installed: 1
 
Proceed with this action? [y/N]: y
[1/1] Installing zfs-stats-1.3.0_2...
[1/1] Extracting zfs-stats-1.3.0_2: 100%

Come usare zfs-stats su FreeBSD

Per vedere tutte le statistiche passa il -un come segue:
zfs-stats -a
zfs-stats -a | more

Otterrai cose sullo schermo:

------------------------------------------------------------------------
ZFS Subsystem Report                            Sat May 22 16:05:11 2021
------------------------------------------------------------------------
 
System Information:
 
        Kernel Version:                         1300139 (osreldate)
        Hardware Platform:                      amd64
        Processor Architecture:                 amd64
 
        ZFS Storage pool Version:               5000
        ZFS Filesystem Version:                 5
 
FreeBSD 13.0-RELEASE #0 releng/13.0-n244733-ea31abc261f: Fri Apr 9 04:24:09 UTC 2021 root 4:05PM  up 3 days, 20:40, 1 user, load averages: 1.08, 1.10, 1.08
 
------------------------------------------------------------------------
 
System Memory:
 
        1.53%   486.25  MiB Active,     3.61%   1.12    GiB Inact
        37.66%  11.68   GiB Wired,      0.00%   0       Bytes Cache
        57.07%  17.71   GiB Free,       0.13%   41.04   MiB Gap
 
        Real Installed:                         32.00   GiB
        Real Available:                 99.57%  31.86   GiB
        Real Managed:                   97.37%  31.03   GiB
 
        Logical Total:                          32.00   GiB
        Logical Used:                   41.16%  13.17   GiB
        Logical Free:                   58.84%  18.83   GiB
 
Kernel Memory:                                  847.96  MiB
        Data:                           94.60%  802.16  MiB
        Text:                           5.40%   45.81   MiB
 
Kernel Memory Map:                              31.03   GiB
        Size:                           37.18%  11.54   GiB
        Free:                           62.82%  19.49   GiB
 
------------------------------------------------------------------------
 
ARC Summary: (HEALTHY)
        Memory Throttle Count:                  0
 
ARC Misc:
        Deleted:                                31.41   m
        Mutex Misses:                           1.37    k
        Evict Skips:                            186.29  k
 
ARC Size:                               85.99%  3.44    GiB
        Target Size: (Adaptive)         89.81%  3.59    GiB
        Min Size (Hard Limit):          50.00%  2.00    GiB
        Max Size (High Water):          2:1     4.00    GiB
        Decompressed Data Size:                 9.21    GiB
        Compression Factor:                     2.68
 
ARC Size Breakdown:
        Recently Used Cache Size:       45.66%  1.64    GiB
        Frequently Used Cache Size:     54.34%  1.95    GiB
 
ARC Hash Breakdown:
        Elements Max:                           813.52  k
        Elements Current:               89.17%  725.39  k
        Collisions:                             2.92    m
        Chain Max:                              5
        Chains:                                 55.74   k
 
------------------------------------------------------------------------
 
ARC Efficiency:                                 2.61    b
        Cache Hit Ratio:                98.74%  2.57    b
        Cache Miss Ratio:               1.26%   32.93   m
        Actual Hit Ratio:               97.17%  2.53    b
 
        Data Demand Efficiency:         93.61%  8.85    m
        Data Prefetch Efficiency:       18.83%  4.02    m
 
        CACHE HITS BY CACHE LIST:
          Anonymously Used:             1.53%   39.31   m
          Most Recently Used:           36.89%  948.88  m
          Most Frequently Used:         61.53%  1.58    b
          Most Recently Used Ghost:     0.03%   832.22  k
          Most Frequently Used Ghost:   0.03%   714.13  k
 
        CACHE HITS BY DATA TYPE:
          Demand Data:                  0.32%   8.29    m
          Prefetch Data:                0.03%   757.06  k
          Demand Metadata:              95.31%  2.45    b
          Prefetch Metadata:            4.34%   111.69  m
 
        CACHE MISSES BY DATA TYPE:
          Demand Data:                  1.72%   565.72  k
          Prefetch Data:                9.91%   3.26    m
          Demand Metadata:              73.49%  24.20   m
          Prefetch Metadata:            14.89%  4.90    m
 
------------------------------------------------------------------------
 
L2ARC is disabled
 
------------------------------------------------------------------------
 
Dataset statistics for: zroot/ROOT/default

Statistiche rimanenti:

Dataset statistics for: zroot/ROOT/default
 
        Reads:          88.73%  787.20  k
        Writes:         11.09%  98.38   k
        Unlinks:        0.18%   1.60    k
 
        Bytes read:     94.27%  3.98    b
        Bytes written:  5.73%   241.83  m
 
Dataset statistics for: zroot/jails/dnscrypt
 
        Reads:          89.42%  124.35  k
        Writes:         10.49%  14.59   k
        Unlinks:        0.09%   123
 
        Bytes read:     98.64%  517.96  m
        Bytes written:  1.36%   7.14    m
 
Dataset statistics for: zroot/rsnapshot
 
        Reads:          55.21%  3.47    m
        Writes:         3.61%   227.13  k
        Unlinks:        41.18%  2.59    m
 
        Bytes read:     89.81%  426.25  b
        Bytes written:  10.19%  48.36   b
 
Dataset statistics for: zroot/tmp
 
        Reads:          99.46%  698.75  k
        Writes:         0.50%   3.53    k
        Unlinks:        0.04%   274
 
        Bytes read:     63.83%  185.67  m
        Bytes written:  36.17%  105.19  m
 
Dataset statistics for: zroot/usr/home
 
        Reads:          99.99%  1.02    m
        Writes:         0.01%   72
        Unlinks:        0.00%   21
 
        Bytes read:     100.00% 132.00  b
        Bytes written:  0.00%   740.30  k
 
Dataset statistics for: zroot/var/log
 
        Reads:          0.30%   887
        Writes:         99.69%  293.71  k
        Unlinks:        0.00%   13
 
        Bytes read:     5.54%   4.80    m
        Bytes written:  94.46%  81.73   m
 
Dataset statistics for: zroot/var/mail
 
        Reads:          0.00%   0
        Writes:         59.09%  13
        Unlinks:        40.91%  9
 
        Bytes read:     0.00%   0
        Bytes written:  100.00% 24.66   k
 
 
------------------------------------------------------------------------
 
File-Level Prefetch:
 
DMU Efficiency:                                 3.76    m
        Hit Ratio:                      82.09%  3.09    m
        Miss Ratio:                     17.91%  674.00  k
 
------------------------------------------------------------------------
 
VDEV cache is disabled
 
------------------------------------------------------------------------
 
ZFS Tunables (sysctl):
        kern.maxusers                           2375
        vm.kmem_size                            33315098624
        vm.kmem_size_scale                      1
        vm.kmem_size_min                        0
        vm.kmem_size_max                        1319413950874
        vfs.zfs.sync_pass_rewrite               2
        vfs.zfs.sync_pass_dont_compress         8
        vfs.zfs.sync_pass_deferred_free         2
        vfs.zfs.commit_timeout_pct              5
        vfs.zfs.history_output_max              1048576
        vfs.zfs.max_nvlist_src_size             0
        vfs.zfs.dbgmsg_maxsize                  4194304
        vfs.zfs.dbgmsg_enable                   1
        vfs.zfs.zap_iterate_prefetch            1
        vfs.zfs.rebuild_scrub_enabled           1
        vfs.zfs.rebuild_vdev_limit              33554432
        vfs.zfs.rebuild_max_segment             1048576
        vfs.zfs.initialize_chunk_size           1048576
        vfs.zfs.initialize_value                -2401053088876216594
        vfs.zfs.nocacheflush                    0
        vfs.zfs.scan_ignore_errors              0
        vfs.zfs.checksum_events_per_second      20
        vfs.zfs.slow_io_events_per_second       20
        vfs.zfs.read_history_hits               0
        vfs.zfs.read_history                    0
        vfs.zfs.special_class_metadata_reserve_pct25
        vfs.zfs.user_indirect_is_special        1
        vfs.zfs.ddt_data_is_special             1
        vfs.zfs.deadman_enabled                 1
        vfs.zfs.deadman_checktime_ms            60000
        vfs.zfs.free_leak_on_eio                0
        vfs.zfs.recover                         0
        vfs.zfs.flags                           0
        vfs.zfs.keep_log_spacemaps_at_export    0
        vfs.zfs.min_metaslabs_to_flush          1
        vfs.zfs.max_logsm_summary_length        10
        vfs.zfs.max_log_walking                 5
        vfs.zfs.unflushed_log_block_pct         400
        vfs.zfs.unflushed_log_block_min         1000
        vfs.zfs.unflushed_log_block_max         262144
        vfs.zfs.unflushed_max_mem_ppm           1000
        vfs.zfs.unflushed_max_mem_amt           1073741824
        vfs.zfs.autoimport_disable              1
        vfs.zfs.max_missing_tvds                0
        vfs.zfs.multilist_num_sublists          0
        vfs.zfs.resilver_disable_defer          0
        vfs.zfs.scan_fill_weight                3
        vfs.zfs.scan_strict_mem_lim             0
        vfs.zfs.scan_mem_lim_soft_fact          20
        vfs.zfs.scan_max_ext_gap                2097152
        vfs.zfs.scan_checkpoint_intval          7200
        vfs.zfs.scan_legacy                     0
        vfs.zfs.scan_issue_strategy             0
        vfs.zfs.scan_mem_lim_fact               20
        vfs.zfs.free_bpobj_enabled              1
        vfs.zfs.max_async_dedup_frees           100000
        vfs.zfs.async_block_max_blocks          -1
        vfs.zfs.no_scrub_prefetch               0
        vfs.zfs.no_scrub_io                     0
        vfs.zfs.scan_suspend_progress           0
        vfs.zfs.resilver_min_time_ms            3000
        vfs.zfs.free_min_time_ms                1000
        vfs.zfs.obsolete_min_time_ms            500
        vfs.zfs.scrub_min_time_ms               1000
        vfs.zfs.scan_vdev_limit                 4194304
        vfs.zfs.sync_taskq_batch_pct            75
        vfs.zfs.delay_scale                     500000
        vfs.zfs.dirty_data_sync_percent         20
        vfs.zfs.dirty_data_max_max              4294967296
        vfs.zfs.dirty_data_max                  3421336780
        vfs.zfs.delay_min_dirty_percent         60
        vfs.zfs.dirty_data_max_max_percent      25
        vfs.zfs.dirty_data_max_percent          10
        vfs.zfs.disable_ivset_guid_check        0
        vfs.zfs.allow_redacted_dataset_mount    0
        vfs.zfs.max_recordsize                  1048576
        vfs.zfs.send_holes_without_birth_time   1
        vfs.zfs.pd_bytes_max                    52428800
--More--(byte 7920)

Riassumendo

Hai imparato a controllare le dimensioni di ZFS ARC sotto FreeBSD in base alle tue esigenze. Ti consiglio caldamente di leggere i libri ZFS di FreeBSD che spiegano tutte queste cose in dettaglio.


ANNUNCIO



Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare.

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi