Estou criando instantâneos de sistema de arquivos inteiros (com BTRFS) periodicamente. Preciso impedir que meu script tire instantâneos enquanto o sistema estiver em um estado inconsistente, como no meio de uma instalação de aplicativo ou de uma atualização completa do sistema.
- Como posso detectar de forma confiável tais ações?
Como não podemos invocar várias apt
instâncias, também quero criar um bloqueio para apt install
(ou qualquer outro software de gerenciamento de pacotes) para ter certeza de que a operação de instantâneo foi concluída (pode levar vários segundos dependendo da E/S do disco).
- Como posso impedir temporariamente a execução de qualquer aplicativo de gerenciamento de pacotes?
/var/lib/dpkg/lock
é o arquivo de bloqueio do apt, com o qual você pode detectar se uma operação do apt está acontecendo:Impedir que o arquivo de bloqueio seja aberto, por exemplo. defina o atributo imutável:
Ou, honestamente, perceba que o momento em que você inicia o instantâneo define o que está no instantâneo. O armazenamento pode ter um desempenho pior enquanto o snapshot é feito, mas as alterações feitas após o início não afetam o snapshot em si.
Na verdade, um instantâneo é uma coisa bastante leve - tudo o que ele faz é dizer "se você modificar este bloco de dados ou metadados, faça uma cópia dele, marque-o como válido no momento e marque-o como válido para o último instantâneo, e guarde". Qual é o modo de operação totalmente normal para um sistema de arquivos copy-on-write . A diferença é que quando você tem dados que não fazem parte de um snapshot, o original após a cópia (e modificação da cópia) é retornado ao pool de extensões/blocos de metadados livres.