Ubuntu 18.04 Root en ZFS

El año pasado necesitaba crear instrucciones para instalar el sistema operativo Ubuntu 18.04. Por cierto, no hay nada complicado en la instalación de Ubuntu, pero hay un matiz: quería usar el sistema de archivos ZFS como base. Por un lado, Ubuntu admite ZFS en el nivel del kernel, pero todavía no hay un instalador, pero hay una instrucción, sí:


https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS


La secuencia de acciones en este manual es generalmente correcta, pero algunos puntos requieren ajustes. Entonces, lo que sigue no es una traducción directa de las instrucciones, sino gratuita, teniendo en cuenta las correcciones, mi experiencia con ZFS y otras cosas. Tampoco considero problemas de cifrado de disco y uso el gestor de arranque MBR. Mis instrucciones de instalación se pueden obtener aquí.



0. Preparación del servidor


Lo primero que falta en las instrucciones y que no se considera de ninguna manera es que ZFS no funciona muy bien con las matrices RAID de hardware, en particular, está conectado con la caché de escritura, lo cual es comprensible: el sistema de archivos ZFS está registrado y requiere un control completo sobre las operaciones de escritura. Además, cuando se utiliza una matriz RAID de hardware ya preparada, las capacidades de ZFS se pierden en términos de caché, repuesto y más. Por lo tanto, todos los discos deben transferirse al modo HBA y, si esto no es posible, crear un RAID separado para cada disco y deshabilitar el controlador de caché de escritura.


Además, cuando use la agregación de puertos de red, puede deshabilitarlos en la etapa de instalación, para no complicarlo (realizaré todas las operaciones adicionales sin vinculación).


1. Preparación del entorno de instalación.


1.1. Livecd


Como se mencionó anteriormente, desafortunadamente, no hay un instalador de Ubuntu listo que use root en ZFS, por lo que la instalación se lleva a cabo usando un disco LiveCD:


Descargue desde aquí: http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-amd64.iso


Al mismo tiempo, intenté con mis colegas usar varias imágenes de disco, ya que realmente no quería usar el shell gráfico, pero esto no condujo a nada bueno.

Arrancamos desde el LiveCD, seleccionamos Probar Ubuntu y abrimos el terminal (Ctrl + Alt + T).


1.2. Actualización e instalación de repositorios

''
sudo apt-add-repository universe sudo apt update 

Aquí estamos esperando el primer problema si la configuración de red del servidor no está determinada por DHCP. La actualización de repositorios no funcionará, así que configuremos la red.

Observamos las interfaces de red y encontramos la que nos permitirá conectarnos:


 sudo ip a 

Configure la interfaz de red:


 sudo echo "auto {{ NAME }}" >> /etc/network/interfaces sudo echo "iface {{ NAME }} inet static" >> /etc/network/interfaces sudo echo " address {{ IP }}" >> /etc/network/interfaces sudo echo " netmask {{ NETMASK }}" >> /etc/network/interfaces sudo echo " gateway {{ GATEWAY }}" >> /etc/network/interfaces sudo service networking restart 

Y resolución de DNS:


 sudo echo 'nameserver 8.8.8.8' >> /etc/resolv.conf 

Actualización de repositorios:


 sudo apt update 

1.3. Servidor SSH (opcional)


Para facilitar la instalación, puede elevar el servidor OpenSSH y realizar todas las operaciones adicionales a través del cliente SSH


Establezca la contraseña para el usuario de ubuntu:


 passwd 

Esto es importante! Dado que de lo contrario, el acceso a través de ssh se realizará sin una contraseña con derechos de sudo. Sin embargo, no puede establecer una contraseña simple.

Instala y ejecuta OpenSSH:


 sudo apt install openssh-server sudo service ssh start 

Y en la terminal de la estación de trabajo:


 ssh ubuntu@{{ ip server }} 

1.4. Hazte root


 sudo -s 

