Os arquivos da área de trabalhoPor dentro do formato do Windows Imaging

Wes Miller

Esta coluna é baseada nas versões de pré-lançamento das ferramentas de implantação do Windows. Todas as informações deste artigo estão sujeitas a alterações.

O lançamento do Windows Vista traz uma importante mudança em como o Windows é instalado e implantado. O mecanismo de instalação e todo o conjunto de ferramentas de implantação do Windows Vista (bem como da próxima versão do Windows Server, com o codinome de "Longhorn") foram reescritos. Falo sobre essas mudanças e o empenho da equipe de implantação do

Windows® para a concretização de tais novidades nos últimos artigos da TechNet Magazine. Como este é um tópico muito abrangente, falarei sobre o Windows PE, a instalação e a implantação do Windows e sobre outros temas de gerenciamento e segurança do Windows nesta nova coluna regular.

Nesta primeira edição, trataremos do novo formato do WIM (Windows Imaging). Se você ainda não está familiarizado com os detalhes de geração de imagens, não deixe de ler a barra lateral "O típico processo de geração de imagens" para obter uma visão geral. Na próxima coluna falarei sobre o Kit de instalação automatizada do Windows - um novo conjunto de ferramentas que inclui o ImageX (a ferramenta de linha de comando para criar e manipular imagens do WIM) e o WDS (Windows Deployment Services), que substitui o RIS (Remote Installation Services) - enfocando como essas ferramentas facilitam as implantações do SO.

O momento decisivo

Ano após ano, a equipe de implantação do Windows ouve o mesmo comentário de OEMs e clientes empresariais. Eles querem melhor suporte para geração de imagens e que a Microsoft forneça ferramentas unificadas para imagens. Esses usuários não querem ter o trabalho de selecionar outro fornecedor e aprender as complicações do produto. Além disso, ouvimos freqüentes reclamações, pois esses OEMs e clientes empresariais não acham que deveriam ter de pagar por ferramentas de geração de imagens usadas para implantar o Windows e que gostariam que a Microsoft fornecesse tais ferramentas.

Logo no início da implantação do Windows Vista™, a equipe de implantação do Windows fez uma aposta muito alta. Decidimos descartar completamente todo o mecanismo de instalação - muitos componentes dos quais já existiam há quase uma década. A instalação sempre foi um processo frágil e com muitas etapas. Queríamos acelerar o processo, remover etapas desnecessárias e aumentar a confiabilidade da instalação do Windows de um modo geral. Para tanto, mudaríamos todo o processo de instalação manual do mecanismo, utilizado há algum tempo, e o substituiríamos por um processo de instalação totalmente baseado em imagens.

O projeto de um novo formato de geração de imagens

Logo no início do processo de reformulação da instalação, partimos para a definição do tipo de imagem que deveríamos usar. O argumento clássico foi o uso de setor versus arquivo. Ou seja, discutimos se deveríamos usar um formato de imagem que armazenasse uma cópia do volume como uma réplica setor-por-setor ou um formato que armazenasse cada arquivo individualmente. A maioria das pessoas espera como benefício maior velocidade (com uma abordagem setorial) versus compactação (com uma abordagem baseada em arquivo). Por fim, chegamos a um formato que acredito proporcionar um excelente equilíbrio entre esses dois quesitos. Conseguimos um desempenho muito bom, com excelente compactação.

Para começar, definimos vários objetivos principais que deveríamos alcançar para chegarmos a um formato de geração de imagens que atendesse às necessidades de OEMs e usuários empresariais. Nossa lista tendia fortemente a uma arquitetura baseada em arquivos. Acho que todos vimos os benefícios dessa abordagem e, portanto, partimos inicialmente nessa direção. E logo nasceram os arquivos WIM. (Caso você esteja imaginando qual o significado do "M" da sigla WIM, adianto que não significa nada. Demos o nome de WIM ao formato, com base na experiência recorrente que a equipe do Windows vivencia perto das etapas de entrega de um produto - e *.WI parecia uma abreviatura estranha.) Vejamos as metas que surgiram para o novo formato de imagens.

