Dimensione: 11882
Commento: In attesa di una revisione da parte di un Editore.
|
Dimensione: 11544
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 43: | Linea 43: |
Immaginiamo di aver collegato tre hard disk di dimensioni diverse: uno da 10GB, uno da 20GB e uno da 30GB. Questo esempio è comunque adattabile a dischi di qualsiasi dimensione: è sufficiente applicare quanto detto nella spiegazione teorica appena fatta. Cominciamo con il disco meno capiente, quello da 10GB: esso può essere partizionato per la sua intera capacità, in quanto 10GB sono reperibili in tutti gli altri dischi: |
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: |
Linea 59: | Linea 59: |
Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders |
Disk /dev/sdb: 17.1 GB, 17179869184 bytes 255 heads, 63 sectors/track, 2088 cylinders |
Linea 62: | Linea 62: |
Disk identifier: 0x691f3b75 | Disk identifier: 0xf76b45c4 |
Linea 74: | Linea 74: |
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +10700M | Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +17100M |
Linea 84: | Linea 84: |
In tal modo abbiamo creato una partizione da 10700MB su /dev/sdb: è /dev/sdb1 Passiamo al secondo disco per capienza, /dev/sdc da 20GB. In esso, creiamo innanzitutto una partizione della stessa dimensione di /dev/sdb1 (10700MB). Poi, creiamo un’altra partizione con lo spazio rimanente. Avremo ottenuto due partizioni da 10700MB, dev/sdc1 e /dev/sdc2 (in questo caso le due partizioni hanno la stessa dimensione perché i dischi dell’esempio sono esattamente uno il doppio dell’altro come capienza, ma questo non è detto che avvenga nella realtà). Passiamo al terzo disco, /dev/sdd. Anche in questo caso creiamo due partizioni della stessa dimensione di quelle create sul secondo disco, e poi creiamo un’altra partizione con lo spazio rimanente. |
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. |
Linea 95: | Linea 95: |
||1 ||10700M ||10700M ||10700M || ||2 || ||10700M ||10700M || ||3 || || ||10700M || |
||1 ||17100M ||17100M ||17100M || ||2 || ||10700M ||36500M || |
Linea 235: | Linea 234: |
. CategoryNuoviDocumenti | . CategoryNuoviDocumenti |
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 10700M comune a 3 dischi (sdb1, sdc1, sdd1), una sempre della stessa dimensione (ma è solo un caso) comune a 2 dischi (sdc2 e sdd2), e infine una partizione da 10GB che sta solo su un disco (sdd3), 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, e di un array RAID 1 su sdc2 e sdd2. Questi array saranno chiamati rispettivamente /dev/md0 e /dev/md1. Ecco come fare:
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 sudo mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdc2 /dev/sdd2
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 sudo pvcreate /dev/md1
Creiamo poi un Volume Group formato dai due volumi RAID. Lo chiameremo lvm-raid:
sudo vgcreate lvm-raid /dev/md0 /dev/md1
Per avere dettagli sul Volume Group appena creato:
sudo vgdisplay --- Volume group --- VG Name lvm-raid System ID Format lvm2 Metadata Areas 2 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 2 Act PV 2 VG Size 29,92 GB PE Size 4,00 MB Total PE 7659 Alloc PE / Size 0 / 0 Free PE / Size 7659 / 29,92 GB VG UUID uKj0uI-Dwzs-2ZDv-tJnl-Kyn3-FK2o-aHTh4X
Vediamo che il Volume Group è formato da 7659 Physical Extents (Free PE). Creiamo ora un volume logico chiamato lvm0 con l’intero spazio a disposizione:
sudo lvcreate -l 7659 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 [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 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