SDB:Fundamentos de dispositivos de almacenamiento

Saltar a: navegación, buscar
Artículos recomendados Artículos relacionados
Icon-manual.png Icon-ayuda.png

Introducción

Los dispositivos de almacenamiento son aquéllos en los que almacenamos información de manera permanente.

El dispositivo más común actualmente es el disco duro, aunque los discos flash van sustituyéndolo poco a poco. No obstante, pese a sus diferencias técnicas, desde el punto de vista del usuario de un Sistema Operativo son indistinguibles. Otros dispositivos habituales son las tarjetas de memoria (SD, microSD) que suelen acompañar a las modernas cámaras digitales, tanto de vídeo como de fotografía; también son omnipresentes los llamados pendrives (traducido a veces como llave o memoria USB).

Estos dispositivos pueden ser considerados discos, y algunas documentaciones y referencias lo hacen. Cuando se usa en singular, disco suele referirse al disco duro. Por otro lado, lo aplicable a un disco duro es de aplicación a cualquier otro disco, tanto tarjetas como pendrives.

Un tipo de disco cada vez más en desuso es el disquete: muchos computadores y prácticamente todos los portátiles (por no hablar de netbooks o tabletas) no se molestan en proveer siquiera un dispositivo para usarlos.

Los CD, DVD y similares, pese a su evidente forma de disco, no se manejan de la misma forma. En realidad, se usan de forma más parecida a otros dispositivos, como por ejemplo las cintas magnéticas.

Este documento se refiere al primer tipo de dispositivos de almacenamiento: los discos.

Dialogo informacion 64x64.png

Dicho todo esto, desde el punto de vista del usuario, un dispositivo es tanto un CD, como un disco duro o cualquier partición de este último.

Particionado de discos

Los sistemas Unix siempre han tenido la posibilidad de montar un subsistema de almacenamiento de varias particiones. Estas particiones pueden estar repartidas en varios dispositivos físicos, o pueden ser varias particiones en un mismo dispositivo físico. Cada disco debe tener al menos una partición, pero a menudo hay más. Nos limitaremos aquí a el particionado tal y como se hace en los discos duros en un entorno de un PC.

Particiones MS-DOS

Al principio, cuando los discos tenían muy poco espacio, se tenía la idea de que cuatro particiones serían suficientes para todo el uso posible que se le fuera a dar al disco duro (con el tiempo se ha evolucionado y aquella idea ha quedado obsoleta, pudiendo necesitar más de esas 4 particiones posibles). Los datos sobre el particionado están escritos en la tabla de particiones. Se encuentra en un lugar especial en el disco y el BIOS accede a ella para consultarla.

Cuando se hizo muy evidente que cuatro particiones no iban a ser suficientes, se encontró e implementó una solución compatible con las versiones anteriores: hacer una de las cuatro particiones, una partición especial, que puede contener varias particiones. Las BIOS más reciente (en la actualidad todas las BIOS) conocen este nuevo tipo de particiones y pueden utilizarlas. Así pues, tenemos tres tipos de particiones:

  • Particiones primarias: estas son las antiguas 4 particiones primigenias, puede haber hasta 4 (numeradas con los números 1, 2, 3, 4).
  • Partición extendida: (de hecho también es una partición primaria), sólo puede haber una, tiene normalmente el número más alto después de la creada como partición primaria (3 ó 4) y debe contener todo el espacio restante del disco (de lo contrario el espacio queda desperdiciado).
  • Particiones secundarias: que se crean dentro de la partición extendida, su numeración es siempre 5 o superior (el máximo es discutible, pero suele ser suficiente para la mayoría de la gente).

Algunas personas están desconcertadas por la existencia de la partición extendida, que no parece ser de ninguna utilidad y ocupa una gran cantidad de espacio en disco y que el espacio parece que también pertenecen a otras particiones útil. La partición extendida actúa como un contenedor para las particiones secundarias, y el espacio que se muestra corresponde tanto a la partición extendida como a las particiones secundarias que contiene.

Veamos un ejemplo de un disco con particiones de los tres tipos:

