Administración del sistema de archivos

De Wikiunix

Administración del Sistema de Archivos
Esta sección está dedicada a un nivel más complejo de los sistemas de archivos y a la forma de trabajar de un administrador de sistemas Unix respecto a ellos
Tiempo 4 horas
Nivel Unixero profesional
Bibliografía LSB
Prerrequisitos Sistema de archivos

Linux Standard Base

La Base Estándar para Linux (Linux Standard Base, abreviado LSB), es un proyecto conjunto de varias Distribuciones de Linux bajo la estructura organizativa del Free Standards Group con el objeto de crear y normalizar la estructura interna de los sistemas operativos derivados de Linux. La LSB está basada en la Especificación POSIX, la Especificación Única de UNIX (Single UNIX Specification) y en varios otros estándares abiertos, aunque extiende éstos en ciertas áreas.

De acuerdo a la definición de la propia LSB:

El objetivo de la LSB es desarrollar y promover un conjunto de estándares que aumentarán la compatibilidad entre las distribuciones de Linux y permitirán que los programas de aplicación puedan ser ejecutados en cualquier sistema que se adhiera a ella. Además, la LSB ayudará a coordinar esfuerzos tendentes a reclutar productores y proveedores de programas que creen productos originales para Linux o adaptaciones de productos existentes.

Mediante un proceso de certificación es posible obtener la conformidad a la LSB de un producto. Dicha certificación la lleva a cabo el Open Group en colaboración con el Free Standards Group (Grupo de Estándares Libres).

Como ejemplo, la LSB específica: bibliotecas estándar, un conjunto de órdenes y utilerías que extienden el estándar POSIX, la estructura jerárquica del sistema de archivos, los niveles de ejecución, y varias extensiones al sistema gráfico X Window.


Puntos de montaje

Aparte del sistema de ficheros principal (/) y de sus posibles divisiones en particiones extras (/usr /var, /tmp, /home), cabe tener en cuenta la posibilidad de dejar puntos de montaje preparados para el montaje de otros sistemas de ficheros, ya sea particiones de disco u otros dispositivos de almacenamiento.

En las máquinas en que GNU/Linux comparte la partición con otros sistemas operativos, mediante algún sistema de arranque (LILO o GRUB), pueden existir varias particiones asignadas a los diferentes operativos. Muchas veces es interesante compartir datos con estos sistemas, ya sea para leer sus ficheros o modificarlos. A diferencia de otros sistemas (que sólo tienen en cuenta sus propios datos y sistemas de ficheros, y en los cuales en algunas versiones no se soportan algunos de sus propios sistemas de ficheros), GNU/Linux es capaz de tratar, como hemos visto, con una cantidad enorme de sistemas de ficheros de diferentes operativos y poder compartir la información.


Explicación

Si en los PC personales hemos instalado GNU/Linux, seguramente encontraremos más de un operativo, por ejemplo, otra versión de GNU/Linux con ext2 o ext3 de sistema de ficheros y otros. Por ejemplo, sistema de ficheros FAT, FAT32 (o vfat para Linux) o NTFS (ntfs para Linux).

Nuestro sistema GNU/Linux puede leer datos (o sea ficheros y directorios) de todos estos sistemas de ficheros y escribir en la mayoría de ellos.

En el caso de NTFS, hasta ciertos momentos, existieron problemas en la escritura que se encontraba en forma experimental en la mayoría de drivers de Kernel. Esto se debía principalmente a las diferentes versiones que van apareciendo del sistema de ficheros, ya que existen dos versiones principales llamadas NTFS y NTFS2, y algunas extensiones como los llamados volúmenes dinámicos, o los sistemas de ficheros encriptados. Acceder con según que drivers presentaba ciertas incompatibilidades, que podrían causar corrupciones de datos o errores en el sistema de ficheros.

Gracias a FUSE (un módulo integrado en el kernel a partir de la versión 2.6.11) se ha permitido un desarrollo más flexible de sistemas de ficheros, directamente en espacio de usuario (de hecho FUSE actúa como un “puente” entre las peticiones del kernel, y el acceso que se hace desde el driver).

