Tabla de Contenidos
204.2 Adjusting Storage Device Access
Pertenece a LPI Topic 204: Advanced Storage Device Administration
- Weight: 2
- Description: Candidates should be able to configure kernel options to support various drives. This objective includes software tools to view & modify hard disk settings including iSCSI devices.
- Key Knowledge Areas:
- Tools and utilities to configure DMA for IDE devices including ATAPI and SATA
- Tools and utilities to configure Solid State Drives including AHCI and NVMe
- Tools and utilities to manipulate or analyse system resources (e.g. interrupts)
- Awareness of sdparm command and its uses
- Tools and utilities for iSCSI
- Awareness of SAN, including relevant protocols (AoE, FCoE)
- Terms and Utilities:
hdparm,sdparmnvmetune2fsfstrimsysctl/dev/hd*,/dev/sd*,/dev/nvme*iscsiadm,scsi_id,iscsidandiscsid.conf- WWID, WWN, LUN numbers
Tecnologías de discos
- PATA: Parallel Advanced Technology Attachment (IDE). Conexión paralelo.
- SATA: Serial Advanced Technology Attachment. Conexión serie.
- SCSI: Small Computers System Interface. Antiguo, pero más rápido que IDE.
- SAS: Serial Attached SCSI. Conexión serie.
SATA se ha convertido en un estándar. SAS es una evolución de SATA, pero se suele utilizar en cabinas de discos y servidores.
En la foto se muestran, de izquierda a derecha, IDE, SCSI, SATA, SAS.
Normalmente, IDE y SATA para PCs; SCSI y SAS para servidores.
Controladores IDE
Los discos PATA utilizan este tipo de controladores.
Los discos son etiquetados (por Linux) como:
hda: IDE0, Masterhdb: IDE0, Slavehdc: IDE1, Masterhdd: IDE1, Slave
Esta nomenclatura desapareció en el kernel 2.6 (¿?). Se utiliza la misma que en los SCSI o SATA.
Para poder conectar un esclavo, debe haber conectado un disco maestro.
No hay límite de controladores IDE.
Controladores SCSI
Los discos SATA, SCSI, SAS utilizan este tipo de controladores.
sda: primer disco SCSIsdb: segundo disco SCSIsdc: tercer disco SCSI
Como es una conexión en serie, no existe el concepto de maestro/esclavo, así que se van nombrando consecutivamente.
SCSI soporta entre 8 (SCSI-I) y 16 (Wide-SCSI) dispositivos por bus.
lsblk
Herramienta para saber qué dispositivos de bloque tenemos conectados a la máquina:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 953M 0 part /boot └─sda2 8:2 0 199.1G 0 part /
Linux considera dispositivo de bloques a los dispositivos de almacenamiento en general.
Si vamos a /dev/ y listamos con ls -lh podemos ver diferentes tipos de archivos:
-: archivo normal.d: directorios.c: dispositivo de caracteres.l: enlace simbólico.b: dispositivo de bloques.
Ejemplo
(...) brw-rw---- 1 root disk 8, 0 Feb 15 10:02 sda brw-rw---- 1 root disk 8, 1 Feb 15 10:02 sda1
hdparm
Permite ajustar y consultar los parámetros del hardware de los discos IDE y SCSI.
-c: consulta / configura acceso de 32 bit al disco.-A: consulta / configura la lectura anticipada.-d: consulta / configura acceso por DMA.
1/0 Habilitamos/deshabilitamos dicha opción.
hdparm –c <1 | 0> /dev/sda
hdparm está disponible a través del paquete hdparm
Ejecutando hdparm sobre /dev/sda sin más opciones:
/dev/sda: multcount = 128 (on) IO_support = 1 (32-bit) readonly = 0 (off) readahead = 256 (on) geometry = 8354/255/63, sectors = 134217728, start = 0
sdparm
Permite comunicación de bajo nivel con los periféricos SCSI (incluido SATA).
sdparm está disponible a través del paquete sdparm
sdparm /dev/sda
/dev/sda: ATA VBOX HARDDISK 1.0 Read write error recovery mode page: AWRE 1 [cha: n, def: 1] ARRE 0 [cha: n, def: 0] PER 0 [cha: n, def: 0] Caching (SBC) mode page: IC 0 [cha: n, def: 0] WCE 1 [cha: y, def: 1] RCD 0 [cha: n, def: 0] Control mode page: TST 0 [cha: n, def: 0] SWP 0 [cha: n, def: 0]
smartctl
Para monitorizar discos por fallos utilizamos el comando smartctl.
SMART es un sistema implementado en la mayoría de los discos modernos y permite que podamos acceder a ese disco y ver información de sus estado.
smartctl está disponible a través del paquete smartmontools
smartd: demonio que monitorizará los discos
Ejemplo de uso de smartctl:
smartctl –a /dev/sdb
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.19.0-14-amd64] (local build) Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: VBOX HARDDISK Serial Number: VB390ca983-db8c976a Firmware Version: 1.0 User Capacity: 68,719,476,736 bytes [68.7 GB] Sector Size: 512 bytes logical/physical Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ATA/ATAPI-6 published, ANSI INCITS 361-2002 Local Time is: Wed Apr 7 12:57:11 2021 CEST SMART support is: Unavailable - device lacks SMART capability. A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.
iSCSI
Abreviatura de Internet SCSI es un estándar que permite el uso del protocolo SCSI sobre redes TCP/IP.
iscsiadm
Comando que permite descubrir los target iSCSI y acceder a los volúmenes descubiertos.
- target: entidad que exporta el dispositivo.
- initiator: entidad que importa el dispositivo.
iscsid
Servicio que nos permite descubrir volúmenes en el cliente (initiator). El fichero de configuración es /etc/iscsi/iscsid.conf
- WWID: World wide identifier. Es el identificador único asociado a cada dispositivo SCSI conectado al bus.
- LUN: es otro identificador que identifica un dispositivo SCSI conectado a un bus concreto. Este identificador es a nivel local, mientras que WWID lo es a través de la red.
NVMe y SSD
Los modernos discos SSD (solid state drive) utilizan el driver NVM Express (NVMe) para poder ser accesibles a través del bus PCI Express.
Este driver se incorpora a partir del kernel 3.3.
Los dispositivos NVMe suelen ser nombrados como /dev/nvmeX
Ejemplo de partición: /dev/nvme0n1p1
Configurar parámetros del kernel
Como y henos visto en otras ocasiones, el subsistema /proc es un sistema de ficheros temporal que nos permite un acceso directo a parámetros e información del kernel.
Todos los parámetros del kernel están dentro de /proc/sys
Esto nos permite modificar dinamicamente opciones del kernel:
echo 1 > /proc/sys/net/ipv4/ip_forward
También podemos hacer estos cambios con el comando sysctl:
sysctl net.ipv4.ip_forward=1
Para realizar estos cambios de modo persistente, podemos editar el archivo /etc/sysctl.conf
En cuanto a dispositivos de bloques, podemos revisar /proc/sys/dev. Si tuviésemos un lector de CD: /proc/sys/dev/cdrom.
Test
Un sistema con un único disco configurado como maestro y conectado al controlador primario IDE y una grabadora de CD configurada como esclavo y conectada al controlador secundario IDE. Si el sistema está correctamente configurado, ¿qué dispositivo representará a la grabadora de CD?
/dev/hdd
Uno de los discos IDE en un servidor está transfiriendo información muy lentamente, ¿qué comando se debe utilizar para activar DMA en él?
hdparm -d /dev/hda
