Ver discos duros en Linux
Para administrar Linux conviene listar los discos duros, particiones, RAIDs, etc., ya sea para ver los discos físicos en linux, encontrar las unidades de estado sólido, o localizar todas las unidades de almacenamiento.
No importa si un disco duro está conectado en linux internamente (por SATA, por ejemplo) o si está conectado externamente (por USB, eSATA, etc), puesto que a todos los discos duros los trata igual.
GNU/Linux en la mayoría de ocasiones ofrece varias maneras de realizar la misma tarea, de forma que se puede elegir la que más convenga o simplemente la que más guste. Aquí comento las más conocidas y las que considero más útiles, puesto que personalmente no me apetece complicarme si no es necesario.
Si tienes prisa puedes leer solamente el texto en negrita.
Primero, algo que considero básico explicado de forma sencilla.
Cómo se nombran los discos en Linux
Básicamente, los discos se nombran con una letra. Por ejemplo, el primer disco duro es sda (SCSI Disc a), el segundo es sdb (SCSI Disk b), el tercero sdc (SCSI Disk c), etc. Anteriormente se usaba hda (Hard Disk a).
Dentro de cada disco duro físico puede haber cuatro particiones primarias (normalmente). Las particiones se nombran con un número. De ésta forma, la primera partición del primer disco duro será sda1, la segunda partición será sda2, etc. A las particiones extendidas se las asigna un número a partir del 5 (para reservar los números a las cuatro particiones primarias).
El resultado es "sd" + letra del disco duro + número de partición. Por ejemplo, la tercera (3) partición del segundo (b) disco duro sería sdb3
Qué es Major / Minor
Éstos números indican el tipo de dispositivo (normalmente disco duro) y el número que se le ha asignado si hay varios del mismo tipo.
El número mayor indica el tipo de dispositivo. Puede indicar si es un disco duro, una controladora RAID, etc. No indica qué tipo de unidad es exactamente, indica el tipo de driver que lo está controlando. Por ejemplo, el número 8 corresponde a "SCSI disk devices" (discos duros SCSI) pero pueden estar conectados por USB o ser internos. Puedes consultar la documentación de Linux con la lista de dispositivos para encontrar a qué dispositivo se refiere el número mayor.
Pequeña lista de dispositivos frecuentes:
Número Major | Tipo de dispositivo |
8 | SCSI disk devices |
9 | Metadisk (RAID) devices |
11 | SCSI CD-ROM devices |
El número menor indica qué número tiene dentro de un mismo driver. Por ejemplo, dentro de "SCSI disk devices" puede haber varios discos duros, los cuales son diferenciados por el número menor. No es lo miso que el nombre por el que se accede de fora sencilla (por ejemplo /dev/sda), sino que se refiere al número que le ha asignado el driver que controla el dispositivo.
Una vez conocida esta información básica, se pueden empezar a buscar dispositivos.
Listar discos en Linux
Peronalmente, opino que lsblk es el método más sencillo para listar dispositivos de almacenamiento.
lsblk no solo va a enumerar los discos duros y demás unidades de bloques (disquetes, pendrives, SSDs, etc), también va a listar las particiones de linux.
En la columna MOUNTPOINT se ve en dónde están montadas las particiones de los discos.
wasge@wasge-aspire:~> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 596,2G 0 disk
├─sda1 8:1 0 50G 0 part /
├─sda2 8:2 0 4G 0 part [SWAP]
└─sda3 8:3 0 542,2G 0 part /home
sr0 11:0 1 1024M 0 rom
wasge@wasge-aspire:~>
Otro ejemplo en un servidor con más discos:
wasge@wasge-raid:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 76,3G 0 disk
└─sda1 8:1 0 76,3G 0 part
└─md0 9:0 0 74,5G 0 raid1 /home/wasge/raid
sdb 8:16 0 8G 0 disk
├─sdb1 8:17 0 8G 0 part
└─sdb2 8:18 0 7,8M 0 part
sdc 8:32 0 74,5G 0 disk
└─sdc1 8:33 0 74,5G 0 part
└─md0 9:0 0 74,5G 0 raid1 /home/wasge/raid
sdd 8:48 0 37,3G 0 disk
├─sdd1 8:49 0 9G 0 part /
├─sdd2 8:50 0 1K 0 part
└─sdd5 8:53 0 1022M 0 part [SWAP]
sde 8:64 0 37,3G 0 disk
└─sde1 8:65 0 37,3G 0 part
sdh 8:112 0 19,1G 0 disk
└─sdh1 8:113 0 19,1G 0 part
wasge@wasge-raid:~$
Indica los discos duros, si forman parte de un RAID, e incluso indica el punto de montaje del RAID.
Ver discos físicos incluyendo el modelo
Para intentar identificar la marca, el modelo o algún dato del disco físico recomiendo hacer un listado del directorio /dev/disk/by-id puesto que el resultado es bastante completo.
root@wasge-raid:~# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 abr 5 16:48 ata-Maxtor_6L080L0_L25CTR1G -> ../../sda
lrwxrwxrwx 1 root root 10 abr 5 16:48 ata-Maxtor_6L080L0_L25CTR1G-part1 -> ../../sda1
lrwxrwxrwx 1 root root 9 abr 5 16:48 ata-ST340014A_5JVJX771 -> ../../sdc
lrwxrwxrwx 1 root root 10 abr 5 16:48 ata-ST340014A_5JVJX771-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 abr 5 16:48 ata-ST340014A_5JVJX771-part2 -> ../../sdc2
lrwxrwxrwx 1 root root 10 abr 5 16:48 ata-ST340014A_5JVJX771-part5 -> ../../sdc5
lrwxrwxrwx 1 root root 9 abr 5 16:48 ata-ST380011A_4JV0DD60 -> ../../sdb
lrwxrwxrwx 1 root root 10 abr 5 16:48 ata-ST380011A_4JV0DD60-part1 -> ../../sdb1root@wasge-raid:~#
En el listado del directorio se pueden apreciar tres modelos de discos duros y sus respectivos nombres en el sistema. Usando éste comando y el anterior (lsblk) se puede identificar cada disco físicamente y su utilidad o punto de montaje dentro del sistema.
Listar particiones de cada disco
Para esto se puede usar el programa fdisk. He coloreado la información importante
wasge-estudio:/home/wasge # fdisk -l -u /dev/sdb
Disco /dev/sdb: 232,9 GiB, 250059350016 bytes, 488397168 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x29133921
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4208639 4206592 2G 82 Linux swap / Solaris
/dev/sdb2 * 4208640 24846335 20637696 9,9G 83 Linux
/dev/sdb3 24846336 46073855 21227520 10,1G 83 Linux
wasge-estudio:/home/wasge #
El comando es muy simple: fdisk es el nombre del programa, -l especifica que liste las particiones y -u especifica la unidad, que en este caso es /dev/sdb.