Недавно один из наших серверов был повешен из-за отказа IPMI BMC. Это вычислительный хост CentOS 6.3 OpenStack, обслуживающий виртуальные машины KVM с серверной частью qcow2.
Была запущена виртуальная машина на базе EC2 Ubintu, которая могла создать образ (точный-server-cloudimg-amd64-disk1.img).
После перезагрузки системы я обнаружил странную вещь: ключи хоста ssh на ВМ были воссозданы (13:25 - время перезагрузки):
root@weather:~# ll /etc/ssh/*key
-rw------- 1 root root 668 Nov 21 13:25 /etc/ssh/ssh_host_dsa_key
-rw------- 1 root root 227 Nov 21 13:25 /etc/ssh/ssh_host_ecdsa_key
-rw------- 1 root root 1679 Nov 21 13:25 /etc/ssh/ssh_host_rsa_key
Я также обнаружил, что некоторые бесхозные i-узлы были удалены в процессе восстановления FS:
Nov 21 13:25:23 weather kernel: [ 0.901159] EXT4-fs (vda1): INFO: recovery required on readonly filesystem
Nov 21 13:25:23 weather kernel: [ 0.902688] EXT4-fs (vda1): write access will be enabled during recovery
Nov 21 13:25:23 weather kernel: [ 1.930773] EXT4-fs (vda1): ext4_orphan_cleanup: deleting unreferenced inode 1286
......
Nov 21 13:25:23 weather kernel: [ 1.940810] EXT4-fs (vda1): ext4_orphan_cleanup: deleting unreferenced inode 53755
Nov 21 13:25:23 weather kernel: [ 1.940815] EXT4-fs (vda1): ext4_orphan_cleanup: deleting unreferenced inode 53754
Nov 21 13:25:23 weather kernel: [ 1.940819] EXT4-fs (vda1): 8 orphan inodes deleted
У меня вопрос: почему ключи ssh можно воссоздать? Может ли это быть результатом потери данных в файловой системе? И как предотвратить это в будущем?
Режим кэша qcow2 установлен на сквозную запись в конфигурациях виртуальных машин libvirt. Файловая система хоста - это ZFS (zfsonlinux), размещенная на аппаратном RAID-контроллере с BBU.
Если это результат несогласованности файловой системы при перезагрузке - я очень озадачен, поскольку файлы ключей ssh не меняются и все соответствующие данные должны быть синхронизированы со стабильным носителем.
Никто не вмешался, чтобы сказать что-нибудь умное, поэтому я скажу очевидное.
Да, это могло произойти в результате потери данных в файловой системе. Я не могу говорить о ubuntu, но сценарии запуска sshd CentOS (стиль RH) обеспечивают автоматическое создание ключей, если они отсутствуют, и я предполагаю, что ubuntu делает что-то подобное.
Если файловая система вашей виртуальной машины была повреждена в результате отказа базового хоста, и это повреждение привело к удалению ключей ssh системы, затем Я ожидал, что они будут автоматически восстановлены и, следовательно, изменены.
Так случилось? К сожалению, на данный момент я не думаю, что кто-то может сказать.
Если бы ваша система была tripwire
d, тогда у вас будет какой-то базовый аудит FS, с которым вы сможете сравнить текущее состояние, чтобы принять более обоснованное решение о том, что именно произошло с образом виртуальной машины. Как бы то ни было, вам придется принять бизнес-решение относительно того, достаточно ли чувствительна эта машина, чтобы оправдать полную чистую реконструкцию, или вы просто пожмете плечами и примете это как одну из этих вещей.