Come aggiungere un secondo disco al PC Linux

Ecco come effettuare un rapido aggiornamento all'hardware per avere più spazio su cui archiviare i propri dati. Ma andiamo per gradi...

Recentemente, ho aggiunto alla stazione un secondo PC da utilizzare come «muletto» per quelle operazioni che non trovano spazio sul PC di stazione, che è provvisto di un solo disco SSD da 250 Gb quindi con spazio sufficiente per la stazione ma limitato per qualsiasi altro lavoro.

La scelta è caduta su un assemblato di qualche anno fa, ottenuto a buon prezzo e provvisto di scheda madre ASUS con 8 Gb di RAM e processore Intel I7, cui ho aggiunto un disco SSD da 500 Gb che ho installato all'interno di uno slot da 3 pollici e mezzo mediante un «adattatore» autocostruito ottenuto dallo smantellamento di un vecchissimo harddisk da 2 Gb «Seagate Medalist che recava la data del 25 marzo 1999:

Etichetta del vecchio disco Seagate Medalist da 2 Gb

Del vecchio Seagate Medalist ho usato la parte in alluminio che reggeva controller, motore e testine di lettura. Un blocco unico di ottimo alluminio cui ho attaccato, mediante 4 fori ed altrettante viti passanti, il nuovo disco SSD.

Installato il sistema (un Linux Q4OS basato su Debian), mi sono reso conto che era bene dotare il PC di un secondo disco, magari non allo stato solido e, volendo, anche usato. Del resto serve solo come eventuale backup interno della home directory.

La scelta è caduta su un robusto, veloce e silenzioso Western Digital Blue da 500 Gb, capace di 7200 giri e con 16 mega di buffer. Ovviamente è usato e vale la pena scoprire quanto lavoro ha fatto andando a scrutare al suo interno con una comoda utility di Linux: smartctl.

«Smartctl -a» è un comando che permette di verificare i parametri vitali di un disco; tra essi, eventuali errori, riallocamenti di settori e, soprattutto le ore di funzionamento:

Smartctl con i dettagli del disco

