789 lines
23 KiB
TeX
789 lines
23 KiB
TeX
% 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}
|