Dispositivos de almacenamiento y sistemas de ficheros en GNU/Linux

CDA 2018/19


Índice General

1 Descripción

Ejemplos básicos de la gestión de almacenamiento en GNU/Linux. Revisión de herramientas y funcionamiento.

2 Entorno de prácticas

2.1 Software de virtualización VIRTUALBOX

En estas prácticas se empleará el software de virtualización VIRTUALBOX para simular los equipos GNU/Linux sobre los que se realizarán las pruebas.

2.2 Imágenes a utilizar

  1. Scripts de instalación

    Notas:

  2. Imágenes descargadas

  3. Usuarios configurados e inicio en el sistema

2.3 Discos disponibles en la máquina virtual

3 Información de los dispositivos físicos (discos)

3.1 Dispositivos de bloque

Dispositivos de bloque típicos en /dev

root@datos:~# ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 sep 12 17:31 /dev/sda
brw-rw---- 1 root disk 8,  1 sep 12 17:31 /dev/sda1
brw-rw---- 1 root disk 8, 16 sep 12 17:31 /dev/sdb
brw-rw---- 1 root disk 8, 17 sep 12 17:31 /dev/sdb1
brw-rw---- 1 root disk 8, 32 sep 12 17:31 /dev/sdc

Creación 'manual' de estos dispositivos en /dev/ con el comando mknod