Neutralidade quanto ao formato do sistema de arquivos do Windows O formato de imagem tinha de funcionar nas duas arquiteturas de sistemas de arquivos às quais o Windows oferece suporte. Embora quase todos os sistemas utilizem NTFS ao serem executados, vários OEMs e empresas usam sistemas de arquivos FAT como um substituto que permite usar o MS-DOS® para implantar o Windows e converter em NTFS posteriormente. Precisávamos continuar a oferecer esse tipo de suporte com o Windows Vista.

Neutralidade quanto à geometria de volume Tínhamos de superar o problema histórico de capturar um volume grande e aplicá-lo a um volume menor. Mesmo quando se consegue superar essas dificuldades de manipulação de partição, a ferramenta de geração de imagens não é confiável. Em uma arquitetura baseada em arquivos, a imagem ocupa o mesmo espaço que os arquivos que a compõem. Como o sistema de arquivos é restaurado de maneira autônoma, não há dependência em relação ao tamanho do volume.

O típico processo de geração de imagens

Quando um OEM duplica inúmeros sistemas ou uma grande organização precisa implantar o Windows em várias máquinas, geralmente usa a tecnologia de geração de imagens. A premissa é pegar o sistema host, desenvolvê-lo exatamente como desejado e, então, duplicá-lo nos sistemas de destino. Caso você não tenha familiaridade com o processo de geração de imagens, apresentamos uma rápida visão geral.

  1. O administrador instala o Windows em um sistema e o configura como desejar. Isso envolve adicionar e remover componentes, instalar os aplicativos mais utilizados e adaptar a UI e outras configurações. A isso damos o nome de sistema host.
  2. O administrador executa o Sysprep (fornecido pela Microsoft como ferramentas de implantação do Windows), que executa a tarefa pesada de limpar os atributos que tornam a instalação do Windows exclusiva, tais como o nome do computador, o SID (Identificador de segurança) do Windows e outros identificadores exclusivos em todo o sistema. Esses atributos são redefinidos na execução da segunda parte do Sysprep.
  3. Em seguida, o administrador desliga o computador e o reinicia no Windows PE, no MS-DOS ou em outro OS que permita executar o aplicativo de geração de imagens.
  4. Agora o administrador executa a ferramenta de geração de imagens criando uma imagem do sistema de referência. Essa imagem é um arquivo (ou conjunto de arquivos) que contém uma réplica exata do disco ou da partição de referência.
  5. O sistema é desligado e o administrador arquiva a imagem, que pode ser atualizada (por meio da adição de aplicativos, hotfixes e service packs) conforme necessário.
  6. A imagem é replicada em um ou mais computadores e o Sysprep conclui o trabalho sendo executado por uma versão resumida da instalação (chamada Mini-instalação ou Windows Welcome, dependendo da versão do Windows na qual o Sysprep está sendo executado e de como o Sysprep está configurado). Esse estágio depende de um minúsculo executável em modo nativo chamado setupcl.exe.

Neutralidade quanto à arquitetura do sistema A arquitetura de imagem precisava funcionar com qualquer arquitetura suportada pelo Windows. Na época, isso significava oferecer suporte às arquiteturas x86 e IA64 (Intel Itanium), que são bastante diferentes. Hoje, isso também inclui a arquitetura x64 (AMD64 e EM64T).

Deve ser rápida para capturar e aplicar - a imagem precisava ser capturada com razoável rapidez, dada a compactação. No entanto, o quesito mais crítico era alcançar maior rapidez no aplicativo de imagem.

Suporte a aplicativo de imagem não destrutivo Como estávamos substituindo a opção de atualização (que substituiria o Windows sem prejudicar aplicativos ou dados do usuário), além de derivar uma ferramenta que pudesse ser usada para recuperação do sistema, queríamos que ela pudesse gerar uma imagem de sistema sem destruir o que já estivesse no volume. Formatos baseados em setor, sem um trabalho considerável, não permitem que o usuário faça isso - em geral, ou você restaura o volume inteiro ou nada feito.

