Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati


Introduzione

Lo scopo di questa guida è quello di mostrare come costruire un server di storage domestico, dove poter salvare i backup dei computer di casa e tutti i file che normalmente su conservano masterizzandoli su CD o DVD.

Tale server utilizzerà una combinazione di array RAID 5 e RAID 1 su partizioni per garantire la massima sicurezza dei dati; essi verranno poi riuniti in un unico volume logico attraverso LVM.

Si potranno utilizzare hard disk di dimensioni differenti e sarà possibile aggiungere ulteriori dischi in un secondo tempo al fine di espandere lo spazio disponibile, senza necessità di rompere gli array RAID e potendo quindi mantenere tutti i dati al loro posto. Il server sarà accessibile dai sistemi Windows connessi alla rete locale attraverso Samba, e sarà possibile controllare il server da remoto mediante OpenSSH.

Infine, si esamineranno le problematiche che possono mettere in pericolo i dati salvati nel server, individuandone ove possibile le soluzioni.

Installazione di Ubuntu

Per creare il server di storage utilizzeremo Ubuntu Server nella versione a 64 bit. Infatti, la versione a 32 bit impone pesanti limitazioni per quanto riguarda le dimensioni massime dei volumi logici di LVM, e se vogliamo avere un server espandibile da utilizzare per anni e anni di queste limitazioni non abbiamo proprio bisogno.

Al fine di utilizzare tutti gli slot disponibili all’interno del case (e della scheda madre) per lo storage, consiglio di installare il sistema operativo in una chiavetta USB. Tra l’altro, questo garantisce anche una maggiore silenziosità del sistema, perché gli hard disk gireranno solo quando verrà effettivamente utilizzato lo storage interno. Per garantire la massima espandibilità futura, consiglio di usare una chiavetta da almeno 2 GB.

Il server non dovrebbe montare una unità ottica, che occupa un prezioso slot ed è perfettamente inutile ai nostri fini. È possibile comunque utilizzarla per l’installazione iniziale del sistema da CD, per poi toglierla non appena l’installazione sia stata completata. Altrimenti, è possibile utilizzare un metodo alternativo di installazione, ad esempio quello da chiavetta USB, come descritto nella guida all’installazione di Ubuntu. Per evitare confusione, al momento dell’installazione del sistema è meglio avere collegata solo la chiavetta USB su cui Ubuntu verrà installato. Gli hard disk da utilizzare per lo storage verranno aggiunti successivamente.

L’installazione può essere effettuata seguendo la procedura standard. Nella schermata “Software Selection” selezionare “OpenSSH server” e “Samba File Server”.

Installazione del software necessario

Al primo avvio di Ubuntu, è necessario installare mdadm (serve a creare gli array RAID) e LVM:

sudo apt-get install mdadm
sudo apt-get install lvm2

Fatto ciò, arrestate il sistema:

sudo init 0

Partizionamento dei dischi

Collegate gli hard disk da utilizzare per lo storage (almeno due per iniziare) e avviate il sistema: è il momento di partizionare i dischi e creare gli array RAID necessari.

Criteri per il partizionamento dei dischi

Per poter utilizzare dischi di dimensioni diverse sfruttandone l’intero spazio, è necessario costruire diversi array RAID su partizioni, non su interi dischi. I dischi disponibili vanno partizionati in modo che vi siano partizioni della stessa dimensione su più dischi. Quando una partizione con la stessa dimensione è presente su più di due dischi, vi si costruirà sopra un array RAID 5; quando è presente su due soli dischi, vi si costruirà sopra un array RAID 1; quando è presente su un solo disco (perché evidentemente quel disco è più capiente di tutti gli altri) rimarrà inutilizzata, ma solo temporaneamente: potrà infatti essere utilizzata quando verrà aggiunto un nuovo disco, oppure quando un disco sarà sostituito con uno più capiente.

Esempio pratico di partizionamento

Immaginiamo di aver collegato tre hard disk di dimensioni diverse: due da 16GB e uno da 50GB. Questo esempio è comunque adattabile a dischi di qualsiasi dimensione: è sufficiente applicare quanto detto nella spiegazione teorica appena fatta.

Cominciamo con il disco meno capiente, uno di quelli da 16GB: esso può essere partizionato per la sua intera capacità, in quanto 16GB sono reperibili su tutti gli altri dischi:

sudo fdisk /dev/sdb

The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n

Disk /dev/sdb: 17.1 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf76b45c4

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): 
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +17100M

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

In tal modo abbiamo creato una partizione da 17100MB su /dev/sdb: è /dev/sdb1

Passiamo al secondo disco per capienza /dev/sdc, sempre da 16GB. In esso, creiamo una partizione della stessa dimensione di /dev/sdb1 (17100MB). Poi, creiamo un’altra partizione con lo spazio rimanente.

