% vim:sts=2:sw=2 % encoding: utf-8 \documentclass{beamer} \usetheme[subsectionpage=progressbar]{metropolis} \usepackage{booktabs} \definecolor{darkblue}{RGB}{0,0,139} \usepackage{tikz} \usepackage{polyglossia,hyperref,fontawesome} \setdefaultlanguage{italian} \newfontface\cc{Font Awesome 5 Brands} \hypersetup{ colorlinks=true, urlcolor=darkblue, pdfinfo={ Title={Partizionamento for dummies}, Author={Emiliano Vavassori} } } \graphicspath{ {immagini/} } \setcounter{tocdepth}{2} % Personal commands \newcommand{\email}[1]{\faEnvelope~\href{mailto:#1}{\alert{\texttt{#1}}}} \newcommand{\twitter}[1]{\faTwitter~\href{https://twitter.com/#1}{\alert{\texttt{@#1}}}} \newcommand{\homepage}[1]{\faHome~\href{https://#1}{\alert{\texttt{#1}}}} \newcommand{\git}[1]{\faGit~\href{https://#1}{\alert{\texttt{#1}}}} \newcommand{\wikilemma}[1]{\href{https://it.wikipedia.org/wiki/#1}{\raisebox{.2ex}{\tiny\faWikipediaW}}} % Logos for CC \def\faCreativeCommonsBy{{\cc\symbol{"F4E7}}} \def\faCreativeCommonsSA{{\cc\symbol{"F4EF}}} \pgfdeclareimage[width=2cm]{logo}{immagini/logo} \pgfdeclareimage[width=.98\textwidth]{schemahdd}{immagini/schemahdd} \pgfdeclareimage[width=.99\textwidth]{linux-fhs}{immagini/linux_fhs} \pgfdeclareimage[height=.8\textheight]{lvm}{immagini/lvm_components} % Redefining logo positioning \setbeamertemplate{footline}{ \begin{minipage}[t]{.49\textwidth} \hskip.5em\raisebox{.5em}{\pgfuseimage{logo}}% \end{minipage}\hfill% \begin{minipage}[b]{.49\textwidth} \hfill\raisebox{.5em}{\insertframenumber/\inserttotalframenumber}\phantom{.}\hskip.5em \end{minipage} } % The document \title{Partizionamento \textit{for dummies}} \date{27 giugno 2018} \author{ Emiliano Vavassori\\[.2em]\tiny \homepage{sys42.eu}\\ \email{syntaxerrormmm@gmail.com}\\ \twitter{syntaxerrormmm}\\ \git{git.sys42.eu}\\[.5em] } \institute{% \begin{minipage}{.5\textwidth} BgLUG - Bergamo Linux Users Group\\ c/o FabLab Bergamo\\ Via M.~Gavazzeni 3, Bergamo \end{minipage} \begin{minipage}{.45\textwidth}\flushright% \includegraphics[width=3.5cm]{logo} \end{minipage}% } %\logo{\includegraphics[width=2cm]{logo}} \begin{document} \maketitle \begin{frame} \frametitle{Contenuti} \begin{columns} \begin{column}{.45\textwidth} \tableofcontents[sections=1-3] \end{column} \begin{column}{.45\textwidth} \tableofcontents[sections=4-6] \end{column} \end{columns} \end{frame} \section{Cosa significa?} \begin{frame} \frametitle{\textsc{Wikipedia}: Partizione} \begin{block}{} \wikilemma{Partizione} Una \textbf{partizione} indica una \alert{suddivisione logica} di un'unità di memorizzazione fisica (tipicamente una memoria di massa come un disco rigido o una chiavetta USB). Le singole unità logiche vengono viste dal sistema operativo come \alert{unità separate} e possono essere \alert{formattate} e gestite in maniera del tutto indipendente. Su ogni disco rigido è sempre presente \alert{almeno una partizione} per la sua operatività, al più l'intera memoria vista come singola o unica partizione. \end{block} \end{frame} \begin{frame} \frametitle{\textsc{Wikipedia}: Disco rigido} \begin{block}{} \wikilemma{Disco\_rigido} Un \textbf{disco rigido} o \textbf{disco fisso} [\ldots] indica un dispositivo di memoria di massa di tipo \alert{magnetico} che utilizza uno o più dischi magnetizzati per l'archiviazione dei dati (file, programmi e sistemi operativi). \end{block} \begin{center} \includegraphics[height=3cm]{hdd}\ \includegraphics[height=3cm]{hddchiuso} \end{center} \end{frame} \begin{frame} \frametitle{Come funziona un disco rigido?} \begin{center} \pgfuseimage{schemahdd} \end{center} \end{frame} \begin{frame} \frametitle{\textsc{Wikipedia}: Chiave USB} \begin{block}{} \wikilemma{Chiave\_USB} Una \textbf{chiave USB} o \textbf{unità flash USB} o \textbf{penna USB} [\ldots] è una \alert{memoria di massa portatile} di dimensioni molto contenute (qualche centimetro in lunghezza e intorno al centimetro in larghezza) che si collega al computer mediante la porta USB. \end{block} \begin{center} \includegraphics[width=4cm]{usbkeys} \end{center} \end{frame} \begin{frame} \frametitle{\textsc{Wikipedia}: Memoria di massa} \begin{block}{} \wikilemma{Memoria\_di\_massa} Una \textbf{memoria di massa} è un tipo di memoria che raccoglie tipicamente \alert{grandi quantità di dati} rispetto alla memoria primaria e in maniera non volatile cioè \alert{permanente}, almeno fino alla volontà dell'utente. \end{block} \end{frame} \section{Perché?} \begin{frame} \frametitle{Perché si partiziona?} \begin{itemize}[<+->] \item Migliore organizzazione dei dati \item Eseguire differenti sistemi operativi su un PC\newline (\emph{multi booting}) \item Ridurre il rischio di perdite di dati \item Comodità di backup e ripristino \item Selettività nella cifratura del disco \item Aumento delle performance \end{itemize} \end{frame} \section{Come?} \begin{frame} \frametitle{Come partizioniamo?} \only<2>{% \begin{center} \includegraphics[height=.8\textheight]{partizmanuale} \end{center}} \only<3>{% \begin{center} \includegraphics[height=.7\textheight]{applepartition} \end{center}} \only<4>{% \centering \begin{tikzpicture} \tikzstyle{go}=[->,>=stealth] \node[circle,draw=alert,scale=10.2] (first) at (0,0) {}; \node[circle,fill=alert!60,scale=10] (first) at (0,0) {}; \node[circle,fill=alert!40,scale=8] (middle) at (0,0) {}; \node[circle,fill=alert!20,scale=5] (last) at (0,0) {}; \node[circle,draw=alert,fill=white,scale=1] (inner) at (0,0) {}; \node[circle,draw,scale=.1] (p) at (1.3,1.3) {}; \node (l-mbr) at (3,2) { Settore d'avvio } edge[go] (1.3, 1.3); \node (l-first) at (4,1) { Prima partizione } edge[go] (1.15, 1.15); \node (l-middle) at (5,0) { Seconda partizione } edge[go] (.8, .8); \node (l-last) at (4,-1) { Terza partizione } edge[go] (.3, .3); \end{tikzpicture}} \end{frame} \subsection{L'avvio di GNU/Linux} \begin{frame} \frametitle{\textsc{Wikipedia}: Boot loader} \begin{block}{} \wikilemma{Boot\_loader} Il \textbf{boot loader} è il programma che, nella \alert{fase di avvio} (\emph{boot}) del computer, \alert{carica il kernel} del sistema operativo dalla memoria secondaria (ad esempio un \emph{hard disk}) alla memoria primaria (generalmente la RAM), permettendone l'esecuzione da parte del processore e il conseguente avvio del sistema. \end{block} \end{frame} \begin{frame} \frametitle{\textsc{Wikipedia}: Kernel} \begin{block}{} \wikilemma{Kernel} Il \textbf{kernel} costituisce il nucleo (o \alert{nocciolo}) di un sistema operativo, ovvero il software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware. Dato che possono esserne eseguiti simultaneamente più di uno [di processi, NDR], il kernel ha anche la responsabilità di assegnare una \alert{porzione di tempo-macchina} (\emph{scheduling}) e di \alert{accesso all'hardware} a ciascun programma (\emph{multitasking}). \end{block} \end{frame} \begin{frame} \frametitle{Schema generico di avvio} \begin{tikzpicture}{shapes,arrows} \tikzstyle{hw}=[rectangle,draw=darkblue!70,fill=darkblue!20,rounded corners=5pt,node distance=2.75cm,text width=1.8cm,text centered,minimum height=4em] \tikzstyle{block}=[rectangle,draw=alert!70,fill=alert!20,rounded corners=5pt,node distance=2.75cm,text width=1.8cm,text centered,minimum height=4em] \tikzstyle{go}=[->,>=stealth,semithick,shorten >=5pt,shorten <=2pt] \node[hw] (POST) at (0, 0) {\textit{Power On Self Test}}; \node<2->[hw,right of=POST] (firmware) { Firmware }; \draw<2->[go] (POST) to (firmware); \node<3->[block,right of=firmware] (bootloader) { Codice d'avvio }; \draw<3->[go] (firmware) to (bootloader); \node<4->[block] (kernel) at (8.15cm, 1.38cm) { Kernel }; \node<4->[block,below of=kernel] (initrd) { Archivio \texttt{initrd} }; \draw<4->[go,bend right=20] (bootloader.east) to (kernel.south); \draw<4->[go,bend left=20] (bootloader.east) to (initrd.north); \draw<5>[red,thick,dashed,rounded corners] (1.5,1) rectangle (6.75,-1); \end{tikzpicture} \end{frame} \begin{frame} \frametitle{Modalità \textit{legacy}} \begin{center} \begin{tabular}{@{\hspace{1ex}\bfseries}lr} \toprule Firmware & \textit{Basic Input/Output System} (BIOS)\\ Codice d'avvio & MBR/PBR e bootloader\\ \bottomrule \end{tabular} \end{center} \pause \begin{itemize}[<+->] \item L'utente sceglie l'ordine dei disp.~da cui tentare l'avvio \item Per ciascun dispositivo, il firmware cerca: \begin{enumerate} \item \textit{Master Boot Record} (MBR): \\ 446 B (\textbf{codice d'avvio}) + 64 B (tabella partizioni) \item \textit{Partition Boot Record} (PBR) \end{enumerate} \item Il codice binario di MBR/PBR cerca un \textbf{bootloader} in una partizione con flag \alert{avviabile} \item Il bootloader legge il file di configurazione (\texttt{grub.conf}) \item Il bootloader carica kernel e \texttt{initrd} \end{itemize} \end{frame} \begin{frame} \frametitle{Modalità UEFI --- 1} \begin{center} \begin{tabular}{@{\hspace{1ex}\bfseries}lr} \toprule Firmware & \textit{\small Unified Extensible Firmware Interface} (UEFI)~\wikilemma{UEFI}\\ Codice d'avvio & File \texttt{.efi}\\ \bottomrule \end{tabular} \end{center} \pause Il firmware elenca automaticamente i dispositivi \alert{avviabili} collegati al PC. L'utente deve stabilire l'\alert{ordine di avvio}. \pause Sono avviabili i disposivi che hanno: \begin{itemize}[<+->] \item \textit{EFI System Partition}, ESP: \begin{itemize} \item Tipo di partizione: \texttt{ef00} \item File system: FAT32 (raccomandato) \item Dimensione: 50~MiB o più \item Può essere condivisa fra più OS \end{itemize} \item Bootloader: file eseguibili con estensione \texttt{.efi} \end{itemize} \end{frame} \begin{frame} \frametitle{Modalità UEFI --- 2} Ricapitolando: \begin{itemize}[<+->] \item Il firmware cerca dispositivi bootabili e ha già una lista di bootloader \item Viene caricato il bootloader dal primo dispositivo avviabile \item Il bootloader legge il suo file di configurazione (\texttt{grub.conf}) \item Il bootloader carica quindi il kernel e \texttt{initrd} \end{itemize} \onslide<5-> \textbf{N.B.}: Il flag \textit{avviabile} sulla partizione non è più necessario. \onslide<6> \textbf{N.B.}: Un firmware UEFI \emph{di norma} permette anche l'avvio in modalità \textit{legacy}. \end{frame} \subsection{Scelte tecniche} \begin{frame} \frametitle{Tabella di partizioni MSDOS} \begin{itemize}[<+->] \item Posizione: 64 B all'inizio del disco (dopo codice d'avvio) \item 4 partizioni massimo fra \emph{primarie} e \emph{estese} \item 24 partizioni \emph{logiche} per ciascuna partizione \emph{estesa} \item Totale: massimo 96 partizioni \item Non \emph{sarebbe} compatibile con EFI (tabelle part.~ibride GPT) \end{itemize} \end{frame} \subsubsection{Tabella partizioni GPT} \begin{frame} \frametitle{Tabella di partizioni \textit{GUID Partition Table} (GPT)} \begin{itemize}[<+->] \item Standard legato a EFI \item Sicurezza: due copie, una all'inizio (\emph{primaria}) e una alla fine del disco (\emph{backup}) \item Dimensioni: 16 kiB ciascuna: LBA1--34 (1 LBA $\approx$ 512 B) \item Permette un totale di 255 partizioni, tutte identiche \item LBA 0: \textit{Protective MBR} \end{itemize} \end{frame} \subsection{Scelte operative} \begin{frame} \frametitle{Scelte che influenzano il partizionamento} \begin{itemize}[<+->] \item Velocità d'accesso ai dati (assoluta e relativa) \item Compatibilità fra funzionalità a livello di \textit{file system} \item Conoscenza dei software in uso \item Esigenze di backup \item Posizione dei dati con riferimento a \textit{Filesystem Hierarchy Standard} (FHS) \item Esigenze d'uso: \emph{desktop} vs.~\emph{server} \item Scelte di hardening \end{itemize} \end{frame} \subsubsection{Funzionalità a livello di file system} \begin{frame} \frametitle{Funzionalità del \textit{file system}} \begin{itemize}[<+->] \item \textit{Journaling} per la consistenza dei dati \item Applicazione di quote (per utente, per gruppo) \item \textit{Access Control List} (ACL) \item Cifratura (\textit{Linux Unified Key Setup}, LUKS) \item Memoria virtuale (\textit{swap}) \item Possibilità di fare \textit{snapshot} \end{itemize} \end{frame} \subsubsection{Posizionamento dei dati} \begin{frame} \frametitle{Posizionamento dei dati} \begin{itemize}[<+->] \item Dati del database: \texttt{/var/lib} \item Applicazioni web: \texttt{/var/www} \item Log di sistema e delle applicazioni: \texttt{/var/log} \item Dati condivisi SMB: \texttt{/srv} o \texttt{/var} \item Molti programmi proprietari (giochi): \texttt{/opt} \item Dati utente: \texttt{/home} \end{itemize} \end{frame} \subsubsection{Scelte di hardening} \begin{frame} \frametitle{Scelte di hardening} \begin{itemize}[<+->] \item Limitare il riempimento della partizione \texttt{/}: creare una \texttt{/tmp} separata \item Su sistemi identici, condividere \texttt{/usr/share} via NFS \item Rendere \texttt{/usr} in \textit{sola lettura} \item Rendere \texttt{/boot} in \textit{sola lettura} \item Usare file system \textit{legacy} su \texttt{/boot} \item Usare opzioni di montaggio per protezione: \texttt{nosuid}, \texttt{noexec} \end{itemize} \onslide<7> Riferimento: \href{https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Disks}{Wiki di Gentoo GNU/Linux} \end{frame} \subsubsection{Esigenze d'uso} \begin{frame} \frametitle{Esigenze d'uso: desktop vs.~server} \begin{itemize}[<+->] \item Dimensione della \textit{swap} \item Presenza partizione singola/multiple partizioni per il sistema \item Importanza di \texttt{/home} \item Automontaggio dispositivi rimovibili \item Più spazio per \texttt{/usr}: programmi GUI in più \end{itemize} \end{frame} \begin{frame} \frametitle{Indicazioni di massima} Se desktop: \begin{itemize} \item Partizione \texttt{swap}: quanto la RAM o più (sospensione) \item Una partizione per \texttt{/}, circa 20--45 GiB \item Opzionale ma caldamente consigliato: \texttt{/home}, dati utenti \end{itemize} \onslide<2-> Se server: \begin{itemize} \item Partizione \texttt{/boot}, 200--500 MiB \item Partizione \texttt{swap}, 2--4 GiB indipendentemente dalla RAM \item Partizione \texttt{/}, 15--40 GiB \item Partizione \texttt{/tmp}, 2--4 GiB \item Partizione \texttt{/var}, \textit{ad libitum} \end{itemize} \end{frame} \subsection{Strumenti} \subsubsection{A linea di comando} \begin{frame} \frametitle{Strumenti a linea di comando} \begin{itemize}[<+->] \item \texttt{fdisk} \item \texttt{cfdisk} \item \texttt{gdisk} \item \texttt{parted} \end{itemize} \end{frame} \subsubsection{Con interfaccia grafica} \begin{frame} \frametitle{Strumenti con interfaccia grafica} \begin{itemize}[<+->] \item GNOME Disks \item GParted \end{itemize} \end{frame} \section{E poi?} \begin{frame} \frametitle{E poi?} \tableofcontents[sections={4}] \end{frame} \subsection{La formattazione} \begin{frame} \frametitle{\textsc{Wikipedia}: Formattazione} \begin{block}{} \wikilemma{Formattazione} La \textbf{formattazione} è l'operazione tramite la quale \alert{si prepara per l'uso} un supporto di memorizzazione di massa [\ldots] per renderlo idoneo all'archiviazione di dati, impostando la struttura del \alert{file system} che vi verrà creato sopra. Può venire chiamata a volte anche \textbf{inizializzazione}, sebbene in realtà questa è la fase finale della formattazione, quella di preparazione logica e scrittura dei dati di etichettatura. L'operazione consiste nel \alert{dividere} la capacità del disco \alert{in una serie di blocchi} di uguali dimensioni e \alert{fornire una struttura logica} in cui verranno scritte le informazioni che permetteranno l'accesso ai dati desiderati. \end{block} \end{frame} \begin{frame} \frametitle{\textsc{Wikipedia}: File system} \begin{block}{} \wikilemma{File\_system} Un \textbf{file system} indica informalmente un meccanismo con il quale i file \alert{sono posizionati e organizzati} su un dispositivo di archiviazione o su una memoria di massa e, in casi eccezionali, anche sulla RAM. Più formalmente, un file system è l'insieme dei tipi di dati astratti necessari per la memorizzazione (scrittura), l'organizzazione gerarchica, la manipolazione, la navigazione, l'accesso e la lettura dei dati. [\ldots] [\ldots] Nella rappresentazione grafica è generalmente utilizzata la metafora delle \alert{cartelle} che contengono \alert{documenti} (i file) ed \alert{altre sottocartelle}. \end{block} \end{frame} \subsection{Struttura ad albero (FHS)} \begin{frame} \frametitle{\textit{Filesystem Hierarchy Standard}} \pgfuseimage{linux-fhs} \end{frame} \subsection{I principali file system} \begin{frame} \frametitle{I file system} \begin{minipage}[t]{.48\textwidth} Nativi GNU/Linux \begin{itemize}[<+->] \item \texttt{ext2} \item \texttt{ext3} \item \texttt{ext4} \item \texttt{btrfs} \item \texttt{xfs} \end{itemize} \end{minipage}\hfill% \begin{minipage}[t]{.48\textwidth} Di altri sistemi operativi: \begin{itemize}[<+->] \item FAT (12, 16, 32) \item ExFAT \item NTFS \item HFS+ \item ZFS \end{itemize} \end{minipage} \end{frame} \subsection{Strumenti} \subsubsection{A linea di comando} \begin{frame} \frametitle{Strumenti a linea di comando} \begin{minipage}{.3\textwidth} \begin{itemize}[<+->] \item \texttt{mkfs.ext2} \item \texttt{mkfs.ext3} \item \texttt{mkfs.ext4} \item \texttt{mkfs.btrfs} \item \texttt{mkfs.xfs} \item \texttt{tune2fs} \end{itemize} \end{minipage} \hfill \begin{minipage}{.68\textwidth} \begin{itemize}[<+->] \item \alert{dosfstools}: \texttt{mkfs.vfat}, \texttt{mkfs.msdos} \item \alert{exfatutils}: \texttt{mkfs.exfat} \item \alert{nfts-3g}: \texttt{mkfs.ntfs} \item \alert{hfsprogs}: \texttt{mkfs.hfs}, \texttt{mkfs.hfsplus} \item \alert{zfsutils-linux}: \texttt{zfs}, \texttt{zpool} \item Bonus: \texttt{parted} \end{itemize} \end{minipage} \end{frame} \subsubsection{Con interfaccia grafica} \begin{frame} \frametitle{Strumenti con interfaccia grafica} \begin{itemize}[<+->] \item GNOME Disks \item GParted \end{itemize} \end{frame} \subsection{Tecnologie avanzate} \begin{frame} \frametitle{Ridondanza: \textit{Redundant Array of Inexpensive Disks} (RAID)} \begin{itemize}[<+->] \item Backup $\neq$ Ridondanza! \item \textit{Just a Bunch Of Disks} (JBOD) vs.~\textit{Redundant Array of Inexpensive Disks} \item Velocità di accesso vs.~Sicurezza dei dati \item Numero di dischi vs.~Sicurezza dei dati \item Hardware vs.~Software (\texttt{mdadm}) \item Dimensione relativa dei dischi e perdita di spazio disponibile \item Lotti di produzione differenti per più sicurezza dei dati \end{itemize} \end{frame} \begin{frame} \frametitle{Alcuni tipi di RAID} \begin{center}\small \begin{tabular}{lccc} \toprule \bfseries Nome RAID & \bfseries Liv. & \bfseries Num. min.~HDD & \bfseries Num.~HDD persi \\ \midrule Stripe & 0 & 2 & 0 \\ Mirror & 1 & 2 & 1 \\ RAID 5 & 5 & 3 & 1 \\ RAID 6 & 6 & 4 & 2 \\ Stripe + Mirror & 0+1 & 4 & 2+ \\ Mirror + Stripe & 1+0, 10 & 4 & 2+ \\ \bottomrule \end{tabular} \end{center} \end{frame} \begin{frame} \frametitle{Gestibilità: \textit{Logical Volume Management} (LVM)} \begin{center} \pgfuseimage{lvm} \end{center} \end{frame} \begin{frame} \frametitle{Cifratura: \textit{Linux Unified Key Setup} (LUKS)} \begin{itemize}[<+->] \item Standard aperto per la cifratura \item 2004 da Clemens Fruhwirth \item Garantisce che la gestione delle password avvenga in maniera sicura e documentata \item Supporta differenti volumi (dm-crypt, volumi LUKS, loop-AES, TrueCrypt e VeraCrypt) \item \`E utilizzabile anche su Windows (FreeOTFE) \end{itemize} \end{frame} \begin{frame} \frametitle{LUKS: funzionamento di base} \begin{center} \tikzstyle{dark}=[draw=alert!70,fill=alert!30,fill] \tikzstyle{light}=[draw=alert!70,fill=alert!20] \begin{tikzpicture}[scale=.9,draw=alert!70] \draw[dark] (0, 0) rectangle (2.5, 1); \node at (1.25, 0.5) { LUKS phdr }; \draw[light] (2.5, 0) rectangle (3.5, 1); \node at (3, 0.5) { KM1 }; \draw[dark] (3.5, 0) rectangle (4.5, 1); \node at (4, 0.5) { KM2 }; \draw[dashed] (4.5, 0) rectangle (5.5, 1); \node at (5, 0.5) { \ldots }; \draw[light] (5.5, 0) rectangle (6.5, 1); \node at (6, 0.5) { KM8 }; \draw (6.5, 0) rectangle (12, 1); \node at (9.25, 0.5) { encrypted data }; \end{tikzpicture} \end{center} \pause \begin{itemize}[<+->] \item Master Key (16--32 bytes per default, configurabile) \item 8 \alert{Key Materials} ($\simeq$ una password ciascuno) \item LUKS \textit{partition header} (phdr): contiene checksum della MK, parametri di cifratura dei dati e dei singoli KM \end{itemize} \pause Sotto GNU/Linux la gestione dei dischi cifrati viene effettuata con \texttt{cryptsetup} \end{frame} \begin{frame} \frametitle{Backup: usare gli \textit{snapshot}} \wikilemma{Snapshot} Letteralmente una «istantanea», è generalmente la cattura di \alert{stato di un oggetto in un determinato momento} nel tempo. Il termine è stato coniato come analogia a quello usato in fotografia. Nei sistemi informatici, una snapshot è un'istantanea dello stato di un sistema in un particolare momento, e può fare riferimento a una copia reale del sistema. \begin{itemize} \item Indipendente dal FS: LVM-snapshot \item Dipendente dal FS: ZFS, btrfs \end{itemize} \end{frame} \begin{frame} \centering \vspace*{2cm} Grazie per l'attenzione! \homepage{sys42.eu}\\ \email{syntaxerrormmm@gmail.com}\\ \twitter{syntaxerrormmm}\\ \git{git.sys42.eu} \vspace*{2cm} \begin{block}{}\centering \mbox{\faCreativeCommons~\faCreativeCommonsBy~\faCreativeCommonsSA} \tiny Quest'opera è distribuita con Licenza\\ \href{http://creativecommons.org/licenses/by-sa/4.0/}{Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale}. \href{https://git.sys42.eu/syntaxerrormmm/part4dummies/}{\texttt{git.sys42.eu/syntaxerrormmm/part4dummies}} \end{block} \end{frame} \end{document}