DPD Dispositivos sistema herencia
De Gleducar, http://www.gleducar.org.ar
Tabla de contenidos
|
Particiones y sistemas de archivos
Veremos como crear y formatear particiones con las herramientas que ofrece GNU/Linux.
Los comandos que se verán en este tema son:
fdiskmkfs
Hay muchas herramientas para crear particiones y sistemas de archivos en sistemas Linux. La utilidad fdisk se usa para trabajar con particiones en discos duros. La utilidad fips se utiliza para redimensionar particiones, y los sistemas de archivos se crean utilizando la utilidad mkfs. Se pueden utilizar estas herramientas conjuntamente para preparar un disco duro para usar sistema Linux.
- En el mundo real
- muchas distribuciones Linux incluyen herramientas que crean automáticamente las particiones y el sistema de archivos Linux durante la instalación. Mucha gente no necesitará nunca usar utilidades como
fdiskomkfs. Sin embargo, los usuarios avanzados y los administradores de sistemas deben estar familiarizados con el uso de estas herramientas.
fdisk
La herramienta principal usada para crear particiones de disco es fdisk. Este comando divide el disco en particiones y escribe la tabla de particiones en el sector 0 (conocido como superblock). Cuando se utiliza sin parámetros, fdisk presenta un menú de opciones con las que se puede interactuar. Se puede evitar el menú y ejecutar fdisk con las siguientes opciones:
-l
- lista las tablas de particiones.
-v
- Nos da únicamente la versión de fdisk.
Si no se utiliza ninguna de esas opciones, fdisk comprueba si el número de cilindros del dispositivo por defecto (hda1) es mayor de 1024 y avisa de ello si es asÃ. Entonces espera una instrucción. Se puede iniciar fdisk con un dispositivo distinto al hda1 especificándolo en la lÃnea de comandos. Por ejemplo, para arrancar fdisk con el tercer driver IDE, se debe poner:
$ fdisk /dev/hdc
Una vez la utilidad está iniciada, entrando m se presenta una ayuda en forma de menú, algunas de las cuales se listan en la siguiente tabla:
| Opción | Función |
|---|---|
| p | Muestra información sobre la partición. |
| d | Borra una partición. |
| n | Crea una partición. |
| q | Sale de la aplicación sin guardar los cambios. |
| w | Guarda los cambios y sale de la aplicación. |
| m | Muestra los comandos disponibles. |
| v | Verifica la tabla de particiones. |
| a | Cambia el indicador de estado de arranque de la partición. |
Los siguientes ejemplos ilustran que se puede hacer con esta utilidad, empezando por acciones simples y acabando con algunas más complicadas.
En primer lugar, para ver la tabla de particiones, se debe introducir la opción p. El resultado se debe parecer a:
Disk /dev/hda: 16 head, 63 sectors, 16383 cylinders Units = cylinders of 1008 + 512 bytes Device Boot Start End Blocks Id System /dev/hda1 + 1 4063 2047720+ 83 Linux /dev/hda2 4064 4316 127512 82 Linux swap /dev/hda3 4317 16383 6081768 83 Linux
Se muestra tres particiones (de 1 a 3) en un único disco IDE (hda). La primera partición es de arranque (marcada en la columna boot) , la segunda de swap, y la tercera es el resto del disco.
Para modificar el sistema de archivos, vamos a cambiar la tercera partición en dos de menor tamaño. Primero entramos la opción d para borrar la partición. El prompt preguntará que partición (1 a 4). Se entra 3, y ya está.
Para crear una nueva partición, se entrará la opción n. El prompt que muestra será:
e- extendida p- partición primaria (1-4)
Si ya se han creado algunas particiones, el prompt puede no aparecerá. Por ejemplo, si ya se tiene una partición extendida, no se puede crear otra ya que ésta ya existe. Si se entra p para una primaria, seguidamente se pedirá el número (1-4) para crearla; si se da un número ya usado, el comando falla ya que primero se deberÃa haber borrado la partición antes de volverla a añadir.
En este caso, suponiendo que se quiere crear dos particiones iguales en el espacio que antes ocupaba la tercera partición, por lo tanto después de entrar p la secuencia será la siguiente (valores entrados en cursiva)
Número de particion (1-4): 3 Primer cilindro (4317-16383, defecto 4317): (aceptar) Usando el valor de defecto 4317 Último cilindro o +size o +sizeM o +sizeK _ (4317-16383, defecto 16383): 10350
Command (m para ayuda): p
Disco /dev/had: 16 head, 63 sectors, 16383 cylinders Units = cylinders of 1008 + 512 bytes Device Boot Start End Blocks Id System /dev/hda1 + 1 4063 2047720+ 83 Linux /dev/hda2 4064 4316 127512 82 Linux swap /dev/hda3 4317 10350 3041136 83 Linux
Command (m para ayuda): n
Command action e extended p primary partition (1-4)
p
Número de partición (1-4): 4
Primer cilindro (10531-16383, default 10351): (aceptar) Usando el valor de defecto 10351 Último cilindro o +size o +sizeM o +sizeK _ (10351-16383, defecto 16383): (aceptar) Usando el valor de defecto 16383
Command (m para ayuda): p
Disco /dev/had: 16 head, 63 sectors, 16383 cylinders Units = cylinders of 1008 + 512 bytes Device Boot Start End Blocks Id System /dev/hda1 + 1 4063 2047720+ 83 Linux /dev/hda2 4064 4316 127512 82 Linux swap /dev/hda3 4317 10350 3041136 83 Linux /dev/hda4 10351 16383 3040632 83 Linux
Para cambiar la tercera partición a sistema de archivos swap (partición de swap) la secuencia es:
Command (m para ayuda): t
Número de partición (1-4): 3
Hex code ( L para la lista de códigos): 82
Cambiado tipo de sistema de la partición 3 a 82 (Linux swap)
Entonces, para cambiar la partición existente de swap (la 2) a una partición Linux, se debe hacer lo mismo que se ha hecho, pero como código hex el 83. Poniendo L cuando se pida el hex code se mostrarán todos los sistemas de archivos posibles (igual que poniendo I en el menú principal de fdisk).
Después de efectuar todos los cambios, se puede salir de fdisk y formatear las particiones que lo necesiten. Si se guardan los cambios, aparecerá una alerta indicando que la tabla de particiones ha sido alterada y el disco será sincronizado. Se deberá reiniciar el sistema para asegurarse de que la tabla está actualizada adecuadamente.
Se pueden hacer muchos cambios con fdisk y deshecharlos si se usa la opción q. Si se desea grabar los cambios realizados, se deben salvar con w.
mkfs
Una vez se ha creado la partición, el sistema de archivos debe ser añadido para que Linux pueda hacer uso de este espacio. La utilidad mkfs se usa para crear sistemas de archivos en particiones vacÃas. Esta utilidad se utiliza con muchas opciones distintas, las cuales se pueden ver en la siguiente tabla.
| Opción | Uso |
|---|---|
| -t fstype | Especifica el tipo de sistema de archivos a crear. Por defecto se usa ext2. |
| fs -options | Opciones especÃficas de sistema de archivos para ser pasados al sistema real de archivos que vamos a crear. |
| -c | Comprueba el dispositivo en busca de bloques defectuosos antes de crear el sistema de archivos. |
| -l archivo | Lee los bloques defectuosos del archivo. |
| -v | Produce una salida con más información (modo verboso), incluyendo todas las órdenes especÃficas del sistema de archivos concreto que se ejecutan. Ésto es realmente sólo útil para comprobaciones. |
Las opciones usadas por mkfs están seguidas por un argumento especificando la partición que debe ser formateada. Después de la ejecución del comando, el código de salida 0 (cero) indicará que se ha llevado a cabo con éxito mientras que el código de salida 1 (uno) indicará una falla.
Ejemplo de la sintaxis usada:
mkfs -opciones argumentos
Cuando se crea un sistema de archivos con mkfs, se pueden utilizar muchos comandos para especificar el tipo de sistema de archivos. Estos comandos son accesibles sólo para el usuario root.
| Comando | Uso |
|---|---|
| mkfs.ext2 o mke2fs | Crea un sistema de archivos ext2 |
| mkfs.msdos o mkdosfs | Crea un sistema de archivos MS-DOS |
| mkswap | Crea un sistema de archivos de Linux swap |
| mkraid | Inicializa y actualiza cadenas de dispositivos RAID |
| mkfs.minix | Crea un sistema de archivos Minix |
| mkfs.bfs | Crea un sistema de archivos SCO BFS |
Por ejemplo, un uso apropiado de estas utilidades es crear un partición ext2 usando mkfs.ext2:
# mke2fs /dev/hda3
fips
La utilidad fips es útil conocerla cuando queremos añadir Linux a un sistema ya existente. Se trata de una utilidad MS-DOS proporcionada con Red-Hat para redimensionar particiones en un disco duro. La utilidad produce dos particiones, la partición original redimensionada y una nueva partición creada a partir del espacio libre, también creado en esta acción.
Antes de utilizar la utilidad fips es importante hacer copia de seguridad de los datos almacenados en la partición sobre la que se trabajará.
La utilidad se ejecuta desde la lÃnea de comandos de MS-DOS, y los cursores se utilizan para redimensionar las particiones. Se debe tener extremo cuidado usando esta utilidad.
- En el mundo real
- La utilidad fips es similar al PartitionMagic y otros programas comerciales que se utilizan para crear y redimensionar particiones.
Integridad del sistema de archivos
Con el trascurso del tiempo los filesystems activos pueden terminar presentando problemas como los siguientes:
- Un filesystem se llena hasta el lÃmite de su capacidad, causando que los programas o, quizás, el sistema entero dejen de funcionar.
- Un filesystem se corrompe, seguramente por un corte de alimentación o por una caÃda inesperada del sistema.
- Un filesystem se queda sin inodos libres de tal forma que no se pueden crear nuevos objetos en el mismo.
Monitorizar y comprobar cuidadosa y regularmente los filesystems de Linux nos ayudará a prevenir o corregir estos problemas.
Espacio e inodos libres del disco
Un sistema de lectura/escritura no sirve de mucho si crece hasta el punto en que no pueda admitir nuevos archivos. Esto podrÃa ocurrir si el filesystem se llena o si se queda sin inodos libres.
Los inodos son las estructuras de datos dentro del filesystem que describen los archivos en el disco. Cada filesystem contiene un número finito de inodos que se establece en el momento de creación del mismo. Este número es, a su vez, el máximo número de archivos que un filesystem puede acomodar. Como los filesystems se crean con un número de inodos enorme, probablemente nunca crearás tantos archivos como para agotar este número. No obstante, es posible quedarse sin inodos libres en particiones que contengan muchos archivos pequeños.
Es muy importante prevenir la escasez de inodos libres en las particiones del sistema. El comando df proporciona información necesaria tanto sobre la uso del espacio en disco como de los inodos libres.
Sintaxis:
df [opciones] [directorios]
Descripción:
Muestra información general sobre el uso del disco en los filesystems montados en directorios. Normalmente, en directorios indicamos archivos de dispositivos de particiones como /dev/hda1, pero si indicamos otro tipo de nombre de archivo o directorio obtendremos información sobre la partición donde está ubicado dicho archivo o directorio.
Si omitimos directorios, se mostrará la información relativa a los filesystems montados en los dispositivos incluidos en /etc/fstab.
| Opción | Uso |
|---|---|
| -h | Muestra los resultados en un formato legible para las personas, incluyendo sufijos como M(megabytes) y G (gigabytes). |
| -i | Muestra información sobre los inodos libres en lugar de la información por defecto sobre el espacio libre en disco. |
- Ejemplo 1
- Revisar el uso del espacio en disco en todos los filesystems:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 387M 56M 311M 15% / /dev/sda5 296M 5.2M 276M 2% /boot /dev/sda9 1.9G 406M 1.4G 22% /home /dev/sda6 53M 12M 39M 23% /root /dev/sda10 99M 104k 93M 0% /tmp /dev/sda8 972M 507M 414M 55% /usr /dev/sda7 296M 9.3M 272M 3% /var
En este ejemplo se observa que en ninguno de los siete filesystems montados por defecto, el espacio utilizado excede del 55 por ciento de su capacidad.
- Ejemplo 2
- Revisar el uso de inodos en los mismos filesystems:
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 102800 7062 95738 7% / /dev/sda5 78312 29 78283 0% /boot /dev/sda9 514000 934 513066 0% /home /dev/sda6 14056 641 13415 5% /root /dev/sda10 26104 60 26044 0% /tmp /dev/sda8 257040 36700 220340 14% /usr /dev/sda7 78312 269 78043 0% /var
Entre estas particiones el mayor consumo de inodos es sólo de un 14 por ciento. Está claro que ninguno de éstos filesystems se está acercando en su consumo al máximo disponible. Observa que la partición /usr (con el 14 por ciento de los inodos utilizados) ha consumido el 55 por ciento del espacio en disco. Con ésta tónica de utilización, lo más probable es que el volumen /usr agote su capacidad en disco antes de agotar los inodos libres.
- Ejemplo 3
- Determina rápidamente en que partición está situado el directorio de trabajo actual (puede representarse, simplemente, por un punto):
# df . /dev/sda1 102800 7062 95738 7% /
Cuando un filesystem está próximo a agotar su capacidad podemos, simplemente, eliminar archivos para obtener más espacio libre. Sin embargo en el caso improbable de una escasez de inodos, deberÃamos volver a crear el filesystem con un número mayor de inodos a menos que podamos borrar una muy buena cantidad de archivos.
Uso del Espacio en Disco
Te preguntaste alguna vez ¿A dónde va todo el espacio consumido en el disco? En algunos sistemas operativos es bastante complicado obtener la respuesta a esta pregunta con las herramientas nativas. En Linux, el comando du nos puede ayudar, mostrándonos directorio por directorio el uso del espacio en disco, a responder a esta pregunta. El comando du examina los directorios recursivamente y muestra información detallada o resumida sobre el espacio en disco consumido.
Sintaxis
du [opciones] [directorios]
Descripción Muestra información sobre el uso del disco en los directorios. Si se omiten los directorios se buscará en el directorio de trabajo actual.
| Opción | Uso |
|---|---|
| -a | Muestra todos los archivos, no solo los directorios. |
| -c | Genera un gran total de todos los elementos listados. |
| -h | Muestra los resultados en un formato legible para las personas, incluyendo sufijos como M (megabytes) y G (gigabytes). |
| -s | Visualiza un sumario para cada uno de los directorios especificados, en lugar de los totales encontrados recursivamente en cada subdirectorio. |
| -S | Excluye los subdirectorios de las sumas y los totales, limitándose a totalizar los directorios. |
- Ejemplo 1
- Examinar el uso del disco en /etc/rc.d:
# du /etc/rc.d 882 /etc/rc.d/init.d 1 /etc/rc.d/rc0.d 1 /etc/rc.d/rc1.d 1 /etc/rc.d/rc2.d 1 /etc/rc.d/rc3.d 1 /etc/rc.d/rc4.d 1 /etc/rc.d/rc5.d 1 /etc/rc.d/rc6.d 904 /etc/rc.d
- Ejemplo 2
- Muestra el espacio en disco utilizado por archivos, incluyendo los subdirectorios interiores, en /etc:
# du -s /etc 13002 /etc
- Ejemplo 3
- Muestra el espacio en disco utilizado por archivos, excluyendo los subdirectorios interiores, en /etc:
# du -Ss /etc 1732 /etc
- Ejemplo 4
- Muestra un sumario de todos los subdirectorios bajo /home, con una salida legible por las personas:
# du -csh /home/* 42k /home/bsmith 1.5M /home/httpd 9.5M /home/jdean 42k /home/jdoe 12k /home/lost+found 1.0k /home/samba 11M total
Este resultado muestra que se han utilizado 11 MB del espacio total del disco.
- Ejemplo 5
- Muestra el mismo sumario, pero ordenando los resultados de mayor a menor utilización:
# du -cs /home/* | sort -nr 11386 total 9772 jdean 1517 httpd 42 jdoe 42 bsmith 12 lost+found 1 samba
Este resultado muestra que el usuario jdean está consumiendo la mayor cantidad de espacio. Ten en cuenta que el formato legible por las personas no ordenarÃa de esta forma ya que sort no interpreta dicho formato.
Integridad del Filesystem
Independientemente de lo estables que sean, las computadoras terminan fallando en algún momento, incluso por algo tan simple como un cable de alimentación desconectado por accidente. Desafortunadamente una interrupción de este tipo puede provocar daños en un filesystem. Si se abortase una operación de escritura en disco antes de completarse, los datos implicados se perderÃan y las partes del disco que se reservaron para ellos quedarÃan marcadas como en uso. Además, las escrituras en el filesystem no suelen ser directas, sino que suelen pasar previamente por una cache de memoria, un corte de corriente o una caÃda del sistema impedirÃa al kernel sincronizar ésta cache con el disco. Cualquiera de estos casos provocarÃa que nos encontrásemos con inconsistencias en el filesystem que deberán ser corregidas para asegurar un funcionamiento fiable del mismo.
Los filesystems se comprueban con fsck. Al igual que mkfs, esta es una utilidad especÃfica al tipo de filesystem instalado – esto incluye fsck.ext2, que es un link al programa e2fsck (mira en las páginas man para más información).
Una parte de la información almacenada en el disco para describir un filesystem es la conocida como superbloque que se encuentra en el bloque 1 de la partición. Si éste área se corrompiese, el filesystem quedarÃa inaccesible. Debido a la importancia del superbloque, se realizan copias del mismo en intervalos regulares del filesystem, por defecto cada 8192 bloques. La primera copia del superbloque se encuentra en el bloque 8193, la segunda en el bloque 16385, y asà sucesivamente. Como verás, fsck puede utilizar la información en las copias del superbloque para restaurar el superbloque principal
Si bien esto es útil en cualquier filesystem, actualmente se están utilizando filesystems con un dispositivo llamando Journaling. Esto permite que ante una catastrofe, los datos que han quedado sin guardarse, puedan recuperarse “automáticamente� sin necesidad de reparación del sistema. Algunos de estos filesystems más conocidos y utilizados son: ext3 y reiserfs.
Sintaxis
fsck [opciones] [-t tipo] [opciones-fs] filesystems
Descripción
- Comprueba si los filesystems tienen errores y, opcionalmente, los corrige. Por defecto, fsck asume el tipo de filesystem ext2 y funciona de modo interactivo interrumpiendo la ejecución para pedir permiso antes de aplicar las correcciones.
Durante la comprobación del sistema de fsck se hace lo siguiente:
- Comprobar inodos, bloques y tamaños.
- Comprobar la estructura de directorios.
- Comprobar la conectividad de directorios.
- Comprobar las referencias.
- Comprobar el total de la información.
| Opción | Uso |
|---|---|
| -A | Ejecuta comprobaciones en todos los filesystems incluidos en /etc/fstab. Esta opción está pensada para utilizarse en tiempo de carga del sistema, antes de montar los filesystems. |
| -N | No se ejecuta, pero muestra lo que deberÃa hacerse. |
| -t tipo | Especifica el tipo de filesystem a comprobar; por defecto se asume ext2. El valor de tipo determina que verificador especÃfico para el filesystem es utilizado. |
| -b superbloque | Utiliza una copia del superbloque alternativa. En el modo interactivo, e2fsck utiliza automáticamente superbloques alternativos. Normalmente, para restaurar un superbloque defectuoso, utilizarás -b 8193 en el modo no interactivo. |
| -c | Comprobar bloques defectuosos. |
| -f | Fuerza una comprobación, incluso si el filesystem parece limpio. |
| -p | Repara automáticamente el filesystem sin hacer preguntas. |
| -y | Responde automáticamente "yes" a todas las preguntas interactivas permitiendo la utilización no interactiva de e2fsck. |
- Ejemplo 1
- Comprueba el filesystem del tipo ext2 en /dev/hda5 que, que en este momento, no está montado:
# fsck /dev/hda5 [/sbin/fsck.ext2 -- ] fsck.ext2 /dev/hda5 Parallelizing fsck version 1.14 (9-Jan-1999) e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 /dev/hda5: clean, 1011/34136 files, 4360/136521 blocks
La partición estaba marcada como limpia, por tanto fsck no llegó a verificarla.
- Ejemplo 2
- Fuerza una comprobación:
# fsck -f /dev/hda5 Parallelizing fsck version 1.14 (9-Jan-1999) e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/hda5: 1011/34136 files (0.1% non-contiguous), 4360/136521 blocks
- Ejemplo 3
- Fuerza otra comprobación, en este caso con salida de mensajes completa:
# fsck -fv /dev/hda5
Parallelizing fsck version 1.14 (9-Jan-1999)
e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
1011 inodes used (2%)
1 non-contiguous inodes (0.1%)
# of inodes with ind/dind/tind blocks: 0/0/0
4360 blocks used (3%)
0 bad blocks
1000 regular files
2 directorios
0 character device files 0 block device files
0 fifos
0 links
0 symbolic links (0 fast symbolic links)
0 sockets
--------
1002 files
- Ejemplo 4
- Permite que fsck realice automáticamente todas las reparaciones en un filesystem dañado especificando la opción -y:
[root@smp /mnt]# fsck -y /dev/hda5 Parallelizing fsck version 1.14 (9-Jan-1999) e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Couldn't find ext2 superblock, trying backup blocks... /dev/hda5 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Block bitmap differences: +1 +2 +3 +4 Fix? yes Inode bitmap differences: +1 +2 +3 +4 +5 +6 Fix? yes /dev/hda5: ***** FILE SYSTEM WAS MODIFIED ***** /dev/hda5: 1011/34136 files (0.1% non-contiguous), 4360/136521 blocks
Cuando Linux carga, el kernel realiza una comprobación de todos los filesystems incluidos en /etc/fstab utilizando la opción -A. Se comprobará cualquier filesystem que no hubiese sido desmontado limpiamente (A menos que la entrada en /etc/fstab incluya la opción noauto) Si dicha comprobación encontrase algún error significativo, el sistema se pondrÃa en modo monousuario de tal forma que se pueda ejecutar fsck de forma manual.
Algunos de los errores que pueden causar esto son:
- Bloques solicitados por múltiples archivos.
- Bloques solicitados fuera del sistema de archivos.
- Detectados pocos enlaces.
- Bloques no detectados.
- Directorios que corresponden a inodos no localizados.
- Errores de formato.
En los casos dónde el directorio padre de un archivo no pueda ser determinado, el archivo será ubicado en /lost+found. Los archivos entonces se renombran con su número de inodo. Es útil examinar el contenido de este directorio después de haber perdido archivos a consecuencia de un error del sistema.
La información (códigos) de finalización que nos da la utilidad fsck es útil para determinar el resultado de la operación. Cada código representa un tipo de condición de finalización. El código que nos retorna es la suma de las condiciones de salida. Los códigos de salida se muestran en la lÃnea de comandos cuando el comando finaliza su operación. Estos códigos se muestran en la siguiente Tabla.
| Código | Significado |
|---|---|
| 0 | Sin error. |
| 1 | Errores del sistema de archivos corregidos. |
| 2 | El sistema deberÃa ser reiniciado. |
| 4 | Errores del sistema de archivos sin corregir. |
| 8 | Error operacional. |
| 16 | Errores de sintaxis o uso. |
| 128 | Error en la librerÃa compartida. |
Desafortunadamente, a menos que tengas un conocimiento muy detallado del funcionamiento interno del filesystem, podrás hacer muy poco aparte de permitir que fsck realice todas las reparaciones. Por todo esto, lo más normal es utilizar la opción -y y confiar en la suerte.
Creación de sistemas de archivos
Para crear un sistema de archivos debe ser utilizada la herramienta correcta de las especificadas en la siguiente tabla. Un ejemplo de uso correcto de esas utilidades es lo siguiente:
# mkfs.ext3 /dev/hda3
| Comando | Tipo de filesystem creado |
|---|---|
| mkfs.ext2 | ext2 |
| mkfs.ext3 | ext3 |
| mkfs.msdos | MS-DOS |
| mkswap | swap |
| mkraid | Raid |
| mkfs.vfat | FAT |
| mkfs.mimix | mimix |
Utilidades de los filesystems
Comando debugfs – Depurador de filesystems (sistemas de archivos) ext2.
Sintaxis:
debugfs [ -b tamaño_bloque ] [ -s superbloque ] [ -f archivo_comandos ] [ -R peticion ] [ -V ] [ [ -w ] [ -c ] [ -i ] [ dispositivo ] ]
Descripción
- El programa debugfs es un depurador interactivo de filesystems. Puede utilizarse para examinar y cambiar el estado de un filesystem del tipo ext2. Dispositivo indica el archivo especial correspondiente al dispositivo que contiene el filesystem ext2 (p.ej. /dev/hdXX).
Comando dumpe2fs – volcado de la información de un filesystem
Sintaxis:
dumpe2fs [ -bfhixV ] [ -ob superbloque ] [ -oB tamaño_bloque ] dispositivo
Descripción:
- dumpe2fs muestra la información de grupo del superbloque y los demás bloques del filesystem existente en dispositivo.
Comando tune2fs - ajusta los parámetros configurables en un filesystem ext2.
Sintaxis:
tune2fs [ -l ] [ -c contador-max-montajes ] [ -e comportamiento-errores ] [ -f ] [ -i intervalo-entre-comprobaciones ] [ -j ] [ -J opciones-de-diario ] [ -m porcentaje-bloques-reservados ] [ -o [^]opciones-de-montaje[,...] ] [ -r contador-bloques-reservados ] [ -s sparse-super-flag ] [ -u usuario ] [ -g grupo ] [ -C contador-montajes ] [ -L nombre-volumen ] [ -M directorio-ultimo-montaje ] [ -O [^]caracteristica[,...] ] [ -T hora-ultima-comprobacion ] [ -U UUID ]dispositivo
Descripción:
- tune2fs ajusta los parámetros configurables en un filesystem ext2.
Montar y Desmontar sistemas de archivos
Los filesystems son montados con el comando mount. Durante el arranque, los filesystems que no contienen un 0 en el pass number son chequeados y luego montados. Después del arranque se pueden añadir más sistemas de archivos manualmente con el comando mount.
Sintaxis de mount
mount [opciones] device mount [opciones] directorio mount [opciones] device directorio
Descripción: Se usa para montar (y asà poder usar) filesystems dentro de la estructura del árbol del sistema. La primera y segunda entrada consultan al archivo /etc/fstab para montar los dispositivos y asà tomar las opciones que se le especifiquen en el /etc/fstab. La tercera opción es independiente del archivo /etc/fstab y monta el filesystem (device) en el directorio (directorio)
El comando mount admite dos tipos de opciones, unos para el comando en si, y otros para especificar opciones del sistema de archivos.
| Opción | Uso |
|---|---|
| -a | Monta todos los fileystems especificados en el /etc/fstab menos los que tengan la opción noauto |
| -h | Ayuda del comando mount |
| -o | Especifica las opciones del mount en la linea de comandos |
| -r | Monta filesystems en modo de solo lectura |
| -t fstype | Especifica un tipo de fileystem |
| -v | Salida interactiva |
| -w | Monta fileystems de lectura/escritura |
Opciones del mount
Estas opciones se especifican en el archivo /etc/fstab o bien en la linea de comandos con la opción -o. Estas opciones modifican el modo de montaje del comando mount, algunas de las opciones son:
| Opción | Uso |
|---|---|
| async | Toda la E/S al sistema de archivos deberÃa hacerse asÃncronamente. |
| auto | Puede montarse con la opción -a |
| defaults | Establece las opciones: rw, suid, dev, exec, auto, nouser y async. Es la opcion por defecto en sistemas ext2 |
| dev | Interpretar dispositivos especiales de caracteres o bloques en el sistema de archivos |
| exec | Permitir la ejecución de binarios |
| noauto | Sólo puede montarse explÃcitamente (esto es, la opción -a no hará que el sistema de archivos se monte) |
| noexec | No permitir la ejecución de ningún binario en el sistema de archivos montado. Esta opción puede ser útil para un servidor que tiene sistemas de archivos que contienen binarios para otras arquitecturas distintas de la suya. |
| nosuid | No permitir el efecto de los bits SUID ni SGID |
| nouser | Prohibir a un usuario ordinario (esto es, distinto de root) montar el sistema de archivos. Esto es lo predeterminado |
| ro | Montar el sistema de archivos en modo de sólo lectura. |
| rw | Montar el sistema de archivos de lectura y escritura |
| suid | Permitir el efecto de los bits SUID y SGID |
| sync | Toda la E/S al sistema de archivos deberÃa hacerse sÃncronamente. |
| user | Permitir a un usuario ordinario montar el sistema de archivos |
| users | Permite a cualquier usuario el montaje/desmontaje de el sistema de archivos |
Ejemplos
Ejemplo 1: Para mostrar los filesystems actualmente montados en el sistema
$ mount
Ejemplo 2: Montar un CD-ROM situado en /dev/hdc en el directorio existente /cdrom de sólo lectura:
$ mount -rt iso9660 /dev/hdc /cdrom
Si se monta sin la opción -r, se mostrará un aviso de que el CD-ROM está protegido contra escritura y se montará como sólo lectura, serÃa el caso del comando:
$ mount -t iso9660 /dev/hdc /cdrom
Ejemplo 3: Montar un diskette (/dev/fd0) con sistema MS-DOS en el directorio /floppy
$ mount -t msdos /dev/fd0 /floppy
Ejemplo 4: Si da el caso de que la partición /home y /swap fueron desactivadas por algún motivo se podrÃan volver a montar con la opción -a
$ mount -av
De este modo montamos los filesystems que no lo estén y nos muestra la acción del comando conforme se va ejecutando (opción -v)
Desmontando filesystems
Los filesystems pueden ser desmontados usando el comando umount. Cuando un filesystem es desmontado, los contenidos del árbol principal se actualizan, no pudiendose usar (el umount) si el sistema de archivos que se quiere desmontar está en uso.
Si el sistema de archivos está en uso el comando umount dará un error. Esto puede ocurrir por ejemplo cuando tenemos abierto un archivo de un CD-ROM o un proceso está haciendo uso del mismo. Otros errores pueden surgir si quitamos dispositivos removibles sin antes desmontarlos: perdida de datos, corrupción de los mismos etc etc
Sintaxis de umount
umount [opciones] device umount [opciones] directorios
Descripción: Desmonta un filesystem de un dispositivo o un directorio.
Opciones de umount
-a: Desmonta todos los filesystems descritos en /etc/mtab. Este archivo está mantenido por los comando mount y umount en tiempo real, se usa normalmente cuando se apaga/reinicia el PC.
-t fstype:Desmonta sólo los filesystems del tipo especificado
Ejemplos
Ejemplo 1: Desmontar el cdrom (/dev/hdc) montado en /cdrom
$ umount /cdrom
o bien
$ umount /dev/hdc
Ejemplo 2: Desmontar todos los sistemas de archivos NFS:
$ umount -at nfs
Cuotas de disco
Establecer y Consultar Cuotas de Disco
La administración del espacio en disco puede ser una tarea problemática. El espacio disponible es un recurso limitado que muy a menudo se consume a un ritmo alarmante provocando que un filesystem bien proporcionado se vuelva insuficiente al cabo del tiempo. En los sistemas multiusuario – no importa lo grande que sea el filesystem – los usuarios siempre terminarán llenándolo. Y a nadie le interesa que un filesystem se llene demasiado pronto. Una forma de prevenir que ésto ocurra es el establecimiento de cuotas de disco, de esta forma podrán establecerse lÃmites a la cantidad de espacio en disco consumido por usuarios independientes o por grupos de éstos.
TÃpicamente un tamaño de cuota es mucho menor que el espacio libre del filesystem donde se configura, de esta forma se puede evitar que un usuario o un grupo consuma demasiado espacio. Pueden configurarse cuotas para cada filesystem incluido en /etc/fstab, aunque normalmente solo se aplican en aquellos filesystems donde los usuarios finales guardan sus archivos (p.e., /home/nombreusuario). No es necesario establecer una cuota en /usr, por ejemplo, ya que los usuarios finales no pueden guardar archivos allÃ. Pueden configurarse cuotas para los usuarios individuales incluidos en /etc/passwd y para los grupos en /etc/group.
Cuotas de Limitación
Pueden establecerse hasta cinco tipos de cuotas de limitación por cada filesystem. Estas limitaciones se especifican en bloques de disco, normalmente de 1024 bytes cada uno:
LÃmite hard por usuario: El lÃmite hard es la máxima cantidad de espacio en disco que un usuario puede disponer en el sistema. Una vez que el usuario alcanza este lÃmite ya no se le permitirá realizar nuevas escrituras en el disco.
LÃmite soft por usuario: Cada usuario puede almacenar datos libremente en el filesystem hasta que alcance el lÃmite soft. Éste lÃmite actúa como una especie de zona de aviso, advirtiendo al usuario que debe ir limpiando sus directorios pero, a diferencia del lÃmite hard se le permite seguir trabajando. Cuando el espacio consumido por un usuario supera el lÃmite soft pero no el lÃmite hard se envÃan mensajes de aviso al terminal del usuario advirtiéndole que está excediendo su cuota pero las operaciones de escritura terminarán correctamente.
LÃmite hard por grupo: Se trata del lÃmite final asignado a un grupo por el sistema de cuotas. Una vez que se alcanza este lÃmite, ninguno de los miembros de dicho grupo podrán realizar escrituras en el disco, incluso aunque no hayan excedido sus lÃmites individuales.
LÃmite soft por grupo: Este lÃmite se comporta de la misma forma que el de usuario pero se controla en base al espacio consumido por el grupo en lugar de por el usuario individual.
Periodo de gracia:
Una vez que se alcanza el lÃmite soft comienza el periodo de gracia para el usuario o el grupo. Cuando expira éste periodo de gracia, el lÃmite soft se convierte en lÃmite hard hasta que se hayan eliminado los archivos suficientes para que se resuelva el exceso de cuota. El periodo de gracia puede ajustarse para cualquier número de meses, semanas, dÃas, horas, minutos o segundos. Un valor tÃpico es el de siete dÃas.
Todos estos lÃmites pueden establecerse utilizando el comando edquota, que se detallará a continuación.
Cuando una escritura en disco excede un lÃmite hard o un lÃmite soft con el periodo de gracia expirado, solo se completará una parte de la operación de escritura dejando un archivo truncado y, probablemente, inservible.
IMPORTANTE: Puede que el usuario no haya podido ver los mensajes de fin de cuota porque la aplicación haya ocultado la shell y los mensajes de dicha aplicación lo lleven a confusión al indicarle que el disco está lleno o protegido de escritura.
Comandos de cuotas
Linux proporciona una serie de comandos para gestión y consulta de las cuotas en los filesystems. Parte de la configuración requerida para establecer las cuotas inicialmente ha de hacerse a mano y sin ninguno de los comandos especÃficos de cuotas. Este proceso se explicará en la siguiente sección: Habilitando las Cuotas.
quota
Muestra las limitaciones de cuota en usuario o en grupo. La opción -u está activada por defecto. Solo el superusuario puede utilizar la opción -u y usuario para ver las limitaciones de otros usuarios. El resto de los usuarios usuarios podrán usar la opción -g y grupo para ver solamente las limitaciones de los grupos de los que sean miembros, siempre y cuando tengan permiso de lectura en los archivos quota.group.
Sintaxis de quota
quota [-u] [opciones] usuario quota -g [opciones] grupo
| Opción | Uso |
|---|---|
| -q | Establece el modo “silencioso� que solo muestra las situaciones de exceso de cuota. |
| -v | Establece el modo explÃcito que muestra las cuotas incluso cuando no se ha consumido ningún espacio en disco o no se hayan definido. |
Ejemplos
Ejemplo 1 Siendo root, examina todas las cuotas del usuario fulanito :
# quota -uv fulanito
Disk quotas for user fulanito (uid 500): Filesystem blks quota limit grace files quota limit grace /dev/sda9 9456 10000 10200 32 0 0 /dev/hda1 23 0 0 17 0 0
Este ejemplo muestra que fulanito está cerca de consumir su lÃmite soft de 10,000 bloques, con un lÃmite hard de 10,200 bloques en /dev/sda9, y que no tiene cuota establecida en /dev/hda1. La lÃnea correspondiente /dev/hda1 se muestra debido a la utilización de la opción -v. No se muestran los valores correspondientes al periodo de gracia porque aun no se ha excedido el lÃmite soft.
Ejemplo 2 Siendo el usuario fulanito, examina las cuotas para el grupo finanzas, del que dicho usuario es miembro:
$ quota -gv finanzas
Disk quotas for group finanzas (gid 501): Filesystem blks quota limit grace files quota limit grace /dev/sda9 1000* 990 1000 6days 34 3980 4000 /dev/hda1 0 0 0 0 0 0
En este caso, el grupo finanzas ha excedido el escaso lÃmite soft de 990 bloques y ha alcanzado su lÃmite hard de 1000 bloques. (Probablemente no se pudo completar la operación de escritura que escribió el bloque número 1000.) El periodo de gracia original en este ejemplo se estableció en siete dÃas de los cuales quedan seis dÃas restantes, lo que quiere decir que ha pasado un dÃa desde que se excedió el lÃmite soft.
quotaon
Activa las cuotas configuradas previamente en uno o más filesystems.
Sintaxis
quotaon [opciones] [filesystems] quotaon [opciones] -a
| Opción | Uso |
|---|---|
| -a | Activa las cuotas en todos los filesystems incluidos en /etc/fstab y que estén marcados como de lectura-escritura y con cuotas. Normalmente se utiliza en el proceso de arranque para activar las cuotas. |
| -g | Activa las cuotas de grupo. Esta opción no es necesaria si se utiliza -a ya que ésta otra activa tanto las cuotas de usuario como las de grupo. |
| -u | Activa las cuotas de usuario; esta es la opción por defecto. |
| -v | Establece el modo explÃcito de tal forma que se muestra un mensaje por cada filesystem en el que se han activado las cuotas. |
Ejemplos
Ejemplo 1:Activar todas las cuotas definidas en /etc/fstab :
# quotaon -av
Ejemplo 2 Activar las cuotas de usuario sólo en el filesystem /home:
# quotaon -uv /home
quotaoff
Desactiva las cuotas de disco en uno o más filesystems.
Sintaxis
quotaoff [opciones] [filesystems] quotaoff [opciones] -a
| Opción | Uso |
|---|---|
| -a | Desactiva las cuotas en todos los filesystems en /etc/fstab. |
| -g | Desactiva las cuotas de grupo. Esta opción no es necesaria si se utiliza la -a ya que ésta última incluye tanto las cuotas de usuario como las de grupo. |
| -u | Desactiva las cuotas de usuario; esta es la opción por defecto. |
| -v | Establece el modo explÃcito que mostrará un mensaje para cada filesystem en el que se desactiven las cuotas. |
Ejemplos
Desactivar todas las cuotas mostrando todos los mensajes:
# quotaoff -av
quotacheck
Examina los filesystems y compila las bases de datos de cuotas. Esta comando no está incluido especÃficamente en los objetivos del examen LPI 101, pero es un componente importante en el sistema de cuotas de Linux. El comando quotacheck -a deberÃa ser ejecutado de forma regular (posiblemente semanalmente) por medio de cron.
Sintaxis
quotacheck [opciones] filesystems quotacheck [opciones] -a
| Opción | Uso |
|---|---|
| -a | Comprueba todas las cuotas de los filesystems incluidos en /etc/fstab. Se comprobarán tanto las cuotas de usuario como las de grupo según se indique en las opciones usrquota y grpquota. |
| -g grupo | Compila solamente la información de grupo. |
| -u usuario | Compila solamente la información de usuario; ésta es la opción por defecto. No obstante, si se especificase la opción -g, entonces habrÃa que incluir esta si se desea que se procesen también las cuotas de usuario. |
| -v | Establece el modo explÃcito que mostrará toda la información de lo que el programa está haciendo. Esta opción indica que el programa está activo mediante un sÃmbolo giratorio en el terminal. Ésto queda muy bonito pero podrÃa ser un problema si estamos conectados mediante un módem lento. |
Ejemplo
Ejemplo 1 Inicializa todos los archivos de cuotas:
- quotaoff -a
- quotacheck -aguv
- quotaon -a
Para actualizar los archivos de bases de datos de cuotas debemos desactivar primero las mismas.
Ejemplo 2 Con las cuotas activas, actualizar las cuotas de usuario en memoria para el filesystem /home :
- quotacheck -v /home
edquota
Modifica las cuotas de usuario o grupo. Este es un comando interactivo que utiliza un editor de texto para configurar los parámetros de cuotas para usuarios o grupos. Por defecto se utiliza el editor vi a menos que las variables de entorno EDITOR o VISUAL apunten a otro editor como Emacs. Cuando se envÃa el comando, se ejecuta un editor con un archivo temporal que contiene las opciones de cuotas. Al guardar el archivo temporal, el editor finaliza y los cambios se guardan en las bases de datos de cuotas. En la primera forma del comando, se modifica una lista de usuarios o grupos separados por espacios en blanco especificados en el apartado nombres. Si se incluye la opción -p y proto-usuario, las cuotas de ese usuario o grupo se utilizarán para los nombres y no se lanzará ningún editor. En la segunda forma del comando, con la opción -t, se editarán interactivamente los lÃmites soft para cada filesystem.
Sintaxis
edquota [-p proto-usuario] [opciones] nombres edquota [opciones] -t
| Opción | Uso |
|---|---|
| -g | Modifica las cuotas de grupo. Si se especifica -g, se asumirá que todos los nombres son grupos y no usuarios, incluso si se especificase también -u. |
| -p proto-usuario | Duplica las cuotas del usuario prototipo para cada grupo o usuario especificado. Este es el mecanismo mas habitualmente utilizado para inicializar al mismo tiempo las cuotas de varios usuarios o grupos. |
| -t | Modifica los lÃmites soft. Este comando interpreta unidades de sec(segundos), min(minutos), hour (horas), day (dÃas), week (semanas), y month (meses). |
| -u | Modifica las cuotas de usuario. Es la opción por defecto, pero se ignorará si se especificase la opción -g |
Ejemplos
Los siguientes ejemplos muestran la salida de los comandos utilizando el editor vi.
Ejemplo 1 Modifica las cuotas de usuario para fulanito :
# edquota -u fulanito
Quotas for user fulanito:
/dev/sda9: blocks in use: 87, limits (soft = 99900,
hard = 100000)
inodes in use: 84, limits (soft = 0, hard = 0)
/dev/hda1: blocks in use: 0, limits (soft = 0, hard = 0)
inodes in use: 0, limits (soft = 0, hard = 0)
"/tmp/EdP.auHTZJ0" 5 lines, 241 characters
En este ejemplo, a fulanito se le ha definido en /dev/sda9 un lÃmite soft de 99.900 bloques, un lÃmite hard de 100.000 bloques, y ningún lÃmite de archivos. No tiene ninguna limitación en /dev/hda1.
Ejemplo 2 Modificar los lÃmites soft para usuarios en todos los filesystems:
# edquota -tu
Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/sda9: block grace period: 7 days, file grace period: 3 days /dev/hda1: block grace period: 7 days, file grace period: 3 days "/tmp/EdP.aiTShJB" 5 lines, 249 characters
En este caso se han establecido unos periodos de gracia de siete dÃas para bloques (espacio en disco) y de tres dÃas para archivos (inodos).
repquota
Se utiliza para obtener un informe de la situación de las cuotas. En la primera forma del comando, repquota mostrará un informe por usuario o por grupo de las cuotas de los filesystems indicados. En la segunda forma, la opción -a hará que se muestre un sumario de todos los filesystems con cuotas. Este comando solo podrá ejecutarlo el usuario root, a menos que los archivos de bases de datos de las cuotas tengan permisos de lectura universales. Para cada usuario se imprime el número de archivos y el espacio en disco utilizados en ese momento junto con las cuotas creadas con edquota.
Sintaxis
repquota [opciones] filesystems repquota -a [opciones]
| Opción | Uso |
|---|---|
| -a | Hace informes de todas las cuotas de todos los filesystems de lectura-escritura incluidos en /etc/fstab. Se mostrarán tanto las cuotas de usuario como las de grupo según se indique en las opciones usrquota y grpquota. |
| -g | Muestra las cuotas de grupos. |
| -u | Muestra las cuotas de usuarios; es la opción por defecto. |
| -v | Activa el modo explÃcito, el cual añade una cabecera descriptiva a la salida del comando. |
Ejemplo
Informe de las cuotas de usuario para el filesystem /home:
# repquota -v /home
Habilitando las cuotas
Para poder utilizar las cuotas, en primer lugar hay que habilitarlas (El kernel debe estar compilado con soporte para cuotas. En el caso improbable de que no fuese asÃ, habrÃa que recompilarlo con esta opción.). No es un proceso dificultoso pero, desgraciadamente, tampoco es simple. Para aclarar un poco este proceso, en esta sección se incluirá un breve tutorial explicando como habilitar las cuotas de usuario y de grupo en el filesystem /dev/sda9 montado bajo /home. Hay que tener en cuenta que pueden habilitarse cuotas solo de usuario, de grupo o ambas según sea necesario.
- 1. Definir las opciones en /etc/fstab. En la lÃnea que contiene el filesystem /home, añadir las opciones usrquota y grpquota a la opción default, como en este ejemplo:
/dev/sda9 /home ext2 defaults,usrquota,grpquota 1 2
- Estas opciones indican a las utilidades de configuración de cuotas que particiones deben ser tratadas por dichas utilidades cuando éstas busquen en /etc/fstab.
- 2. Crear los archivos quota.user y quota.group en la raÃz del filesystem /home y dar permisos sólo para root:
# touch /home/quota.user /home/quota.group # chmod 600 /home/quota.user /home/quota.group
- Estos dos archivos son las bases de datos de las cuotas de usuarios y grupos. Cada filesystem con cuotas utilizará sus propias bases de datos. Al habilitar las cuotas, estos archivos contendrán datos binarios (no son archivos de texto). Si se quisiera que los usuarios puedan examinar las cuotas de los grupos a los que pertenecen, el archivo quota.group necesitará un permiso de 644 en lugar de 600.
- 3. Ejecutar quotacheck para inicializar las bases de datos:
# quotacheck -avug Scanning /dev/sda9 [/home] done Checked 236 directories and 695 files Using quotafile /home/quota.user Using quotafile /home/quota.group
- 4. Ahora, verificar que los archivos de bases de datos se han inicializado realmente, para ello nos aseguramos que su tamaño no sea cero (en este ejemplo cada uno ocupa 16.192):
# ls -al /home/quota.* -rw------- 1 root root 16192 Dec 27 19:53 /home/quota.group -rw------- 1 root root 16192 Dec 27 19:53 /home/quota.user
- 5. Ejecutar quotaon para activar el sistema de cuotas:
# quotaon -a
- 6. Verificar que el script de inicialización del sistema ( /etc/rc.d/rc.sysinit o similar) activará las cuotas cada vez que el sistema cargue.
- Puede ser algo similar al ejemplo siguiente aunque puede variar de sistema a sistema:
if [ -x /sbin/quotacheck ] then echo "Checking quotas." /sbin/quotacheck -avug echo " Done." fi if [ -x /sbin/quotaon ] then echo "Turning on quotas." /sbin/quotaon -avug fi
- 7. Añadir un script al directorio crontab del sistema (por ejemplo /etc/crontab.weekly) para que se ejecute quotacheck rutinariamente. El script del ejemplo puede ser válido:
#!/bin/bash /sbin/quotacheck -avug
- Alternativamente, podrÃa ponerse /sbin/quotacheck en el archivo crontab de root (utilizando el comando crontab -e) para su ejecución semanal, como en este ejemplo:
# ejecutar quotacheck semanalmente 0 3 * * 0 /sbin/quotacheck -avug
- En este momento, el filesystem /home está listo para aceptar cuotas de usuario o de grupo, controlarlas y emitir informes sobre ellas.