En los últimos 6 años he trabajado con sistemas en producción bajo Solaris 10 con arquitectura SPARC -M3000, M4000, V1280- donde he utilizado ZFS como sistema de ficheros.
Durante un tiempo he analizado soluciones para servidores en arquitectura x64 que se asemejaran en prestaciones y características a este tipo de entornos.
Por supuesto la respuesta obvia es optar por entornos bajo Solaris 11 para x64; tecnológicamente es una buena solución -tampoco perfecta- pero dado el evidente cambio de cultura corporativa que se ha producido tras la adquisición de SUN por ORACLE, no está demás evaluar alternativas.
Btrfs en entornos Linux parece una opción a tener en cuenta, sin embargo btrfs adolece, a mi juicio, de cierta inmadurez tecnológica que no lo hace aconsejable, de momento, para implantarlo en entornos de producción.
La solución que presento en este post es la que, a día de hoy, me parece de las más interesantes, pues aúna un S.O de código abierto, con una innegable madurez tecnológica y el que probablemente sea el mejor filesystem en la actualidad; ZFS.
Scripts para la creación del Root Pool
La instalación de FreeBSD 9 sobre ZFS requiere una serie de pasos adicionales que necesariamente son efectuados en linea de comandos. Con el propósito de hacer más cómodo el proceso y reducir la probabilidad de cometer errores he creado unos shell scripts que serán ejecutados durante la de instalación.
Script 1: env_fbsd_rpool.sh
Este script define una conjunto de variables de entorno que son utilizadas por el resto de scripts, para adaptar el comportamiento de los scripts a las necesidades específicas de cada instalación basta con cambiar las variables de entorno.// Comienza el Script env_fbsd_rpool.sh
#!/bin/sh// Fin del Script env_fbsd_rpool.sh
now=$(date +"%d%m%Y")
BENAME="91_${now}"
RPOOLNAME="fbsdzpool1"
BEPATH=${RPOOLNAME}/ROOT/${BENAME}
SWAP_GB="4G"
GPT_DEV=freedsk1
ALT_ROOT=/mnt
export BENAME # Nombre del BE inicial
export RPOOLNAME # Nombre del Root Pool
export BEPATH # Ruta del BE
export SWAP_GB # Espacio al swap
export GPT_DEV # Dispositivo de la instalacion
export ALT_ROOT # Punto de montaje de la instalacion
echo ""
echo "Nombre del BE inicial : ${BENAME}"
echo "Nombre del Root Pool : ${RPOOLNAME}"
echo "Ruta del BE : ${BEPATH}"
echo "Espacio del swap : ${SWAP_GB}"
echo "Dispositivo de la instalacion : ${GPT_DEV}"
echo "Punto de montaje de la instalacion : ${ALT_ROOT}"
echo ""
Script 2: mk_fbsd_rpool.sh
Este script realiza la configuración del Root Pool y filesystems de FreeBSD.//Comienza el Script mk_fbsd_rpool.sh
#!/bin/sh
. ./env_fbsd_rpool.sh
#
# Creamos el pseudo-dispositivo para inicializar el pool alineado con bloques de 4KB
#
echo ""
echo "Creando pseudo-dispositivo para ${GPT_DEV}"
echo ""
gnop create -S 4096 /dev/gpt/${GPT_DEV}
//Fin del Script mk_fbsd_rpool.sh#
# Creamos el root pool
#
echo ""
echo "Creando Pool ${RPOOLNAME}"
echo ""
zpool create -f -m none -o cachefile=/var/tmp/zpool.cache ${RPOOLNAME} /dev/gpt/${GPT_DEV}.nop
#
# Destruimos de pseudo-dispositivo
#
zpool export ${RPOOLNAME}
echo ""
echo "Destruyendo pseudo-dispositivo para ${GPT_DEV}"
echo ""
gnop destroy /dev/gpt/${GPT_DEV}.nop
zpool import -N -o cachefile=/var/tmp/zpool.cache ${RPOOLNAME}
#
# Establecemos propiedades para la jerarquia de filesystems
#
echo ""
echo "Cambiamos propiedades de ${RPOOLNAME} "
echo ""
zfs set mountpoint=none ${RPOOLNAME} # No se asigna punto de montaje al Root Pool
zfs set canmount=off ${RPOOLNAME} # Evitamos que pueda montarse el Root Pool
zfs set checksum=fletcher4 ${RPOOLNAME} # Algoritmo mejorado de deteccion de errores
zfs set atime=off ${RPOOLNAME} # Desactivamos la fecha de acceso para los ficheros
#
# Creamos la Raiz de la jerarquia de filesystems
#
echo ""
echo "Creamos ${RPOOLNAME}/ROOT"
echo ""
zfs create -o canmount=off ${RPOOLNAME}/ROOT
echo ""
echo "Creamos ${BEPATH}"
echo ""
zfs create -o mountpoint=${ALT_ROOT} ${BEPATH}
zpool set bootfs=${BEPATH} ${RPOOLNAME}
#
# swap y /tmp
#
echo ""
echo "Creamos ${RPOOLNAME}/swap"
echo ""
zfs create -V ${SWAP_GB} ${RPOOLNAME}/swap
zfs set org.freebsd:swap=on ${RPOOLNAME}/swap
zfs set checksum=off ${RPOOLNAME}/swap
echo ""
echo "Creando ${RPOOLNAME}/tmp"
echo ""
zfs create -o compression=on -o exec=on -o setuid=off -o mountpoint=${ALT_ROOT}/tmp ${RPOOLNAME}/tmp
chmod 1777 ${ALT_ROOT}/tmp
#
# Jerarquia de /usr
#
echo ""
echo "Creando ${BEPATH}/usr ${BEPATH}/usr/home"
echo ""
zfs create ${BEPATH}/usr
zfs create ${BEPATH}/usr/home
cd ${ALT_ROOT} ; ln -s ${ALT_ROOT}/usr/home home
zfs create -o compression=lzjb -o setuid=off ${BEPATH}/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off ${BEPATH}/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off ${BEPATH}/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off ${BEPATH}/usr/src
#
# Jerarquia de /var
#
echo ""
echo "Creando ${BEPATH}/var"
echo ""
zfs create ${BEPATH}/var
zfs create -o compression=lzjb -o exec=off -o setuid=off ${BEPATH}/var/crash
zfs create -o exec=off -o setuid=off ${BEPATH}/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off ${BEPATH}/var/db/pkg
zfs create -o exec=off -o setuid=off ${BEPATH}/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off ${BEPATH}/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off ${BEPATH}/var/mail
zfs create -o exec=off -o setuid=off ${BEPATH}/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off ${BEPATH}/var/tmp
chmod 1777 ${ALT_ROOT}/var/tmp
echo ""
echo "Examinamos el estado del pool ${RPOOLNAME}"
echo ""
zpool status ${RPOOLNAME}
echo ""
echo "Examinamos los puntos de montaje creados"
echo ""
mount
echo ""
echo "Valor de ashift debe ser 12 para indicar que esta alineado a 4K "
echo ""
zdb -C -U /var/tmp/zpool.cache | grep ashift
echo ""
echo "Pulsanos CTRL-D y comienza la Instalacion"
echo ""
Script 3: post_install_fbsd_rpool.sh
Estos son los pasos finales del proceso de instalación; se ejecuta justo después de concluir la instalación y antes del primer reboot.//Comienza el Script post_install_fbsd_rpool.sh
#!/bin/sh//Fin del Script post_install_fbsd_rpool.sh
. ./env_fbsd_rpool.sh
zfs set readonly=on ${BEPATH}/var/empty
cp /var/tmp/zpool.cache ${ALT_ROOT}/boot/zfs/
ls -la ${ALT_ROOT}/boot/zfs/zpool.cache
touch ${ALT_ROOT}/etc/fstab
#
# NO SE HA INCLUIDO el parametro vfs.root.mountfrom DE FORMA PREMEDITADA
# por que a partir de la revision r243502 el root pool se detecta automaticamente.
# Ya no es necesario declararlo en loader.conf
#
cat << EOF >> ${ALT_ROOT}/boot/loader.conf
zfs_load=YES
opensolaris_load="YES"
EOF
cat << EOF >> ${ALT_ROOT}/etc/rc.conf
zfs_enable=YES
EOF
echo ""
more ${ALT_ROOT}/boot/loader.conf
echo ""
echo ""
more ${ALT_ROOT}/etc/rc.conf
echo ""
zfs umount -a
echo ""
echo "Asignado puntos de montaje definitivos a / /usr /tmp /var"
echo ""
zpool set cachefile='' ${RPOOLNAME}
zfs set mountpoint=legacy ${BEPATH}
zfs set mountpoint=/tmp ${RPOOLNAME}/tmp
zfs set mountpoint=/usr ${BEPATH}/usr
zfs set mountpoint=/var ${BEPATH}/var
reboot
Tareas Previas a la instalación
Compatibilidad hardware
Antes de instalar un sistema operativo hay que comprobar que no hay problemas de compatibilidad con el hardware del sistema.
La herramienta más importante de la que podemos disponer para acometer esta tarea, es la lista de compatibilidad que todos los proveedores de S.O disponen y FreeBSD no es una excepción.
Método de Instalación
Desgraciadamente para nosotros no es posible instalar FreeBSD 9 empleando el método de arranque de imágenes ISO de GRUB2.Como métodos de instalación, dejando aparte el montar un servidor de instalaciones por red, disponemos de imagen ISO con la instalación completa, una imagen para pendrive y una ISO de arranque que permite instalar desde los servidores de FreeBSD por internet.
En mi caso voy a centrarme en el método de instalación con pendrive -memstick- y la preparación del mismo desde Linux, asumiendo que no disponemos de otro FreeBSD donde apoyarnos.
1.- Descargamos la imagen para memstick de FreeBSD 9 AMD64
2.- Procedemos a sobreescribir completamente con ceros el pendrive, asumiendo que nuestro dispositivo para el pendrive es /dev/sdb.
3.- Transferimos la imagen con el comando dd.# sudo dd if=/dev/zero of=/dev/sdb bs=128M
# sudo dd if=FreeBSD-9.1-RELEASE-amd64-memstick.img of=/dev/sdb bs="10240" conv="sync"4.- Opcionalmente montamos el pendrive para comprobar el contenido antes de instalar.
# sudo mount -t ufs -o ufstype=44bsd,ro /dev/sdb /mnt
Preparación de las Particiones
Esta guía está enfocada a la instalación de FreeBSD 9 con el sistema de ficheros de root sobre ZFS sin espejos; en un entorno con GRUB2 como gestor de arranque, la tabla de particiones ya definida y coexistiendo con otros S.Os.Si se pretende instalar FreeBSD 9 como S.O exclusivo con su propio bootloader la preparación de la tabla de particiones varía sustancialmente.
Revisamos la tabla de particiones, seleccionamos la particion 8 para instalar, cambiamos el tipo de partición a FreeBSD ZFS -a504- y añadimos como comentario "freedsk1" que utilizamos en los scripts como nombre de dispositivo en /dev/gpt.
PASO 0:Selección de la partición para instalar |
No olvidéis seguir las precauciones para instalar múltiples SOs; backup de la tabla GPT, la captura de pantalla con el listado de la tabla particiones y backup de los datos importantes.
Preparación de la entrada en el Menú de Arranque de GRUB2
Normalmente este paso formaría parte de las Tareas Posteriores a la Instalación, pues suelo utilizar el UUID de Sistema de Ficheros para seleccionar la partición y éste se genera después de crear el sistema de ficheros durante la instalación.
Sin embargo, como estamos utilizando ZFS, conocemos a priori cual el es nombre del ZFS Pool y para GRUB2 este nombre es una etiqueta; así que podemos utilizarla para configurar la entrada en el fichero grub.cfg.
Si en un sistema se pretende instalar distintos S.Os con root sobre ZFS es una buena práctica utilizar nombres únicos para los Root Pools.
En caso contrario, si tenemos varios Root Pools con el mismo nombre, al buscar la partición con el comando search de GRUB2, nos devolvería el primero que encontrara; por tanto este método no sería útil y tendríamos que utilizar el UUID de sistema de ficheros.
La entrada en grub.cfg es la siguiente :
//COMIENZA EL FRAGMENTO
menuentry "FreeBSD 9 en freedsk1" {//FIN DE FRAGMENTO
search --no-floppy --label --set=root fbsdzpool1
kfreebsd /ROOT/91_30062013/@/boot/zfsloader
}
Transferencia de los Scripts
Para poder emplear los scripts de configuración de ZFS para FreeBSD 9 es necesario que estén presentes una vez arrancado el menstick, existen varias posibilidades; copiarlos desde otro pendrive, configurar la red y transferirlos por ftp.
Voy a utilizar la partición auxiliar que tengo configurada en previsión de estas necesidades.
Por tanto, monto la partición 19 y copio en ella los tres scripts antes mencionados.
Pasos de la Instalación
1.- Arranque del pendrive
Desde el menú de arranque de la BIOS elegimos arrancar el pendrive.PASO 1a: Arrancamos Pendrive de la Instalación |
Llegados al menú de Beastie pulsamos Enter o esperamos a que arranque automáticamente.
Paso 1b: Iniciamos FreeBsd 9 |
2.- Inicio de la Instalación, configuración básica
El instalador -bsdinstall- se inicia automáticamente desde el menú de Beastie.Paso 2a: Menu Inicial seleccionamos Install |
- Configuración del teclado, en mi caso cambio la configuración del teclado por defecto, para castellano yo escojo "Spanish ISO-8859-15".
- Asignación de nombre de host.
- Selección de Componentes de Sistema a Instalar, yo marco todos.
3.- Configuración de la Tabla Particiones
En este punto se nos da a elegir entre particionar de forma guiada -Guided-, Manual o salir a la Shell.
PASO3: En particionamiento elegimos SHELL |
Salimos a la Shell.
Desde la Shell ejecutamos los siguientes comandos:
# mount -t ext2fs -o ro /dev/ada0p19 /media
# cp/media/*.sh /var/tmp
# cd /var/tmp
# chmod 750 *.sh
# ./mk_fbsd_rpool.sh >> mk_fbsd_rpool_log 2>&1
Comprobamos en el fichero de log mk_fbsd_rpool_log que no hay errores.
# more mk_fbsd_rpool_log
//Inicio de log mk_fbsd_rpool_log
Nombre de Boot Enviroment inicial : 91_30062013//Fin de log mk_fbsd_rpool_log
Nombre del Pool de ZFS para Root: fbsdzpool1
Ruta de Boot Enviroment : fbsdzpool1/ROOT/91_30062013
Espacio dedico al swap : 4G
Dispositivo que identifica la particion sobre la que se instala : freedsk1
Punto de montaje sobre el que se realiza la instalacion : /mnt
Creando pseudo-dispositivo para freedsk1
Creando Pool fbsdzpool1
Destruyendo pseudo-dispositivo para freedsk1
Cambiamos propiedades de fbsdzpool1
Creamos fbsdzpool1/ROOT
Creamos fbsdzpool1/ROOT/91_30062013
Creamos fbsdzpool1/swap
Creando fbsdzpool1/tmp
Creando fbsdzpool1/ROOT/91_30062013/usr fbsdzpool1/ROOT/91_30062013/usr/home
Creando fbsdzpool1/ROOT/91_30062013/var
Examinamos el estado del pool fbsdzpool1
pool: fbsdzpool1
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
fbsdzpool1 ONLINE 0 0 0
gpt/freedsk1 ONLINE 0 0 0
errors: No known data errors
Examinamos los puntos de montaje creados
/dev/ufs/FreeBSD_Install on / (ufs, local, noatime, read-only)
devfs on /dev (devfs, local, multilabel)
/dev/md0 on /var (ufs, local)
/dev/md1 on /tmp (ufs, local)
/dev/ada0p19 on /media (ext2fs, local, read-only)
fbsdzpool1/ROOT/91_30062013 on /mnt (zfs, local, noatime, nfsv4acls)
fbsdzpool1/tmp on /mnt/tmp (zfs, local, noatime, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/usr on /mnt/usr (zfs, local, noatime, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/usr/home on /mnt/usr/home (zfs, local, noatime, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/usr/ports on /mnt/usr/ports (zfs, local, noatime, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/usr/ports/distfiles on /mnt/usr/ports/distfiles (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/usr/ports/packages on /mnt/usr/ports/packages (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/usr/src on /mnt/usr/src (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var on /mnt/var (zfs, local, noatime, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/crash on /mnt/var/crash (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/db on /mnt/var/db (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/db/pkg on /mnt/var/db/pkg (zfs, local, noatime, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/empty on /mnt/var/empty (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/log on /mnt/var/log (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/mail on /mnt/var/mail (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/run on /mnt/var/run (zfs, local, noatime, noexec, nosuid, nfsv4acls)
fbsdzpool1/ROOT/91_30062013/var/tmp on /mnt/var/tmp (zfs, local, noatime, nosuid, nfsv4acls)
Valor de ashift debe ser 12 para indicar que esta alineado a 4K
ashift: 12
Pulsanos CTRL-D y comienza la Instalacion
PASO 3: Salida en Consola |
4.- Carga del Sistema Base.
Desde la shell, pulsamos CTRL-D y automáticamente comienza a cargarse el sistema.Paso 4: Carga de FreeBSD 9 |
5.- Configuración Adicional.
Una vez cargado el sistema, bsdintall nos guía por las siguientes tareas.- Selección de la pasword de root.
- Configuración de los dispositivos de Red.
- Regionalización.
- Activación de Servicios durante el arranque.
- Activación del volcado de memoria -Crash Dump-.
- Creación de usuarios.
6.- Fin de la Instalación.
Una vez concluido el paso anterior -En el HandBook lo denominan Tareas Posteriores a la Instalación- se presenta una pantalla resumen desde donde se pueden hacer cambios o terminar. Nosotros elegimos Salir -Exit-.PASO 6a: Repaso Final de la Configuración seleccionamos Salir -Exit- |
PASO 6b: Configuración Manual Seleccionamos NO |
Finalmente, bsdinstall nos pregunta si queremos reiniciar el sistema o acceder al Live CD, RESPONDEMOS Live CD
PASO 6c: Como paso FINAL de BSDINSTALL elegimos LIVE CD |
PASO 6d: Acceso al entorno Live Cd antes de reiniciar. |
Nos validamos como root y en este instante donde procedemos a ejecutar el tercero de los scripts que realiza los últimos -e importantes- pasos de configuración del Root Pool y reinicia la máquina.
# umount /media
# cd /var/tmp
# ./post_install_fbsd_rpool.sh
Tareas Posteriores a la Instalación
Una vez arrancado el sistema por primera vez, procedo a realizar 2 pasos que siempre hago en mis instalaciones de FreeBSD.Actualización de la colección de Ports
Primero, antes que nada, actualizamos la colección de Ports, estos pasos solo se hace la primera vez.root@morsa:/root # portsnap fetchA partir de este momento para actualizar la colección de Ports utilizamos :
root@morsa:/root # portsnap extract
root@morsa:/root # portsnap update
root@morsa:/root # portsnap fetch update
Instalación de portmaster
Esta herramienta simplifica la gestión de la colección de Ports.Le incluimos el soporte para el nuevo gestor de paquetes.
root@morsa:/root # cd /usr/ports/ports-mgmt/pkg && make install clean
root@morsa:/root # cd /usr/ports/ports-mgmt/portmaster && make install clean
root@morsa:/root # echo 'WITH_PKGNG=yes' >> /etc/make.conf
root@morsa:/root # cp /usr/local/etc/portmaster.rc.sample /usr/local/etc/portmaster.rc
root@morsa:/root # pkg2ng
Editamos el fichero portmaster.rc y comprobamos los valores de las variables.
//Inicio fragmento portmaster.rc
# Always delete stale distfiles without prompting (-d)//Fin de fragmento portmaster.rc
ALWAYS_SCRUB_DISTFILES=dopt
# Be verbose (-v)
PM_VERBOSE=vopt
# Install packages for build-only dependencies (--packages-build)
PM_PACKAGES_BUILD=pmp_build
# Delete build-only dependencies when finished (--delete-build-only)
PM_DEL_BUILD_ONLY=pm_dbo
#Suppress the build confirmation message (--no-confirm)
PM_NO_CONFIRM=pm_no_confirm
Instalación de beadm
Este ejemplo de instalación de root sobre ZFS que he realizado está concebido para adaptarse a la herramienta beadm que es con la que gestionamos los entornos de arranque (Boot Enviroments).1.- Instalamos beadm con portmaster
root@morsa:/root # portmaster sysutils/beadm
2.- Creamos el primer snapshot después de la instalación.
root@morsa:/root # beadm create 91_30062013@intall_r2438253.- Listamos los BEs y snapshots disponibles
root@morsa:/root # beadm list -s
BE/Dataset/Snapshot Active Mountpoint Space Created
91_30062013
fbsdzpool1/ROOT/91_30062013 NR / 378.1M 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/usr - /usr 357.0M 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/usr/home - /usr/home 144.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/usr/ports - /usr/ports 1.4G 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/usr/ports/distfiles - /usr/ports/distfiles 1.7M 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/usr/ports/packages - /usr/ports/packages 144.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/usr/src - /usr/src 509.0M 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var - /var 692.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/crash - /var/crash 148.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/db - /var/db 149.1M 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/db/pkg - /var/db/pkg 280.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/empty - /var/empty 144.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/log - /var/log 316.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/mail - /var/mail 152.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/run - /var/run 452.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013/var/tmp - /var/tmp 256.0K 2013-06-30 14:39
fbsdzpool1/ROOT/91_30062013@intall_r243825 - - 120.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/usr@intall_r243825 - - 8.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/usr/home@intall_r243825 - - 0.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/usr/ports@intall_r243825 - - 8.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/usr/ports/distfiles@intall_r243825 - - 8.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/usr/ports/packages@intall_r243825 - - 0.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/usr/src@intall_r243825 - - 8.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var@intall_r243825 - - 124.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/crash@intall_r243825 - - 0.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/db@intall_r243825 - - 132.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/db/pkg@intall_r243825 - - 8.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/empty@intall_r243825 - - 0.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/log@intall_r243825 - - 108.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/mail@intall_r243825 - - 8.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/run@intall_r243825 - - 184.0K 2013-06-30 16:00
fbsdzpool1/ROOT/91_30062013/var/tmp@intall_r243825 - - 100.0K 2013-06-30 16:00
Consideraciones finales
Esta guía de instalación está pensada para optimizar ZFS sobre los discos actuales, cuyos sectores físicos son de 4K, frente a los 512 bytes tradicionales; aunque se sigan presentado a la BIOS y SOs como de sectores de 512 bytes.Si no se tiene en cuenta esta circunstancia a la hora de alinear las particiones y crear los sistemas de ficheros, supone una degradación de rendimiento en E/S a disco.
Finalmente vamos a analizar brevemente la jerárquía de ZFS definida:
fbsdzpool1: Es el pool de ZFS donde residen los BEs de FreeBSD.
fbsdzpool1/ROOT: Es el sistema de archivos Raiz común para todos los BEs.
fbsdzpool1/swap: El swap lo defino dentro del pool y es común para todos los BEs.
fbsdzpool1/tmp: El sistema de ficheros /tmp también es común para todos los BEs.
fbsdzpool1/ROOT/91_30062013: Es el BE inicial donde se realiza la instalación de Freebsd. De este punto parten los directorios estandar /, /usr, /usr/home, /var.
Cada BE tiene su propia copia de /usr/ports y /var. Lo hago así porque después de una actualización de versión principal hay que reconstruir la colección de puertos como parte del proceso de actualización. Por lo tanto, si algo va mal, tenemos que revertir la colección de ports y paquetes instalados, no sólo el S.O.
Otro opción, muy popular, es que /var y /usr/ports cuelguen directamente de fbsdzpool1 y así queden compartidos entre todos los BEs -esta opción no está contemplado en los scripts en su versión actual-.
En todo caso /var y /usr/ports deben ir parejos; o se comparten entre los BEs o son locales a cada BE, pero los dos juntos.
También es habitual ver al directorio /usr/home fuera del BE colgando directamente de fbsdzpool1, yo lo prefiero local a cada BE -esta opción no está contemplado e los scripts en su versión actual-
No hay comentarios:
Publicar un comentario
Vuestros comentarios son bien recibidos, os animo a contribuir proponiendo temas que os interesen para desarrollar en este blog.