Il mio disco di ore ne ha un bel po`... ma è un disco secondario non lo ritengo qualcosa di preoccupante.

Ed ora, sistemiamo l'interno

Interno del PC con il secondo disco

L'interno dei PC assemblati è sempre un groviglio di fili, grazie anche ad alimentatori con parecchie uscite, necessarie per far fronte alle diverse esigenze di installazione.

Pertanto, ho deciso di sistemare i vari cavi usando quelle spiraline di plastica per tenere insieme i fili inutili e delle fascette per legarli in maniera conveniente. L'interno, con questa cura, è diventato perfettamente pulito ed ordinato.

Dopo il montaggio, la formattazione

In Linux esiste un ottimo comando che permette di agire convenientemente sui dischi: fdisk.

FDISK in esecuzione

Lanciato da solo, senza parametri, fornisce le informazioni di base sui dischi trovati sul sistema; nel mio caso due: /dev/sda (il primo disco SSD, dove è installato il sistema operativo) ed /dev/sdb (il secondo appena aggiunto).

Individuato il disco, è necessario lanciare «fdisk /dev/sdb» per avviare le modifiche alle tabelle di partizione del nuovo disco. Ecco i comandi in sequenza:

:~$ sudo -i
[sudo] password: 

# fdisk -l
 Disk /dev/sda: 465,76 GiB, 500107862016 bytes, 976773168 sectors
 Disk model: Samsung SSD 870 
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disklabel type: dos
 Disk identifier: 0xf93552ad

 Device     Boot     Start       End   Sectors  Size Id Type
 /dev/sda1  *         2048 958313125 958311078  457G 83 Linux
 /dev/sda2       958313126 976768064  18454939  8,8G 82 Linux swap / Solaris

 Disk /dev/sdb: 465,76 GiB, 500107862016 bytes, 976773168 sectors
 Disk model: WDC WD5000AAKX-0
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disklabel type: dos
 Disk identifier: 0x000ebf87

 Device     Boot Start       End   Sectors   Size Id Type
 /dev/sdb1        2048 976769023 976766976 465,8G  7 HPFS/NTFS/exFAT

# fdisk /dev/sdb

 Welcome to fdisk (util-linux 2.36.1).
 Changes will remain in memory only, until you decide to write them.
 Be careful before using the write command.

 Command (m for help): p
 Disk /dev/sdb: 465,76 GiB, 500107862016 bytes, 976773168 sectors
 Disk model: WDC WD5000AAKX-0
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disklabel type: dos
 Disk identifier: 0x000ebf87

 Device     Boot Start       End   Sectors   Size Id Type
 /dev/sdb1        2048 976769023 976766976 465,8G  7 HPFS/NTFS/exFAT

 Command (m for help): d
 Selected partition 1
 Partition 1 has been deleted.

 Command (m for help): w
 The partition table has been altered.
 Calling ioctl() to re-read partition table.
 Syncing disks.

# fdisk /dev/sdb

 Welcome to fdisk (util-linux 2.36.1).                                       
 Changes will remain in memory only, until you decide to write them.
 Be careful before using the write command.

 Command (m for help): n
 Partition type
    p   primary (0 primary, 0 extended, 4 free)
    e   extended (container for logical partitions)
 Select (default p): p
 Partition number (1-4, default 1): 
 First sector (2048-976773167, default 2048): 
 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-976773167, default 976773167): 

 Created a new partition 1 of type 'Linux' and of size 465,8 GiB.
 Partition #1 contains a ntfs signature.

 Do you want to remove the signature? [Y]es/[N]o: y

 The signature will be removed by a write command.

 Command (m for help): w
 The partition table has been altered.
 Calling ioctl() to re-read partition table.
 Syncing disks.

In pratica con «sudo -i» sono diventato amministratore, ho rimosso la vecchia partizione, creato una nuova partizione di tipo "Linux" (che formatterò in seguito come "extended4", EXT4) e che ha rimosso la «firma» NTFS dal disco.

Dopo il partizionamento, è necessario effettuare la formattazione con mkfs:

# mkfs -t ext4 /dev/sdb1
 mke2fs 1.46.2 (28-Feb-2021)
 Creating filesystem with 122096390 4k blocks and 30531584 inodes
 Filesystem UUID: 95224695-1b8f-4c21-b74f-ac96152a43f9
 Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000

 Allocating group tables: done                            
 Writing inode tables: done                            
 Creating journal (262144 blocks): done

Ora il disco è pronto per essere «montato» (informaticamente) sul sistema; il «mount» in Linux è l'aggiunta del nuovo disco al sistema in modo che sia disponibile al successivo riavvio del sistema.

Questa operazione si esegue modificando il file «/etc/fstab» usando un qualsiasi editor di Linux da riga di comando. Il più comodo, almeno per me, è VIM.

Ma VIM non è presente

Il PC è fresco di installazione: il pacchetto software VIM (da cui deriva il comando «vi») non è installato sul sistema; trattandosi di un Linux Debian, basta il solito «apt install vim»;

# apt install vim
 Lettura elenco dei pacchetti... Fatto
 Generazione albero delle dipendenze... Fatto
 Lettura informazioni sullo stato... Fatto   
 I seguenti pacchetti aggiuntivi saranno inoltre installati:
   vim-common vim-runtime xxd
 Pacchetti suggeriti:
   ctags vim-doc vim-scripts
 I seguenti pacchetti NUOVI saranno installati:
   vim vim-common vim-runtime xxd
 0 aggiornati, 4 installati, 0 da rimuovere e 10 non aggiornati.
 È necessario scaricare 8.138 kB di archivi.
 Dopo quest'operazione, verranno occupati 36,9 MB di spazio su disco.
 Continuare? [S/n] s

L'installazione procede rapidamente; una volta installato, VIM parte in modalità «visuale»; per disabilitarla basta creare un file di configurazione nella home utente (in questo caso quella di root) con il semplice comando (si tratta di aggiungere un solo rigo al file se già presente):

echo "set mouse-=a" >> ~/.vimrc

Ora la modalità di «vi» è più consona a quanto a me necessario.

Con il comando «vi /etc/fstab» avvio la modifica del file delle partizioni ma, per poterlo fare, ho bisogno di conoscere l'UUID del disco da aggiungere.

Che cos'è l'UUID di un disco

L'UUID di una partizione (o di un disco), nel mondo Linux, è un identificatore univoco utilizzato per individuare in modo preciso le partizioni. Questa cosa è comoda nel caso si voglia trasportare il disco da un PC ad un altro: siccome la UUID è univoca, si potrà montare modificando FSTAB con l'UUID del disco, rendendo l'operazione più semplice.

Per trovare l'UUID (nel caso non si sia stati attenti durante la formattazione con MKFS che lo espone...) basta lanciare il seguente comando:

# blkid
 ...
 ...
 /dev/sdb1: UUID="95224695-1b8f-4c21-b74f-ac96152a43f9" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="000ebf87-01"

con l'UUID individuato, aggiungo un rigo in fstab:

# <file system>                  <mount point>  <type>  <options>  <dump>  <pass>
UUID=95224695-1b8f-4c21-b74f-ac96152a43f9 /mnt/disk              ext4    defaults,noatime,discard 0 1

Ovviamente, è necessario creare il mount point «/mnt/disk» prima di riavviare in modo che, al prossimo riavvio sia tutto pronto.

Dopo il riavvio...

Una volta riavviato il PC, il nuovo disco è pronto per l'uso e montato; per accertarsene, basta lanciare il comando:

$ sudo mount | grep ‘dev/sd'
 /dev/sda1 on / type ext4 (rw,noatime,discard)
 /dev/sdb1 on /mnt/disk type ext4 (rw,noatime,discard)

Non resta, a questo punto, che creare sul nuovo disco una directory con i permessi dell'utente ed un link simbolico per raggiungerla direttamente dalla home directory dell'utente:

# cd /mnt/disk/
# mkdir homeuser
# chown user.user homeuser/

Per creare il link simbolico, si usa il comando «ln», come in questo esempio:

ln -s <Percorso al file/cartella di destinazione> <percorso del LINK da creare>

quindi:

ln -s /mnt/disk/homeuser/ /home/japi/homeuser

Per verificare:

ls -al /home/japi/homeuser
lrwxrwxrwx 1 user user 19 12 nov 10.14 /home/japi/homeuser -> /mnt/disk/homeuser/

Ed ora, verifichiamo lo spazio disponibile sui due dischi:

$ df -h | grep sd
/dev/sda1       449G   23G    404G   6% /
/dev/sdb1       458G   32K    435G   1% /mnt/disk

Che conferma la presenza di due dischi per circa 840 Gigabytes di spazio a disposizione.

In conclusione

Concludendo, possiamo dire che basta davvero poco per dare nuova vita ad un PC con qualche anno sulle spalle (come in questo caso) utilizzando un nuovo SSD per «velocizzare» il sistema ed un disco classico (anche usato) per avere spazio per archiviazione e backup dei dati.

In questo modo il vecchio assemblato da usare come «muletto» ha letteralmente cambiato aspetto e la velocità del disco SSD combinata con la velocità di Q4OS (basato su Debian) lo rendono stabile e molto affidabile.

Interno del PC dopo la sistemazione dei cavi Valid XHTML 1.0 Transitional