La actualización del firmware de PowerFlex 4.X falla con una secuencia de bytes no válida en US-ASCII
Summary: La actualización del firmware falla con una secuencia de bytes no válida en US-ASCII.
Symptoms
Situación
El clúster estaba pasando por una actualización de firmware realizada mediante el grupo de recursos.
Síntomas
El deployment.log del ID de trabajo informa que se produjo un error en la actualización del firmware y que la guía de estrategias se está ejecutando. Tenga en cuenta que el comando en la guía de estrategias está configurado para ejecutar "/usr/sbin/sysctl -p":
ERROR [2024-01-25T20:21:33.358478] 25824: service_deployment.rb:6084:in `process_firmware_update': Encountered an error during firmware update: ArgumentError: invalid byte sequence in US-ASCII
["org/jruby/RubyString.java:4727:in `scan'", "/opt/asm-deployer/lib/asm/provider/elementmanager/scaleio.rb:9762:in `update_sysctl_parameter'", "/opt/asm-deployer/lib/asm/service_deployment.rb:5909:in `block in process_firmware_update'", "org/jruby/RubyArray.java:1865:in `each'", "/opt/asm-deployer/lib/asm/service_deployment.rb:5731:in `process_firmware_update'", "/opt/asm-deployer/lib/asm/service_deployment.rb:504:in `process'", "/opt/asm-deployer/lib/asm.rb:369:in `block in process_deployment'", "org/jruby/RubyArray.java:1907:in `each_slice'", "/opt/asm-deployer/lib/asm.rb:351:in `block in process_deployment'", "/opt/dependencies/dell-asm-util/lib/asm/util.rb:22:in `block in execute_async'"]
...
INFO [2024-01-25T20:22:45.017056] 25824: service_deployment.rb:1795:in `process_ansible_playbook': Starting processing playbook: [{"hosts"=>"all", "become"=>true, "vars"=>{"overcommit_ratio"=>100, "overcommit_memory"=>2}, "tasks"=>[{"name"=>"Replace unvalid values in sysctl conf", "replace"=>{"path"=>"/etc/sysctl.conf", "regexp"=>"^net.ipv4.conf.(ens192.log_martians.*)$", "replace"=>"#net.ipv4.conf.\\1 # PFXM REMOVED INVALID OPTION"}}, {"name"=>"Replace unvalid values in sysctl conf", "replace"=>{"path"=>"/etc/sysctl.conf", "regexp"=>"^net.ipv4.conf.(ens32.log_martians.*)$", "replace"=>"#net.ipv4.conf.\\1 # PFXM REMOVED INVALID OPTION"}}, {"name"=>"update threshold1", "ansible.posix.sysctl"=>{"name"=>"net.ipv4.neigh.default.gc_thresh1", "value"=>8192}}, {"name"=>"update threshold2", "ansible.posix.sysctl"=>{"name"=>"net.ipv4.neigh.default.gc_thresh2", "value"=>16384}}, {"name"=>"update threshold3", "ansible.posix.sysctl"=>{"name"=>"net.ipv4.neigh.default.gc_thresh3", "value"=>32768}}, {"name"=>"Update overcommit ratio for SDS", "ansible.posix.sysctl"=>{"name"=>"vm.overcommit_ratio", "value"=>"{{ overcommit_ratio }}"}}, {"name"=>"Update overcommit_memory ratio for SDS", "ansible.posix.sysctl"=>{"name"=>"vm.overcommit_memory", "value"=>"{{ overcommit_memory }}"}}, {"name"=>"Apply sysctl changes", "command"=>{"argv"=>["
]}}]}] with inventory:
... Cuando se ejecuta el comando directamente en el nodo, se puede observar el siguiente error:
[root@node3 etc]# /usr/sbin/sysctl -p ... sysctl: /etc/sysctl.conf(91): invalid syntax, continuing...
Impacto
La actualización del firmware no puede continuar en el nodo afectado.
Cause
Causa principal
El problema proviene de un carácter especial o no ASCII en el archivo sysctl.conf, que no es compatible con la codificación de caracteres US-ASCII esperada utilizada durante el procesamiento de sysctl. Cuando el sistema intenta leer y aplicar las configuraciones de sysctl.conf, encuentra esta secuencia de caracteres no válida, lo que genera un error de "secuencia de bytes no válida en US-ASCII". La razón específica de la inclusión de este personaje sigue sin estar clara.
Resolution
Solución alternativa
1. Respalde el archivo sysctl.conf original en el nodo afectado:
cp /etc/sysctl.conf /etc/sysctl.conf.backup
2- Copie un archivo sysctl.conf de un nodo en el que se sepa que funciona correctamente:
scp /etc/sysctl.conf root@:/etc/sysctl.conf
3- Aplique la nueva configuración en el nodo afectado:
/usr/sbin/sysctl -p
4- Asegúrese de que el comando se complete correctamente sin errores de "sintaxis no válida".
5. Una vez que se completen y verifiquen los pasos anteriores, reinicie el proceso de actualización del firmware mediante el grupo de recursos.
Versiones afectadas
PFxM 4.5.1.1 y versiones anteriores
Problema corregido en la versión
PFxM 4.5.2