|
1.
Introducción a Dispositivos de Bloque
Dispositivos de Bloque
Examinaremos de forma detallada los aspectos de Gentoo Linux así como
Linux en general que tengan que ver con discos, sistemas de ficheros
de Linux, particiones y dispositivos de bloque. Una vez esté
familiarizado con las entrañas de los discos y sistemas de ficheros,
le guiaremos a través del proceso de creación de particiones y
sistemas de ficheros de tu instalación Gentoo Linux.
Para empezar, explicaremos el término dispositivos de
bloque. Quizás el dispositivo de bloque más conocido es el que
representa la primera unidad de disco llamada /dev/sda.
Las unidades SCSI y Serial ATA son etiquetadas mediante
/dev/sd*; incluso las unidades IDE son conocidas como
/dev/sd* con el nuevo framework libata del kernel.
Si está utilizando el antigo framework de unidades, entonces la
primera unidad IDE será /dev/hda.
Los dispositivos de bloque mencionados anteriormente representan una
interfaz abstracta de disco. Las aplicaciones pueden hacer uso de
estas interfaces para interactuar con el disco duro de la máquina sin
importar el tipo de unidad que tienes: IDE, SCSI, o cualquier otra. La
aplicación puede simplemente dirigirse al almacenamiento en el disco
como a una serie de bloques de acceso aleatorio de 512-bytes situados
de forma contigua.
Particiones
Aunque teóricamente es posible utilizar el disco duro completo para
albergar la instalación Linux, esto casi nunca se hace. En su lugar,
los dispositivos de bloque enteros se dividen en partes más manejables
y pequeñas. En los sistemas éstas se llaman
particiones.
Las particiones se dividen en tres tipos:
primarias, extendidas y lógicas.
La partición primaria es aquella que almacena su información en
el MBR (registro principal de arranque). Ya que el MBR puede almacenar
hasta 512 bytes, solo pueden definirse cuatro particiones primarias
(por ejemplo, desde /dev/sda1 hasta
/dev/sda4).
Una partición extendida es una partición primaria especial
(entendemos que la partición extendida debe ser una de las cuatro
posibles particiones primarias) la cual contiene más particiones. Al
principio no existía este tipo de partición, pero como cuatro
primarias eran muy pocas, se diseñó para extender el esquema de
particionamiento sin perder la compatibilidad inversa.
Una partición lógica es aquella que está dentro de la partición
extendida. En otras palabras, estas particiones no se definen dentro
del MBR, sino que se declaran dentro de la partición extendida.
1.
Diseñar un Esquema de Particionamiento
Esquema de Particionamiento Predeterminado
Aviso:
El microcódigo de NetWinder, NeTTrom, solo puede leer particiones ext2
de manera fiable, de modo que debemos tener una partición ext2 de
arranque por separado.
|
ISi no está interesado en diseñar un esquema de particionamiento
particular para el sistema, puede usar del esquema dispuesto en este
manual:
| Partición |
Sistema de Ficheros |
Tamaño |
Descripción |
| /dev/sda1 |
ext2 |
32M |
Partición de arranque |
| /dev/sda2 |
(swap) |
512M |
Partición de intercambio |
| /dev/sda3 |
ext4 |
El resto del disco |
Partición de raíz |
Si está interesado en conocer el tamaño que debería tener una partición, o
incluso cuantas particiones necesita, continué leyendo. En caso contrario,
siga con el particionamiento del disco leyendo
Utilizar fdisk para particionar su disco.
¿Cuántas? y ¿de qué tamaño?
El número de particiones es altamente dependiente del entorno
particular. Por ejemplo, si la máquina tiene muchos usuarios, lo más
probable es que desee tener /home en una partición
separada para aumentar la seguridad y facilitar los respaldos. Si está
instalando Gentoo para un servidor de correos, debe tener
/var en una partición separada ya que es allí dónde se
almacena todo el correo. Asimismo, una buena elección de sistema de
ficheros optimizará el rendimiento del equipo. Los servidores de
juegos deben disponer de una partición /opt, ya que la
mayoría de juegos se instalan allí. Las razones para estas
recomendaciones son similares a las del caso de /home:
seguridad y salvaguarda de datos. Es recomendable darle un tamaño
grande a /usr: no solamente contiene la mayoría de las
aplicaciones, sino que el propio árbol de Portage ocupa más de 500
Mbytes, sin contar las fuentes que guarda también.
Como puede ver, todo depende de lo que quiera conseguir. Tener
particiones o volúmenes separados tiene las siguientes ventajas:
-
Puede elegir el mejor sistema de ficheros para cada partición o
volumen
-
El equipo en su totalidad quedará sin espacio si una herramienta o
aplicación escribiera datos continuamente al volumen o partición
-
Si es el caso, el tiempo dedicado a las comprobaciones de
integridad de sistemas de fichero se reduce ya que las éstas
pueden ser hechas en paralelo (esta ventaja es mayor con múltiples
discos que con múltiples particiones)
-
Podemos mejorar la seguridad montando algunas particiones en modo
solo lectura, nosuid (los setuid bits se ignoran), noexec (los
bits de ejecución se ignoran), etc.
Sin embargo, tener múltiples particiones tiene también desventajas.
Si no se configuran adecuadamente, obtendrá un sistema con mucho
espacio vacío en una partición y ninguno en otra. Otra contrariedad
es que las particiones separadas - especialmente las que se
utilizan para puntos de montaje importantes como /usr
o /var - a menudo requieren que sea el administrador
el que arranque el sistema con un sistema de ficheros de inicio
en RAM (initramfs) para montar la partición antes de que otros
guiones de inicio se ejecuten. Este no es siempre el caso, por lo
que sus resultados pueden ser diferentes.
También, existe un límite de 15 particiones para SCSI y SATA.
Como ejemplo de un esquema de particionamiento usaremos un disco
duro de 20 Gb de un portátil para fines de demostración (incluye
servidor web, servidor de correo, gnome, etc.):
Listado de Código 1.1: Ejemplo de particionamiento |
$ df -h
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext4 509M 132M 351M 28% /
/dev/sda2 ext4 5.0G 3.0G 1.8G 63% /home
/dev/sda7 ext4 7.9G 6.2G 1.3G 83% /usr
/dev/sda8 ext4 1011M 483M 477M 51% /opt
/dev/sda9 ext4 2.0G 607M 1.3G 32% /var
/dev/sda1 ext2 51M 17M 31M 36% /boot
/dev/sda6 swap 516M 12M 504M 2% <not mounted>
|
/usr parece estar bastante llena (83%), pero una vez que
todo el software esté instalado no tenderá a llenarse más. Aunque
asignar unos cuantos gigabytes de espacio a /var puede
parecer excesivo, recuerde que Portage utiliza esta partición por
defecto para compilar paquetes. Si quiere mantener /var
de un tamaño razonable, cómo 1 GB, necesitará modificar la variable
PORTAGE_TMPDIR en /etc/make.conf para apuntar a
una partición con espacio libre suficiente para compilar paquetes muy
grandes como OpenOffice.
1.
Utilizar fdisk para particionar su disco
Las siguientes instrucciones explican como particionar el disco duro
según el esquema descrito anteriormente:
| Partición |
Descripción |
| /dev/sda1 |
Partición de arranque (boot) |
| /dev/sda2 |
Partición de intercambio (swap) |
| /dev/sda3 |
Partición de raíz (root) |
Cambie el esquema de particionamiento según sus propias preferencias.
Examinar el Esquema de Particionamiento Actual
fdisk es una popular y potente herramienta que permite dividir
el disco en particiones. Arranque fdisk sobre su unidad de disco
(en nuestro ejemplo usamos el dispositivo de disco
/dev/sda):
Listado de Código 1.1: Ejecutar fdisk |
# fdisk /dev/sda
|
Una vez que fdisk esté en ejecución, el programa ofrecerá el
siguiente símbolo de espera de órdenes:
Listado de Código 1.1: Símbolo de espera de órdenes de fdisk |
Command (m for help):
|
Teclee p para mostrar el esquema de particionamiento actual:
Listado de Código 1.1: Un ejemplo de particionamiento |
Command (m for help): p
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 14 105808+ 83 Linux
/dev/sda2 15 49 264600 82 Linux swap
/dev/sda3 50 70 158760 83 Linux
/dev/sda4 71 2184 15981840 5 Extended
/dev/sda5 71 209 1050808+ 83 Linux
/dev/sda6 210 348 1050808+ 83 Linux
/dev/sda7 349 626 2101648+ 83 Linux
/dev/sda8 627 904 2101648+ 83 Linux
/dev/sda9 905 2184 9676768+ 83 Linux
Command (m for help):
|
Este disco en particular está configurado para albergar siete sistemas
de ficheros Linux, cada partición con su correspondiente etiqueta
"Linux", así como una partición de intercambio (swap) que aparece con
la etiqueta "Linux swap".
Eliminar todas las Particiones
Primero eliminaremos todas las particiones existentes en el
disco. Teclee d para eliminar una partición, seguido por
intro. Por ejemplo, para borrar una partición existente en
/dev/sda1:
Listado de Código 1.1: Eliminar una partición |
Command (m for help): d
Partition number (1-4): 1
|
La partición se ha marcado para ser borrada. Ya no aparecerá si
teclea p, pero no será eliminada hasta que guarde los cambios
realizados. Si comete una equivocación y desea abortar los cambios,
teclee q inmediatamente y pulse intro; las particiones no serán
eliminadas.
Ahora, asumiendo que intenta eliminar todas las particiones existentes
del disco duro, debe teclear p en forma repetida para ver el
listado de particiones y pulsar d junto con el número de la
partición para borrarlas. Finalmente, acabará teniendo una tabla de
particiones vacía:
Listado de Código 1.1: Una tabla de particiones vacía |
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
Command (m for help):
|
Ahora que la tabla de particiones en memoria está vacía, estamos
listos para crear nuevas particiones. Usaremos el esquema
predeterminado, tal como hemos acordado anteriormente. ¡Claro está,
que no debe seguir estas instrucciones al píe de la letra si no desea
tener una tabla de particiones exactamente igual que la nuestra!
Creación de una Partición de Arranque
Primero debemos crear una pequeña partición de arranque. Teclee
n para crear esta nueva partición, y luego p para
seleccionar una partición primaria, siguiendo por 1 para
elegirla como primera partición primaria. Al solicitar la introducción
del primer cilindro, pulse intro y cuando pida el último cilindro,
escriba +32M para crear una partición de 32 Mbyte:
Listado de Código 1.1: Crear una partición de arranque |
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M
|
Ahora al teclear p, debe ver la siguiente salida:
Listado de Código 1.1: Una partición creada |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 14 105808+ 83 Linux
|
Necesitamos hacer que esta partición sea arrancable. Teclee a
para marcarla como arrancable. Si escribe p de nuevo, verá
que un * ha aparecido en la columna "Boot".
Creación de una Partición de Intercambio
Ahora vamos a crear la partición de intercambio. Para hacerlo, teclee
n para crear una nueva partición y luego p para decirle
a fdisk que sea una partición primaria. Entonces teclee 2 para
crear la segunda partición primaria, /dev/sda2 en nuestro
caso. Cuando el sistema pida el valor del primer cilindro, pulse intro
y cuando pida el valor del último, teclee +512M para crear una
partición de 512 Mbytes. Cuando lo haya hecho, teclee t para
determinar el tipo de partición, 2 para seleccionar la
partición recién creada y luego 82 para fijarla como "Linux
Swap". Completados estos pasos, con pulsar p visualizaremos la
tabla de particiones, que debe ser similar a ésta:
Listado de Código 1.1: Listado de particiones luego de crear la partición de intercambio |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
|
Creación de la Partición de Raíz
Finalmente, crearemos la partición raíz. Introduzca n para
crear la nueva partición, p para marcarla como primaria. Luego
teclee 3 para crear la tercera partición primaria,
/dev/sda3, según nuestro ejemplo. Al pedir el valor del
primer cilindro de la partición pulsamos intro, mientras que al pedir
el valor del último cilindro, también le damos a intro para crear una
partición que ocupe el espacio restante en el disco. Tras completar
estos pasos, introducimos p para ver la tabla de particiones
que debe parecer mucho a la siguiente:
Listado de Código 1.1: Listado de particiones luego de crear la partición raíz |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
/dev/sda3 82 3876 28690200 83 Linux
|
Almacenamiento de la Tabla de Particiones
Para guardar el esquema de particionamiento y salir del fdisk
tecleamos w.
Listado de Código 1.1: Guardado y salida de fdisk |
Command (m for help): w
|
Ahora que las particiones están creadas, puede proseguir con la Creación de Sistemas de Ficheros.
1.
Creación de Sistemas de Ficheros
Introducción
Creadas las particiones, debemos formatearlas para poder colocarles un
sistema de ficheros. Si no le importa el tipo de sistema de ficheros
que desee utilizar y está conforme con nuestra elección por defecto,
continúe con la sección Creación de
Sistema de Ficheros en una Partición. En caso contrario, siga
leyendo para ver qué sistemas de ficheros puede utilizar ...
Sistemas de ficheros
El núcleo Linux soporta varios sistemas de ficheros. Explicaremos
ext2, ext3, ext4, ReiserFS, XFS y JFS por ser los más utilizados en
sistemas Linux.
ext2 es un sistema de ficheros Linux probado, pero no dispone
de soporte para transacciones, lo que significa que las comprobaciones
rutinarias al arrancar pueden tardar bastante tiempo. Ahora, hay
muchas opciones alternativas, sistemas de ficheros de nueva generación
con soporte para transacciones cuya integridad puede ser verificada
con mayor rapidez, por lo que gozan de mayor popularidad. Los sistemas
de ficheros transaccionales previenen retrasos durante el reinicio del
equipo, incluso cuando el sistema de ficheros está en un estado
inconsistente. Si desea instalar Gentoo en un disco pequeño (de menos de
4GB), entonces necesitará indicarle a ext2 que reserve suficientes nodos
i cuando cree el sistema de ficheros. La aplicación mke2fs utiliza
el ajuste "bytes-per-inode" para calcular cuantos nodos-i tendría un
sistema de ficheros. Al ejecutar mke2fs -T small /dev/<device>
el número de nodos-i generalmente será el cuádruple para un sistema de
ficheros dado ya que su "bytes-per-inode" se reduce de uno cada 16kB a uno
cada 4kB. Puede ajustar esto más tarde utilizando
mke2fs -i <ratio> /dev/<device>.
ext3 es la versión transaccional de ext2, que proporciona
soporte para una rápida recuperación además de otros modos mejorados
de funcionamiento como registro completo y ordenado de datos. Utiliza
un árbol HTree como índice que permite un alto rendimiento en casi todas
las situaciones. En resumen ext3 es un sistema de ficheros muy bueno
y fiable. Si desea instalar Gentoo en un disco pequeño (de menos de 4GB),
entonces necesitará indicarle a ext3 que reserve suficientes nodos-i
cuando cree el sistema de ficheros. La aplicación mke2fs utiliza
el ajuste "bytes-per-inode" para calcular cuantos nodos-i tendría un
sistema de ficheros. Al ejecutar
mke2fs -T small /dev/<device> el número de nodos-i
generalmente será el cuádruple para un sistema de ficheros dado ya que su
"bytes-per-inode" se reduce de uno cada 16kB a uno cada 4kB. Puede ajustar
esto más tarde utilizando
mke2fs -i <ratio> /dev/<device>.
El sistema de ficheros ext4 se creó como una bifurcación en el
código (fork) del sistema de ficheros ext3, incorporando nuevas
características, mejoras de rendimiento y eliminación de los limites
de tamaño realizando cambios moderados en el formato del disco. Puede
trabajar con volúmenes de hasta 1 EB y con un tamaño máximo de fichero
de 16 TB. En lugar de la asignación de bloques usando mapas de bits
que emplean los sistemas de ficheros clásicos ext2/3, ext4 utiliza
extents (en inglés), lo cual mejora el rendimiento con los ficheros
grandes y reduce la fragmentación. Ext4 también ofrece un algoritmo más
sofisticado de asignación de bloques (asignación demorada y asignación
múltiple de bloques) ofreciendo al controlador del sistema de ficheros
más formas de optimizar la disposición de los datos en el disco. El
sistema de ficheros ext4 es un compromiso entre la estabilidad del
código para producción y el deseo de introducir extensiones a un
sistema de ficheros que ya casi tiene una década.
JFS de IBM es un sistema de ficheros de alto rendimiento con
soporte transaccional. JFS es un sistema de ficheros ligero, rápido
y fiable, basado en un árbol B+ con un buen rendimiento bajo varias
condiciones.
ReiserFS es un sistema de ficheros B+ (basado en árboles
balanceados) que tiene un gran rendimiento, especialmente cuando
trata con muchos ficheros pequeños a costa de emplear más ciclos
de CPU. ReiserFS parece tener menos mantenimiento que otros
sistemas de ficheros.
XFS es un sistema de ficheros transaccional el cual viene con un
juego de características robustas y está optimizado para ser
escalable. XFS parece ser menos robusto ante fallos hardware.
Creación de Sistema de Ficheros en una Partición
Para crear un sistema de ficheros en una partición o volumen existen
herramientas específicas para cada sistema de ficheros:
| Sistema de Ficheros |
Orden para su creación |
| ext2 |
mkfs.ext2 |
| ext3 |
mkfs.ext3 |
| ext4 |
mkfs.ext4 |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
Por ejemplo, para formatear la partición de arranque
(/dev/sda1 según el ejemplo) en formato ext2 y la
partición de raíz (/dev/sda3 según el ejemplo) en formato
ext4, utilizaría las siguientes órdenes:
Listado de Código 1.1: Creación de un sistema de ficheros en una partición |
# mkfs.ext2 /dev/sda1
# mkfs.ext4 /dev/sda3
|
Ahora puede crear los sistemas de ficheros sobre sus particiones (o
volúmenes lógicos) recién creados.
Activar la Partición de Intercambio
mkswap es la orden utilizada para inicializar particiones de
intercambio:
Listado de Código 1.1: Inicialización de una partición de intercambio |
# mkswap /dev/sda2
|
Para activar la partición, utilice la orden swapon:
Listado de Código 1.1: Activar la partición de intercambio |
# swapon /dev/sda2
|
Cree y active la partición de intercambio con las órdenes mencionadas
arriba.
1.
Montaje
Ahora que las particiones están inicializadas y albergan sistemas de
ficheros, es hora de montarlas. Utilice la orden mount. No
olvides de crear puntos de montaje necesarios para cada partición que
has creado. Como ejemplo montamos la partición de raíz y de arranque:
Listado de Código 1.1: Montaje de particiones |
# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot
|
Nota:
Si quiere que su /tmp resida sobre una partición
diferente, asegúrese de cambiar los permisos después de montarla:
chmod 1777 /mnt/gentoo/tmp. Lo mismo debe ser aplicado a
/var/tmp.
|
También necesitamos montar el sistema de ficheros proc (la interfaz
virtual del núcleo) en /proc. Pero primero necesitamos
situar nuestros ficheros en las particiones.
Continúe con (Instalación de Ficheros
de Instalación de Gentoo).
|