Skip to content
This repository was archived by the owner on Mar 16, 2020. It is now read-only.

Practica 4

Esteban Debole edited this page Jun 3, 2019 · 9 revisions

File Systems

1. ¿Qué es un file system?

Un file system es una abstracción con metodos y estructuras que permite la creación, eliminación, modificación y búsqueda de archivos y su organización en directorios. Archivos son almacenados en una estructura jerárquica de tipo árbol ( “/” en Linux, “C” en Windows). También administra el control de acceso a los archivos y el espacio en disco asignado a él.

2. Describa las principales diferencias y similitudes entre los file systems: FAT, NTFS, Ext(2,3,4), XFS y HFS+

FAT32 (1995)

Diseñado originalmente para discos pequeños y estructuras de carpetas simples. Tamaño máximo de archivo 4GB. Tamaño máximo de File System: 16 TB

NTFS (1993)

El sistema de archivos con registro en diario más avanzado de Microsoft, que brinda acceso y estabilidad de archivos más rápido que los sistemas de archivos anteriores de Microsoft. _Tamaño máximo de archivo 16EB. Tamaño máximo de File System 16EB _

ext2 (1994)(Primer sector de la partición no es administrado por Ext2)

El más completo de los sistemas de archivos nativos de Linux. Está diseñado para ser fácilmente compatible hacia arriba. Esta dividido en “block groups” de igual tamaño (excepto el último) con el objetivo de reducir la fragmentacion y aumentar la velocidad de acceso. Cada archivo en el file system es representado por un inodo(inodo contiene metadatos de los archivos y punteros a bloques de datos).Nombre del archivo no se almacena en el inodo. Los datos se almacenan en bloques de 1024, 2048 ó 4096 bytes. Elegible al momento de generar el file system(mke2fs). No se puede modificar Tamaño máximo de archivo 2TB. Tamaño máximo de File System: 32 TB

ext3(2001) El sistema de archivos ext3 tiene todas las caracte rísticas del sistema de archivos ext2. La diferencia es la mejora que se basa en la incorporación del “journaling”, que permite reparar posibles inconsistencias en el file system. Esto mejora el rendimiento y el tiempo de recuperación en caso de un fallo del sistema. Esto se ha vuelto más popular que ext2. Tamaño máximo de archivo 2TB. Tamaño máximo de File System: 32 TB

ext4(2006)

Sistema de archivos de 64 bits. Mejor alocación de bloques para disminuir la fragmentación e incrementar el throughput: “persistent preallocation”, “delay and multiple block allocation”. Permite un número ilimitado de subdirectorios. Tamaño maximo de archivo 16 TB. Tamaño maximo de File Sytem 1 EB

xfs(2004)

Diseñado originalmente por Silicon Graphics para funcionar como un sistema de archivos de 64 bits. Fue diseñado para mantener un alto rendimiento con archivos y sistemas de archivos grandes. Journaling Tamaño maximo de archivo 8EB. Tamaño maximo de File System 16 EB

HFS+(1998)

Desarrollado por Apple. Divide el volumen en bloques lógicos de 512 bytes, los cuales están agrupados juntos en bloques de asignación que pueden contener uno o más bloques lógicos. Tamaño maximo de archivo 8EB. Tamaño maximo de File System 8 EB