Suporte à compactação expressiva No início do desenvolvimento do Windows Vista, ainda estávamos focados na entrega em CD. Considerando que uma imagem Windows XP tem quase 1GB, decidimos que era importante compactar a imagem o máximo possível. Para tanto, existem alguns truques que podemos executar com uma imagem baseada em setor, mas nos preocupávamos com as partes móveis nesse tipo de implementação. Muitos formatos baseados em setor omitem espaços em branco no disco para economizar espaço. (Por que gravar um 0 como imagem se ele sempre será um 0?) No entanto, usando uma abordagem baseada em arquivo, lidaríamos com isso de maneira inerente, pois não separaríamos espaços em branco.

Suporte à instância única de arquivos Esta questão é igual à anterior. O Windows é conhecido por armazenar várias cópias do mesmo arquivo em alguns locais diferentes. Com a abordagem baseada em arquivo, é fácil armazenar uma única instância de cada arquivo e usar o arquivo conforme necessário.

Suporte à distribuição em mídia (disco) Mesmo nos primórdios do WIM, quando colocávamos uma imagem em um único CD, sabíamos que era necessário oferecer suporte a várias unidades de mídia. Mesmo se entregássemos o Windows em um CD, quando os usuários adicionassem aplicativos, service packs etc., suas imagens provavelmente ultrapassariam o tamanho de um único CD ou DVD. Portanto, precisávamos permitir a distribuição entre várias unidades para suas próprias soluções de instalação e recuperação.

Suporte a imagens de vários volumes em um arquivo Blob Uma imagem raramente funciona para tudo. Quando projetamos a "instância única", também incluímos a capacidade de separar mais de um volume - e a mesma compactação e instância única funcionam em cada uma delas. Portanto, se você separar uma imagem do Windows XP Professional e anexar uma nova imagem do Windows XP Tablet PC Edition (um superconjunto do Windows XP Professional), a imagem será aumentada somente pelos arquivos explicitamente diferentes entre as duas versões.

Como resultado, um OEM ou um usuário empresarial poderá anexar imagens derivativas sem um aumento exponencial do tamanho. Não foi fácil alcançar essa capacidade com formatos baseados em setor.

Como o WIM funciona

O formato WIM foi projetado para ser o mais simples possível e, ao mesmo tempo, atender nossos princípios básicos. A abordagem baseada em arquivo nos permitiu chegar a tal equilíbrio. Mas como isso funciona exatamente?

Em resumo, você pode pensar em um arquivo WIM como um arquivo CAB (semelhante ao formato ZIP, mas o formato CAB foi desenvolvido e é de propriedade da Microsoft). Na verdade, já ouvi chamarem o WIM de "filho do CAB". A principal diferença entre um arquivo WIM e um CAB é que, além de capturar e compactar o arquivo por conta própria, uma imagem WIM armazena os metadados que se aplicam às pastas e aos arquivos que compõem o volume capturado em uma determinada imagem do volume. Portanto, é como se um arquivo morto com todas as meta-informações precisasse restaurar o volume para o modo em que estava quando a imagem foi criada - ACLs (listas de controle de acesso), nomes de arquivos curtos e longos, atributos e assim por diante.

Observe que em nenhum momento durante o processo de captura, as informações sobre a partição (tamanho ou tipo) são coletadas, tampouco o processo de aplicação particiona o sistema. Diferentemente da maioria das ferramentas de geração de imagens, o ImageX, de partição neutra, requer a criação e a formatação da partição antes da aplicação. Para automatizar o processo antes de aplicar sua imagem, você deve usar as ferramentas de linha de comando de formatação e diskpart.

Nada limita o que pode ser armazenado em uma imagem de volume. Uma imagem pode conter dois volumes, o mesmo volume capturado em uma terça e numa quinta-feira, uma imagem com um service pack e outra sem ou qualquer outra coisa de acordo com suas necessidades. O principal é entender que arquivos idênticos são capturados apenas uma vez. Quanto menos duas imagens de volume tiverem em comum, maior espaço será ocupado.

