wiki:mmInstaller

m2installer - Develop a proof-of-concept of a meta-meta-installer with rollback support

Informação sobre o Projecto

Licença: GPL V2 (a actual licença utilizada em todos os projectos internos da Caixa Mágica)

Necessidade que visa colmatar:

Os actuais meta-instaladores (Yum, Apt, YaST) têm funcionalidades limitadas de rollback. Em concreto, dois tipos de problemas são frequentes:

  • A - quando a instalação de um pacote falha, por vezes não é feito o correcto rollback e ambos os pacotes ficam instalados havendo uma incongruência da Base de Dados
  • B - após um upgrade é verificado que a versão instalada tem características piores que a anterior. Contudo, o rollback para a versão anterior nem sempre é pacífico porque ficheiros (configuração, scripts,...) foram adaptados para a nova versão.

Os dois tipos de problemas acima não têm sido resolvidos de forma razoável no ecosistema de Software Livre e, nomeadamente, nas distribuições de Linux.

Contudo, algum trabalho pioneiro tem sido desenvolvido nos dois campos:

  • No ponto A, pela Nexenta utilizando o kernel OpenSolaris e as funcionalidades Snapshot do ZFS
  • No ponto B, rollback, por Jeff Johnson do projecto RPM e pela Caixa Mágica no projecto Apt-rpm

Descrição do projecto:

O projecto M2Installer propõe-se desenvolver uma prova de conceito que resolva os problemas A e B, acima descritos, de forma inovadora.

Uma prova de conceito é uma concretização inicial de uma ideia com o objectivo de a validar e sem preocupações excessivas em correcção do código em termos de desempenho, usabilidade e segurança.

O m2Installer propõe-se utilizar uma linguagem de alto nível (Python, shell script) para implementar essa prova de conceito.

Em concreto, utilizando a seguinte tecnologia:

  • Ponto A - utilizar o mecanismo de snapshots do LVM
  • Ponto B - utilizando o UnionFS como uma camada por cima do file system e que permite que uma instalação seja feita sobre essa camada e, depois de validade, repercutida sobre o próprio filesystem (ext3)

O m2installer poderia ser invocado da seguinte forma:

  • m2installer --createss SNAP_NAME
    -> cria um snapshot total do sistema utilizando os snapshots do LVM
  • m2installer --removess SNAP_NAME
    -> remove um snapshot total do sistema
  • m2installer --showss
    -> mostra todos os snapshot do sistema existentes
  • m2installer --rollbackss SNAP_NAME
    -> reverte para um snapshot total do sistema

  • m2installer --apti emacs
    -> emacs nas seguintes fases:
    1. monta um filesystem UnionFS vazio
    2. instala o pacote usando o apt-get
    3. vê os ficheiros que foram alterados (e que estão no UnionFS) e guarda um tarbal com os mesmos ficheiros mas na versão anterior (associados a um Transaction ID)
    4. se tudo corre bem, repercute os ficheiros que estão no UnionFS sobre o file system original. Se correr mal, deita fora o UnionFS

  • m2installer --aptr emacs
    -> remove o emacs nas seguintes fases:
    1. monta um filesystem UnionFS vazio
    2. remove o pacote usando o apt-get
    3. vê os ficheiros que foram alterados (e que estão no UnionFS) e guarda um tarbal com os mesmos ficheiros mas na versão anterior (associados a um Transaction ID)
    4. se tudo corre bem, repercute os ficheiros que estão no UnionFS sobre o file system original. Ou seja, remove-os.

  • m2installer rollback TID
    -> reverte a operações (instalação, desinstalação) marcadas com um dado TID (Transaction ID), nas seguintes fases:
    1. mostra todos os Transaction IDs existentes e quais os pacotes associados a estes
    2. o utilizador indica qual é o Transaction ID que pretende fazer rollback
    3. reverte as operações marcadas com o Transaction ID escolhido

Roadmap:

  • Fase 1:

Sumário: Snapshots LVM

Deadline: 25 de Julho

Deliverable: Script m2installer com as funcionalidades de criar snapshots LVM e retornar a um determinado snapshot LVM + Documento com descrição das funcionalidades e tecnologias usadas

  • Fase 2:

Sumário: Instalação sobre um sistema de directorias unificadas (unionfs)

Deadline: 15 de Agosto

Deliverable: Script m2installer com as funcionalidades de montar um filessystem unionfs vazio sobre o filesystem do sistema, e instalar um pacote sobre esse ponto de montagem + Documento com descrição das funcionalidades e tecnologias usadas

  • Fase 3:

Sumário: Repercussão ou não no sistema real de uma instalação sobre um sistema de directorias unificadas

Deadline: 29 de Agosto

Deliverable: Script m2installer com as funcionalidades de repercutir no sistema real as alterações vindas de uma instalação de um pacote bem sucedida, ou caso a instalação não seja bem sucedida mandar para o lixo o ramo unionfs com as alterações + Documento com descrição das funcionalidades e tecnologias usadas

  • Fase 4:

Sumário: Integração de funcionalidades dos deliverables anteriores

Deadline: 12 de Setembro

Deliverable: Script m2installer com todas as funcionalidades das fases anteriores + Documento com descrição das funcionalidades e tecnologias usadas (baseado nos documentos dos deliverables anteriores)

  • Fase 5:

Sumário: Testes finais

Deadline: 23 de Outubro