1.5. Instalación de soporte ZFS en un entorno LiveCD


 apt install --yes debootstrap gdisk zfs-initramfs 

2. Particionamiento y formateo de discos duros


2.0. Definición de matrices de discos


La instrucción principal no contiene un punto importante sobre cómo determinar las matrices de discos.


Por lo general, la cantidad de discos en los servidores es:


  • 2 discos;
  • 4 discos;
  • muchos discos;

No consideramos 1 disco porque generalmente es una anomalía.


2.0.1. 2 discos


Aquí todo es simple, una matriz MIRROR (RAID1). Si hay otra tercera unidad, puede colocarla en un repuesto dinámico (REPUESTO) o ensamblar una matriz RAIDZ (RAID5). Pero 3 discos en el servidor son muy raros.


2.0.2. 4 discos


Si todas las unidades son iguales, solo hay tres opciones (el cuarto RAID0 básicamente no lo considero):


  • MIRROR + MIRROR es un análogo de RAID10, más precisamente RAID01, ya que en ZFS es espejo + espejo. 50% del espacio disponible en disco;
  • RAIDZ es un análogo de RAID5. 75% del espacio disponible en disco;
  • RAIDZ2 es un análogo de RAID6. 50% del espacio disponible en disco;

En la práctica, uso la matriz MIRROR + MIRROR, aunque es obvio que la matriz RAIDZ es más rentable, ya que proporciona más espacio en disco, pero hay matices.


En términos de tolerancia a fallas, los arreglos se organizan en este orden (de mejor a peor):


  • RAIDZ2: se pueden perder dos discos sin pérdida de datos;
  • MIRROR + MIRROR: se puede perder un disco sin pérdida de datos, y con un 66% de probabilidad de que se pierda un segundo disco sin pérdida de datos;
  • RAIDZ: solo se puede perder un disco sin pérdida de datos;

En términos de velocidad, las matrices se organizan en este orden:


  • ESPEJO + ESPEJO - tanto en términos de escritura como de lectura;
  • RAIDZ: en términos de grabación es más lento, ya que además de la grabación, se requiere calcular la suma de verificación;
  • RAIDZ2: en términos de escritura es aún más lento ya que requiere el cálculo de sumas de verificación más complejas;

En términos de la velocidad de la matriz durante la degradación de un disco:


  • MIRROR + MIRROR: cuando una unidad se cae, esencialmente solo se pierde la lectura paralela de un espejo, el segundo espejo funciona sin degradación del rendimiento;
  • RAIDZ2: la degradación en la degradación del rendimiento es mayor, ya que requiere una asignación hacia atrás del bloque desde la suma de comprobación para 1/4 de la búsqueda de datos + bloque;
  • RAIDZ: la degradación es mucho mayor, ya que requiere un recálculo del bloque desde la suma de comprobación para 1/3 de la búsqueda de datos + bloque;

La comparación de características es subjetiva, pero refleja suficientemente mi elección como punto medio.


Al mismo tiempo, debe comprender que "más lento" e "aún más lento" no lo es a veces, pero solo el 10-20% en el peor de los casos, por lo tanto, si su base de datos o aplicación para trabajar con discos no está optimizada, entonces disminuirá la velocidad en principio, no te des cuenta. El factor de velocidad de grabación debe considerarse solo cuando realmente lo necesite.


2.0.2. Muchos discos


El problema principal es que si tenemos muchos discos y queremos hacer una matriz común para todo, entonces tendremos que marcar cada disco con el sector de arranque o hacer un poco de finta con nuestros oídos. En la práctica, para plataformas multidisco, intento construir esta configuración:


  • 2 discos SSD: hacemos un espejo y como matriz de arranque principal con el sistema operativo y caché ZFS para la segunda matriz de discos;
  • El resto está obstruido con discos SATA o SAS y sin marcado, recopilamos una matriz de discos ZFS;

