Ext4 frente a XFS frente a Btrfs frente a ZFS para NAS

Ext4 frente a XFS frente a Btrfs frente a ZFS para NAS

Mi caso de uso: tengo Ubuntu Server 18.04 instalado en un SSD M.2. Tengo un disco duro de 4 TB que quiero agregar como almacenamiento. Dado que es principalmente para archivos multimedia grandes y copias de seguridad, no se escribirá en él con mucha frecuencia.

¿Qué sistema de archivos crees que es el más adecuado para este caso de uso?

Mis principales candidatos son Ext3/4, XFS, Btrfs y ZFS (no dude en defender otro).

No estoy preguntando "¿Cuál es el mejor sistema de archivos?"; no existe tal cosa como "el mejor". Solo pregunto a la gente qué sistema de archivos podría ser el más adecuado para este caso de uso. Intente incluir:

  • ¿Existen inconvenientes o riesgos? Escuché que XFS puede dañar los datos si hay un corte de energía. Lo mismo con ZFS sin RAM ECC.
  • ¿Es posible agregar RAID-1 más adelante sin perder datos? No tengo suficiente dinero para otro disco duro en este momento (lo usé para un disco externo; RAID no reemplaza las copias de seguridad), pero puedo agregar uno más adelante. Esto no es un requisito, sólo algo que podría ser bueno.
  • ¿Cuál es el rendimiento de lectura/escritura? Btrfs probablemente satisfaría la mayoría de mis necesidades, pero es muy lento en los puntos de referencia de Phoronix. XFS tiene un rendimiento impresionante, pero he oído que puede provocar la pérdida de datos.

Gracias por su consejo.

Respuesta1

Generalmente uso uno de los dos sistemas de archivos siguientes:

  • XFS para cualquier cosa que no funcione bien con CoW (o para máquinas virtuales cuyo almacén de datos ya está en un sistema de archivos CoW) o cuando se requiere E/S directa extremadamente rápida;

  • ZFS para cualquier otra cosa.

Para su caso de uso, usaría ZFS, especialmente considerando que Ubuntu 18.04 ya lo incluye. Como se puede conectar fácilmente otra pata de espejo a un dispositivo ya existente, ZFS encaja muy bien. Por ejemplo, nombre su disco nvme0p1:

  • zpool create tank /dev/nvme0p1cree su único grupo de vdev llamado "tanque";
  • zpool attach tank <newdev> /dev/nvme0p1permite la duplicación.