Passiamo ora al terzo disco, /dev/sdd da 50GB. Anche in questo caso creiamo una partizione da 17100N, e poi creiamo un’altra partizione con lo spazio rimanente.

Schema di partizionamento

È bene creare uno schema di partizionamento, che può essere utile per il futuro, quando si tratterà di aggiungere un disco o sosostuirne uno danneggiato. Lo si può fare su un foglio di carta oppure su una tabella o foglio di calcolo. Ecco un esempio in questo caso:

Dev

sdb

sdc

sdd

n

1

17100M

17100M

17100M

2

10700M

36500M

Costruzione degli array Raid

Come si può vedere dallo schema, in questo caso abbiamo una partizione da 17100M comune a 3 dischi (sdb1, sdc1, sdd1) e una da 36500M che sta solo su un disco (sdd2), e che pertanto al momento non potrà essere utilizzata.

Si procederà dunque alla creazione di un array RAID 5 sulle partizioni sdb1, sdc1 e sdd1. Questo array sarà chiamato /dev/md0. Ecco come fare:

sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Inizierà la costruzione degli array. Per controllare a che punto è:

cat /proc/mdstat

È necessario attendere che la procedura sia completata prima di poter continuare.

Creazione di un volume logico con LVM

Si procederà ora ad unire i due dispositivi RAID che abbiamo creato in un unico volume logico, attraverso LVM.

Innanzitutto, “prepariamo” i dispositivi:

sudo pvcreate /dev/md0

Creiamo poi un Volume Group formato dal volume RAID. Lo chiameremo lvm-raid:

sudo vgcreate lvm-raid /dev/md0

Per avere dettagli sul Volume Group appena creato:

sudo vgdisplay

--- Volume group ---
  VG Name               lvm-raid
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               31,86 GB
  PE Size               4,00 MB
  Total PE              8157
  Alloc PE / Size       0 / 0
  Free  PE / Size       8157 / 31,86 GB
  VG UUID               uKj0uI-Dwzs-2ZDv-tJnl-Kyn3-FK2o-aHTh4X

Vediamo che il Volume Group è formato da 8157 Physical Extents (Free PE). Creiamo ora un volume logico chiamato lvm0 con l’intero spazio a disposizione:

sudo lvcreate -l 8157 lvm-raid -n lvm0

Formattazione del volume logico

Adesso, formattiamo il volume logico con il file system ext3. Esistono anche file system più veloci, ma la solidità di ext3 è imbattibile (almeno fino a quando ext4 non sarà stabile):

sudo mkfs.ext3 /dev/lvm-raid/lvm0

Mount del volume logico

Infine, montiamo il volume logico nella sottocartella “share” della home directory dell’utente.

mkdir share
sudo mount /dev/lvm-raid/lvm0 share

Il volume logico è ora montato. Per far sì che venga montato automaticamente ad ogni avvio del sistema, editare il file /etc/fstab:

sudo nano /etc/fstab

e aggiungere questa riga:

/dev/lvm-raid/lvm0    /home/NomeUtente/share    ext3    defaults    0    0

Per finire, salvate con CTRL+O e uscite con CTRL+X.

Configurazione di Samba

Premessa

Per poter accedere al server dai sistemi Windows collegati in rete, è necessario configurare appropriatamente Samba, editando il file /etc/samba/smb.conf. Le opzioni di configurazione sono molte e variano a seconda delle esigenze. In questo esempio si configurerà una condivisione immediatamente accessibile a tutti gli utenti connessi alla rete, senza necessità di autenticazione e con permessi di lettura e scrittura sulle cartelle e sui file. Per configurazioni diverse, riferirsi all’apposita guida sulla configurazione di Samba.

Configurazione

Per editare il file di configurazione:

sudo nano /etc/samba/smb.conf

Nella sezione [global] inserire le seguenti righe:

security = share

guest account = nobody

Nella sezione “Share definitions” aggiungere quanto segue:

[NomeCondivisione]
comment = Descrizione condivisione
path = /home/NomeUtente/share
public = yes
read only = no

Salvate e riavviate il sistema. A questo punto, la nuova condivisione dovrebbe essere visibile da Windows. Provate a copiarvi dentro un file. Se l’operazione produce un errore, è necessario modificare i permessi della cartella condivisa:

sudo chmod 777 share

A questo punto tutto dovrebbe funzionare correttamente.

Controllare il server da remoto

Grazie all'opzione "OpenSSH Server" che abbiamo selezionato durante l'installazione, è possibile controllare il server da remoto attraverso un client SSH. Ad esempio, sui sistemi Windows è possibile utilizzare Putty. La connessione avviene semplicemente inserendo il nome del computer server o il suo indirizzo di rete; è necessaria l’autenticazione con nome utente e password.

Ulteriori risorse

  • Risorsa 1
  • Risorsa 2


CategoryHomepage