Lo mismo se aplica a los servidores de 4 discos si queremos obtener una plataforma bastante universal;


Si todos los discos son iguales, y no tiene sentido asignar dos discos para una matriz separada (por ejemplo, 6 discos de 8 Tb cada uno), entonces puede hacer discos de arranque del primer grupo de la matriz. Es decir, si va a hacer una matriz como: MIRROR + MIRROR + MIRROR o RAIDZ + RAIDZ, marcamos el sector de arranque solo para el primer grupo. En principio, es posible particionar solo una unidad, incluso MIRROR y RAIDZ, y sustituir el resto en forma cruda, ZFS hará la matriz por el elemento más pequeño, pero en este caso, si la primera unidad falla, perderá el único disco de arranque, por lo tanto Vale la pena hacer esto.


Es importante comprender que en el sistema de archivos ZFS - stripe esto no es exactamente RAID0, y funciona de manera un poco diferente y no requiere los mismos tamaños de disco, por lo que asignar un pequeño espacio para el sector de arranque del clima no servirá de mucho, lo principal es indicar en el BIOS el disco correcto desde el cual arrancar .


2.1. Particionamiento y limpieza de disco


El paquete mdadm se usa para marcar el disco, póngalo:


 apt install --yes mdadm 

Analizamos qué discos tenemos disponibles:


 lsblk 

Y limpiarlos:


 sgdisk --zap-all /dev/{{ disk name }} 

2.2. Diseño del disco


En realidad, la partición de arranque:


 sgdisk -a1 -n1:34:2047 -t1:EF02 /dev/{{ disk name }} 

La seccion principal.


Aquí puede haber variaciones: si necesita asignar una partición adicional de discos SSD, por ejemplo, para ZFS Cache o para Aerospike, entonces crea la partición principal de volumen limitado:

 sgdisk -n2:0:+100GB -t2:BF01 /dev/{{ disk name }} sgdisk -n3:0:0 -t2:BF01 /dev/{{ disk name }} 

Si usamos todo el espacio, simplemente cree una sección para el espacio restante:


 sgdisk -n2:0:0 -t2:BF01 /dev/{{ disk name }} 

No olvides comprobar cómo resultó:


 lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 1007K 0 part └─sda2 8:2 0 1.8T 0 part sdb 8:16 0 1.8T 0 disk ├─sdb1 8:17 0 1007K 0 part └─sdb2 8:18 0 1.8T 0 part ... 

2.3. Crear una matriz ZFS


 zpool create \ -o ashift=12 \ -O atime=off \ -O canmount=off \ -O compression=lz4 \ -O checksum=fletcher4 \ -O normalization=formD \ -m legacy \ -R /mnt \ -f \ tank \ mirror \ /dev/{{ disk a part 2}} \ /dev/{{ disk b part 2}} 

El primer rastrillo en el que uno de mis familiares administradores pisó de inmediato, es que al crear una matriz ZFS, se requiere especificar no un disco sino una partición en el disco, si está especialmente creado para esto.

