% 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}