3. En ext4, describa las siguientes características: extents, multiblock allocation, delay allocation y persistent pre-allocation (https://kernelnewbies.org/Ext4).

extents(extencion)

  • Es básicamente un montón de bloques físicos contiguos. Básicamente dice "Los datos están en los siguientes n bloques". Por ejemplo, un archivo de 100 MB se puede asignar a una sola extensión de ese tamaño, en lugar de tener que crear la asignación indirecta para 25600 bloques (4 KB por bloque). Enormes archivos se dividen en varias extensiones. Las extensiones mejoran el rendimiento y también ayudan a reducir la fragmentación, ya que una medida fomenta diseños continuos en el disco.

multiblock allocation(Asignacion multibloque)

  • Ext4 usa un "asignador multibloque" (mballoc) que asigna muchos bloques en una sola llamada, en lugar de un solo bloque por llamada, evitando una gran cantidad de sobrecarga. Esto mejora el rendimiento, y es particularmente útil con la asignación retrasada y la extensión. Esta característica no afecta el formato del disco.

delay allocation(Asignación retrasada)

  • La asignación retrasada es una característica de rendimiento (no cambia el formato del disco) que se encuentra en algunos sistemas de archivos modernos como XFS, ZFS, btrfs o Reiser 4, y consiste en retrasar la asignación de bloques tanto como sea posible, contrariamente a lo que tradicionalmente, los sistemas de archivos (como Ext3, reiser3, etc.) Por otra parte, la asignación retrasada no asigna los bloques inmediatamente cuando el proceso escribe (), sino que retrasa la asignación de los bloques mientras el archivo se mantiene en caché, hasta que realmente se va a escribir en el disco. La asignación demorada juega muy bien con las dos características anteriores mencionadas, extensiones y asignación multibloque, porque en muchas cargas de trabajo, cuando el archivo se escribe finalmente en el disco, se asignará en extensiones cuya asignación de bloques se realice con el asignador mballoc.

persistent pre-allocation(Preasignación persistente) permite a las aplicaciones preasignar espacio en el disco: las aplicaciones le dicen al sistema de archivos preasignar el espacio, y el sistema de archivos preasigna los bloques necesarios y Estructuras de datos, pero no hay datos hasta que la aplicación realmente necesite escribir los datos en el futuro. Esto tiene varios usos: primero, para evitar que las aplicaciones (como las aplicaciones P2P) lo hagan de manera ineficiente rellenando un archivo con ceros. Segundo, para mejorar la fragmentación, ya que los bloques se asignarán de una vez, lo más contiguamente posible. Tercero, para garantizar que las aplicaciones siempre tengan el espacio que saben que necesitarán.

4. ¿Qué es el particionado? ¿Qué es el UUID? ¿Para qué se lo utiliza? (Hint: ver el comando blkid)

Los discos pueden ser utilizados completamente por un FS o pueden ser particionados, es decir subdivididos. El SO las presenta como un dispositivo de bloques (como si fuera el disco entero). Están definidas en un área especial del disco llamado partition table. Cada una contiene un FS específico o una “raw partition” Los dos tipos de tablas de particiones más utilizadas son:

  • Master Boot Record:

  • UEFI:

El UUID es un identificador único universal que es utilizado para dotar a cada sistema de archivos con un identificador único.

5. ¿Es necesario tener un file system para acceder a una partición?

Si una partición no posee un filesystem se la llama “raw partition” y no se podrá guardar ni acceder a ningún archivo en ella hasta que sea formateada con algún filesystem

6. ¿Qué es el área de swap en Linux? ¿Existe un área similar en Windows?

También llamada memoria virtual, es un espacio del disco rígido reservado para alojar algunos procesos de la memoria física que no se están ejecutando o están en estado bloqueado cuando la memoria RAM está muy llena o no hay suficiente para alojar todos los procesos activos; así se simula que estos procesos inactivos siguen en memoria física cuando en realidad están en la swap, y se los mantiene allí hasta que el scheduler del sistema operativo lo decida. En windows se utiliza un archivo de tamaño variable como memoria virtual o swap mientras que en linux se utiliza el directorio /swap y es común utilizar una partición para alojarlo.

7. ¿Qué función cumple el directorio lost+found en Linux?

Los files que aparecen en lost+found son típicamente files que ya fueron desvinculados (es decir, su nombre había sido borrado) pero aún abiertos por algún process cuando el sistema se detuvo repentinamente. Otra posible aparacion es porque el sistema de files estaba en un estado incoherente debido a un error de software o hardware. Si ese es el caso, es una forma de encontrar files que se perdieron pero que la reparación del sistema logró salvar.

8. En Linux, ¿dónde se almacena el nombre y los metadatos de los archivos?

Los metadatos de los archivos son alamacenados en inodos, estos metadatos contienen: permisos, owner, grupo, flags, tamaño, número bloques usados, tiempo acceso, cambio y modificación, etc. El nombre no se almacena en el inodo, pero nose donde.

9. Seleccione uno de sus file systems (una partición) y conteste usando el comando dumpe2fs:

  • ¿Qué información describe el comando dumpe2fs?

El comando dumpe2fs proporciona información sobre el FS (ext2,ext3,ext4).

  • ¿Cuál es el tamaño de bloque del file system?

Block size: 4096 bytes

  • ¿Cuántos inodos en total contiene el file system? ¿Cuántos archivos como máximo se pueden crear con el estado actual del file system?

Inode count: 6168576 Free inodes: 5704563

  • ¿Cuántos grupos de bloques existen?

  • ¿Cómo haría para incrementar la cantidad de inodos de un file system?

10. ¿Qué es el file system procfs? ¿Y el sysfs?

ProcFS es un pseudo-filesystem montado comúnmente en el directorio /proc. Provee una interface a las estructuras de datos del kernel. Presenta información sobre procesos y otra información del sistema en una estructura jerárquica de “files". No existe en disco, el kernel lo crea en memoria

Con el paso del tiempo, /proc se convirtió en un verdadero desorden En Linux 2.6 se implementó un nuevo sistema de archivos virtual llamado \Sysfs" SysFS exporta información sobre los dispositivos de hardware y sus controladores desde el kernel hacia el espacio del usuario. También permite la configuración de parámetros. SysFS se monta en /sys

11. Consultando el sysfs, ¿cuál es el tamaño del sector lógico de su disco? ¿Y el físco?

cat /sys/fs/ext4/sda6/mb_group_prealloc -> 512

12. Usando el directorio /proc, contestar:

  • ¿Cuál es la versión de SO que tiene instalado?

cat /proc/version

  • ¿Cuál es procesador de su máquina?

cat /proc/cpuinfo

  • ¿Cuánta memoria RAM disponible tiene?

cat /proc/meminfo

  • ¿Qué archivo debería consultar si se quiere ver el mismo resultado que el comando lsmod?

cat /proc/modules

13. Usando el comando stat, contestar:

  • ¿Cuándo fue la última vez que se modificó el archivo /etc/group?

stat /etc/group -> Modify: 2019-05-17 13:24:05.760400337 -0300

  • ¿Cuál es la diferencia entre los datos Cambio (Change) y Modificación (Modify)?

Acceso: la última vez que se leyó el archivo Modificar: la última vez que se modificó el archivo (se modificó el contenido) Cambio: la última vez que se cambiaron los metadatos del archivo (por ejemplo, permisos)

  • ¿Cuál es el inodo que ocupa? ¿Cuántos bloques ocupa?

Inode: 4458641

  • ¿Qué número de inodo ocupa el directorio raíz?

Inode:2

  • ¿Es posible conocer la fecha de creación de un file en Linux? ¿Por qué?

Si, para ello debemos conocer el numero de inodo correspondiente a ese file (con ls -i file) y luego utilizar sudo debugfs -R ‘stat <INODE_NUMBER>’ UBICACION_FISICA_ARCHIVO. Ejemplo para /etc/passwd -> sudo debugfs -R 'stat <4469089>' /dev/sda6 Donde crtime es la fecha de creacion.

14. Los permisos por defecto de Linux al crear un archivo o directorio son 666 y 777 respectivamente. Cree un nuevo archivo y analice sus permisos. ¿Es así? ¿Por qué sucede esto?

Esto es correcto, pero al crear un archivo y una carpeta los permisos son otros (644 y 755 respectivamente). Esto ocurre porque cada usuario aplica una mascara(umask) sobre los arhcivo/carpetas que crea, que por defecto viene seteado en 022. Esto lo que hace es restarle 022 a todos los nuevos archivos/carpetas. Puede ser modificado mediando umask xxx.

15. ¿Qué es un link simbólico? ¿En qué se diferencia de un hard-link?

Un hard-link es un archivo que apunta al mismo contenido almacenado en disco que el archivo original. Por lo tanto los archivos originales y los hard-link dispondrán del mismo inodo y consecuentemente ambos estarán apuntando hacia el mismo contenido almacenado en el disco duro. De este modo, tal y como se puede ver representado en la imagen, un enlace duro no es más que una forma de identificar un contenido almacenado en el disco duro con un nombre distinto al del archivo original.

Los enlaces simbólicos son parecidos a los accesos directos en Windows y son los enlaces que todos los usuarios comunes acostumbran a usar de forma habitual.

Acabamos de ver que los enlaces duros apuntan a un archivo almacenado en nuestro disco duro. En contraposición, tal y como se puede ver representado en la imagen, los enlaces simbólicos apuntan al nombre de un archivo y posteriormente el archivo apunta a un contenido almacenado en nuestro disco duro.

A diferencia del caso anterior, cada enlace simbólico dispone de su propio número de inodo y es diferente al del archivo original. Por lo tanto podremos crear enlaces simbólicos de archivos y de carpetas aunque estén en discos duros diferentes o en particiones diferentes.

16. Si se tiene un archivo llamado prueba.txt y se le genera un link simbólico, ¿qué sucede con el link simbólico si se elimina el archivo prueba.txt? ¿Y si el link fuese hard-link?

Al eliminar el archivo prueba.txt lo que hacemos es eliminar la referencia a la que apunta el link simbólico, entonces este simbólico se rompe y queda inútil ya que el inodo al que apuntaba fue destruido; en cambio si fuese hard link este quedaría intacto porque el i-nodo hard link apunta al contenido del archivo, el cual no fue eliminado.

Podemos ver la cantidad de hard-link que tiene un archivo mediante el comando stat, cuando este contador llega a 0 se elimina del fs.

17. ¿Para qué sirven los permisos especiales en Linux? Analizar el Sticky-bit, SUID y SGID

Hay una serie de permisos especiales sobre el sistema de archivos de Linux que pueden resultarnos útiles para determinadas tareas o para organizar directorios colaborativos entre diferentes usuarios.

Sticky bit El Sticky bit se utiliza para permitir que cualquiera pueda escribir y modificar sobre un archivo o directorio, pero que solo su propietario o root pueda eliminarlo. Un ejemplo de uso es el directorio /tmp, que debe tener permisos para ser utilizado por cualquier proceso, pero solo el dueño o root puede eliminar los archivos que crea. Al directorio con el Sticky Bit aplicado se le agrega la t al final del descriptor de permisos.

SUID El bit SUID activo en un archivo significa que el que lo ejecute va a tener los mismos permisos que el que creó el archivo. Esto puede llegar a ser muy util en algunas situaciones pero hay que utilizarlo con cuidado, dado que puede generar grandes problemas de seguridad. Para que sea efectivo el archivo debe tener permisos de ejecución. Flag s en los permisos de ejecución del usuario

SGID El SGID es lo mismo que en el SUID, pero a nivel de grupo. Es decir, todo archivo que tenga activo el SGID, al ser ejecutado, tendrá los privilegios del grupo al que pertenece. Esto es muy usado cuando queremos configurar un directorio colaborativo: si aplicamos este bit al directorio, cualquier archivo creado en dicho directorio, tendrá asignado el grupo al que pertenece el directorio. Flag s en los permisos de ejecución del grupo

18. ¿Cuáles son los permisos del archivo /etc/shadow? ¿Por qué puedo modificar mi password sino soy usuario root?

Los permisos para /etc/shadow son de lectura y escritura para root, de lectura para el grupo de root y nada para todos los demás. Porque el archivo /usr/passwd tiene el flag suid activado

19. Crear un archivo en el directorio /tmp. Si abre otra consola y se loguea con un usuario distinto, ¿puede borrar ese archivo? ¿Por qué? (Hint.: ver permisos especiales en Linux)

No puede ser eliminado, este directorio cuenta con el permiso especial Sticky bit, por lo cual podemos escribir y modificar, pero no eliminar.

20. ¿Qué es Advanced Format en los disco rígidos? ¿Qué es 512e?

21. ¿Por qué es recomendable alinear las particiones?

22. ¿Qué es el sistemas de archivo F2FS? Usando el espacio libre dejado en el disco de la MV, realizar los siguientes pasos y contestar:

  • Usando la herramienta “fdisk” o “parted” de Linux generar una partición 1GB (en la sección de RAID se muestra como usar el comando parted para crear nuevas particiones).
  • Formatear la primera partición con ext4.
  • Montar las particiones en el directorio “disc1”
  • Generar un archivo en el directorio “disc1”. Observar los datos del inodo del archivo generado
  • Leer el contenido del archivo. ¿Se modificaron algunos de los datos del inodo del archivo?
  • ¿Cómo puede modificar el comportamiento anterior con el fin de evitar esas modificaciones? ¿Es posible hacerlo sin desmontar la partición?

RAID

En este punto se va a crear un RAID Level 5 por software. Para simular los 3 discos necesarios para un RAID de este nivel se deberán generar 3 particiones del mismo tamaño. Una vez realizado este paso se generará el RAID. Para esto se utilizará la herramienta mdadm que deberá instalarla en la VM provista por la cátedra usando el siguiente comando: apt-get install mdadm.

Para crear el raid, lo primero fue crear una particion extendida de 20GB con el objetivo de crear partciones logicas dentro de de ella. Cada particion logica es de 5GB. Una vez creadas las 3 particiones necesarias procedemos a ejecutar mdadm –create /dev/md0 –level=raid5 –raid-devices=3 /dev/sda5 /dev/sda6 /dev/sda7

1. ¿Qué es un RAID? Explique las diferencias entre los distintos niveles de RAID

RAID (Redundant Array of Independent Disks, Vector redundante de discos independientes).

Para los filesystems es un arreglo lineal de bloques que pueden ser leídos y escritos. Internamente debe calcular que disco/s acceder para completar la solicitud. La cantidad de accesos físicos de I/O dependen del nivel de RAID que se está utilizando. Está diseñado para detectar y recuperarse de determinados fallos de discos. Spare disks: discos disponibles para reemplazo de discos en falla. El esquema RAID consta de siete niveles, del cero al seis. Estos niveles no implican una relación jerárquica, sino que designan a diversas arquitecturas de diseño que comparten tres características comunes:

  1. RAID corresponde con un conjunto de unidades físicas de disco tratado por el sistema operativo como un único dispositivo lógico.
  2. Los datos están distribuidos a lo largo de las unidades físicas de un vector.
  3. La capacidad de redundancia del disco se utiliza para almacenar información de paridad, que garantiza que los datos se pueden recuperar en caso de que falle un disco. (RAID 0 y RAID 1 no incluyen esta característica)

RAID

2. Utilizar el comando parted -l (debe ejecutarlo con sudo) para ver la tabla de particiones. Conteste:

  • ¿Cómo llama Linux al dispositivo físico? ¿Cuál es su tamaño total?

ATA VBOX HARDDISK(/dev/sda) de 172GB

  • ¿Cuántas particiones existen? ¿Qué tipo de file-system contiene cada una?

Existen 3 particiones, / esta montado en un ext4 primario, swap en linux-swap logico, otra particion extendida sin fs.

  • ¿Qué significa la bandera arranque?

Indicar dónde reside el cargador de inicio MBR.

3. Usando el comando parted crear una nueva partición de tipo extendida, si es que no existe previamente (debe seleccionar el dispositivo donde se van a generar las particiones):

  • sudo parted
  • (parted) print
  • (parted) mkpart
  • Tipo de particion: extendida
  • Inicio: #MB (igual al tamaño final de la partición existente más alta)
  • Fin: #MB (igual al tamaño máximo del dispositivo físico)

Dentro de esta partición extendida crear 3 nuevas particiones de 300MB cada una. Para esto utilizar nuevamente el comando mkpart, pero debe seleccionar logical como tipo de partición. Como tipo de sistema de archivos elija ext3. Obs.: como las particiones lógicas se crean dentro de una partición extendida, los valores de inicio/fin de cada partición lógica deben estar dentro de los valores seleccionados en la partición extendida.

4. ¿Por qué es necesario crear una partición extendida? Si se usase GPT, ¿sería necesario este tipo de particiones?

MBR solo puede trabajar con 4 particiones primarias, por lo que para crear más de 4 debemos recurrir a resindir de una particion primaria para crear una extenidad, con el objetivo de crear mas particiones logicas.

5. Mirar nuevamente la tabla de particiones para ver las nuevas particiones y salga del entorno parted

6. Utilizar el comando mdadm para crear un RAID 5 utilizando las 3 particiones lógicas que se generaron en el punto anterior:

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda5 /dev/sda6 /dev/sda7

(Obs.: md0 es el nombre que le dará al nuevo RAID)

7. ¿Qué significan los valores sda5, sda6 y sda7?

sda5, sda6, sda7 son los identificadores de las particiones que hacen de disco para la creacion del raid level 5.

8. Ejecutar la siguiente consulta y contestar:

mdadm --detail /dev/md0

  • ¿Cuál es el tamaño total del RAID?

Array size: 9,96GB + Used dev size: 4.98GB= 15GB

  • ¿Cuál es el tamaño total utilizable para almacenar datos?

Array size: 9,96GB.

9. Analizar el contenido del siguiente comando:

cat /proc/mdstat

Obs.: puede suceder que al reiniciar la VM el RAID se vea como de solo lectura y con el número 127. Para solucionar esto deben ejecutar los comandos mdadm –stop /dev/md127 para parar el RAID y mdadm –assemble –scan para volverlo a generar como md0 y de lectura/escritura. Esto se debe hacer cada vez que se inicia la VM. Si quiere que quede en forma persistente a través de los reboots debe guardar la configuración en el archivo mdadm.conf,_ mdadm – assemble –scan >> /etc/mdadm/mdadm.conf y luego update-initramfs -u_ (esto último puede tardar un poco de tiempo)

En este momento el estado es clean. Este archivo contiene la información actual sobre las configuración de discos múltiples de RAID. En nuestro caso muestra que esta activo con raid5 en los dispositivos sda5, sda6, sda7.

10. Ahora se va a probar la funcionalidad del RAID 5. Para esto completar los siguientes pasos:

  • Crear un file system de tipo ext3 en el RAID 5 recién generado

mkfs.ext3 /dev/md0

  • Montar la partición con el file system generado en el directorio /mnt/rd5

Crear carpeta rd5 y mount /dev/md0 /mnt/rd5

  • Crear un directorio con dos archivos

mkdir prueba && touch archivo1 archivo2

  • Quitar una de las particiones del RAID. Para esto ponemos uno de los componentes en falla:

Quitar un disco en este raid genera degradación de rendimiento.

mdadm --fail /dev/md0 /dev/sda7

  • Observar el estado del RAID y contestar: ¿Cuál es el estado del RAID? ¿Cuántos dispositivos activos existen?

EL estado del raid es clean, degraded, hay 2 dispositivos activos.

¿Qué sucedería si se ejecuta el comando anterior sobre una de las particiones restantes?

El fallo de un segundo disco provoca la pérdida completa de los datos. El estado es clean, FAILED

  • Quitar del RAID el componente puesto en falla en el paso anterior

mdadm -r /dev/md0 /dev/sda7

  • Observar nuevamente el estado del RAID y contestar:

¿Se puede acceder al directorio /mnt/rd5? ¿Están los archivos creados anteriormente?

Si, y puedo accederlos y escribirlos.

¿Qué hubiese sucedido si teníamos otra partición como “hot-spare”?

El raid detecta la falla de 1 disco, si tiene un disco como hot-spare, automaticamente lo usa para dejar el raid en estado estable.

  • Por último, remover la partición permanentemente del RAID (Obs.: esto es muy importante para que el próximo booteo mdadm no intente usar a esta partición como parte del RAID, lo que provocaría la pérdida de todos los datos)

mdadm --zero-superblock /dev/sda7

A partir de este momento la partición /dev/sda7 se puede utilizar como una partición común

11. Para evitar la pérdida de datos es fundamental volver al RAID a un estado estable (sacarlo del estado degradado). Para esto se agregará nuevamente la partición /dev/sda7 que se quitó en el paso anterior

  • Ejecutar el comando mdadm –add /dev/md0 /dev/sda7
  • Ejecutar el comando mdadm –detail /dev/md0

Ahora el estado del raid es clean,degraded,recovering con spare devices: 1. El disco 3 esta en estado de spare rebuilding

  • ¿Qué hace el RAID con la nueva partición recientemente agregada? ¿Qué significa el estado “Rebuild Status”?

La utiliza automaticamente para dejar el raid en un estado estable.

  • ¿Es posible ingresar al recurso /mnt/rd5? ¿Se encuentran disponibles los datos creados en el punto anterior?

Los datos estan disponibles.

12. Como los datos que mantiene el RAID son muy importantes es neceario tener un disco (partición en nuestro ejemplo) de respaldo. Para esto se va a agregar una partición como “hot-spare”.

13. Usando el comando parted generar una nueva partición, /dev/sda8

14. Agregar la nueva partición al RAID:

mdadm --add /dev/md0 /dev/sda8

  • ¿Cómo se agregó la nueva partición? ¿Por qué?

La nueva particion fue añadida al raid como hot-spare, 3 dispositivos funcionando, 1 dispositivo como hot-spare. Esto es asi porque al momento de agregar el raid, se le asignaron 3 dispositivos.

15. Volver a poner en falla a la partición /dev/sda7. Ver el estado del RAID y contestar

mdadm --detail /dev/mda0

  • ¿Qué hace el RAID con la partición que estaba como spare?

La particion que estaba como spare, entra en estado de spare rebuild, una vez acabado el raid vuelve a estar en estado normal.

16. Por último, se eliminará el RAID creado en los pasos anteriores:

  • Desmontar el RAID (comando umount)
  • Para cada una de las particiones del RAID ejecutar los pasos realizados cuando se quitó una partición del RAID (mdadm con las opciones -–fail y -r). Por cada partición que se quita ir mirando el estado del RAID para ver como se comporta
  • Remover los superbloques de cada una de las particiones

mdadm --zero-superblock /dev/sda5 /dev/sda6 /dev/sda7

  • Remover el RAID

mdadm --remove /dev/md0

Obs.: si existe, quitar la ĺinea ARRAY... del archivo /etc/mdadm/mdadm.conf

  • Reiniciar y comprobar que el RAID ya no existe

LVM (Logical Volumen Management

A continuación se creará un LVM utilizando las particiones /dev/sda5, /dev/sda6 y /dev/sda7 (respetar el tamaño y nombre de los volúmenes y directorios). En principio solo se utilizarán las particiones 5 y 6, luego se agregará la partición 7 para incrementar el tamaño de los volúmenes

1. ¿Qué es LVM? ¿Qué ventajas presenta sobre el particionado tradicional de Linux?

Provee un método más flexible que los convencionales esquemas de particionamiento para alocar espacio de los dispositivos de almacenamiento masivo. Está actualmente. Permite una administración “on-line” de los discos de almacenamiento agregando una capa adicional al subsistema de entrada al kernel.

Principales componentes del LVM: Physical Volume: disṕositivos físicos o particiones que serán utilizados por LVM Volume Group: grupos de PVs, representa el data storage Logical Volume: cada una de las partes las que se dividen los Vgs Physical Extent: unidades direccionables en las que LVM divide cada PV

2. ¿Cómo funcionan los “snapshots” en LVM?

Snapshots: backup online de las particiones

3. Instalar la herramiento lvm2 con apt/yum

4. Indicar que los particiones 5 y 6 funcionarán como volúmenes físicos

pvcreate /dev/sda5 /dev/sda6

5. Mediante el comando pvdisplay observar el estado del volumen físico recientemente creado

6. Crear un grupo de volúmenes (volume group, VG) llamado “so_vg”

vgcreate so\_vg /dev/sda5 /dev/sd6

7. Utilizar el comando vgdisplay para ver el estado del VG

  • ¿Cuál es tamaño total del VG?
  • ¿Qué significa PE?

8. Crear dos volúmenes lógicos (logical volume, LV) de 8MB y 120MB respectivamente

lvcreate -l 2 -n lv\_vol1 so\_vg

lvcreate -L 120M -n lv\_vol2 so\_vg

9. ¿Cuál es la diferencia entre los dos comandos utilizados en el punto anterior?

10. Formatear los dos LV generados en el paso anterior con un file system de tipo ext3:

mkfs.ext3 /dev/so\_vg/lv\_vol1

11. Crear dos directorios, vol1 y vol2, dentro de /mnt y montar ambos LG en estos directorios (montar el LV lv_vol1 en el directorio vol1 y lv_vol2 en el directorio vol2)

12. Ejecutar el comando proof (Puede tomar un rato su ejecución. Este comando estará disponible en la plataforma y deberán copiarlo a la VM)

13. Crear un nuevo archivo en /mnt/vol1. ¿Es posible? ¿Por qué?

14. Es posible solucionar esto incrementando el tamaño del file system. Para esto primero se debe incrementar el tamaño del LV correspondiente:

  • Desmontar el LV lv_vol1
  • Extender el LV lv_vol1 en 20M

lvextend -L +20M /dev/so\_vg/lv\_vol1

  • Incrementar el tamaño del file system. Antes de incrementar el tamaño es necesario ejecutar el comando e2fsck para comprobar el file system esté correcto: e2fsck -f /dev/so\_vg/lv\_vol1

resize2fs /dev/so\_vg/lv\_vol1

15. Montar nuevamente el LV en /mnt/vol1

16. ¿Siguen estando los datos disponibles?

17. Intentar crear un nuevo archivo en /mnt/vol1. ¿Es posible? ¿Por qué?

18. Se desea crear un nuevo LV de 500M. ¿Hay suficiente espacio?

19. Para solucionar el punto anterior se debe extender el tamaño del VG, por lo tanto, se agregará la partición sda7 al VG:

pvcreate /dev/sda7

vgextend so\_vg /dev/sda7

20. Comprobar con los comando correspondientes que se haya extendido el tamaño del VG

21. Generar el nuevo LV de 500M (llamarlo lv_vol3)

22. Montar este nuevo LV en el directorio /mnt/lv_vol3 y crear un directorio con dos archivos adentro (los nombre pueden ser cualquiera)

En el siguiente paso se intentará reducir el tamaño del LV generado en el punto 18) de 500M a 400M

23. Desmontar el LV.

24. Reducir el LV lv_vol3 (decir Sí/Yes al aviso que aparece al ejecutar el siguiente comando)

lvreduce -L 400M /dev/mapper/so\_vg-lv\_vol3

25. Montar el LV reducido en el paso anterior. ¿Es posible ver el directorio y los archivos generados en el paso anterior?

26. ¿Cuál es el error en el procedimiento anterior? ¿Cuáles serían los pasos correctos?

27. Ejecute los pasos necesarios y de forma ordenada para poder achicar el LV a 400M (investigar) A continuación se mostrará el funcionamiento de los snapshot en LVM

28. Generar un LV de 100M, nombrarlo lv1, (o usar uno de los generados en pasos anteriores). Montarlo en el directorio /dir1

29. Copiar desde /etc todo los archivos y directorios que comiencen con las letra a,b,c,d,y e.

30. Mediante el siguiente comando generar un snapshot del LV anterior

lvcreate -n lvcopy -s /dev/so\_vg/lv1 -L 30M (-s indica que este LV será un snapshot)

31. Verificar la creación del snapshot con el comando lvs. Montarlo en el directorio /snap

32. ¿Cuánto espacio hay consumido en el snapshot creado? ¿Por qué sucede esto?

33. Para probar el snapshot, elimine una carpeta del LV original (por ej, la carpeta cups). ¿Se eliminó desde el LV original? ¿Y del snapshot?

34. Si se desea volver el LV a su estado original se debe hacer un “merge” entre el LV y su snapshot. Para esto primero debe desmontar el LV original (lv1). Luego, realizar el “merge” de ambos LVs:

lvconvert --merge /dev/so\_vg/lvcopy

35. Comprobar si el LV original contiene nuevamente los datos eliminados anteriormente (el snapshot es eliminado automáticamente)

Obs.: en caso que aparezca el error “Can’t merge over...” ejecutar los siguientes comandos para desactivar y activar el LV

lvchange -an /dev/so\_vg/lv1

lvchange -ay /dev/so\_vg/lv1

BTRFS & ZFS

1. Tanto para BTRFS como para ZFS, responder:

  • ¿Cuál es el significado de las siglas?

BTRFS: B-tree FS. ZFS: Zettabyte File System

  • ¿Quién los creó? ¿Cuál es su modo de licenciamiento?

BTRFS: Oracle Corporation. Software libre bajo licencia GPL(Licencia Pública General). ZFS: Sun Microsystems (para sus sistema operativo Solaris). Licencia CDDL(Licencia Común de Desarrollo y Distribución)

  • ¿Cuáles son las características más importante de cada uno?

BTRFS:

  • La funcionalidad de copy-on-write le permite crear snapshots tanto de lectura como de escritura, y hacer retroceder un sistema de archivos a un estado anterior, incluso después de haberlo convertido desde un sistema de archivos ext3 o ext4.

  • La funcionalidad de suma de comprobación garantiza la integridad de los datos.

  • La compresión transparente ahorra espacio en disco.

  • La desfragmentación transparente mejora el rendimiento.

  • La gestión integrada de volúmenes lógicos le permite implementar configuraciones RAID 0, RAID 1 o RAID 10, y agregar y eliminar dinámicamente la capacidad de almacenamiento.

  • El rendimiento de Btrfs mejora con el uso de ssd.

  • Almacenamiento eficiente para archivos pequeños.

ZFS:

  • Investigar qué es la técnica copy-on-write

La idea fundamental es que si varios calls piden recursos que inicialmente no se pueden distinguir, puede darles punteros al mismo recurso. Esta función se puede mantener hasta que la persona que llama intente modificar su "copia" del recurso, momento en el que se crea una verdadera copia privada para evitar que los cambios sean visibles para todos los demás. Todo esto pasa de forma transparente a los calls. La principal ventaja es que si el call nunca realiza modificaciones, no es necesario crear una copia privada.

2. Generar en la MV dos particiones de 3GB cada una. Crear 3 nuevos directorios llamados /disco5, /volumen1 y /volumen2.

3. Tomar una partición, /dev/sdaX (X=número de una de las particiones creadas en el punto anterior), y crearle un file system de tipo BTRFS. Montarla en el directorio disco5.

4. Por defecto, BTRFS, ¿replica los datos? ¿Y los metadatos? ¿Es posible modificar esto? ¿Cómo lo haría? (Hint: usar btrfs fi df -h /disco5 o btrfs df usage /disco5)

5. ¿Cuál es el espacio alocado? ¿Y el ocupado realmente? Utilice los comandos df -h, btrfs fi show, btrfs fi df -h /disco5 y btrfs df usage /disco5.

6. Generar un archivo de 2000MB en el directorio /disco5. Analizar nuevamente el espacio alocado/ocupado. Usar el comando dd para generar el archivo. (Obs.: puede que tenga que esperar un tiempo para ver los cambios en la salida de los comandos btrfs....). ¿Cómo quedó el espacio asignado y el utilizado tanto de los datos como de los metadatos?

7. Asignar la otra partición a /disco5. ¿Se modificaron los valores con respecto al punto anterior?

8. Generar un archivo de 3000MB y almacenarlo en el directorio /disco5. ¿Aumenta el espacio alocado? ¿Cuánto espacio se ha ocupado realmente?

9. Usando las dos particiones anteriores crear un RAID1 y montarlo /disco5. ¿Qué partición puede elegir para montar el file system?

10. ¿Es posible generar los dos archivos anteriores en ese filesystem? ¿Por qué?

11. Eliminar todo el contenido de /disco5 y generar dos subvolúmenes, llamados vol1 y vol2. ¿Puede ver los subvolúmenes creados? ¿Qué ID tiene cada uno? ¿Qué significa el ID 5?

12. Montar esos volúmenes, vol1 y vol2, en los directorios /volumen1 y /volumen2 respectivamente. ¿Qué espacio disponible tiene cada volumen? ¿Es posible acotar el espacio de un volumen? ¿Es necesario que esté montado el subvolumen top-level para poder montar sus subvolúmenes?

13. Generar un archivo de 300MB en el directorio vol1, ¿es posible ver el archivo en /volumen1? Si ejecuta el comando df -h, ¿qué espacio se ha consumido? ¿Por qué sucede esto?

14. Limitar el tamaño del subvolumen volumen2 a 300MB. Intentar copiar un archivo de 400MB y ver qué sucede. Elevar el tamaño de la cuota a 450MB, ¿es posible ahora?

15. Realizar un snapshot del subvolumen /disco5/vol1 en /disco5/snap. Antes de esto crear un archivo con el texto Esto es una prueba de un snapshot y otro archivo de 100MB. Chequear, antes y después de generar el snapshot, con df -h y los comandos de btrfs el espacio alocado y consumido. ¿Se incrementó el espacio consumido? ¿Por qué?

16. Modificar el contenido el archivo original agregándole para sistemas operativos. ¿Se modifica la copia en el snapshot?

17. Si se desea volver al subvolumen original, ¿cómo lo haría? (sin hacer un copy de los archivos)

http://www.nongnu.org/ext2-doc/ext2.html

http://e2fsprogs.sourceforge.net/ext2intro.html

http://www.cyberciti.biz/tips/understanding-unixlinux-filesystem-superblock.html

http://www.tldp.org/LDP/tlk/fs/filesystem.html

https://kernelnewbies.org/Ext4

http://www.geekride.com/hard-link-vs-soft-link/

https://www.howtoforge.com/linux_lvm

https://www.digitalocean.com/community/tutorials/an-introduction-to-lvm-concepts-terminology-and-operations

https://btrfs.wiki.kernel.org/index.php/Main_Page

Clone this wiki locally