Geecko_root:/ # fdisk -l
Disk /dev/sda: 200.0 GB, 200049647616 bytes
255 heads, 63 sectors/track, 24321 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1c841c84

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         574     4604008+   c  W95 FAT32 (LBA)
Partition 1 does not end on cylinder boundary.
/dev/sda2   *         575        8967    67416772+   7  HPFS/NTFS
/dev/sda3            8968       24321   123331005    f  W95 Ext'd (LBA)
/dev/sda5            8968        9229     2104483+  82  Linux swap / Solaris
/dev/sda6            9230       11840    20972826   83  Linux
/dev/sda7           11841       24321   100253601   83  Linux

Geecko_root:/ # 
  • Partición 1: es una partición de restauración creada por el fabricante.
  • Partición 2: contiene un sistema Windows XP (El sistema la llama como unidad C:).
  • Partición 3: Es la partición extendida y ocupa hasta el final del disco dura. Y contiene estas tres particiones.
  • Partición 5: es la partición swap de openSUSE.
  • Partición 6: es la partición root de openSUSE.
  • Partición 7: es la partición /home de openSUSE.

La tabla de particiones de tipo MS-DOS consiste en un pequeño archivo con capacidad para cuatro entradas (de ahí el límite de 4 particiones primarias o 3 primarias más una extendida) situado en el MBR, tras el código del cargador de arranque.

Particiones GUID (GPT)

La tabla de particiones GUID (GPT) es parte del estándar Extensible Firmware Interface (EFI), el cual reemplaza la BIOS que aún se sigue usando en la mayor parte de computadores personales. GPT sustituye al MBR que usa la BIOS.

GPT no necesita el esquema Partición Extendida + Particiones lógicas, ya que no está limitada a las cuatro entradas del esquema MS-DOS.

openSUSE puede usar tablas de particiones GPT. Sin embargo, hay varias limitaciones:

  • GRUB no arranca particiones en tablas GPT. Si hay menos de cuatro entradas, pude usarse una suerte de modo compatible, pero en este caso no podría acceder a cualquiera que estuviese más allá de la cuarta partición.
  • Algunas instalaciones de Windows en algunos equipos portátiles usan dicho modo compatible. Lamentablemente, al iniciar la instalación YaST interpreta dicha tabla de particiones como si fuese una tabla de particiones MS-DOS. Hay formas de solventar esto, pero ninguna trivial.

Slices

Los slices son similares a las particiones lógicas. Una partición principal o primaria puede ser dividida en varias particiones.

Los slices se enumeran con letras (a, b, c...) en sus respectivas particiones. Esto es importante si se desea crear una entrada para FreeBSD en nuestro cargador GRUB, por ejemplo. Sin embargo, Linux maneja los slices de forma similar a las particiones lógicas.

 bash# fdisk /dev/hda    
 
 Command (m for help): p    
 
 Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders   
 Units = cylinders of 4032 * 512 bytes       
 
    Device Boot   Begin    Start      End   Blocks   Id  System   
 /dev/hda1   *        1        1       27    54400+  83  Linux native   
 /dev/hda2           28       28       55    56448   83  Linux native   
 /dev/hda3           56       56      403   701568   83  Linux native   
 /dev/hda4          404      404      621   439488   a5  BSD/386    
 
 Command (m for help): b   
 Reading disklabel of /dev/hda4 at sector 1624897.    
 
 BSD disklabel command (m for help): p    
 
 8 partitions:   
 #        size   offset    fstype   [fsize bsize   cpg]     
   a:    64512  1624896    4.2BSD        0     0     0   # (Cyl.  404 - 419)
   b:   104832  1689408      swap                        # (Cyl.  420 - 445)   
   c:   878976  1624896    unused        0     0         # (Cyl.  404 - 621)    
   e:    64512  1794240    4.2BSD        0     0     0   # (Cyl.  446 - 461) 
   f:   645120  1858752    4.2BSD        0     0     0   # (Cyl.  462 - 621)    
 
 BSD disklabel command (m for help): q   
 bash#      
 

