Passa al contenuto principale

Aggiungere un disco esterno al vostro server

Introduzione

Oltre al monitoraggio delle dimensioni delle partizioni (che controlla che non siano troppo piccole), YunoHost non si occupa, al momento, dell'organizzazione delle partizioni dei vostri dischi.

Se la vostra configurazione è basata su una board ARM con scheda SD, oppure il server dispone di un disco SSD di piccole dimensioni, potreste, per motivi di spazio o di sicurezza, voler aggiungere uno o più dischi al vostro server.

warning

Se avete esaurito lo spazio sul disco del vostro server, potete provare con il comando apt clean per tentare di recuperarne un po' e avere modo di seguire le istruzioni di seguito riportate.

Troverete qui le istruzioni per riuscire a spostare i vostri dati su un disco esterno in modo corretto e con un impatto minimo sul funzionamento di YunoHost. Potete eseguire lo spostamento durante l'installazione o in un secondo momento, quando si presenterà la necessità di più spazio o temete per l'affidabilità della scheda SD.

suggerimento

Il procedimento presentato qui inizia montando l'unica partizione del disco, in seguito utilizza una o più sotto-cartelle per creare diversi punti di montaggio sull'albero del file system del pc. Questo metodo è preferibile rispetto al utilizzo di link simbolici poiché questi possono entrare in conflitto con alcune applicazioni, tra le quali il sistema di backup di YunoHost. Potreste scegliere di montare le partizioni invece che le sotto-cartelle, ma sorge la difficoltà di prevedere la stima della dimensione della cartella.

Prerequisiti

  • Schedule a moment when it'll be OK to shutdown the server. The steps to be performed, even if they are relatively simple, can sometimes seem technical and require in any case to take your time.
  • You'll need to know how to connect as root on your system, typically via SSH. (Note: while logged in as an admin user, you can become root with sudo su or sudo -i, which is sometimes more convenient than prefixing every command with sudo)
  • Know the basic commands cd, ls, mkdir, rm.
  • Prepare a backup in case things don't work out as planned
  • Have extra storage (SSD, hard drive, USB stick) connected to your server via USB or SATA

1. Identificare le cartelle da spostare

Il comando ncdu vi permette di navigare tra le cartelle del vostro server affinché possiate conoscerne la loro dimensione.

Di seguito, alcuni esempi di percorsi che possono essere di notevoli dimensioni e qualche consiglio su come ridurre la loro dimensione o perché sceglierli tra quelli da spostare.

PathsContentsTips
/homeUser folders accessible via SFTPMoveable to a hard disk
/home/yunohost.backupYunoHost's backupsDepending on your backup strategy, you may want to place this folder on a separate drive from your data or databases.
/home/yunohost.appHeavy data from YunoHost applications (nextcloud, matrix...)Moveable to a hard disk
/home/yunohost.multimediaHeavy data shared between several applicationsMoveable to a hard disk
/var/lib/mysqlDatabase used by applicationsIdeally leave on SSD for performance reasons
/var/lib/postgresqlDatabase used by applicationsIdeally leave on SSD for performance reasons
/var/mailUser e-mailsMovable to a hard disk
/var/wwwProgram of installed web applicationsIdeally leave on SSD for performance reasons
/var/logEvent logs (pages consulted, connection attempts, hardware errors...).This directory should not take up too much space, if it grows quickly, it may be a looping error that should be resolved.
/optProgram and dependency of some YunoHost applications.Ideally leave it on the SSD for performance reasons. For nodejs applications it is possible to do some cleanup of unused versions.
/bootKernels and boot filesDo not move unless you know what you are doing. It can happen that too many kernels are kept, it is possible to do some cleanup.

2. Collegare e identificare il disco

Collegate il disco al server e identificate il nome assegnato dal sistema.

Utilizzate il comando:

lsblk

La risposta potrebbe essere qualcosa di simile

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 47.7M 0 part /boot
└─mmcblk0p2 179:2 0 14.8G 0 part /

In questo caso mmcblk0 corrisponde ad una scheda SD di 16 GB (si nota che le partizioni mmcblk0p1 e mmcblk0p2 corrispondono rispettivamente alla partizione di /boot e alla partizione di sistema /). Il disco esterno collegato corrisponde a sda, ha una capacità di circa 1GB, e contiene una sola partizione sda1 che non è montata (non ha nessun riferimento nella colonna "MOUNTPOINT").

warning

In alcuni casi il sistema operativo è installato su sda e di conseguenza il vostro disco sarà sdb

suggerimento

Suggerimento! se la dimensione del disco non è sufficiente per essere riconosciuto, potete scollegare il disco e eseguire il comando lsblk, ricollegare il disco, eseguire nuovamente lsblk e osservare le differenze di output.

3. Formattare il disco (Se necessario)

Se il vostro disco è formattato con un filesystem supportato da Linux (quindi non FAT32 o NTFS) potete andare al punto successivo, diversamente.

Create un partizione sul disco:

fdisk /dev/YOUR_DISK

digitate in sequenza n, p, 1, Invio, Invio, w per creare una nuova partizione

Controllate con lsblk che il vostro disco contenga solo una partizione.

Prima di poter essere utilizzato il disco deve essere formattato.

warning

Formatting a disk means deleting all the data on it! Be careful not to get the name wrong, as this may result in formatting a different disk than the one you want! In the example given earlier, it was /dev/sda. If your disk is already "clean", you can skip this step.

