{"id":83582,"date":"2020-06-01T19:42:21","date_gmt":"2020-06-01T17:42:21","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost"},"modified":"2020-06-01T19:42:21","modified_gmt":"2020-06-01T17:42:21","slug":"osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","title":{"rendered":"Fondamenti di ZFS: sistema di archiviazione e prestazioni","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/70d75786f36a92a0407107fb79bee721.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesta primavera abbiamo gi\u00e0 discusso alcuni temi introduttivi, come ad esempio <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/gadgets\/2020\/02\/how-fast-are-your-disks-find-out-the-open-source-way-with-fio\/\">come verificare la velocit\u00e0 dei tuoi dischi<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/information-technology\/2020\/04\/understanding-raid-how-performance-scales-from-one-disk-to-eight\/\">che cos'\u00e8 il RAID<\/a><\/noindex>. Nella seconda abbiamo persino promesso di continuare a esplorare le prestazioni di varie topologie multi-disco in ZFS. Si tratta di un file system di nuova generazione che si sta diffondendo ovunque: da <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/gadgets\/2016\/06\/a-zfs-developers-analysis-of-the-good-and-bad-in-apples-new-apfs-file-system\/\">Apple<\/a><\/noindex> fino a <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/information-technology\/2020\/05\/ubuntu-20-04-welcome-to-the-future-linux-lts-disciples\/\">Ubuntu<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBene, oggi \u00e8 il giorno perfetto per conoscere ZFS, curiosi lettori. Sappiate solo che, secondo una stima modesta dell'autore di OpenZFS, Matt Arons, \"\u00e8 davvero complicato\".<\/p>\n<p>Ma prima di addentrarci nei numeri \u2014 e ci saranno, lo prometto \u2014 riguardanti tutte le configurazioni a otto dischi di ZFS, dobbiamo parlare di come <i>ZFS archivia i dati su disco.<\/i> Zpool, vdev e device<\/p>\n<h1>Zpool, vdev e device<\/h1>\n<p>\n<img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/d881cb44e935480a6f2c30795d6afaf1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Questo diagramma del pool completo comprende tre vdev ausiliari, uno per ogni classe, e quattro per RAIDz2.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/fa52fcf700cc72105a90e4ddc4724d9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Di solito non ci sono motivi per creare un pool di tipi e dimensioni di vdev non corrispondenti \u2014 ma se lo desideri, nulla ti impedisce di farlo.<\/i><\/p>\n<p>Per comprendere realmente il file system ZFS, \u00e8 fondamentale esaminare attentamente la sua struttura effettiva. In primo luogo, ZFS combina i tradizionali livelli di gestione dei volumi e del file system. In secondo luogo, utilizza un meccanismo transazionale di copia su scrittura. Queste caratteristiche significano che il sistema \u00e8 strutturalmente molto diverso dai normali file system e dai RAID. Il primo insieme di blocchi fondamentali da comprendere include: il pool di archiviazione (zpool), il dispositivo virtuale (vdev) e il dispositivo reale (device).<\/p>\n<h3>zpool<\/h3>\n<p>\nIl pool di archiviazione zpool \u00e8 la struttura pi\u00f9 alta di ZFS. Ogni pool contiene uno o pi\u00f9 dispositivi virtuali. A sua volta, ciascuno di essi contiene uno o pi\u00f9 dispositivi reali (device). I pool virtuali sono blocchi autonomi. Un singolo computer fisico pu\u00f2 contenere due o pi\u00f9 pool separati, ma ciascuno \u00e8 completamente indipendente dagli altri. I pool non possono condividere dispositivi virtuali.<\/p>\n<p>La ridondanza di ZFS si applica a livello di dispositivi virtuali, non a livello di pool. A livello di pool non c'\u00e8 alcuna ridondanza: se un qualsiasi dispositivo vdev o un vdev speciale viene perso, allora si perde anche l'intero pool.<\/p>\n<p>I moderni pool di archiviazione possono sopravvivere alla perdita della cache o del registro del dispositivo virtuale, sebbene possano perdere un piccolo numero di dati spazzatura se perdono il registro vdev durante un'interruzione di corrente o un guasto di sistema.<\/p>\n<p>Esiste una comune malinteso secondo cui le 'strisce dati' (stripes) di ZFS vengono scritte su tutto il pool. Questo \u00e8 errato. Zpool non \u00e8 affatto un divertente RAID0, \u00e8 piuttosto un divertente <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Non-RAID_drive_architectures#JBOD\">JBOD<\/a><\/noindex> con un complesso meccanismo di distribuzione variabile.<\/p>\n<p>In gran parte, le scritture vengono distribuite tra i dispositivi virtuali disponibili in base allo spazio libero presente, quindi teoricamente tutti verranno riempiti contemporaneamente. Nelle versioni pi\u00f9 recenti di ZFS, viene considerato l'uso corrente (utilizzo) del vdev: se un dispositivo virtuale \u00e8 significativamente pi\u00f9 carico di un altro (ad esempio, a causa di un carico di lettura), verr\u00e0 temporaneamente saltato per la scrittura, nonostante la presenza della maggiore percentuale di spazio libero.<\/p>\n<p>Il meccanismo di determinazione dell'utilizzo, integrato nei moderni metodi di distribuzione della scrittura di ZFS, pu\u00f2 ridurre la latenza e aumentare la larghezza di banda durante periodi di carico insolito - ma questo non <i>carta bianca<\/i> sull'involontario mescolamento di HDD lenti e SSD veloci in un unico pool. Un pool di questo tipo funzioner\u00e0 comunque alla velocit\u00e0 del dispositivo pi\u00f9 lento, come se fosse interamente composto da tali dispositivi.<\/p>\n<h3>vdev<\/h3>\n<p>\nOgni pool di archiviazione \u00e8 composto da uno o pi\u00f9 dispositivi virtuali (virtual device, vdev). A sua volta, ogni vdev include uno o pi\u00f9 dispositivi fisici. La maggior parte dei dispositivi virtuali \u00e8 utilizzata per la semplice archiviazione dei dati, ma esistono diverse classi ausiliarie di vdev, tra cui CACHE, LOG e SPECIAL. Ognuno di questi tipi di vdev pu\u00f2 avere una delle cinque topologie: dispositivo singolo (single-device), RAIDz1, RAIDz2, RAIDz3 o specchio (mirror).<\/p>\n<p>RAIDz1, RAIDz2 e RAIDz3 sono speciali varianti di ci\u00f2 che i vecchi chiamerebbero RAID con parit\u00e0 doppia (diagonale). 1, 2 e 3 si riferiscono al numero di blocchi di parit\u00e0 assegnati a ciascuna striscia di dati. Invece di dischi separati per garantire la parit\u00e0, i dispositivi virtuali RAIDz distribuiscono uniformemente questa parit\u00e0 sui dischi. Un array RAIDz pu\u00f2 perdere tanti dischi quanti sono i suoi blocchi di parit\u00e0; se ne perde un altro, andr\u00e0 in errore e porter\u00e0 con s\u00e9 il pool di archiviazione.<\/p>\n<p>Negli dispositivi virtuali a specchio (mirror vdev), ogni blocco \u00e8 memorizzato su ciascun dispositivo nel vdev. Sebbene i mirror doppi (two-wide) siano i pi\u00f9 comuni, in un mirror pu\u00f2 esserci qualsiasi numero di dispositivi: nelle installazioni pi\u00f9 grandi, per migliorare le prestazioni di lettura e la tolleranza ai guasti, si usano spesso i mirror tripli. Un mirror vdev pu\u00f2 resistere a qualsiasi guasto finch\u00e9 almeno un dispositivo nel vdev continua a funzionare.<\/p>\n<p>I vdev singoli, per loro natura, sono pericolosi. Questo dispositivo virtuale non sopravviver\u00e0 a nessun guasto e, se utilizzato come archiviazione o vdev speciale, la sua rottura comporter\u00e0 la perdita di tutto il pool. Fate molta, molta attenzione qui.<\/p>\n<p>I dispositivi virtuali CACHE, LOG e SPECIAL possono essere creati secondo una qualsiasi delle topologie sopra menzionate, ma ricordate che la perdita di un dispositivo SPECIAL implica la perdita del pool, quindi si raccomanda vivamente una topologia ridondante.<\/p>\n<h3>device<\/h3>\n<p>\nProbabilmente il termine pi\u00f9 semplice da comprendere in ZFS \u00e8 una semplice unit\u00e0 di archiviazione a blocchi. Ricorda che le unit\u00e0 virtuali sono costituite da singole unit\u00e0 e un pool \u00e8 fatto di unit\u00e0 virtuali.<\/p>\n<p>I dischi, magnetici o a stato solido, sono i dispositivi di archiviazione a blocchi pi\u00f9 comuni utilizzati come elementi costitutivi del vdev. Tuttavia, qualsiasi dispositivo con un descrittore in \/dev \u00e8 adeguato, quindi \u00e8 possibile utilizzare interi array RAID hardware come singole unit\u00e0.<\/p>\n<p>Un semplice file raw \u00e8 una delle alternative pi\u00f9 importanti tra le unit\u00e0 a blocchi da cui pu\u00f2 essere costruito un vdev. I pool di test da <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Sparse_file\">file sparsi<\/a><\/noindex>\u00a0sono un modo molto comodo per verificare i comandi del pool e vedere quanto spazio \u00e8 disponibile nel pool o nell'unit\u00e0 virtuale di questa topologia.<\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/d9bea0e4a6842742a7dbac2f9b1ba394.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Puoi creare un pool di test da file sparsi in pochi secondi, ma non dimenticare di eliminare poi l'intero pool e i suoi componenti.<\/i> <\/p>\n<p>Supponiamo che tu voglia configurare un server con otto dischi e stia pianificando di utilizzare dischi da 10 TB (~9300 GiB) \u2014 ma non sei sicuro di quale topologia si adatti meglio alle tue esigenze. Nell'esempio sopra, costruiamo in pochi secondi un pool di test da file sparsi \u2014 e ora sappiamo che un RAIDz2 vdev di otto dischi da 10 TB offre 50 TiB di capacit\u00e0 utile.<\/p>\n<p>Un altro tipo speciale di dispositivo \u00e8 lo SPARE (di riserva). I dispositivi hot-swap, a differenza dei normali dispositivi, appartengono all'intero pool e non a un singolo dispositivo virtuale. Se un vdev nel pool si guasta e un dispositivo di riserva \u00e8 connesso al pool e disponibile, si unisce automaticamente al vdev danneggiato.<\/p>\n<p>Dopo essersi unito al vdev danneggiato, il dispositivo di riserva inizia a ricevere copie o ricostruzioni dei dati che dovrebbero essere sul dispositivo assente. Nel RAID tradizionale questo \u00e8 chiamato ricostruzione, mentre in ZFS \u00e8 noto come \u00abripristino della ridondanza\u00bb.<\/p>\n<p>\u00c8 importante notare che i dispositivi di riserva non sostituiscono permanentemente i dispositivi guasti. Sono solo una sostituzione temporanea per ridurre il tempo durante il quale si osserva la degradazione del vdev. Dopo che l'amministratore ha sostituito il dispositivo guasto del vdev, viene ripristinata la ridondanza su questo dispositivo permanente, e lo SPARE viene disconnesso dal vdev e torna a funzionare come riserva per l'intero pool.<\/p>\n<h1>Set di dati, blocchi e settori<\/h1>\n<p>\nIl prossimo insieme di blocchi costitutivi da comprendere nel nostro viaggio attraverso ZFS riguarda pi\u00f9 il modo in cui i dati sono organizzati e memorizzati, piuttosto che l'hardware stesso. Qui stiamo saltando alcuni livelli \u2014 come i metaslab \u2014 per non sovraccaricare i dettagli, mantenendo una comprensione della struttura generale.<\/p>\n<h3>Set di dati (dataset)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/6a4dc218bd1c57989739d5072f13804c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Quando creiamo un set di dati per la prima volta, esso mostra tutto lo spazio disponibile nel pool. Poi impostiamo una quota e cambiamo il punto di montaggio. Magia!<\/i> <\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/aeb6763d6e78e3cc7ee8b1d39ee98b46.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Zvol \u00e8 per la maggior parte un semplice set di dati, privo del proprio strato di file system, che qui sostituiamo con un file system ext4 del tutto normale.<\/i> <\/p>\n<p>Un dataset ZFS \u00e8 approssimativamente simile a un normale file system montato. Come un file system tradizionale, a prima vista sembra \"solo un'altra cartella\". Ma, come per i file system montati convenzionali, ogni dataset ZFS ha il proprio insieme di propriet\u00e0 di base.<\/p>\n<p>Innanzitutto, un dataset pu\u00f2 avere una quota assegnata. Se imposti <code>zfs set quota=100G poolname\/datasetname<\/code>, non potrai scrivere nella cartella montata <code>\/poolname\/datasetname<\/code> pi\u00f9 di 100 GiB.<\/p>\n<p>Hai notato la presenza \u2014 e l'assenza \u2014 delle barre all'inizio di ogni riga? Ogni dataset ha un suo posto sia nella gerarchia ZFS che nella gerarchia di montaggio del sistema. Nella gerarchia ZFS non ci sono barre iniziali \u2014 inizi con il nome del pool e poi il percorso da un dataset all'altro. Ad esempio, <code>pool\/parent\/child<\/code> per un dataset chiamato <code>child<\/code> sotto il dataset genitore <code>parent<\/code> nel pool con un nome creativo <code>pool<\/code>.<\/p>\n<p>Per impostazione predefinita, il punto di montaggio del dataset sar\u00e0 equivalente al suo nome nella gerarchia ZFS, con una barra all'inizio \u2014 il pool chiamato <code>pool<\/code> verr\u00e0 montato come <code>\/pool<\/code>, il dataset <code>parent<\/code> sar\u00e0 montato in <code>\/pool\/parent<\/code>, e il dataset figlio <code>child<\/code> verr\u00e0 montato in <code>\/pool\/parent\/child<\/code>. Tuttavia, il punto di mount del dataset pu\u00f2 essere modificato.<\/p>\n<p>Se indichiamo <code>zfs set mountpoint=\/lol pool\/parent\/child<\/code>, allora il dataset <code>pool\/parent\/child<\/code> sar\u00e0 montato nel sistema come <code>\/lol<\/code>.<\/p>\n<p>Oltre ai dataset, dobbiamo menzionare i volumi (zvols). Un volume \u00e8 quasi equivalente a un dataset, ad eccezione del fatto che non ha effettivamente un file system \u2014 \u00e8 semplicemente un dispositivo a blocchi. Puoi, ad esempio, creare un <code>zvol<\/code> chiamato <code>mypool\/myzvol<\/code>, poi formattarlo con un file system ext4, per poi montare questo file system \u2014 ora hai un file system ext4, ma con tutte le funzionalit\u00e0 di sicurezza di ZFS! Potrebbe sembrare sciocco su un singolo computer, ma ha molto pi\u00f9 senso come backend nell'esportazione di un dispositivo iSCSI.<\/p>\n<h3>Blocchi<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/ce96416cd2fa08ff615f13ccec72e838.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un file \u00e8 rappresentato da uno o pi\u00f9 blocchi. Ogni blocco \u00e8 memorizzato su un dispositivo virtuale. La dimensione del blocco di solito corrisponde al parametro <b>recordsize<\/b>, ma pu\u00f2 essere ridotta a <b>2^ashift<\/b>, se contiene metadati o un file di piccole dimensioni.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/f31c25e34af12a9a96b60a46c2924053.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Noi veramente, <b>davvero<\/b> non scherziamo riguardo al enorme danno alle prestazioni se impostiamo un ashift troppo piccolo.<\/i><\/p>\n<p>Nel pool ZFS, tutti i dati, comprese le metadata, vengono memorizzati in blocchi. La dimensione massima del blocco per ogni set di dati \u00e8 definita nella propriet\u00e0 <code>recordsize<\/code> (dimensione del record). La dimensione del record pu\u00f2 variare, ma ci\u00f2 non cambier\u00e0 la dimensione o la posizione di eventuali blocchi gi\u00e0 scritti nel set di dati \u2014 si applica solo ai nuovi blocchi man mano che vengono scritti.<\/p>\n<p>Se non diversamente specificato, la dimensione del record corrente per impostazione predefinita \u00e8 128 KiB. Questa \u00e8 una sorta di compromesso, dove le prestazioni non saranno ottimali, ma nemmeno terribili nella maggior parte dei casi. <code>Recordsize<\/code> pu\u00f2 essere impostato su qualsiasi valore da 4K a 1M (con impostazioni aggiuntive <code>recordsize<\/code> pu\u00f2 essere impostato ancora pi\u00f9 in alto, ma di solito non \u00e8 una buona idea).<\/p>\n<p>Ogni blocco fa riferimento ai dati di un solo file \u2014 non puoi comprimere due file diversi in un solo blocco. Ogni file \u00e8 composto da uno o pi\u00f9 blocchi, a seconda delle dimensioni. Se la dimensione del file \u00e8 inferiore alla dimensione del record, verr\u00e0 memorizzato in un blocco di dimensioni inferiori \u2014 ad esempio, un blocco con un file di 2 KiB occuper\u00e0 solo un settore di 4 KiB sul disco.<\/p>\n<p>Se il file \u00e8 sufficientemente grande e richiede pi\u00f9 blocchi, allora tutte le voci relative a questo file avranno la dimensione <code>recordsize<\/code>\u00a0\u2014 inclusa l'ultima voce, la cui parte principale potrebbe risultare <noindex><a rel=\"nofollow\" href=\"https:\/\/whatis.techtarget.com\/definition\/slack-space-file-slack-space\">spazio non utilizzato<\/a><\/noindex>.<\/p>\n<p>I volumi zvol non hanno la propriet\u00e0 <code>recordsize<\/code>\u00a0\u2014 invece, hanno una propriet\u00e0 equivalente <code>volblocksize<\/code>.<\/p>\n<h3>Settori<\/h3>\n<p>\nL'ultimo e pi\u00f9 fondamentale elemento costitutivo \u00e8 il settore. Questa \u00e8 l'unit\u00e0 fisica pi\u00f9 piccola che pu\u00f2 essere scritta o letta dal dispositivo di base. Per decenni, la maggior parte dei dischi ha utilizzato settori da 512 byte. Negli ultimi tempi, la maggior parte dei dischi \u00e8 configurata per settori da 4 KiB, e in alcuni \u2014 specialmente gli SSD \u2014 settori da 8 KiB o anche di pi\u00f9.<\/p>\n<p>Nel sistema ZFS c'\u00e8 una propriet\u00e0 che consente di impostare manualmente la dimensione del settore. Questa propriet\u00e0 <code>ashift<\/code>. \u00c8 un po' confuso, poich\u00e9 ashift \u00e8 una potenza di due. Ad esempio, <code>ashift=9<\/code> indica una dimensione del settore di 2^9, ossia 512 byte.<\/p>\n<p>ZFS richiede al sistema operativo informazioni dettagliate su ogni dispositivo di blocco quando viene aggiunto a un nuovo vdev e, teoricamente, imposta automaticamente ashift in modo corretto in base a queste informazioni. Sfortunatamente, molti dischi mentono sulle loro dimensioni di settori per mantenere la compatibilit\u00e0 con Windows XP (che non era in grado di comprendere dischi con dimensioni di settore diverse).<\/p>\n<p>Ci\u00f2 significa che \u00e8 fortemente consigliato all'amministratore di ZFS conoscere le reali dimensioni di settore dei propri dispositivi e impostarle manualmente. <code>ashift<\/code>. Se ashift \u00e8 impostato troppo basso, il numero di operazioni di lettura\/scrittura aumenta in modo astronomico. Scrivere 'settori' da 512 byte in un settore reale da 4 KiB implica la necessit\u00e0 di scrivere il primo 'settore', quindi leggere il settore da 4 KiB, modificarlo con il secondo 'settore' da 512 byte, scriverlo di nuovo in un nuovo settore da 4 KiB e cos\u00ec via per ogni scrittura.<\/p>\n<p>Nel mondo reale, questa penalizzazione colpisce i solid state drive Samsung EVO, per cui dovrebbe applicarsi <code>ashift=13<\/code>, ma questi SSD mentono sulle loro dimensioni di settore, e quindi viene impostato per impostazione predefinita <code>ashift=9<\/code>. Se un amministratore di sistema esperto non modifica questo parametro, allora questo SSD funziona <i>pi\u00f9 lentamente<\/i> di un normale HDD magnetico.<\/p>\n<p>A titolo di confronto, non c'\u00e8 praticamente alcuna penalit\u00e0 per dimensioni eccessive. <code>ashift<\/code> Non c'\u00e8 un reale abbassamento delle prestazioni, e l'aumento dello spazio inutilizzato \u00e8 infinitesimale (o pari a zero se la compressione \u00e8 attivata). Pertanto, raccomandiamo vivamente di installare anche su quei dischi che utilizzano realmente settori da 512 byte <code>ashift=12<\/code> o addirittura <code>ashift=13<\/code>, per guardare fiduciosamente al futuro.<\/p>\n<p>Questa impostazione <code>ashift<\/code> \u00e8 applicata a ogni dispositivo virtuale vdev, e <i>non al pool<\/i>, come molti erroneamente pensano \u2014 e non pu\u00f2 essere modificata dopo l'installazione. Se accidentalmente hai impostato <code>ashift<\/code> quando aggiungi un nuovo vdev al pool, hai compromesso irreversibilmente questo pool con un dispositivo a bassa prestazione e, in genere, non c'\u00e8 altra soluzione che distruggere il pool e ricominciare da capo. Anche la rimozione del vdev non salver\u00e0 da una configurazione errata. <code>ashift<\/code>!<\/p>\n<h3>Il meccanismo di copia in scrittura<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/eb222dbcc3de428ff2b1c2c72b145db0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Se a un normale file system serve riscrivere i dati, modifica ogni blocco dove si trova.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/ba2474808b32667902966e4c9e69081a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Il file system con copia alla scrittura registra una nuova versione del blocco e poi sblocca la versione precedente.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/3b00dad44eb588ed793d2d5df7852892.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>In senso astratto, ignorando la reale posizione fisica dei blocchi, la nostra 'cometa dei dati' si semplifica in un 'verme dei dati', che si muove da sinistra a destra sulla mappa dello spazio disponibile.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/8c2c38dbc8a5e633c466d5c7f230951f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ora possiamo avere una buona comprensione di come funzionano gli snapshot con copia alla scrittura: ogni blocco pu\u00f2 appartenere a pi\u00f9 snapshot e rimarr\u00e0 fino a quando non verranno eliminati tutti gli snapshot associati.<\/i><\/p>\n<p>Il meccanismo di copia alla scrittura (Copy on Write, CoW) \u00e8 la base fondamentale di ci\u00f2 che rende ZFS un sistema cos\u00ec straordinario. Il concetto principale \u00e8 semplice: se chiedi a un file system tradizionale di modificare un file, far\u00e0 esattamente ci\u00f2 che hai richiesto. Se chiedi a un file system con copia alla scrittura di fare lo stesso, dir\u00e0 'va bene' \u2014 ma ti mentir\u00e0.<\/p>\n<p>Invece, il file system con copia su scrittura registra una nuova versione del blocco modificato e poi aggiorna i metadati del file per rompere il legame con il vecchio blocco e legarsi al nuovo blocco che hai appena scritto.<\/p>\n<p>Il distacco del vecchio blocco e il legame del nuovo avviene in un'unica operazione, quindi non pu\u00f2 essere interrotto: se si spegne l'alimentazione dopo che questo avviene, si avr\u00e0 una nuova versione del file, mentre se si spegne prima, si avr\u00e0 la vecchia versione. In ogni caso, non ci saranno conflitti nel file system.<\/p>\n<p>La copia su scrittura in ZFS avviene non solo a livello di file system, ma anche a livello di gestione dei dischi. Ci\u00f2 significa che ZFS non \u00e8 soggetta al problema dello scrivere un buco (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.raid-recovery-guide.com\/raid5-write-hole.aspx\">buco nel RAID<\/a><\/noindex>) \u2014 un fenomeno in cui la striscia \u00e8 stata solo parzialmente registrata prima di un crash del sistema, causando danni all'array dopo il riavvio. Qui la striscia viene scritta in modo atomico, e vdev \u00e8 sempre coerente, e <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bob%27s_your_uncle\">Bob \u00e8 tuo zio<\/a><\/noindex>.<\/p>\n<h3>ZIL: il log delle intenzioni di ZFS<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/8d08b7bce60a1e3698fd0ec02494e6fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Il sistema ZFS gestisce le scritture sincrone in modo speciale: le memorizza temporaneamente, ma immediatamente, nello ZIL, prima di scriverle in modo permanente insieme alle scritture asincrone.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/2119ef409a7d8c9599ee63292452d80d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Di solito, i dati scritti nello ZIL non vengono mai letti di nuovo. Tuttavia, ci\u00f2 \u00e8 possibile dopo un guasto del sistema.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/88a62163b0fb9f14a41102821dfabb5f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>SLOG, o dispositivo di LOG secondario, \u00e8 semplicemente un vdev speciale \u2013 e preferibilmente molto veloce \u2013 dove lo ZIL pu\u00f2 essere memorizzato separatamente dallo storage principale.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/819f7c21714adafe226028e95990f1df.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Dopo un guasto, tutti i dati non puliti nello ZIL vengono riprodotti: in questo caso lo ZIL si trova su SLOG, quindi vengono riprodotti proprio da l\u00ec.<\/i><\/p>\n<p>Ci sono due categorie principali di operazioni di scrittura: sincrone (sync) e asincrone (async). Per la maggior parte dei carichi di lavoro, la stragrande maggioranza delle operazioni di scrittura \u00e8 asincrona: il file system consente di aggregarle e di emetterle in pacchetti, riducendo la frammentazione e aumentando significativamente la larghezza di banda.<\/p>\n<p>Le scritture sincrone sono un'altra cosa. Quando un'applicazione richiede una scrittura sincrona, comunica al file system: \u00abDevi registrarlo nella memoria non volatile <i>proprio ora<\/i>, e fino ad allora non posso fare altro\u201d. Pertanto, le registrazioni sincrone devono essere immediatamente registrate su disco \u2014 e se questo aumenta la frammentazione o riduce la larghezza di banda, cos\u00ec sia.<\/p>\n<p>ZFS gestisce le registrazioni sincrone in modo diverso rispetto ai normali file system \u2014 invece di scriverle immediatamente nello storage ordinario, ZFS le registra in un'area di archiviazione speciale chiamata ZFS Intent Log, o ZIL. Il trucco \u00e8 che queste registrazioni <i>anche<\/i> rimangono in memoria, aggregate insieme alle normali richieste di scrittura asincrona, per essere successivamente scritte nello storage come normali TXG (gruppi di transazioni, Transaction Groups).<\/p>\n<p>In condizioni di funzionamento normale, il ZIL viene registrato e mai pi\u00f9 letto. Quando, dopo pochi istanti, le registrazioni dal ZIL vengono registrate nello storage principale nei normali TXG dalla memoria, vengono scollegate dal ZIL. L'unico momento in cui qualcosa viene letto dal ZIL \u00e8 durante l'importazione del pool.<\/p>\n<p>Se si verifica un guasto di ZFS \u2014 un guasto del sistema operativo o un'interruzione di corrente \u2014 quando ci sono dati nel ZIL, questi dati verranno letti al momento del successivo import del pool (ad esempio, durante il riavvio di un sistema dopo un crash). Tutto ci\u00f2 che si trova nel ZIL sar\u00e0 letto, raggruppato in TXG, registrato nell'archivio principale e poi scollegato dal ZIL durante il processo di importazione.<\/p>\n<p>Uno dei classi ausiliarie di vdev si chiama LOG o SLOG, un dispositivo secondario LOG. Ha un'unica funzione: fornire al pool un dispositivo vdev separato e, preferibilmente, molto pi\u00f9 veloce, con un'alta resistenza alla scrittura, per memorizzare il ZIL, invece di memorizzare il ZIL nel principale archivio vdev. Il ZIL si comporta allo stesso modo indipendentemente dalla posizione di archiviazione, ma se il vdev con LOG ha un'elevata performance in scrittura, le scritture sincrone avverranno pi\u00f9 rapidamente.<\/p>\n<p>Aggiungere un vdev con LOG al pool in alcun modo <b>pu\u00f2<\/b> migliorare le prestazioni della scrittura asincrona \u2014 anche se si costringono tutte le scritture nel ZIL utilizzando <code>zfs set sync=always<\/code>, saranno comunque legati allo storage principale in TXG nello stesso modo e con lo stesso ritmo di quando non \u00e8 presente il log. L'unico miglioramento delle prestazioni diretto \u00e8 la latenza della scrittura sincrona (poich\u00e9 una maggiore velocit\u00e0 del log accelera l'esecuzione delle operazioni <code>sync<\/code>).<\/p>\n<p>Tuttavia, in un ambiente che richiede gi\u00e0 un elevato numero di scritture sincrone, vdev LOG pu\u00f2 indirettamente accelerare le scritture asincrone e le letture non memorizzate nella cache. Scaricare le registrazioni ZIL in un vdev LOG separato significa meno concorrenza per gli IOPS nello storage primario, il che migliora, in una certa misura, le prestazioni di tutte le operazioni di lettura e scrittura.<\/p>\n<h3>Snapshot<\/h3>\n<p>\nIl meccanismo di copia su scrittura \u00e8 anche una base necessaria per gli snapshot atomici di ZFS e la replica asincrona incrementale. In un file system attivo c'\u00e8 un albero di puntatori che segna tutte le registrazioni con i dati correnti: quando esegui uno snapshot, stai semplicemente creando una copia di questo albero di puntatori.<\/p>\n<p>Quando una registrazione viene sovrascritta nel file system attivo, ZFS prima scrive una nuova versione del blocco in uno spazio non utilizzato. Successivamente, scollega la vecchia versione del blocco dal file system attuale. Tuttavia, se uno snapshot fa riferimento al vecchio blocco, rimane invariato. Il vecchio blocco non sar\u00e0 effettivamente restituito come spazio libero finch\u00e9 tutti gli snapshot che fanno riferimento a quel blocco non saranno eliminati!<\/p>\n<h3>Replica<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/647fe6cc348861b653b004640244cf88.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nel 2015, la mia libreria Steam occupava 158 GiB e includeva 126.927 file. Questa \u00e8 una situazione piuttosto vicina all'ottimale per rsync: la replica ZFS sulla rete era \"solo\" il 750% pi\u00f9 veloce.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/2849be8d2dc5c9f30f23c3bbc20e9022.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nella stessa rete, la replica di un file immagine di una macchina virtuale Windows 7 di 40 gigabyte \u00e8 una storia completamente diversa. La replica ZFS avviene 289 volte pi\u00f9 velocemente di rsync, oppure \"soltanto\" 161 volte pi\u00f9 velocemente, se hai la conoscenza sufficiente per chiamare rsync con l'opzione &#8212;inplace.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Fondamenti di ZFS: sistema di archiviazione e prestazioni\" src=\"\/wp-content\/uploads\/2020\/06\/9a57e4faa0eaf0f687ae24b965a1bf81.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Quando un'immagine di macchina virtuale viene scalata, i problemi di rsync si scalano insieme a essa. Una dimensione di 1,9 TiB non \u00e8 cos\u00ec grande per un'immagine di macchina virtuale moderna, ma \u00e8 abbastanza grande perch\u00e9 la replica ZFS risulti 1148 volte pi\u00f9 veloce di rsync, anche con l'argomento rsync &#8212;inplace.<\/i><\/p>\n<p>Una volta compreso come funzionano gli snapshot, sar\u00e0 facile afferrare il concetto di replica. Poich\u00e9 uno snapshot \u00e8 semplicemente un albero di puntatori ai record, ne consegue che se creiamo <code>zfs send<\/code> uno snapshot, inviamo sia questo albero che tutti i record ad esso associati. Quando trasferiamo questo <code>zfs send<\/code> in <code>zfs receive<\/code> sull'oggetto di destinazione, registra sia il contenuto effettivo del blocco che l'albero di puntatori che si riferiscono ai blocchi nel dataset di destinazione.<\/p>\n<p>Tutto diventa ancora pi\u00f9 interessante al secondo <code>zfs send<\/code>. Ora abbiamo due sistemi, ciascuno contenente <code>poolname\/datasetname@1<\/code>, e stai creando un nuovo snapshot <code>poolname\/datasetname@2<\/code>. Quindi nel pool di origine hai <code>datasetname@1<\/code> e <code>datasetname@2<\/code>, mentre nel pool di destinazione c'\u00e8 solo il primo snapshot <code>datasetname@1<\/code>.<\/p>\n<p>. Poich\u00e9 abbiamo uno snapshot comune tra sorgente e destinazione, possiamo creare <code>datasetname@1<\/code>incrementale <i>sopra di esso. Quando parliamo al sistema<\/i> <code>zfs send<\/code> sopra di esso. Quando parliamo del sistema <code>zfs send -i poolname\/datasetname@1 poolname\/datasetname@2<\/code>, confronta due alberi di puntatori. Qualsiasi puntatore che esiste solo in <code>@2<\/code>, ovviamente, si riferisce a nuovi blocchi \u2013 quindi avremo bisogno del contenuto di questi blocchi.<\/p>\n<p>Nella sistema remota, l'elaborazione dell'incrementale <code>send<\/code> \u00e8 altrettanto semplice. Prima scriviamo tutte le nuove voci incluse nel flusso <code>send<\/code>, e poi aggiungiamo i puntatori a questi blocchi. Ecco fatto, abbiamo <code>@2<\/code> nel nuovo sistema!<\/p>\n<p>La replica incrementale asincrona di ZFS \u00e8 un'enorme miglioria rispetto ai metodi precedenti che non si basano sugli snapshot, come rsync. In entrambi i casi, vengono trasmessi solo i dati modificati \u2013 ma rsync deve prima <i>leggere<\/i> dal disco tutti i dati da entrambe le parti per controllare il checksum e confrontarlo. A differenza di questo, la replica ZFS non legge nulla tranne gli alberi di puntatori \u2013 e qualsiasi blocco non rappresentato nell'snapshot comune.<\/p>\n<h3>Compressione integrata<\/h3>\n<p>\nIl meccanismo di copia durante la registrazione semplifica anche il sistema di compressione integrato. Nelle tradizionali file system, la compressione \u00e8 problematica: sia la vecchia versione che la nuova versione dei dati modificati si trovano nello stesso spazio.<\/p>\n<p>Considerando un frammento di dati a met\u00e0 file, che inizia la sua vita come un megabyte di zeri da 0x00000000 e cos\u00ec via, \u00e8 molto facile comprimerlo in un unico settore del disco. Ma cosa succede se sostituiamo quel megabyte di zeri con un megabyte di dati non compressi, come JPEG o rumore pseudo-casuale? Improvvisamente, quel megabyte di dati avr\u00e0 bisogno non di uno, ma di 256 settori da 4 KiB, mentre in quel punto del disco \u00e8 riservato solo un settore.<\/p>\n<p>ZFS non ha questo problema, poich\u00e9 le scritture modificate vengono sempre registrate in uno spazio non utilizzato: il blocco originale occupa solo un settore da 4 KiB, mentre la nuova scrittura occuper\u00e0 256, ma questo non \u00e8 un problema; il frammento recentemente modificato della 'met\u00e0' del file sarebbe stato registrato in uno spazio non utilizzato indipendentemente dal fatto che la sua dimensione cambiasse o meno, quindi per ZFS si tratta di una situazione del tutto normale.<\/p>\n<p>La compressione ZFS \u00e8 disabilitata per impostazione predefinita, e il sistema offre algoritmi plug-in \u2014 attualmente tra cui LZ4, gzip (1-9), LZJB e ZLE.<\/p>\n<ul>\n<li><b>LZ4<\/b> \u2014 \u00e8 un algoritmo di compressione in streaming che offre una compressione e decompressione estremamente rapide, migliorando le prestazioni nella maggior parte dei casi d'uso \u2014 anche su CPU piuttosto lente.\n<\/li>\n<li><b>GZIP<\/b> \u2014 un algoritmo rispettato, conosciuto e amato da tutti gli utenti dei sistemi Unix. Pu\u00f2 essere implementato con livelli di compressione da 1 a 9, con un incremento del grado di compressione e dell'uso della CPU man mano che ci si avvicina al livello 9. L'algoritmo \u00e8 ben adatto per tutte le varianti di utilizzo testuale (o altre estremamente comprimibili), ma altrimenti causa spesso problemi di CPU \u2014 usatelo con cautela, soprattutto ai livelli pi\u00f9 alti.\n<\/li>\n<li><b>LZJB<\/b> \u2014 l'algoritmo originale in ZFS. \u00c8 obsoleto e non dovrebbe pi\u00f9 essere utilizzato, LZ4 lo supera in tutti gli aspetti.\n<\/li>\n<li><b>ZLE<\/b> \u2014 codifica a livello zero, Zero Level Encoding. Essa non altera i dati normali, ma comprime lunghe sequenze di zeri. Utile per set di dati completamente non comprimibili (come JPEG, MP4 o altri formati gi\u00e0 compressi), poich\u00e9 ignora i dati non comprimibili, ma comprime lo spazio inutilizzato nelle registrazioni finali.<\/li>\n<\/ul>\n<p>\nRaccomandiamo di utilizzare la compressione LZ4 praticamente per tutte le applicazioni; la penalizzazione delle prestazioni quando si incontrano dati non comprimibili \u00e8 molto bassa, e <i>il guadagno<\/i> in prestazioni per i dati tipici \u00e8 significativo. La copia di un'immagine della macchina virtuale per una nuova installazione del sistema operativo Windows (nuovo sistema operativo installato, nessun dato presente) con <code>compression=lz4<\/code> \u00e8 stata completata il 27% pi\u00f9 velocemente rispetto a <code>compression=none<\/code>, nel <noindex><a rel=\"nofollow\" href=\"https:\/\/jrs-s.net\/2015\/02\/24\/zfs-compression-yes-you-want-this\/\">questo test del 2015<\/a><\/noindex>.<\/p>\n<h1>ARC \u2014 cache di sostituzione adattiva<\/h1>\n<p>\nZFS \u00e8 l'unico file system moderno di cui siamo a conoscenza che utilizza un proprio meccanismo di caching della lettura, invece di affidarsi alla cache delle pagine del sistema operativo per memorizzare le copie dei blocchi letti di recente in memoria.<\/p>\n<p>Sebbene la cache interna non sia priva di problemi, ZFS non pu\u00f2 rispondere a nuove richieste di allocazione di memoria con la stessa rapidit\u00e0 del kernel, quindi la nuova chiamata <code>malloc()<\/code> per l'allocazione di memoria pu\u00f2 fallire se richiede memoria RAM attualmente occupata dall'ARC. Tuttavia, ci sono solidi motivi per utilizzare una cache interna, almeno al momento.<\/p>\n<p>Tutti i moderni sistemi operativi conosciuti, tra cui MacOS, Windows, Linux e BSD, implementano la cache delle pagine utilizzando l'algoritmo LRU (Least Recently Used). Questo \u00e8 un algoritmo primitivo che sposta il blocco memorizzato nella cache \u201cin cima alla coda\u201d dopo ogni lettura e espelle i blocchi \u201cin fondo alla coda\u201d quando necessario, per fare spazio a nuovi miss nella cache (blocchi che devono essere letti dal disco, e non dalla cache).<\/p>\n<p>Di solito, l'algoritmo funziona bene, ma nei sistemi con grandi insiemi di dati, LRU porta facilmente a thrashing, espellendo blocchi frequentemente necessari per liberare spazio a favore di blocchi che non verranno mai pi\u00f9 letti dalla cache.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Adaptive_replacement_cache\">ARC<\/a><\/noindex>\u00a0\u2014 un algoritmo molto meno ingenuo, che pu\u00f2 essere considerato come una cache \"ponderata\". Dopo ogni lettura di un blocco memorizzato nella cache, diventa un po' pi\u00f9 \"pesante\" e viene espulso pi\u00f9 difficilmente \u2014 e anche dopo l'espulsione, il blocco <i>viene monitorato<\/i> per un certo periodo di tempo. Un blocco che \u00e8 stato espulso ma deve poi essere letto nuovamente nella cache diventer\u00e0 anch'esso \"pi\u00f9 pesante\".<\/p>\n<p>Il risultato finale di tutto ci\u00f2 \u00e8 una cache con un rapporto di colpi (hit ratio) molto pi\u00f9 elevato \u2014 il rapporto tra i colpi nella cache (letture eseguite dalla cache) e i fallimenti (letture dal disco). Questa \u00e8 una statistica estremamente importante: non solo i colpi della cache vengono gestiti di gran lunga pi\u00f9 velocemente, ma anche i fallimenti della cache possono essere elaborati pi\u00f9 rapidamente, poich\u00e9 pi\u00f9 colpi nella cache significano meno richieste parallele al disco e quindi meno latenza per quelli rimanenti fallimenti, che devono essere serviti dal disco.<\/p>\n<h1>Conclusione<\/h1>\n<p>\nDopo aver esaminato la semantica di base di ZFS \u2014 come funziona la scrittura dei dati e le relazioni tra i pool di archiviazione, i dispositivi virtuali, i blocchi, i settori e i file \u2014 siamo pronti a discutere delle prestazioni reali con numeri concreti.<\/p>\n<p>Nella prossima sezione, confronteremo le prestazioni effettive dei pool con vdev mirror e RAIDz, sia tra di loro che rispetto alle tradizionali topologie RAID del kernel Linux che abbiamo studiato. <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/information-technology\/2020\/04\/understanding-raid-how-performance-scales-from-one-disk-to-eight\/\">in precedenza<\/a><\/noindex>.<\/p>\n<p>Inizialmente volevamo solo esaminare le basi \u2014 le topologie stesse di ZFS \u2014 ma dopo <i>questo<\/i> saremo pronti a parlare di configurazioni avanzate e ottimizzazione di ZFS, incluso l'uso di tipi di vdev ausiliari come L2ARC, SLOG e Special Allocation.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/504692\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0430\u0448\u0438\u0445 \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RAID. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0434\u0430\u0436\u0435 \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0439 \u0432 ZFS. \u042d\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u044e\u0434\u0443: \u043e\u0442 Apple \u0434\u043e Ubuntu. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83583,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0430\u0448\u0438\u0445 \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RAID. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0434\u0430\u0436\u0435 \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0439 \u0432 ZFS. \u042d\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u044e\u0434\u0443: \u043e\u0442 Apple \u0434\u043e Ubuntu. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0441\u043d\u043e\u0432\u044b ZFS: \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0430\u0448\u0438\u0445 \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RAID. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0434\u0430\u0436\u0435 \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0439 \u0432 ZFS. \u042d\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u044e\u0434\u0443: \u043e\u0442 Apple \u0434\u043e Ubuntu. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-01T17:42:21+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-01T17:42:21+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Fondamenti di ZFS: archiviazione e prestazioni | ProHoster","description":"Questa primavera abbiamo gi\u00e0 discusso alcuni argomenti introduttivi, come controllare la velocit\u00e0 dei tuoi dischi e cosa sia il RAID. Nel secondo di questi, abbiamo persino promesso di continuare a esaminare le prestazioni delle diverse topologie multi-disco in ZFS. Questo \u00e8 un file system di nuova generazione, in fase di implementazione ovunque: da Apple a Ubuntu. Bene, oggi \u00e8 il giorno pi\u00f9 adatto per scoprire.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0441\u043d\u043e\u0432\u044b ZFS: \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c | ProHoster","og:description":"\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0430\u0448\u0438\u0445 \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RAID. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0434\u0430\u0436\u0435 \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0439 \u0432 ZFS. \u042d\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u044e\u0434\u0443: \u043e\u0442 Apple \u0434\u043e Ubuntu. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-01T17:42:21+00:00","article:modified_time":"2020-06-01T17:42:21+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83582","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:14:37","updated":"2022-09-28 10:00:57"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/83582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=83582"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/83582\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/83583"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=83582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=83582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=83582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}