3.2 Comandos de información y configuración

  1. Comando dmesg: muestra el log del proceso de arranque, entre la información aportada informa de dispositivos de bloque detectados.

          root@datos:~# dmesg | less
    

  2. Comando lshw -class disk: herramienta genérica que proporciona un listado del hardware del sistema

    No suele formar parte de la instalación por defecto, instalado con apt-get install lshw (ya hecho en la MV de prácticas)

    root@datos:~# lshw -class disk
      *-disk                  
           description: ATA Disk
           product: VBOX HARDDISK
           physical id: 0.0.0
           bus info: scsi@0:0.0.0
           logical name: /dev/sda
           version: 1.0
           serial: VBb47bb7f6-e24cb0e7
           size: 10GiB (10GB)
           capabilities: partitioned partitioned:dos
           configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=58370392
      *-disk
           description: ATA Disk
           product: VBOX HARDDISK
           physical id: 0.0.0
           bus info: scsi@1:0.0.0
           logical name: /dev/sdb
           version: 1.0
           serial: VBf4d2dbc9-664a8fb5
           size: 1GiB (1073MB)
           capabilities: partitioned partitioned:dos
           configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=47772cb4
      *-disk
           description: ATA Disk
           product: VBOX HARDDISK
           physical id: 0.0.0
           bus info: scsi@2:0.0.0
           logical name: /dev/sdc
           version: 1.0
           serial: VB2d8e7931-bcad7997
           size: 100MiB (104MB)
           configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512
    

  3. Comando lsblk: muestra información de los dispositivos de bloque

    root@datos:~# lsblk 
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk 
     |-sda1  8:1    0   10G  0 part /
    sdb      8:16   0    1G  0 disk 
     |-sdb1  8:17   0 1022M  0 part [SWAP]
    sdc      8:32   0  100M  0 disk 
          
          
    root@datos:~# lsblk --output-all | less
    

  4. Comando fdisk -l: listado de dispositivos de bloque, con información de sus particiones y de sus respectivos sistemas de ficheros

    root@datos:~# fdisk -l
    
    Disco /dev/sda: 10 GiB, 10737418240 bytes, 20971520 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: 0x58370392
    
    Device     Boot Start      End  Sectors Size Id Type
    /dev/sda1  *     2048 20969471 20967424  10G 83 Linux
    
    Disco /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 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: 0x47772cb4
    
    Device     Boot Start     End Sectors  Size Id Type
    /dev/sdb1        2048 2095103 2093056 1022M 82 Linux swap / Solaris
    
    Disco /dev/sdc: 100 MiB, 104857600 bytes, 204800 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
    

  5. Comando smartctl: información de diagnóstico del disco (si tiene soporte S.M.A.R.T.)

    Parte de las S.M.A.R.T. tools, programas de utilidad (smartctl y smartd) para controlar y monitorizar sistemas de almacenamiento usando el Self-Monitoring, Analysis and Reporting Technology System (S.M.A.R.T.) incluido la mayoría de los discos duros ATA y SCSI modernos.

    No suele formar parte de la instalación por defecto, instalado con apt-get install smartmontools (ya hecho en la MV de prácticas)

    root@alqueidon:~# smartctl --scan
    /dev/sda -d scsi # /dev/sda, SCSI device
    /dev/sdb -d scsi # /dev/sdb, SCSI device
    
    root@alqueidon:~# smartctl -a /dev/sda
    smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-33-generic] (local build)
    Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
    
    === START OF INFORMATION SECTION ===
    Model Family:     Samsung based SSDs
    Device Model:     Samsung SSD 850 EVO 250GB
    Serial Number:    S3R0NF0JA00392F
    LU WWN Device Id: 5 002538 d4251affc
    Firmware Version: EMT03B6Q
    User Capacity:    250.059.350.016 bytes [250 GB]
    Sector Size:      512 bytes logical/physical
    Rotation Rate:    Solid State Device
    Form Factor:      2.5 inches
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 4c
    SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
    Local Time is:    Tue Sep 11 01:25:17 2018 CEST
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED
    
    General SMART Values:
    Offline data collection status:  (0x00) Offline data collection activity
                                            was never started.
                                            Auto Offline Data Collection: Disabled.
    Self-test execution status:      (   0) The previous self-test routine completed
                                            without error or no self-test has ever 
                                            been run.
    Total time to complete Offline 
    data collection:                 (   0) seconds.
    Offline data collection
    capabilities:                    (0x53) SMART execute Offline immediate.
                                            Auto Offline data collection on/off support.
                                            Suspend Offline collection upon new command.
                                            No Offline surface scan supported.
                                            Self-test supported.
                                            No Conveyance Self-test supported.
                                            Selective Self-test supported.
    SMART capabilities:            (0x0003) Saves SMART data before entering
                                            power-saving mode.
                                            Supports SMART auto save timer.
    Error logging capability:        (0x01) Error logging supported.
                                            General Purpose Logging supported.
    Short self-test routine 
    recommended polling time:        (   2) minutes.
    Extended self-test routine
    recommended polling time:        ( 133) minutes.
    SCT capabilities:              (0x003d) SCT Status supported.
                                            SCT Error Recovery Control supported.
                                            SCT Feature Control supported.
                                            SCT Data Table supported.
    
    SMART Attributes Data Structure revision number: 1
    Vendor Specific SMART Attributes with Thresholds:
    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
      5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
      9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       341
     12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       28
    177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       1
    179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0
    181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
    182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
    183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0
    187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0
    190 Airflow_Temperature_Cel 0x0032   057   053   000    Old_age   Always       -       43
    195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0
    199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
    235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       7
    241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       698131703
    
    SMART Error Log Version: 1
    No Errors Logged
    
    SMART Self-test log structure revision number 1
    Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
    # 1  Vendor (0xc8)       Completed without error       00%     14980         -
    # 2  Reserved (0x30)     Completed without error       00%     14980         -
    # 3  Reserved (0x20)     Completed without error       00%     12848         -
    # 4  Reserved (0x10)     Completed without error       00%     12848         -
    # 5  Offline             Completed without error       00%     12848         -
    # 6  Reserved (0x20)     Completed without error       00%      9767         -
    # 7  Reserved (0x38)     Completed without error       00%       572         -       
          

  6. Comando hdparm: información y configuración de parámetros los discos

    No suele formar parte de la instalación por defecto, instalado con apt-get install hdparm (ya hecho en la MV de prácticas)

    root@alqueidon:~# hdparm -I /dev/sda     (info. general del disco)
    /dev/sda:
    
    ATA device, with non-removable media
             Model Number:       Samsung SSD 850 EVO 250GB               
             Serial Number:      S3R0NF0JA00392F     
             Firmware Revision:  EMT03B6Q
             Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
    Standards:
             Used: unknown (minor revision code 0x0039) 
             Supported: 9 8 7 6 5 
             Likely used: 9
    Configuration:
             Logical         max     current
             cylinders       16383   16383
             heads           16      16
             sectors/track   63      63
             --
             CHS current addressable sectors:    16514064
             LBA    user addressable sectors:   268435455
             LBA48  user addressable sectors:   488397168
             Logical  Sector size:                   512 bytes
             Physical Sector size:                   512 bytes
             Logical Sector-0 offset:                  0 bytes
             device size with M = 1024*1024:      238475 MBytes
             device size with M = 1000*1000:      250059 MBytes (250 GB)
             cache/buffer size  = unknown
             Form Factor: 2.5 inch
             Nominal Media Rotation Rate: Solid State Device
    Capabilities:
             LBA, IORDY(can be disabled)
             Queue depth: 32
             Standby timer values: spec'd by Standard, no device specific minimum
             R/W multiple sector transfer: Max = 1   Current = 1
             DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
                  Cycle time: min=120ns recommended=120ns
             PIO: pio0 pio1 pio2 pio3 pio4 
                  Cycle time: no flow control=120ns  IORDY flow control=120ns
    Commands/features:
             Enabled Supported:
               *    SMART feature set
                    Security Mode feature set
               *    Power Management feature set
               *    Write cache
               *    Look-ahead
               *    Host Protected Area feature set
               *    WRITE_BUFFER command
               *    READ_BUFFER command
               *    NOP cmd
               *    DOWNLOAD_MICROCODE
                    SET_MAX security extension
               *    48-bit Address feature set
               *    Device Configuration Overlay feature set
               *    Mandatory FLUSH_CACHE
               *    FLUSH_CACHE_EXT
               *    SMART error logging
               *    SMART self-test
               *    General Purpose Logging feature set
               *    WRITE_{DMA|MULTIPLE}_FUA_EXT
               *    64-bit World wide name
                    Write-Read-Verify feature set
               *    WRITE_UNCORRECTABLE_EXT command
               *    {READ,WRITE}_DMA_EXT_GPL commands
               *    Segmented DOWNLOAD_MICROCODE
               *    Gen1 signaling speed (1.5Gb/s)
               *    Gen2 signaling speed (3.0Gb/s)
               *    Gen3 signaling speed (6.0Gb/s)
               *    Native Command Queueing (NCQ)
               *    Phy event counters
               *    READ_LOG_DMA_EXT equivalent to READ_LOG_EXT
               *    DMA Setup Auto-Activate optimization
                    Device-initiated interface power management
               *    Asynchronous notification (eg. media change)
               *    Software settings preservation
                    Device Sleep (DEVSLP)
               *    SMART Command Transport (SCT) feature set
               *    SCT Write Same (AC2)
               *    SCT Error Recovery Control (AC3)
               *    SCT Features Control (AC4)
               *    SCT Data Tables (AC5)
               *    reserved 69[4]
               *    DOWNLOAD MICROCODE DMA command
               *    SET MAX SETPASSWORD/UNLOCK DMA commands
               *    WRITE BUFFER DMA command
               *    READ BUFFER DMA command
               *    Data Set Management TRIM supported (limit 8 blocks)
    Security: 
             Master password revision code = 65534
                     supported
             not     enabled
             not     locked
             not     frozen
             not     expired: security count
                     supported: enhanced erase
             2min for SECURITY ERASE UNIT. 8min for ENHANCED SECURITY ERASE UNIT.
    Logical Unit WWN Device Identifier: 5002538d4251affc
             NAA             : 5
             IEEE OUI        : 002538
             Unique ID       : d4251affc
    Device Sleep:
             DEVSLP Exit Timeout (DETO): 50 ms (drive)
             Minimum DEVSLP Assertion Time (MDAT): 30 ms (drive)
    Checksum: correct
    

    root@alqueidon:~# hdparm -tT /dev/sda        (tests de velocidad de lectura)
    
    /dev/sda:
      Timing cached reads:   9754 MB in  2.00 seconds = 4884.98 MB/sec
      Timing buffered disk reads: 1564 MB in  3.00 seconds = 520.96 MB/sec
    

