come elencare tutti i dischi rigidi in linux da riga di comando
Il disco rigido, il disco rigido, l’unità disco o l’hard disk sono tutti nomi per un dispositivo di memorizzazione dei dati (dispositivo hardware) per memorizzare e recuperare informazioni digitali di solito in un computer. Un computer può avere più dischi rigidi collegati ad esso, sia interni che esterni.
Ora questi dischi rigidi possono essere ulteriormente divisi in più contenitori logici al fine di ospitare diversi file system o per mantenere i file system/file separati. Queste sono chiamate partizioni e possono essere montate indipendentemente senza influenzare gli altri dischi e partizioni. Ad un alto livello di astrazione, potete vedere le partizioni come dischi separati.
I dischi rigidi su un sistema sono rilevati e/o identificati da vari driver di periferica nel kernel e poi gli viene assegnato un ID di periferica unico all’avvio, permettendo di montarli e leggerli successivamente (sì, questa è una semplificazione eccessiva di come funziona il tutto ma dovrebbe bastare per questo post). Vedremo più avanti nel post come è possibile elencare i dischi che sono stati identificati dal sistema.
I dischi rigidi possono essere differenziati in base all’interfaccia utilizzata per interagire con essi. Alcuni dei tipi di disco comunemente usati sono SCSI (Small Computer System Interface), ATA o IDE (Advanced Technology Attachment), SATA (Serial ATA), SAS (Serial Attached SCSI) tra gli altri. Come ho detto, al disco rigido fisico viene assegnato un id unico all’avvio. Questo può essere configurato (usando udev, tra gli altri) in modo da poterlo assegnare praticamente all’id, ma di solito la maggior parte dei sistemi segue alcune convenzioni universalmente accettate quando si nominano i dispositivi.
Ci sono diversi comandi che si possono usare in un ambiente Linux per elencare i dischi che sono stati montati sul sistema.
df
Il comando df è destinato principalmente a riportare l’uso dello spazio su disco del file system. È ancora una buona utility per stampare i dischi che sono disponibili per il sistema, anche se stampa i filesystem piuttosto che i dischi in sé.
Si può usare l’opzione -h o -human-readable con df per stampare l’uso del disco in un formato leggibile. Cerca i file system che si identificano come /dev/sda, /dev/sdb o /dev/hda per identificare i dischi.
lsblk
Il comando lsblk è per elencare i dispositivi a blocchi. Legge i dati dal database udev insieme al file system sysfs per stampare un rapporto su tutti i dispositivi a blocchi disponibili o specificati. I dispositivi a blocchi astraggono le effettive caratteristiche hardware di qualsiasi dispositivo fisico e ti permettono di interagire con esso usando un’interfaccia bufferata.
Il comando lsblk senza alcun argomento stamperà i dispositivi a blocchi in un formato ad albero. Ancora una volta cercate i nomi, come sda, sdb ecc. Il livello superiore denota il disco e i figli del primo livello rappresentano le partizioni del blocco.
Ci sono diverse opzioni da linea di comando utili che possono essere usate con il comando lsblk. Il -d o -nodeps stamperà il dispositivo e non le partizioni. Le opzioni -S o -scsi mostreranno solo i dispositivi SCSI.
lshw
Un’altra utility comunemente usata è lshw, che può stampare informazioni dettagliate sul vostro hardware. Ancora una volta potrebbe non essere predefinita in alcune distro anche se è un’applicazione di sistema.
bash$ lshw -class disk
Il comando precedente elencherà tutti i dischi sul sistema. Potete anche specificare la classe di archiviazione se volete stampare anche i controller di archiviazione. È possibile ridurre ulteriormente la verbosità dell’output utilizzando l’opzione -short option
bash$ lshw -class disk -class storage -short
blkid
Il già citato comando lsblk è un’opzione migliore e raccomandata del comando blkid. Lo includo qui solo per completezza.
blkid stamperà diversi attributi sui dispositivi a blocchi. Di solito si possono distinguere i dischi e le partizioni dall’output proprio come con lsblk.
bash$ blkid
fdisk
fdisk è un comando popolare usato principalmente per manipolare la tabella delle partizioni. Potete usarlo per elencare tutte le partizioni dalla tabella delle partizioni e trovare i dispositivi che sono disponibili. L’opzione -list o -l della linea di comando stamperà tutte le partizioni conosciute da tutti i dispositivi.
bash$ fdisk -l
Si sta probabilmente cercando qualcosa come questo nell’output.
Ci sono un paio di altri strumenti di manipolazione della tabella delle partizioni costruiti sopra fdisk, con più opzioni e caratteristiche. sfdisk e cfdisk sono due esempi. Tuttavia potrebbero non essere installati nella maggior parte delle distro.
parted
Sulla falsariga di fdisk, parted è un’altra utility per la manipolazione della tabella delle partizioni. Anche in questo caso è possibile utilizzare l’opzione -list o -l della linea di comando per stampare i dispositivi o i dischi e tutte le loro informazioni. Mi piace l’output di default di parted meglio di fdisk, ma questo è soggettivo.
bash$ parted -l
Model: ATA ST3160815AS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
/proc/ file
Un altro modo rudimentale è stampare il contenuto della cartella /proc/partitions/. Questo stamperà tutti i dispositivi e le partizioni conosciute nel sistema. A questo punto dovreste essere in grado di distinguere tra il disco e le partizioni, presumo.
bash$ cat /proc/partitions
Cercate il minore ‘0’ o un nome conforme al formato /dev/sda.
lsscsi
Se sai di avere solo dispositivi SCSI o hai bisogno solo delle informazioni sui dischi SCSI, allora puoi usare il comando lsscsi. Questa utility potrebbe non essere installata di default su alcune distro.
Come suggerisce il nome del comando, stampa tutte le informazioni sui dispositivi SCSI presenti sul sistema.
bash$ lsscsi
Non importa quale distribuzione utilizziate, dovreste essere in grado di elencare i dischi sul vostro sistema usando almeno uno dei comandi elencati sopra.