A continuación, en orden:


  • ashift = 12 - use el tamaño de bloque en 4K, en principio, todavía no entiendo por qué a menudo en los sistemas operativos el tamaño de bloque predeterminado es de 512 bytes cuando prácticamente no hay tales discos;
  • atime = off - deshabilita la fecha de actualización de acceso a los archivos, siempre lo apago ya que realmente nunca necesité esta información y no es necesario volver a cargar el kernel;
  • canmount = off: deshabilita la capacidad de montar la partición raíz;
  • compresión = lz4 - habilita la compresión de datos con el algoritmo LZ4. Se recomienda incluir este parámetro no solo para ahorrar espacio en disco, sino también para reducir la cantidad de operaciones de E / S. Al mismo tiempo, para este agloritmo de compresión, utilización de CPU extremadamente baja;
  • checksum = fletcher4: el algoritmo de suma de comprobación predeterminado, por lo que vale la pena volver a comprobar fletcher4;
  • normalización = formD: se usa para mejorar el trabajo con UTF-8, de hecho, limita la posibilidad de usar nombres de archivos que no sean UTF-8. Aquí todos deciden por sí mismos, en nuestro trabajo siempre usamos solo la codificación UTF-8;
  • xattr = sa: acelerar el trabajo con atributos extendidos. No uso esta opción debido a que cuando se usa esta opción, la compatibilidad con otras implementaciones de OpenZFS está deshabilitada (por ejemplo: FreeBSD). Y compatibilidad con Windows y, por cierto, lo necesito. Además, esta opción se puede habilitar en la sección final;
  • -m legacy: punto de montaje en ninguna parte, y no es necesario montar la partición raíz;
  • -R / mnt: prefijo de montaje de partición temporal para instalar el núcleo;
  • -f - fuerza de creación de matriz. Si la matriz ZFS se recopiló en discos anteriormente, entonces el comando de creación no funcionará, nunca se sabe, tal vez cometió un error y desea borrar datos importantes;

Indico habitualmente el nombre de la matriz de discos del sistema raíz como tanque, aunque en la actualidad prefieren usar el nombre rpool (grupo raíz) en el entorno Linux. En mi práctica, generalmente uso este nombre de matrices:


  • tanque: la matriz del sistema principal;
  • store: una matriz adicional con discos grandes para el almacenamiento de datos;
  • caché: una matriz adicional de discos SSD, si la partición principal no está en ellos;

En general, recomiendo desarrollar inmediatamente una práctica de nombrar algo que no se confunda.


3. Instalación del sistema


3.1. y 3.2. Crear un sistema de archivos raíz


Combiné específicamente los párrafos 3.1. y 3.2. ya que creo que especificar la partición raíz en el tercer nivel es absolutamente redundante. Eso es cierto, durante varios años de trabajo con ZFS, nunca tuve que hacer ninguna manipulación con la partición raíz. Además, hay imágenes con las que puedes hacer puntos de control. Por lo tanto, mi sección raíz es tank / root:

 zfs create -o mountpoint=/ tank/root 

Al mismo tiempo, se detecta el primer error fatal en la instrucción original, a saber, la falta de una partición de arranque para la matriz de discos:

 zpool set bootfs=tank/root tank 

3.3. Crear particiones adicionales


En esta parte de las instrucciones básicas puedes tirar todo y olvidar. Los muchachos obviamente lo exageraron con aplastamiento y opciones, por lo que, en el camino, tuve que arreglar algo. Es cierto, no ayudó mucho. Como los problemas posteriores aparecen nuevamente y al final resulta que todo esto no funciona, por lo tanto, en el párrafo 4.11. Esto se corrige nuevamente.


Separar una sección separada para / var / games parece bastante épico. No me importa, pero esto es claramente demasiado.


El hecho de que las particiones se creen simplemente en ZFS y admitan una jerarquía no significa que los directorios clásicos deban abandonarse. Un ejemplo simple: una vez tuve más de 4K particiones ZFS en un grupo de servidores, fue necesario, pero el reinicio del servidor se ralentizó durante varios minutos debido al montaje de estas particiones.


Comencemos con una pizarra limpia.


Hay particiones de archivo estáticas y dinámicas.


Las secciones de archivos estáticos incluyen secciones con programas y sus configuraciones, se completan una vez y no cambian durante la operación. Al mismo tiempo, las particiones estáticas anteriores se dividieron en particiones del sistema y del usuario (/ usr), pero en este momento están mezcladas en los sistemas operativos Linux y no tiene sentido separarlas, y no funcionará.


Las secciones de archivos dinámicos incluyen secciones en las que se almacenan:


  • Datos temporales: ecuación: tmp, swap;
  • Registros de trabajo: ecuación: var / log;
  • Datos del usuario - eq .: inicio;
  • Datos - ecuación: var / db y qué suerte;
  • Otros resultados del programa en forma de archivos;

