To the best of my understanding, all linux process are actually files
Você não deve levar a metáfora muito literalmente. Os processos do Linux podem ser acessados através de um pseudo sistema de arquivos para fins de depuração, monitoramento e análise, mas os processos são mais do que apenas esses arquivos e "copiá-los" de um sistema de arquivos /proc
para um sistema de arquivos /proc
estão condenados .
Um dos sérios problemas que move um processo em execução entre hosts é como lidar com os descritores de arquivos abertos que esse processo está usando. Se um processo estiver lendo ou gravando um arquivo, esse mesmo arquivo (ou um clone exato) deve estar disponível no host de destino. Os descritores de arquivo relacionados a soquetes seriam difíceis de serem processados, pois o endereço IP a que estão vinculados provavelmente mudará de um host para outro. Processos que compartilham segmentos de memória com outros deixariam de fazê-lo após uma migração. Conflitos de PID também podem acontecer, se um processo em execução tiver o mesmo pid que o de entrada, um deles precisará ser alterado. O relacionamento entre pais e filhos será perdido e acabei de arranhar os possíveis problemas.
Apesar desses problemas, existem soluções técnicas que fornecem essa funcionalidade chamada " Checkpointing de aplicativos " como DMTCP e CRIU . Isso é semelhante ao que é usado com hipervisores como o VMWare, o VirtualBox, o Oracle VM e outros, quando eles fazem máquinas virtuais migração ao vivo / teletransporte . Com máquinas virtuais, o trabalho é realmente "mais simples" à medida que todo o sistema operacional é movido, incluindo os descritores de arquivos, os sistemas de arquivos, a memória, a rede e outros dispositivos, etc.