Si, por alguna razón, no usas o no puedes usar ZFS, entonces MDRAID y XFS son tus amigos:

  • mdadm --create /dev/md200 -l raid1 -n 2 /dev/nvme0p1 missingcreará una matriz RAID1 a la que le falta un tramo (consulte el punto 1);
  • mdadm --manage /dev/md200 --add <newdev>adjunta una nueva pata de espejo (formando un RAID1 completo, ver #2)

Después de crear la matriz, puede formatearla con XFS a través demkfs.xfs

noSugiero usar BTRFS, ya que tanto el rendimiento como la resistencia son deficientes. Por ejemplo, desde elwiki de debian:

Actualmente (2019-07-07, linux ≤ 5.1.16) existe un error que hace que un perfil raid1 de dos discos pase a ser de solo lectura para siempre la segunda vez que se monta en un estado degradado, por ejemplo, debido a una falta/ disco roto/restablecimiento de enlace SATA

Tenga en cuenta también que los proveedores comerciales de NAS que utilizan BTRFS (léase: Synology) no utilizan su propia función RAID integrada; más bien, utilizan la probada capa MDRAID de Linux.

EDITAR:Si bien algunos sostienen que XFS es propenso a la pérdida de datos, esto simplemente no es correcto. Bueno, en comparación con ext3, XFS (y otros sistemas de archivos que admiten asignación retrasada) pueden perder más datos no sincronizados en caso de un apagado incontrolado. Pero los datos sincronizados (es decir, escrituras importantes) son 100% seguros. Además, un error específico agrava la pérdida de datos XFSfue corregido hace más de 10 años. Ese bicho aparte,cualquiersistema de archivos de asignación retrasada (ext4 y btrfs incluidos)voluntadperderá una cantidad significativa o datos no sincronizados en caso de un apagado incontrolado.

En comparación con ext4, XFS tiene asignación de inodos ilimitada, sugerencias de asignación avanzadas (si las necesita) y, en una versión reciente, compatibilidad con reflink (pero deben habilitarse explícitamente en Ubuntu 18.04, consultePágina de manual de mkfs.xfspara informacion adicional)


1: /proc/mdstatArchivo de ejemplo con dispositivo faltante:

Personalities : [raid1]
md200 : active raid1 loop0[0]
      65408 blocks super 1.2 [2/1] [U_]

unused devices: <none>

2: /proc/mdstatarchivo después de agregar un segundo dispositivo

Personalities : [raid1]
md200 : active raid1 loop1[2] loop0[0]
      65408 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Respuesta2

Esto parece más bien una pregunta parasuperusuarioque para serverfault, pero algunas de las ideas también son válidas para este sitio, así que intentaré responder algunas de las preguntas:

  • XFS tiene fama de no gustarle la pérdida de energía. Han sucedido muchas cosas desde entonces, y RedHat, Oracle y similares lo utilizan como sistema de archivos predeterminado hoy en día, por lo que no me sorprendería que hoy en día este sea un problema significativamente menor de lo que solía ser. Especialmente si tiene una política de respaldo decente, si su caso de uso es del tipo que ve un beneficio de velocidad con este sistema de archivos, podría valer la pena el posible riesgo.
  • ZFS sin RAM ECC todavía tiene una funcionalidad muy buena, pero corre el riesgo de no detectar algunos casos de datos incorrectos. Ejecuté ZFS sin memoria ECC durante varios años en un entorno doméstico similar al que usted describe y nunca experimenté una pérdida obvia de datos, pero tampoco almacené exactamente datos críticos en ese volumen. Desde entonces, migré al hardware de servidor adecuado y ahora me siento mucho más cómodo usando mi almacenamiento para cosas importantes.
  • Con ZFS simplemente debería poder agregar un disco a un grupo de un solo disco para crear un espejo. No lo he probado en la práctica, pero obtengo múltiples resultados de búsqueda que afirman haber sido exitosos al verificarPato Pato a ganar. No estoy seguro acerca de otros sistemas, pero siempre que tenga algún tipo de administrador de volumen debajo de su sistema de archivos, ir a RAID1 desde un solo disco debería ser trivial.
  • Los sistemas de archivos basados ​​en CoW (zfs, btrfs) son más lentos que los sistemas con menos funciones y dependen más de tener un hardware suficientemente potente que los respalde.

Al igual que en un entorno corporativo, definitivamente me tomaría el tiempo para ejecutar pruebas comparativas con mi carga esperada, para obtener experiencia de primera mano con el rendimiento frente a las funciones.

Respuesta3

Usaría cualquier sistema de archivos de diario que el sistema operativo en cuestión sugiriera como predeterminado a menos que tuviera muy buenas razones para no hacerlo. La última vez que verifiqué con Ubuntu era ext4.

La razón es simple: el valor predeterminado es el que probablemente se usa más, por lo que la posibilidad de que se encuentren y corrijan errores es mayor. Es poco probable que las diferencias entre los sistemas de archivos que menciona signifiquen mucho en el uso diario ligero. Si el rendimiento es muy importante, considere obtener más memoria para que su sistema operativo tenga más espacio para el almacenamiento en caché.

Dicho esto, si va a utilizar la unidad "en varios" sistemas operativos, sugeriría obtener dos, o al menos dividir la que tiene en dos particiones físicas, y luego usar NTFS o exFAT en la que tiene medios.

Respuesta4

Puede crear un sistema de archivos con formato XFS en algo que sea un espejo hecho por mdadm sin tener un espejo real.

Cree la partición como un espejo con tres espejos pero dos ausentes. Más adelante podrás agregar los dos que faltan.

información relacionada