En las familias de Linux, las particiones dinámicas incluyen / tmp y / var, pero esto no es preciso, ya que pueden entrar en / var / lib, programas y bibliotecas, en general, todo está mezclado, pero no obstante ...


Primero debe decidir si crear la partición / tmp en el disco o en la memoria como tmpfs. Si creamos en el disco, cree una partición separada para él:


 zfs create -o mountpoint=legacy tank/tmp 

Opciones com.sun: auto-snapshot = false setuid = off bien, no importa cómo se haga el clima, no se complique. Pero con SWAP lo haremos más adelante en el paso 7.

Separe la sección var por separado:


 zfs create -o mountpoint=legacy tank/var 

Y secciones de usuario:


 zfs create -o mountpoint=/home tank/home zfs create -o mountpoint=legacy tank/home/root 

Tiene sentido asignar particiones de usuario, ya que en la práctica se obstruyen periódicamente con diferentes artefactos y para que sea más fácil monitorearlos, es mejor crear particiones separadas para ellos, así como el directorio de inicio del usuario raíz (especialmente para aquellos a quienes les gusta trabajar como root). El uso de cuotas en los directorios de usuarios no solo no ayuda a obstruir el espacio en disco, sino que también interfiere, ya que en tales casos, los usuarios comienzan a dejar artefactos en cualquier lugar y puede ser bastante difícil encontrarlos más tarde. Esto no se trata, por lo que solo necesita controlar y golpear las manos.

mount point tank / home / root aparece como heredado, no como / root. Esto es correcto, ya que el montaje de esta sección se realiza en la sección 4.11


Ahora necesitamos montar temporalmente nuestras particiones dinámicas en / mnt:


 cd /mnt/ mkdir var tmp root mount -t zfs tank/var /mnt/var/ mount -t zfs tank/tmp /mnt/tmp/ mount -t zfs tank/home/root /mnt/root/ 

3.4 Instalando el núcleo


En la instrucción principal hay un par de comandos innecesarios más, no prestamos atención, aparentemente artefactos de experimentos:

 debootstrap bionic /mnt 

Como resultado, debería obtener algo como esto:


 zfs list NAME USED AVAIL REFER MOUNTPOINT tank 213M 1.76T 96K legacy tank/home 208K 1.76T 96K /mnt/home tank/home/root 112K 1.76T 112K legacy tank/root 147M 1.76T 147M /mnt tank/tmp 96K 1.76T 96K legacy tank/var 64.6M 1.76T 64.6M legacy 

El tamaño de la partición vacía de 96K, respectivamente, solo el tanque / tmp permaneció vacío, y el resto se registró durante la instalación del núcleo, lo que significa que las particiones se montaron correctamente.


4. Configuración del sistema


4.1. Configurar hosts y nombre de host


 echo HOSTNAME > /mnt/etc/hostname echo “127.0.0.1 localhost” > /mnt/etc/hosts echo “127.0.0.1 HOSTNAME” >> /mnt/etc/hosts 

4.2. Configurar la interfaz de red


Entonces sí, ya tenemos netplan aquí:

 nano /mnt/etc/netplan/setup.yaml network: version: 2 renderer: networkd ethernets: eno2: dhcp4: no dhcp6: no addresses: [ {{ IP }}/{{ netmask }}, ] gateway4: {{ gateway IP }} nameservers: addresses: [8.8.8.8] 

4.3. Configurar repositorios apt


 nano /mnt/etc/apt/sources.list deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe 

src: no se necesita principalmente

4.4. Montamos secciones de archivos virtuales LiveCD y "vamos" al nuevo sistema


 mount --rbind /dev /mnt/dev mount --rbind /proc /mnt/proc mount --rbind /sys /mnt/sys chroot /mnt /bin/bash --login 

se requiere usar - rbind, pero no - bind