Devo ressaltar também que não há nada projetado no formato WIM que o impeça de ser usado com versões anteriores do Windows. O WIM funcionará tanto com o Windows 2000 quanto com o Windows Vista. Vejamos mais de perto o que acontece exatamente quando as imagens são capturadas e aplicadas.

Captura de imagens

Quando a imagem de um volume é capturada, acontecem as seguintes etapas:

Os metadados do volume são capturados O ImageX reúne os dados sobre nomes dos arquivos, ACLs do NTFS e outros atributos do sistema de arquivos em todo o volume. (Você pode optar por excluir determinados arquivos com um arquivo de script.)

Os dados do arquivo são capturados O arquivo é carregado pelo ImageX. Cada arquivo é carregado no volume e se prepara para coletar determinados dados sobre ele.

O hash do arquivo é gerado Um hash criptográfico do arquivo com base no próprio arquivo é gerado. Esse hash se torna o identificador exclusivo dos arquivos na imagem.

Duplicatas são verificadas e removidas Se outro arquivo com o mesmo hash já existir na imagem, presume-se que os dois arquivos são iguais e o novo arquivo é referenciado apontando para o arquivo existente.

Os dados exclusivos do arquivo são compactados Diferentemente do formato CAB ou de muitos outros formatos de arquivo, cada arquivo em uma extensão WIM é compactado individualmente, e não em conjunto como um fluxo de dados. Você também tem a opção de compactar tudo e, desse modo, ignorar esta etapa.

Os metadados do volume são compactados e armazenados Quando todos os arquivos estiverem arquivados, será criada uma entrada de metadados para o volume. Esse processo relaciona cada um dos arquivos adicionados à imagem referente ao volume.

Os dados XML da imagem são gerados e armazenados Essa é uma referência a cada imagem do volume que foi capturada. Se você executar o ImageX /info, por exemplo, verá esses dados XML.

O índice de dados WIM em cache é gravado Por fim, o índice de dados mestre (com os dados em cache) é gravado. Essa é a tabela de arquivos mestre para todo o WIM e inclui uma entrada por hash.

Como você pode ver, um WIM é criado arquivo por arquivo. Além disso, você terá um arquivo WIM, não importa o número de volumes que anexar à imagem.

Sobrecarga de imagens

Havia várias equipes desenvolvendo soluções semelhantes quando começamos a trabalhar no WIM. A equipe Automated Deployment Services estava desenvolvendo uma solução de geração de imagens para outro segmento de clientes. Sua abordagem tinha alguns detalhes muito interessantes de implementação, mas o mecanismo de geração de imagens, como na maioria das vezes, era baseado em setor. A equipe do Windows XP Embedded também desenvolveu um mecanismo de geração de imagens baseado em setor para permitir que os IHVs (Distribuidores de hardware independentes) implantassem suas próprias imagens durante a produção do sistema. Quando a equipe do Virtual PC foi adquirida pela Microsoft em 2003, trouxe outro formato de arquivos para VHD (Disco rígido virtual).

Todos esses formatos eram baseados no setor principal. Essas soluções atendiam às necessidades de cada segmento de clientes, mas não estavam de acordo com nossas diretrizes para WIM. Como resultado, continuamos desenvolvendo o novo formato WIM e a ferramenta de linha de comando ImageX para capturar imagens. Por fim, várias outras equipes adotaram nosso formato bem antes de ele ser anunciado como parte da versão beta do Windows Vista. A equipe de SMS, por exemplo, fez uma implementação antecipada do WIM em seu Operating System Deployment Feature Pack.

Aplicação de imagens

Vejamos agora o processo inverso: a aplicação de uma imagem.

Índice de dados WIM em cache carregado – Esta etapa é correlata à etapa final do procedimento anterior. Como esse é o índice mestre, é a primeira coisa a ser carregada do WIM depois que você especifica qual imagem de volume deverá ser aplicada.