4 Particionado de dispositivos

Tarea: Particionar el disco /dev/sdc (inicialmente vacío), creando:

5 Sistemas de ficheros

Para poder almacenar datos en los dispositivos (agrupados en ficheros), estos deben de contener un sistema de ficheros.

Existen diversos tipos de sistemas de ficheros con características y funcionalidades específicas.

5.1 Formateo de sistemas de ficheros

El formateo de un dispositivo consiste en crear las estructuras de datos (metadatos) del correspondiente sistema de ficheros, necesarias para el posterior almacenamiento y gestión de los ficheros que lo conforman.

Comandos

El tipo de sistema de ficheros debe de estar soportado por el kernel de la máquina (módulos compilados y cargados, normalmente ya está hecho por defecto [ver ls -l /lib/modules/3.16.0-4-586/kernel/fs]) y haberse instalado las correspondientes utilidades de línea de comandos (paquete xfsprogs para XFS, reiserfsprogs para ReiserFS, etc) en las que se incluyen los comandos mkfs.<tipo> y mount.<tipo> responsables del formateo y el montaje de cada tipo de sistema de ficheros.

En el caso de GNU/Linux los sistemas de ficheros nativos son la familia ext2 y sus sucesores (ext3 y ext4). También suele incluirse por defecto el soporte a loa sistemas de fichero de MS Windows fat, vfat y ntfs, por cuestiones de compatibilidad.