Ya estamos en el nuevo sistema ...


4.5. Configurar el entorno base


 ln -s /proc/self/mounts /etc/mtab chmod 1777 /tmp apt update 

Lugar y hora:


 dpkg-reconfigure locales * en_US.UTF-8 * ru_RU.UTF-8 dpkg-reconfigure tzdata 

Y editores adicionales que les gusta lo que:


 apt install --yes vim nano 

4.6. Instalación de soporte ZFS


 apt install --yes --no-install-recommends linux-image-generic apt install --yes zfs-initramfs 

4.8. Instalar el gestor de arranque


Como se dijo anteriormente, estoy usando un MBR desactualizado:


 apt install --yes grub-pc 

Durante la instalación del gestor de arranque, es necesario seleccionar todos nuestros discos que identificamos como de arranque, mientras que el instalador jura sobre todos los demás discos, excepto el primero, estamos de acuerdo y hacemos el paso 5 (no está claro por qué el resto se dejó para más adelante):

4.8.1. (5.1) Verifique que se reconozca el sistema de archivos raíz:


 grub-probe / zfs 

4.8.2. (5.2) Actualización de initrd


 update-initramfs -u -k al 

4.8.3. (5.3) Simplifique la depuración de GRUB


 vi /etc/default/grub ... GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="console" ... 

4.8.4. (5.4.) Actualización de la configuración del gestor de arranque


 update-grub 

4.8.5. (5.5.) Instale el gestor de arranque en cada disco marcado como de arranque


 grub-install /dev/sda grub-install /dev/sdb ... 

Es importante que estos comandos funcionen correctamente. Para ser sincero, no pude obtener lo contrario al menos una vez, por lo que no sé qué hacer, pero lo más probable es que, si tiene un error, probablemente haya hecho algo mal al marcar el disco (Sección 2.2.).