Os metadados da imagem são recuperados e carregados O ImageX carrega os metadados específicos para cada imagem do volume.

A estrutura de diretórios é criada Para garantir que cada arquivo terá um local para ser restaurado, toda a árvore de diretórios do volume é criada.

Os dados do arquivo são extraídos Os arquivos são extraídos do WIM exatamente na mesma ordem seqüencial em que foram arquivados.

Os dados do arquivo são aplicados Nesta etapa, os arquivos são carregados, descompactados (caso a imagem do volume tenha sido compactada no WIM) e copiados em cada local referenciado. Por fim, todos os metadados de cada arquivo são aplicados.

Todos os metadados de diretório são aplicados É importante que esta seja a última etapa, porque é possível que uma ACL em um diretório impeça a aplicação correta da imagem.

Compactação flexível

Uma de nossas principais metas com o formato de geração de imagens WIM era oferecer opções de compactação flexível. Portanto, proporcionamos a capacidade de capturar uma imagem de volume com ou sem compactação, de acordo com a necessidade. A captura sem compactação é boa em situações em que a imagem não precisa ser agressivamente compactada ou quando a captura em alta velocidade é crítica.

Há alguns princípios importantes a serem lembrados quando se trata de compactação. A compactação sempre exige mais tempo para descompactar. Quanto mais agressivo o algoritmo de compactação, mais tempo será necessário para compactar um determinado conjunto de dados. E quanto mais dados você alimentar em um algoritmo de compactação, melhor será a compactação.

Imagens WIM podem ser compactadas com a compactação XPress ou LZX - e, é claro, também pode-se optar por nenhum tipo de compactação. O XPress é uma boa solução para ocasiões em que você precisa de um pouco de compactação, mas não quer dedicar muito tempo ao processo de captura. O LZX oferece excelente índice de compactação mas, como você pode imaginar, o método é consideravelmente mais demorado.

Não usar compactação resulta na captura de imagens mais rápida, mas também gera uma imagem maior. O tipo de compactação é uma opção por WIM. Uma vez capturada uma imagem de volume em um WIM, todas as imagens posteriores de volume deverão ser capturadas com a mesma definição de compactação.

Observe que, como as imagens WIM são compactadas arquivo por arquivo, a compactação não é tão completa quanto poderia ser. Essa foi uma decisão consciente - fizemos isso para que a imagem pudesse ser editada com mais facilidade. A capacidade de editar imagens após a captura é uma opção importante. Para que um arquivo seja editado após a captura da imagem, os dados do arquivo e seus metadados devem ser substituídos. Se tivéssemos compactado todo o WIM de uma vez, teríamos incrível dificuldade em oferecer suporte à edição de arquivos (ou isso seria simplesmente impossível) e a substituição de um arquivo na imagem tomaria um tempo considerável. Com esse ajuste, chegamos a um formato que é bem compactado e que ainda pode ser editado com nossas ferramentas.

Espero que este artigo tenha proporcionado um bom entendimento de como funcionam os recursos de geração de imagens desenvolvidos para o Windows Vista. Em minha próxima coluna, falarei sobre algumas das ferramentas que podem ser usadas para gerenciar e implantar imagens WIM, dando maior ênfase no ImageX e no Windows Deployment Services.

Wes Miller é gerente de desenvolvimento da Pluck (www.pluck.com (em inglês)) em Austin, Texas. Antes disso, Wes trabalhou na Winternals Software, em Austin, e na Microsoft, como gerente de programas e gerente de produtos do Windows. Para entrar em contato com Wes, você pode enviar um email para technet@getwired.com. Wes gostaria de expressar sua gratidão a John Macintyre, atual gerente de programas do WIM/ImageX da Microsoft, pela ajuda com esta coluna.

© 2008 Microsoft Corporation e CMP Media, LLC. Todos os direitos reservados. A reprodução parcial ou completa sem autorização é proibida..