Gracias a las posibilidades de FUSE, se tiene un soporte más o menos completo de NTFS, en especial desde la aparición del driver (basado en FUSE) ntfs-3g (http://www.ntfs-3g.org), y la combinación con las utilidades ntfsprogs.

Para que se puedan leer o escribir los datos, la partición tiene que estar disponible dentro de nuestro sistema de ficheros raíz (/). Por lo tanto, hay que llevar a cabo un proceso de "montaje" del sistema de ficheros en algún punto de nuestro árbol de directorios. Se seguirá el mismo proceso si se trata de un dispositivo de almacenamiento.

Dependiendo de la distribución, se usan unos u otros, o también los podemos crear nosotros. Normalmente suelen existir o bien como subdirectorios de la raíz, por ejemplo /cdrom, /win, /floppy, o bien son subdirectorios dentro de /mnt, el punto estándar de montaje (aparecen como /mnt/cdrom, /mnt/floppy...), o el directorio /media preferido últimamente por las distribuciones. Según el estandard FHS, /mnt se debería usar para montajes temporales de sistemas de archivo, mientras /media se utilizaría para montar dispositivos removibles.

El proceso de montaje se realiza mediante la orden mount con el siguiente formato:

mount -t filesystem-type device mount-point

El tipo de sistema de ficheros puede ser:

  • msdos (fat)
  • vfat (fat32)
  • ntfs (ntfs)
  • iso9660 (para cdrom)

El dispositivo es la entrada correspondiente en el directorio /dev a la localización del dispositivo:

  • Los IDE tenían /dev/hdxy donde:
    • x es a (1 master), b (1 slave), c (2 master) o d (2 slave)
    • y es el número de partición
  • Los SCSI son /dev/sdx donde:
    • x es a,b,c,d ... (según el ID SCSI asociado 0,1,2,3,4 ...).

Ejemplos

  • Montar el CD-ROM (si es el IDE que está en el segundo IDE de forma máster) en el punto /mnt/cdrom.
mount -t iso9660 /dev/hdc /mnt/cdrom
  • Montar el CD-ROM; /dev/cdrom se usa como sinónimo (es un enlace) del dispositivo donde está conectado:
mount -t iso9660 /dev/cdrom /mnt/cdrom
  • Montar el disquete /dev/fd0H1440. Sería la disquetera A en alta densidad (1.44 MB), también puede usarse /dev/fd0:
mount -t vfat /dev/fd0H1440 /mnt/floppy

Si estas particiones son más o menos estables en el sistema (o sea, no cambian frecuentemente) y las queremos utilizar, lo mejor será incluir los montajes para que se hagan en tiempo de ejecución, al iniciar el sistema, mediante la configuración del fichero /etc/fstab:

Archivo: /etc/fstab
# /etc/fstab: Información estática del sistema de ficheros

#

#<Sis. ficheros><Punto montaje><Tipo><Opciones><volcado><pasada>

/dev/hda2 / ext3 errors = remount,ro 0 1

/dev/hdb3 none swap sw 0 0

proc /proc proc defaults 0 0

/dev/fd0 /floppy auto user,noauto 0 0

/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0

/dev/sdb1 /mnt/usb vfat user,noauto 0 0


Por ejemplo, esta configuración incluye algunos de los sistemas estándar, como la raíz en /dev/hda2, la partición de swap que está en hdb3, el sistema proc (que utiliza el kernel para guardar su información). Y el disquete, el CD-ROM, y en este caso un disco USB de tipo Flash (que se detecta como un dispositivo SCSI). En algunos casos, se especifica auto como tipo de sistema de ficheros. Esto permite que se autodetecte el sistema de ficheros. Si se conoce, es mejor indicarlo en la configuración, y por otra parte, el noauto en las opciones permite que no sea montado de forma automática siempre, sino bajo petición (o acceso).

Si tenemos esta información en el fichero, el proceso de montaje se simplifica mucho, ya que se hará o bien en ejecución, en arranque, o bien bajo demanda (para los noauto). Y puede hacerse ahora simplemente pidiendo que se monte el punto de montaje o el dispositivo:
mount /mnt/cdrom
mount /dev/fd0
dado que el sistema ya tiene el resto de la información. El proceso contrario, el desmontaje, es bastante sencillo. Tan sólo hay que ejecutar la orden umount con punto o dispositivo:
umount /mnt/cdrom
umount /dev/fd0
En el caso de medios extraíbles, tipo CD-ROM (u otros), puede usarse eject para la extracción del soporte físico:
eject /dev/cdrom
o, en este caso, sólo:
eject
Las órdenes mount y umount montan o desmontan todos los sistemas disponibles. En el fichero /etc/mtab se mantiene una lista de los sistemas montados en un momento concreto, que se puede consultar utilizando:
mount

Control de espacio en disco

Cuotas

Asignación de cuotas de disco
Administración de uso de espacio en disco
Tiempo 3 horas
Nivel Unixero profesional
Bibliografía Apéndice: Asignando cuotas de discoAdministrando cuotas de disco Joel Barrios Dueñas
Prerrequisitos Jerarquía de directoriosSoporte para pruebasSistema de archivos

Contenido


La utilización de cuotas de disco permite a los administradores de sistemas realizar la gestión eficiente del espacio compartido en disco por múltiples usuarios.


Alcance

Las cuotas restringen la capacidad de los usuarios para acceder hacia los recursos de sistema. En concreto, en un sistema UNIX se puede limitar:

  • El uso de bloques de disco (tamaño usado)
  • Número de inodos (entradas del sistema de ficheros)

Cuando una cuota es excedida, se aplica una política determinada por el administrador. Las cuotas se administran por cada sistema de archivos y se establece de manera individual para para usuario y/o grupo.

Instalación

apt-get install quota

Procedimientos

  • Debe iniciarse el sistema en nivel de ejecución 1 (mono usuario), ya que se requiere no haya procesos activos utilizando contenido de la partición a la cual se le aplicará la cuota de disco.
  • Obviamente, durante la instalación, debió asignarse una partición dedicada para, por mencionar un ejemplo, los directorios /var y /home.
  • Con la finalidad de añadir el soporte para cuotas en las particiones anteriormente mencionadas, se debe añadir en el fichero /etc/fstab los parámetros usrquota y grpquota a las líneas que definen la configuración de las particiones /var y /home:
Archivo: /etc/fstab
LABEL=/var /var ext3 defaults,usrquota,grpquota 1 2
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2


  • Debe remontar las particiones para que surtan efecto los cambios inmediatamente (o esperar al próximo inicio del sistema):
mount -o remount /var
mount -o remount /home
  • Se deben crear los ficheros aquota.user, aquota.group, quota.user y quota.group, los cuales se utilizarán en adelante para almacenar la información y estado de las cuotas en cada partición.
cd /var
touch aquota.user aquota.group quota.user quota.group
cd /home
touch aquota.user aquota.group quota.user quota.group
  • Ejecutar:
quotacheck -avug

La primera vez que se ejecuta el mandato anterior es normal marque advertencias refiriéndose a posibles ficheros truncados que en realidad no eran otra cosa sino ficheros de texto simple vacíos a los cuales se les acaba de convertir en formato binario. Si se ejecuta de nuevo quotacheck -avug, no deberá mostrar advertencia alguna.

  • Para activar las cuotas de disco recién configuradas, solo bastará ejecutar:
quotaon /var
quotaon /home
  • Vaya al nivel de ejecución que suala usar (3 o 5 normalmente) a fin de aplicar cuota de disco a algunos usuarios:
init 3

Edquota

Las columnas que se muestran al utilizar edquota son:

  • Blocks: Bloques. Corresponde a la cantidad de bloques de disco (dependiendo del disco tendrán un tamaño u otro, normalmente son de 1Kb mínimo) que está utilizando el usuario.
  • Inodes: Inodos. Corresponde al número de ficheros que está utilizando el usuario. Un Inodo (también conocido como Index Node) es un apuntador hacia sectores específicos de disco duro en los cuales se encuentra la información de un fichero. Contiene además la información acerca de permisos de acceso así como los usuarios y grupos a los cuales pertenece el fichero.
  • Soft: Límite de gracia. Limite de bloques que el usuario puede utilizar y que puede rebasar hasta que sea excedido el periodo de gracia (de modo predeterminado son 7 días).
  • Hard: Límite absoluto. Limite que no puede ser rebasado por el usuario bajo circunstancia alguna.

Asignar cuotas de disco a cualquier usuario o grupo solo hará falta utilizar edquota citando el nombre del usuario al cual se le quiere aplicar:

edquota <usuario>

Lo anterior deberá devolver algo como lo siguiente a través de Vi u otro Editor de texto simple:

Archivo: quota
Disk quotas for user fulano (uid 501):

Filesystem blocks soft hard inodes soft hard

/dev/hda7 0 0 0 0 0 0

/dev/hda5 24 0 0 10 0 0


Cuota absoluta

Suponiendo que se quiere asignar una cuota de disco de 6 MB para el usuario <usuario> en en /dev/hda7 y /dev/hda5, se utilizaría lo siguiente:

Archivo: quota
Disk quotas for user usuario (uid 501):

Filesystem blocks soft hard inodes soft hard

/dev/hda7 0 0 6144 0 0 0

/dev/hda5 24 0 6144 10 0 0


El usuario siempre podrá rebasar una cuota de gracia pero nunca una cuota absoluta.

Cuota de gracia

El sistema tiene de modo predeterminado un periodo de gracia de 7 días que se puede modificar con el mandato

edquota -t

donde se puede establecer un nuevo periodo de gracia por días, horas, minutos o segundos.

Archivo: quota
Grace period before enforcing soft limits for users:

Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period

/dev/hdb7 7days 7days

/dev/hdb5 7days 7days


La cuota de gracia establece los límites de bloques o inodos que un usuario tiene en una partición. Cuando el usuario excede el límite establecido por la cuota de gracia, el sistema advierte al usuario que se ha excedido la cuota del disco sin embargo permite al usuario continuar escribiendo hasta que trascurre el tiempo establecido por el periodo de gracia, tras el cual al usuario se le impide continuar escribiendo sobre la partición. Suponiendo que quiere asignar una cuota de gracia de 6 MB en /dev/hda7 y /dev/hda5, la cual podrá ser excedida hasta por 7 días, se utilizaría lo siguiente:

Archivo: quota
Disk quotas for user usuario (uid 501):

Filesystem blocks soft hard inodes soft hard

/dev/hda7 0 6144 0 0 0 0

/dev/hda5 24 6144 0 10 0 0


Aplicando cuotas de forma masiva

Si se quiere que todo aplique para los usuarios existentes, a partir de UID 510, por ejemplo, suponiendo que tiene al usuario <user> como molde (note por favor el acento grave en el mandato justo antes de awk, no es una comilla ni apóstrofe):
edquota -p user `awk -F: '$3 > 510 {print $1}' /etc/passwd`

Comprobaciones

Utilice el mandato edquota con el usuario <usuario>: {{Comando|edquota <usuario>}

Asigne al usuario <usuario> una cuota de disco de 50 MB en todas las particiones con cuota de disco habilitada:

Archivo: quota
Disk quotas for user usuario (uid 501):

Filesystem blocks soft hard inodes soft hard

/dev/hda7 0 0 51200 0 0 0

/dev/hda5 24 0 51200 10 0 0


Desde otra terminal acceda hacia el sistema como el usuario <usuario> y ejecute el mandato
quota
y observe con detenimiento la salida:
Archivo: quota
Disk quotas for user fulano (uid 501):

Filesystem blocks quota limit grace files quota limit grace

/dev/hda7 0 0 51200 1 0 0

/dev/hda5 24 0 51200 10 0 0


Realice una copia del directorio /usr/lib como el subdirectorio ~/prueba-cuotas dentro de su directorio de inicio:
cp -r /usr/lib ~/prueba-cuotas

Llegará un momento en el que el sistema indicará que ya no es posible continuar copiando contenido dentro de ~/prueba-cuotas debido a que se ha agotado el espacio en la partición.

Utilice de nuevo el mandato
quota
y observe con detenimiento la salida, en donde aparecerá un asterisco justo junto a la cantidad en la columna de bloques, el cual indica que se ha excedido la cuota del disco:
Archivo: quota
Disk quotas for user fulano (uid 501):

Filesystem blocks quota limit grace files quota limit grace

/dev/hda7 0 0 51200 1 0 0

/dev/hda5 51200* 0 51200 7439 0 0


Para poder volver a escribir sobre la partición, es necesario liberar espacio. Elimine por completo el directorio ~/prueba-cuotas y vuelva a utilizar el mandato quota:
rm -fr ~/prueba-cuotas
quota

Véase también

Herramientas personales