4.8.6. (5.6.) Verifique que el módulo ZFS esté instalado


 ls /boot/grub/*/zfs.mod /boot/grub/i386-pc/zfs.mod 

4.10. Establecer la contraseña de root (¡difícil!)


 passwd 

Y sí, instalaremos openssh de inmediato, de lo contrario obtendremos una sorpresa después del reinicio si trabajamos de forma remota:

 apt install --yes openssh-server 

No olvide corregir la configuración de sshd:


 vi /etc/ssh/sshd_config ... PermitRootLogin yes ... PasswordAuthentication yes ... 

4.11. Arreglar sistemas de archivos de montaje


Aquí llegamos a lo más interesante. El hecho es que las particiones ZFS se montan después del inicio de algunos demonios (también influimos en ZFS_INITRD_ADDITIONAL_DATASETS en / etc / default / zfs), que, a su vez, crean una estructura propia en / var y comienzan a completar los registros del sistema. Cuando llega el momento de montar particiones ZFS, resulta que los puntos de montaje no están vacíos y no se monta nada, los datos están dispersos, todo está mal. Por lo tanto, debe especificar puntos de montaje en / etc / fstab ya que systemd se enfoca principalmente en ellos al acceder a la carpeta:

 vi /etc/fstab tank/var /var zfs noatime,nodev 0 0 tank/tmp /tmp zfs noatime,nodev 0 0 tank/home/root /root zfs noatime,nodev 0 0 

El resto depende de la cláusula 6. ya hecho

6. Primer reinicio


6.1. Tome una foto de la partición raíz


 zfs snapshot tank/root@setup 

No tiene sentido para él, en la práctica nunca he sacudido la partición raíz del sistema y nunca he usado instantáneas de esta partición, pero de todos modos dejé que mienta, puede ser útil

6.2. Salir chroot


 exit 

6.3. Desmontar particiones de LiveCD y exportar matriz ZFS


 cd mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | xargs -i{} umount -lf {} umount /mnt/root umount /mnt/var umount /mnt/tmp zpool export tank 

Se requiere la exportación de matriz de disco para borrar el caché zfs

6.4 Reiniciar


El reinicio se realiza mejor en el terminal LiveCD, ya que si trabaja a través de un cliente ssh, reiniciarlo puede provocar que el servidor se "congele".

 reboot 

Sin embargo, si algo salió mal y el servidor no se reinició, puede reiniciarlo de cualquier manera, ya que la matriz ZFS se exporta y es difícil dañarla.

6.5. Estamos esperando un reinicio y vamos como root


6.6. Crea tu cuenta de usuario


 zfs create tank/home/{{ LOGIN }} useradd -u {{ UID }} -G adm,sudo -d /home/{{ LOGIN }}/ -s /bin/bash {{ LOGIN }} cp -a /etc/skel/.[!.]* /home/{{ LOGIN }} chown -R {{ LOGIN }}:{{ LOGIN }} /home/{{ LOGIN }} 

Agregue la clave ssh pública al usuario y configure la contraseña para él:


 su - {{ LOGIN }} mkdir .ssh chmod 0700 .ssh vi .ssh/authorized_keys exit passwd {{ LOGIN }} 

En OpenSSH eliminamos la posibilidad de iniciar sesión como autenticación de root y contraseña:

 vi /etc/ssh/sshd_config ... PermitRootLogin no ... PubkeyAuthentication yes ... PasswordAuthentication no ... service ssh restart 

6.7. 6.8. Ya no es necesario


7. Configuración de intercambio


7.1. Crear una partición ZFS


 zfs create \ -V 32G \ -b $(getconf PAGESIZE) \ -o compression=zle \ -o logbias=throughput \ -o sync=always \ -o primarycache=metadata \ -o secondarycache=none \ tank/swap 

  • -V 32G: el tamaño de nuestro SWAP, puede determinar el que realmente se necesita;
  • -b $ (getconf PAGESIZE) - tamaño de bloque (4K con ashift = 12);
  • compresión = zle: elija el algoritmo de compresión que sea mínimo en términos de consumo de recursos, ya que de hecho el tamaño del bloque es 4K, la compresión como tal no permitirá la utilización de entrada-salida, pero será posible ahorrar en bloques cero;
  • logbias = throughput - configurando el ancho de banda para optimizar las operaciones sincrónicas;
  • sync = always: siempre sincroniza el registro. Esto reduce ligeramente el rendimiento, pero garantiza totalmente la fiabilidad de los datos;
  • primarycache = metadata: solo metadatos de caché, ya que el intercambio no se usará para leer el mismo bloque varias veces;
  • darycache = none: deshabilita la caché secundaria por completo por los motivos mencionados anteriormente;

7.2. Configurar la partición de intercambio


 mkswap -f /dev/zvol/tank/swap echo /dev/zvol/tank/swap none swap defaults 0 0 >> /etc/fstab echo RESUME=none > /etc/initramfs-tools/conf.d/resume 

7.3. Activar intercambio


 swapon -av 

Además de las instrucciones, no hay mucho interés, ya que depende en gran medida de las preferencias de administradores específicos y las tareas del servidor en su conjunto, excepto por un punto, a saber: "Arranque de emergencia"

Y no olvides poner Firewall


R. Bota de emergencia


Preparamos el entorno de instalación (elemento 1.)


Durante la preparación, se importa la matriz ZFS, por lo que debe volver a importarla, pero con el punto de montaje correcto:


 zpool export -a zpool import -N -R /mnt tank zfs mount -a 

, , , fstab, :

 mount -t zfs tank/var /mnt/var/ mount -t zfs tank/tmp /mnt/tmp/ mount -t zfs tank/home/root /mnt/root/ 

, , chroot .4.4., . 6.3.


D.


3.3. . , : , /spool, /data. ZFS .


Resumen


  • ZFS , , ;
  • ZFS, , . ZFS — , ;
  • .

Source: https://habr.com/ru/post/439860/


All Articles