Tengo una máquina Debian en mi LAN que sirve como servidor de respaldo para los demás. Tiene cuatro discos duros combinados en un dispositivo RAID 5 md de software, en eso un LVM y en ese btrfs. Las copias de seguridad se realizan utilizando rsync, y para un sistema de archivos de gran tamaño demoran más de una hora. Durante mucho tiempo pensé que habría poco que pudiera hacer al respecto.
Recientemente, sin embargo, noté que la actividad de HDD era muy diferente en ambos extremos de la transferencia. Mientras que el lado emisor, ejecutando Gentoo y principalmente usando ext4, casi no tenía E / S de disco, el lado receptor estaba constantemente ocupado. Como la mayoría de los datos no cambiarían entre transferencias, creo que las lecturas de metadatos deberían constituir la mayor parte de los datos. Pero me sorprendería mucho si leer inodos en btrfs es tanto trabajo que hacer lo mismo en ext4.
iotop
lecturas de disco confirmadas de aproximadamente 1-4 MB / s en el lado receptor, mientras que el lado emisor tuvo solo una ráfaga ocasional de 0.5 MB / s.
Mi pregunta es, ¿alguien puede explicar qué está pasando aquí? Preferiblemente con alguna indicación de cómo solucionar el problema si es posible.
Quizás haya algún indicador de ajuste de btrfs que pueda usar, o algo similar. Necesito un FS con capacidades de instantáneas en el servidor de respaldo, y mi intento de usar FreeBSD y ZFS rápidamente condujo a un FS inconsistente, por lo que veo poca alternativa a btrfs en este momento. Por lo tanto, las respuestas que me dicen que use ext4 o zfs pueden recibir votos positivos, pero ninguna marca de verificación.
Opciones de Rsync en uso, según lo solicitado por cjm :
--rsync-path='rsync --fake-super'
--archive # -rlptgoD
--hard-links # detect and preserve these
--acls
--xattrs
--sparse
--noatime # based on patch from samba #7249c1
--delete
--delete-delay
--fuzzy
--human-readable # size suffixes, base 1000
--stats
Además de un montón de -f
reglas para omitir algunos archivos.
Las opciones de montaje de los btrfs se informan mount
como
rw,nosuid,noexec,noatime,nospace_cache
En particular, esto incluye la noatime
bandera, por lo que no debería haber ninguna escritura involucrada a menos que realmente haya diferencias en algunos archivos. Agregué esta información en respuesta a la respuesta de Kyle Jones .
dtrace
o systemtap
averiguar dónde se está gastando el tiempo.