Tarea: Formatear las particiones del disco /dev/sdc

Se puede comprobar el resultado con el comando parted -l /dev/sdc

Se pueden recuperar los metadatos de un sistema de ficheros ext2 (y sus sucesores ext3 y ext4) con el comando dumpe2fs.

root@alqueidon:~# dumpe2fs /dev/sda1 
dumpe2fs 1.44.1 (24-Mar-2018)

Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          963e2dd4-20bb-4a71-a38b-fbaa0614c0ee
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery ...
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              14409728
Block count:              57631232
Reserved block count:     2881561
Free blocks:              44874328
Free inodes:              13703461
First block:              0
Block size:               4096
Fragment size:            4096
...
Filesystem created:       Tue Aug 21 22:20:01 2018
Last mount time:          Mon Sep 10 21:13:10 2018
Last write time:          Mon Sep 10 21:13:09 2018
Mount count:              22
...


root@alqueidon:~# dumpe2fs -h /dev/sda1 | grep -i 'mount count'  (busca num. de montajes realizados)
dumpe2fs 1.44.1 (24-Mar-2018)
Mount count:              22
Maximum mount count:      -1

5.2 Montaje de sistemas de ficheros

Para hacer accesible un sistema de ficheros este debe de ser integrado en la estructura de directorios del sistema ”anclándolo” en un punto de montaje (el directorio a partir del cual está accesible su estructura de ficheros/directorios)

Comandos

Tarea: Crear los puntos de montaje en /mnt/ y montar las particiones de /deb/sdc

Comprobad el resultado con el comando mount o con df -hiT

Nota:

5.3 Herramientas y utilidades

En el caso de los sistemas de ficheros ext2, ext3 y ext4 es posible configurar determinados aspectos de los mismos (frecuencia y/o de num. de montajes antes de escaneo, comportamiento ante errores, etc) con el comando tune2fs (ver man tune2fs)

En la MV de prácticas está disponible la utilidad ext3grep (instalada con apt-get install ext3grep).

6 Dispositivos loop

Una opción útil para tareas de experimentación (o para montar volcados de un sistema de archivos [ver comando dd]) es la posibilidad de hace uso de los pseudo-dispositivos de bloque loop.

Ejemplo:

  1. Crear un fichero de 5 MB
    root@datos:~# dd if=/dev/zero of=/tmp/ceros.raw bs=5M count=1
    

  2. Vincularlo con el dispositivo /deb/loop0 (ver man losetup)
    root@datos:~# losetup /dev/loop0 /tmp/ceros.raw
    
  3. Comprobar con lsblk que se identifica como dispositivo de bloques
    root@datos:~# lsblk
    
  4. Formatear el dispositivo de bloque como ext3
    root@datos:~# mkfs.ext /dev/loop0
    
  5. Crear un punto de montaje y montar /dev/loop0
    root@datos:~#  mkdir /mnt/loop
    root@datos:~#  mount -t ext3 /dev/loop0 /mnt/loop