Deliverable: Script m2installer com todas as funcionalidades das fases anteriores testadas + Documento com descrição das funcionalidades e tecnologias usadas (baseado nos documentos dos deliverables anteriores) e resultados dos testes efectuados.

Plano de risco:

Existe algum risco devido ao facto de ser uma projecto com um grau de inovação elevado. De qualquer forma foram identificados os riscos e soluções:

  • Dificuldades na entrada no código Shell Script do Linux: Sessões de XP (eXtreme programming) orientador-aluno;
  • Tecnologia unionfs não permitir algumas funcionalidades: Testar o aufs como alternativa;
  • Integração dos deliverables complicada: Manter cada um em separado e criar um script de wrapper entre eles;

Interacção com a comunidade / incentivos à colaboração:

Os projectos desenvolvidos em linguagens de alto nível são tipicamente alvo de mais contribuições do que os desenvolvidos em C/C++. Existe uma menor barreira à participação.

Por outro lado, existem vários exemplos de provas de conceito que se tornam projectos de referência. O Git começou por ter muitas das funcionalidades implementadas em Perl/Python?/SH e depois quando necessário passadas para C.

Perspectivas de continuação após o SAPO Summer bits:

Existe a forte possibilidade de o projecto continuar visto ser uma área importantíssima para o desenvolvimento dos Sistemas Operativos GNU/Linux, além de poder ser utilizado no projecto Apt-RPM da Caixa Mágica, podendo mesmo levar a ser considerado para integração em projectos europeus de investigação nas áreas dos meta-instaladores.

Informação sobre o orientador e co-orientador

Organização: Caixa Mágica Software

Descrição da Organização:

A Caixa Mágica é um dos projectos Open Source com maior historial em Portugal.

Nascida em ambiente universitário, no ISCTE, no ano de 2000, tem tido um crescimento estável ao longo dos últimos 8 anos alicerçada num conjunto de valores, missão, visão e estratégia que a ajudam a manter o foco em tecnologias Open Source.

Em 2004 foi constituído uma empresa spin-off, sendo mantido uma forte ligação à ADETTI através de um contrato de partilha de desenvolvimento. A empresa Caixa Mágica Software teve resultados positivos em 2004 e tem tido um crescimento na ordem de 30% ao ano.

Hoje a Caixa Mágica está organizada em 3 área principais por onde se distribuem os seus 15/20 colaboradores:

  • Produto: unidade de engenharia que desenvolve a distribuição Linux Caixa Mágica. Actualmente, a CM comercializa cerca de 900 unidades / mês do seu produto entre venda on-line, loja e programas especiais.
  • Projectos / outsourcing: projectos de elevada exigência em tecnologias Open Source que os profissionais Caixa Mágica encaixam valor.
  • Investigação: projectos europeus e nacionais de R & D que fornecem tecnologia e competência às outras U.N.. Neste momento, existe um ciclo de 3 anos entre a investigação e "produtização".

Para além das acima, a CM tem 3 unidades de menor dimensão mas em crescimento: Formação, Serviços Profissionais e Appliances.

Orientador: Flávio Moringa

Experiência profissional:

Flávio Moringa é Technical Consultor da Caixa Mágica, sendo neste momento o responsável pelas versões estáveis da distribuição de Linux Caixa Mágica, bem como pelo desenvolvimento das novas versões. É também investigador sénior da ADETTI, onde trabalha no laboratório O2H na investigação sobre Sistemas Operativos e segurança.

Co-Orientador: Susana Nunes

Experiência profissional:

Susana Nunes é Technical Consultor da Caixa Mágica, sendo neste momento a responsável por toda a gama de sites e plataformas da Caixa Mágica. É também investigadora da ADETTI, onde trabalha no laboratório O2H na investigação sobre Sistemas Operativos e segurança.

URL da Proposta: http://contribsoft.caixamagica.pt/trac/wiki/mmInstaller

Informação sobre o Aluno

Identificação pessoal do aluno

Nome: Hélio Alexandre Neves Miguel

Experiência anterior: Programação em java, shell script, php, C# e C.

Situação actual: Vai frequentar o 4º ano da licenciatura em Informática e Gestão de Empresas no ISCTE (Instituto Superior de Ciências do Trabalho e da Empresa)

Métodos de desenvolvimento que adopta: Começar por estudar as novas tecnologias que aborda e depois começar a executar exemplos práticos para consolidar os conhecimentos teóricos até estar à vontade com a tecnologia.

Descrição sobre o projecto e motivação: Encontra-se bastante motivado para o realização do projecto pois tendo interesse em aprofundar os conhecimentos sobre os sistemas operativos linux, sabe que é também uma boa forma de obter mais experiência no desenvolvimento deste tipo de projectos.

Documentação do Projecto

Instalação e Configuração do m2installer

Snapshots LVM

Sistema de ficheiros unificados UnionFS

Referências

[1] - http://tldp.org/HOWTO/LVM-HOWTO/

[2] - http://www.am-utils.org/project-unionfs.html

[3] - http://www.caixamagica.pt/pag/i-cxmag2.php?id=9

[4] - http://www.unionfs.org/

[5] - http://aufs.sourceforge.net/

[6] - http://devin.com.br/eitch/lvm/

[7] - http://www.linuxjournal.com/article/7714

[8] - http://www.filesystems.org/unionfs-odf.txt

Last modified 10 years ago Last modified on Oct 19, 2008, 1:31:14 AM