Las letras `a'...`f' de la primera columna son las mismas etiquetas como se muestra en el ejemplo para una porción FreeBSD. Hay tres particiones especiales en BSD. La letra `a' designa la partición raíz, `b' designa la partición swap, mientras que `c' designa la porción entera. En el ejemplo, como se ve los slices están creados en la partición 4.

 Etiqueta Linux  Etiqueta FreeBSD   Punto de montaje FreeBSD
 /dev/hda5       /dev/wd0s4a        /   
 /dev/hda6       /dev/wd0s4b        swap   
 /dev/hda7       /dev/wd0s4e        /var   
 /dev/hda8       /dev/wd0s4f        /usr     
 

Ejecutar dmesg en este ejemplo (en Linux) visualiza lo siguiente, a condición de que el soporte para el sistema de ficheros UFS esté instalado:

Partition check:    
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

Nomenclatura

Nombrado de dispositivos y particiones bajo Linux

En la sección anterior puede verse como se enumeran en Linux los dispositivos y particiones.

Cuando el sistema Linux arranca, escanea el hardware y cuando encuentra los discos y particiones les da un nombre. Estos nombres se utilizan para ser encontrados como archivos de dispositivos especiales dentro del directorio /dev/ (que viene de devices o dispositivo). Los discos tienen nombres como hda, hdb, hdc, ... para dispositivos IDE; o sda, sdb, sdc, ... Para dispositivos SCSI. Y las particiones de hda serán hda1, hda2, ... y las sda serán sda1, sda2, ... respectivamente, donde el número es el número de partición.

¿Cuáles son los archivos de dispositivos especiales? Un tipo especial de archivos que están asociados con el hardware. La entrada/salida (abreviado E/S) mediante el hardware se hace leyendo o escribiendo en este archivo. Así se dice repetidamente y puede que lo hayas escuchado, que en Unix/linux todo es un archivo. Hay dos tipos de estos archivos: archivo especial de dispositivo de caracteres y archivo especial de dispositivo de bloques. Para los discos hacemos E/S de bloques. Por supuesto, esto es demasiado largo para pronunciar por lo que la mayoría la gente habla de los archivos de dispositivos. Normalmente se crean en el directorio /dev/ (hoy en día de forma dinámica por parte de udev). Veamos cómo se ve dentro de directorio /dev/:

Geecko_root:/dev # ls -l sda*
brw-rw---- 1 root disk 8, 0 ene 30 11:29 sda
brw-rw---- 1 root disk 8, 1 ene 30 11:29 sda1
brw-rw---- 1 root disk 8, 2 ene 30 11:29 sda2
brw-rw---- 1 root disk 8, 5 ene 30 11:29 sda5
brw-rw---- 1 root disk 8, 6 ene 30 11:29 sda6

La mayoría de las cosas que ve le serán familiares. La b indica un archivo de dispositivo especial de bloques. A los usuarios normales no se les permite leer/escribir directamente desde/hacia el disco, de lo contrario toda seguridad sería inútil. El número 8 es el número que el kernel utiliza internamente para el controlador que trabaja con estos dispositivos y el 0 - 3 sirve para distinguirlos entre sí dentro de ese controlador.

Hasta hace poco estos /dev/sdb2, etc se utilizaron para montar las particiones y cuando se escribía el comando mount (muestra lo que está montado), verá cuales utiliza.