Per formattare la partizione digitate :

mkfs.ext4 /dev/YOUR_DISK1
# then 'y' to validate

Sostituite miodisco con il nome della prima partizione del disco di destinazione, nel nostro esempio sda1.

suggerimento

Potete variare queste istruzioni se volete creare un volume raid 1 o cifrare la cartella.

4. Montare il disco

Contrariamente a Windows, dove i dischi sono contraddistinti da lettere (C:), in linux i dischi sono accessibili dall'albero del gestore dei file. "Montare" un disco significa renderlo accessibile nell'albero dei file. Sceglieremo di montare il disco in /mnt/hdd ma possiamo anche assegnare un nome di fantasia. (Ad esempio /mnt/disco ...).

Iniziamo creando la directory:

mkdir /mnt/hdd

Montiamo il disco con il comando:

mount /dev/YOUR_DISK1 /mnt/hdd

(In questo caso, /dev/miodisco corrisponde alla prima partizione del disco)

5. Montare una cartella /mnt/hdd nella cartella che contiene i dati da spostare

Ipotizzeremo, di seguito, lo spostamento delle mail e di una notevole quantità di dati delle applicazioni, che si trovano in /home/yunohost.app.

5.1 Creazione delle sotto cartelle sul disco

Iniziamo creando due cartelle nel disco di destinazione.

mkdir -p /mnt/hdd/home/yunohost.app
mkdir -p /mnt/hdd/var/mail

5.2 Passaggio alla modalità manutenzione

Precauzionalmente portiamo nello stato di manutenzione le applicazioni che potrebbero scrivere dei dati nella cartella che vogliamo spostare.

Ad esempio, per nextcloud:

sudo -u nextcloud /usr/bin/php /var/www/nextcloud/occ maintenance:mode --on

Per la mail:

systemctl stop postfix
systemctl stop dovecot
warning

Se desiderate spostare dei database come ad esempio mariadb (mysql), dovete necessariamente fermare i servizi del database, pena la corruzione dei dati.

5.3 Creazione dei punti di montaggio

Procediamo con rinominare la cartella di origine e crearne una fittizia

mv /home/yunohost.app /home/yunohost.app.bkp
mkdir /home/yunohost.app
mv /var/mail /var/mail.bkp
mkdir /var/mail

Servendoci del comando mount --bind montiamo la cartella del nostro disco nel nuovo ramo dell'albero dei file.

mount --bind /mnt/hdd/home/yunohost.app /home/yunohost.app
mount --bind /mnt/hdd/var/mail /var/mail

5.4 Copia dei dati

Copiamo quindi i dati, mantenendo le proprietà delle cartelle e dei file. Questa operazione può impiegare un po' di tempo, aprendo un altro terminale potete seguire la progressione dell'operazione osservando la dimensione del punto di montaggio con il comando df -h

cp -a /home/yunohost.app.bkp/. /home/yunohost.app/
cp -a /var/mail.bkp/. /var/mail/

Terminata la copia, assicuratevi che sia andato tutto a buon fine con il comando ls

ls -la /home/yunohost.app/
ls -la /var/mail/

5.5 Uscita dalla modalità manutenzione

Da questo momento potete uscire dalla modalità manutenzione, il comando illustrato qui sotto va adattato in base ai servizi che avevate sospeso o arrestato.

sudo -u nextcloud /usr/bin/php /var/www/nextcloud/occ maintenance:mode --off
systemctl start postfix
systemctl start dovecot

Dopo aver impartito i comandi di avvio, le applicazioni e i servizi sfrutteranno il disco esterno per i loro dati. Dobbiamo quindi effettuare qualche test per capire in quale misura la velocità di esecuzione è impattata dal disco esterno (in particolar modo se il disco utilizza l'interfaccia USB 2.0).

6. Automatizzare il montaggio all'avvio

Fino ad ora, abbiamo montato manualmente il disco e le sotto cartelle. È però necessario configurare il sistema affinché il disco esterno venga montato in automatico ad ogni avvio.

Se i test di velocità sono soddisfacenti, bisogna rendere definitivo il punto di montaggio. In caso contrario affrettatevi a fare dietro front iniziando a ripristinare la modalità di manutenzione.

Iniziamo cercando l'UUID (universal identifier, identificatore universale) del nostro disco:

lsblk -f

Aggiungiamo una riga di codice al file /etc/fstab deputato alla gestione dei montaggi dei dischi all'avvio. Aprite il file con nano:

nano /etc/fstab

Digitiamo questa riga in fondo al file:

UUID="cea0b7ae-2fbc-4f01-8884-3cb5884c8bb7" /mnt/hdd ext4 defaults,nofail 0 0
/mnt/hdd/home/yunohost.app /home/yunohost.app none defaults,bind 0 0
/mnt/hdd/var/mail /var/mail none defaults,bind 0 0

(dovremo modificare la riga in base alle nostre scelte precedenti)

Salvate le modifiche con CTRL+x e o.

Riavviate il server per assicurarvi che il disco e le sotto cartelle vengano montate in automatico.

7. Cancellare i dati precedenti

Quando siete sicuri che la configurazione sia corretta, potete procedere alla cancellazione della configurazione creata nel punto 5.3:

rm -Rf /home/yunohost.app.bkp
rm -Rf /var/mail.bkp

🎉 Complimenti!!!

Se siete giunti fino qui senza incidenti, avete configurato un server che sfrutta uno o più dischi per il salvataggio dei dati.