Échec de la mise à jour du firmware PowerFlex 4.X avec une séquence d’octets non valide en US-ASCII
Summary: La mise à jour du firmware échoue avec une séquence d’octets non valide dans US-ASCII.
Symptoms
Scénario
Le cluster subissait une mise à niveau du firmware effectuée à l’aide du groupe de ressources.
Symptômes
Le deployment.log de l’ID de tâche signale que la mise à jour du firmware a échoué et que le playbook est en cours d’exécution. Notez que la commande du playbook est définie sur « /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:
... Lors de l’exécution de la commande directement sur le nœud, l’erreur suivante peut s’afficher :
[root@node3 etc]# /usr/sbin/sysctl -p ... sysctl: /etc/sysctl.conf(91): invalid syntax, continuing...
Impact
La mise à jour de firmware ne peut pas se poursuivre sur le nœud concerné.
Cause
Cause
Le problème provient d’un caractère non ASCII ou spécial dans le fichier sysctl.conf, qui n’est pas compatible avec le codage de caractères US-ASCII attendu utilisé lors du traitement sysctl. Lorsque le système tente de lire et d’appliquer les configurations à partir du fichier sysctl.conf, il rencontre cette séquence de caractères non valide, ce qui entraîne l’erreur « séquence d’octets non valide dans US-ASCII ». La raison précise de l’inclusion de ce personnage reste floue.
Resolution
Solution
1- Sauvegardez le fichier sysctl.conf d’origine sur le nœud concerné :
cp /etc/sysctl.conf /etc/sysctl.conf.backup
2- Copiez un fichier sysctl.conf à partir d’un nœud où il fonctionne correctement :
scp /etc/sysctl.conf root@:/etc/sysctl.conf
3- Appliquez la nouvelle configuration sur le nœud concerné :
/usr/sbin/sysctl -p
4- Assurez-vous que la commande se termine correctement sans aucune erreur de « syntaxe non valide ».
5- Une fois les étapes ci-dessus terminées et vérifiées, relancez le processus de mise à jour de firmware à l’aide du groupe de ressources.
Versions affectées
PFxM 4.5.1.1 et versions inférieures
Problème résolu dans la version
PFxM 4.5.2