how to list all hard disks in linux from command line
Harde schijf, harde schijf, diskettestation of harde schijf zijn allemaal namen voor een apparaat voor gegevensopslag (hardware-apparaat) voor het opslaan en ophalen van digitale informatie, meestal in een computer. Aan een computer kunnen meerdere harde schijven gekoppeld zijn, zowel interne als externe.
Nu kunnen deze harde schijven verder verdeeld worden in meerdere logische containers om verschillende bestandssystemen te hosten of om bestandssystemen/bestanden gescheiden te houden. Deze worden partities genoemd en kunnen onafhankelijk van elkaar worden aangekoppeld, zonder dat dit invloed heeft op de andere schijven en partities. Op een hoog abstractieniveau kun je partities ook als aparte schijven zien.
Harde schijven op een systeem worden gedetecteerd en/of geïdentificeerd door verschillende apparaatdrivers in de kernel en krijgen dan een uniek apparaat-id toegewezen tijdens het opstarten, zodat ze later gemount en gelezen kunnen worden (ja, dit is een te eenvoudige voorstelling van hoe het allemaal werkt, maar het zou moeten volstaan voor deze post). We zullen later in dit artikel zien hoe je een lijst kunt maken van schijven die door het systeem zijn geïdentificeerd.
De harde schijven kunnen worden onderscheiden op basis van de interface die wordt gebruikt om ermee te communiceren. Enkele van de meest gebruikte typen schijven zijn SCSI (Small Computer System Interface), ATA of IDE (Advanced Technology Attachment), SATA (Serial ATA), SAS (Serial Attached SCSI) en andere. Zoals ik al zei, krijgt de fysieke harde schijf een unieke id toegewezen bij het opstarten. Dit kan worden geconfigureerd (onder andere met udev) zodat u het vrij veel id kunt toewijzen, maar meestal volgen de meeste systemen een aantal universeel geaccepteerde conventies bij het benoemen van apparaten.
Er zijn verschillende commando’s die u in een Linux omgeving kunt gebruiken om een lijst te maken van schijven die op het systeem zijn gemount.
df
Het df commando is primair bedoeld om het gebruik van schijfruimte op het bestandssysteem te rapporteren. Het is nog steeds een goed hulpprogramma om de schijven af te drukken die beschikbaar zijn voor het systeem, hoewel het bestandssystemen afdrukt in plaats van schijven op zich.
U kunt de optie -h of -human-readable met df gebruiken om het schijfgebruik in een voor mensen leesbaar formaat af te drukken. Zoek naar bestandssystemen die zich identificeren als /dev/sda, /dev/sdb of /dev/hda om de schijven te identificeren.
lsblk
Het lsblk commando is om een lijst van blokapparaten te maken. Het leest de gegevens uit de udev database samen met het sysfs bestandssysteem om een rapport af te drukken over alle beschikbare of gespecificeerde block devices. Block devices abstraheert de werkelijke hardware karakteristieken van elk fysiek apparaat en stelt je in staat om er mee te communiceren via een gebufferde interface.
Het lsblk commando zonder enig argument zal de block devices in een boomstructuur afdrukken. Zoek opnieuw naar namen, zoals sda, sdb enz. Het bovenste niveau geeft de schijf aan en de kinderen van het eerste niveau geven de partities in het blok weer.
Er zijn verschillende nuttige opdrachtregelopties die met het lsblk commando kunnen worden gebruikt. Met -d of -nodeps wordt het apparaat afgedrukt en niet de partities. De -S of -scsi geeft alleen de SCSI-apparaten weer.
lshw
Een ander veelgebruikt hulpprogramma is lshw, waarmee gedetailleerde informatie over uw hardware kan worden afgedrukt. Ook dit programma is in sommige distro’s niet standaard aanwezig, ook al is het een systeemtoepassing.
bash$ lshw -class disk
Het bovenstaande commando geeft een lijst van alle schijven op het systeem. U kunt ook de opslagklasse opgeven als u ook de opslagcontrollers wilt afdrukken. U kunt de uitgebreidheid van de uitvoer verder verminderen door de optie -te gebruiken
bash$ lshw -class disk -class storage -short
blkid
Het eerder genoemde lsblk-commando is een betere en aanbevolen optie dan het blkid-commando. Ik voeg het hier toe voor de volledigheid.
blkid drukt een aantal verschillende attributen af over de blokapparaten. U kunt meestal de schijven en partities uit de uitvoer opmaken, net als met lsblk.
bash$ blkid
fdisk
fdisk is een populair commando dat meestal wordt gebruikt om de partitietabel te manipuleren. U kunt het gebruiken om een lijst te maken van alle partities in de partitietabel en om de apparaten te vinden die beschikbaar zijn. De opdrachtregeloptie -list of -l drukt alle bekende partities van alle apparaten af.
bash$ fdisk -l
U zoekt waarschijnlijk naar iets als dit in de uitvoer.
Er zijn een paar andere partitietabelmanipulatietools die bovenop fdisk zijn gebouwd, met meer opties en mogelijkheden. sfdisk en cfdisk zijn twee van zulke voorbeelden. Ze zijn echter misschien niet geinstalleerd in de meeste distro’s.
parted
Gelijk aan fdisk, is parted een ander partitietabel manipulatie programma. Ook hier kun je de -list of -l commandoregeloptie gebruiken om de apparaten of schijven en al hun info af te drukken. Ik vind de standaard uitvoer van parted beter dan fdisk, maar dat is subjectief.
bash$ parted -l
Model: ATA ST3160815AS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
/proc/ bestand
Een andere rudimentaire manier is om de inhoud van de map /proc/partitions/ af te drukken. Dit zal alle bekende apparaten en partities in het systeem uitprinten. Tegen die tijd zou je in staat moeten zijn om onderscheid te maken tussen de schijf en partities, neem ik aan.
bash$ cat /proc/partitions
Zoek naar minor ‘0’ of naam die overeenkomt met het /dev/sda formaat.
lsscsi
Als u weet dat u alleen SCSI-apparaten hebt of alleen de informatie over SCSI-schijven nodig hebt, dan kunt u het commando lsscsi gebruiken. Dit hulpprogramma is op sommige distro’s niet standaard geïnstalleerd.
Zoals de naam van het commando al aangeeft, drukt het alle informatie over de SCSI-apparaten op het systeem af.
bash$ lsscsi
Op welke distributie u ook draait, u zou in staat moeten zijn om een lijst van schijven op uw systeem te maken met behulp van ten minste een van de hierboven genoemde commando’s.