Geecko_root:/ #  mount | grep /dev/sd
/dev/sdb6 on / type reiserfs (rw,relatime,acl,user_xattr)
/dev/sdb7 on /home type ext4 (rw,relatime,user_xattr,acl,barrier=1,data=ordered)
/dev/sdb2 on /windows/C type fuseblk (rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
Geecko_root:/ # 

Esto se basa en el hecho de que en cada arranque del sistema se encuentra en los discos en la misma secuencia. Si esto no se produjese, sda y sdb podrían estar cambiadas y las particiones mal montadas (¡y provocar un lío enorme al usuario!) Esto puede ocurrir no sólo en el arranque, si no también cuando se conecta un disco a un sistema en funcionamiento al que se le dará el nombre 'siguiente' al último montado (por ejemplo, sdc). Así, por ejemplo, al conectar un disco o memoria USB externa a un sistema, no se garantiza obtener el mismo punto de montaje en todo momento, lo cual es inconveniente.

Para eliminar esta confusión, sería necesario que haya un identificador único para el disco. Y lo hay. Más aún, mira en: /dev/disk/. Existen varios directorios dentro de esa ruta, tal y como vemos en este ejemplo y como puedes ver en tu sistema:

Geecko_root:/ # ls -l /dev/disk
total 0
drwxr-xr-x 2 root root 860 ene 30 11:29 by-id
drwxr-xr-x 2 root root 120 ene 30 12:29 by-label
drwxr-xr-x 2 root root 320 ene 30 11:29 by-path
drwxr-xr-x 2 root root 200 ene 30 12:29 by-uuid
Geecko_root:/ #

Puedes mirar dentro de esos directorios. Cada uno de ellos tiene algunas o todas las particiones, identificadas de una manera diferente. Y cada uno de estos archivos no es un archivo especial de dispositivo, sino un enlace a un archivo especial de dispositivos que hemos visto anteriormente. Cuando se mira en /etc/fstab:

Geecko_root:/ # cat /etc/fstab
/dev/disk/by-id/ata-ST31000528AS_9VP2SP2X-part5 swap                 swap       defaults              0 0
/dev/disk/by-id/ata-ST31000528AS_9VP2SP2X-part6 /                    reiserfs   acl,user_xattr        1 1
/dev/disk/by-id/ata-ST31000528AS_9VP2SP2X-part7 /home                ext4       acl,user_xattr        1 2
/dev/disk/by-id/ata-ST31000528AS_9VP2SP2X-part2 /windows/C           ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=es_ES.UTF-8 0 0
     ...

Verás que openSUSE utiliza hoy en día los nombres de /dev/disk/by-id/ para ver que las particiones se montan de forma correcta:

Geecko_root:/ # ls -l /dev/disk/by-id
            ...
lrwxrwxrwx 1 root root  9 ene 30 11:29 scsi-SATA_ST31000528AS_9VP2SP2X -> ../../sdb
lrwxrwxrwx 1 root root 10 ene 30 11:29 scsi-SATA_ST31000528AS_9VP2SP2X-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 ene 30 11:29 scsi-SATA_ST31000528AS_9VP2SP2X-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 ene 30 11:29 scsi-SATA_ST31000528AS_9VP2SP2X-part5 -> ../../sdb5
lrwxrwxrwx 1 root root 10 ene 30 11:29 scsi-SATA_ST31000528AS_9VP2SP2X-part6 -> ../../sdb6
lrwxrwxrwx 1 root root 10 ene 30 11:29 scsi-SATA_ST31000528AS_9VP2SP2X-part7 -> ../../sdb7          ...

Nombrado de dispositivos y particiones bajo GRUB

GRUB tiene su propio esquema de numeración y lo más importante es saber que GRUB inicia todos los discos y particiones contándolos ¡empezando desde 0 y no desde 1!

El orden en el que se enumeran los discos se define en la BIOS y puede establecerse allí. Sin embargo, GRUB permite que el usuario modifique este orden (llamado mapeo de discos) en tiempo real y de forma transparente para el Sistema Operativo que use dicho servicio de la BIOS.

Etiqueta Linux  Etiqueta GRUB
/dev/sda        hd0
/dev/sda1       hd0,0
/dev/sda6       hd0,5
/dev/sdb        hd1
/dev/hdb3       hd1,2

Desde el punto de vista de GRUB, un pendrive es visto como otro disco. Recuerda que GRUB utiliza la BIOS para manejar los dispositivos.

Volúmenes

El uso de volúmenes permite hacer abstracción de la división física de los dispositivos locales.

  • De la división física, porque un volumen puede crearse con una o varias particiones de uno o varios discos.
  • Locales, porque un volumen es una forma de utilizar dispositivos conectados directamente al computador, no un sistema distribuido por una red.

El uso de volúmenes proporciona varias ventajas y no se libra de unos cuantos inconvenientes. openSUSE permite usar volúmenes e incluso una de las opciones para el particionado automático en la instalación permite indicar que se use cree un volumen. Otras distribuciones, como Red Hat Enterprise Linux (RHEL) o Fedora (el proyecto libre auspiciado por Red Hat) usan ese sistema por defecto.

Entre las ventajas:

  • Permitir adaptarse a los cambios en los requerimientos de espacio con mayor simplicidad. Puede añadirse más espacio al volumen si lo hay en el disco, o redistribuir el espacio sobrante de un volumen lógico para otro. El espacio a reasignar, naturalmente, no tiene porqué ser contiguo.
  • Los volúmenes permiten hacer copias de seguridad en tiempo real: el sistema provee espacio para la copia, de forma que mientras los datos son copiados en el medio de respaldo, los datos que van cambiando en el disco a respaldar se copian en el espacio extra. Así se asegura la integridad de los datos respaldados. Si la copia ser realiza a una hora (digamos a las 18:00) la copia de respaldo contendrá los datos que había a esa hora, sin preocuparse de los datos que cambien en el tiempo que tarde en realizarse de dicha copia. El sistema también se encarga de que, una vez finalizado el respaldo, los datos nuevos se actualicen.
  • Simplifica el cifrado al permitir cifrar todo el volumen en una sola operación.

Entre las desventajas:

  • GRUB no permite arrancar desde un volumen lógico. En caso de querer usar volúmenes en el sistema, el arranque ha de ubicarse en una partición normal (principal o lógica).

Volúmenes físicos

Un volumen físico (o pv de sus siglas en inglés phisical volumen) se compone de un partición o incluso de un dispositivo completo. Para que un dispositivo pueda ser utilizado como volumen físico, debe de ser de tipo 8e.

bash# fdisk -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e19d7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   419618815   209808384    f  W95 Ext'd (LBA)
/dev/sda2       419618816   444194815    12288000   83  Linux
/dev/sda5            4096      401407      198656   83  Linux
/dev/sda6          403456   252059647   125828096   8e  Linux LVM

/dev/sda6 es una partición utilizada para contener un volumen físico, mientras que /dev/sda5 contiene el arranque del sistema. En este esquema, pensado para contener varios sistemas operativos de los cuales algunos harán uso también de sus propios volúmenes, se ha optado por combinar volúmenes con una partición extendida; de todas formas, uno de los usos de los volúmenes es precisamente evitar la necesidad de tal partición sin la penalización del límite de 4 particiones.

bash# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               openSUSE
  PV Size               120,00 GiB / not usable 3,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              30719
  Free PE               2559
  Allocated PE          28160
  PV UUID               94QhS4-uL5Y-aQbc-3GXd-Nld9-M1CM-Xna6fV

Los volúmenes usan su propia unidad de asignación Extents. Physical Extents son pequeñas porciones de datos con un tamaño dado (por defecto, 4 MiB).

Grupos de volúmenes

Son grupos de almacenamiento compuestos de uno o varios volúmenes físicos a los que se da un nombre común.

bash# vgdisplay 
  --- Volume group ---
  VG Name               openSUSE
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  12
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                8
  Open LV               8
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               120,00 GiB
  PE Size               4,00 MiB
  Total PE              30719
  Alloc PE / Size       28160 / 110,00 GiB
  Free  PE / Size       2559 / 10,00 GiB
  VG UUID               S4IaNt-rQKf-jTUE-Dp7S-3jqr-aizZ-IXJKE0

Volúmenes lógicos

Más arriba se ha dicho que un extent es una porción de datos usado por el volumen. Logical Extents son las porciones de datos que manejan los volúmenes lógicos: un volumen lógico no es más que un conjunto definido (y con un nombre) de Extents lógicos.

bash# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/openSUSE/memVirtual
  VG Name                openSUSE
  LV UUID                PPhJ9U-LlNa-wsAD-vgOT-tTgy-PUKp-b1gsrM
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                2,00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Name                /dev/openSUSE/raiz
  VG Name                openSUSE
  LV UUID                evORyB-Vs3k-lotl-yTp0-z3vU-kDcX-7qR65n
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                2,00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
  --- Logical volume ---
  LV Name                /dev/openSUSE/usuarios
  VG Name                openSUSE
  LV UUID                PWXXbT-3wpY-RBFq-73l0-5dZC-to5H-JmjNJz
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                50,00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
   
  --- Logical volume ---
  LV Name                /dev/openSUSE/aplicaciones
  VG Name                openSUSE
  LV UUID                43wVso-Cg2K-K64M-6djL-QsvP-xT5Q-ZkDoze
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                25,00 GiB
  Current LE             6400
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3
   
  --- Logical volume ---
  LV Name                /dev/openSUSE/opcional
  VG Name                openSUSE
  LV UUID                dfRhTq-09Am-f4u2-zEIa-75ga-Vsjf-gJxkg5
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                7,00 GiB
  Current LE             1792
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4
   
  --- Logical volume ---
  LV Name                /dev/openSUSE/servicios
  VG Name                openSUSE
  LV UUID                mBQCLA-5z6z-VwFU-2VBw-Q4hN-XbF6-9mXp5K
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                15,00 GiB
  Current LE             3840
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:5
   
  --- Logical volume ---
  LV Name                /dev/openSUSE/servidores
  VG Name                openSUSE
  LV UUID                7EO8YU-EyOJ-9wA0-Z9oz-SEeo-poTw-bOduzO
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                7,00 GiB
  Current LE             1792
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:6
   
  --- Logical volume ---
  LV Name                /dev/openSUSE/temporal
  VG Name                openSUSE
  LV UUID                DRNDxz-dQ8N-TesM-2d4S-2J4V-O4oV-bSlrrj
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                2,00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:7

Cada Extent lógico se corresponde con al menos un Extent físico, como era de esperar. Sin embargo, ello quiere decir también que cada Extent lógico puede configurarse para que se asocie (mapee) a varios Extents físicos. Esto permite, por ejemplo, usar redundancia de forma que cada dato del volumen lógico se guarde en dos dispositivos diferentes.

RAID

El acrónimo RAID (conjunto redundante de discos independientes, Redundant Array of Inexpensive Disks -fíjate en el cambio de baratos a independientes") se refiere a un sistema de almacenamiento que usa múltiples discos duros o SSD entre los que se distribuyen o replican los datos. Dependiendo de su configuración (a la que suele llamarse «nivel»), los beneficios de un RAID respecto a un único disco son uno o varios de los siguientes: mayor integridad, mayor tolerancia a fallos, mayor throughput (rendimiento) y mayor capacidad. En sus implementaciones originales, su ventaja clave era la habilidad de combinar varios dispositivos de bajo coste y tecnología más antigua en un conjunto que ofrecía mayor capacidad, fiabilidad, velocidad o una combinación de éstas que un solo dispositivo de última generación y coste más alto.

En el nivel más simple, un RAID combina varios discos duros en una sola unidad lógica. Así, en lugar de ver varios discos duros diferentes, el sistema operativo ve uno solo. Los RAID suelen usarse en servidores y normalmente (aunque no es necesario) se implementan con unidades de disco de la misma capacidad. Debido al decremento en el precio de los discos duros y la mayor disponibilidad de las opciones RAID incluidas en los chipsets de las placas base, los RAID se encuentran también como opción en las computadoras personales más avanzadas. Esto es especialmente frecuente en las computadoras dedicadas a tareas intensivas y que requiera asegurar la integridad de los datos en caso de fallo del sistema. Esta característica no está obviamente disponible en los sistemas RAID por software, que suelen presentar por tanto el problema de reconstruir el conjunto de discos cuando el sistema es reiniciado tras un fallo para asegurar la integridad de los datos. Por el contrario, los sistemas basados en software son mucho más flexibles (permitiendo, por ejemplo, construir RAID de particiones en lugar de discos completos y agrupar en un mismo RAID discos conectados en varias controladoras) y los basados en hardware añaden un punto de fallo más al sistema (la controladora RAID).

Todas las implementaciones pueden soportar el uso de uno o más discos de reserva (hot spare), unidades preinstaladas que pueden usarse inmediatamente (y casi siempre automáticamente) tras el fallo de un disco del RAID. Esto reduce el tiempo del período de reparación al acortar el tiempo de reconstrucción del RAID.