# Formatação de disco

A formatação de disco é o processo de preparação de um dispositivo de armazenamento de dados, como uma unidade de disco rígido, unidade de estado sólido, disquete ou unidade flash USB para uso inicial. Em alguns casos, a operação de formatação também pode criar um ou mais novos sistemas de arquivos. A primeira parte do processo de formatação que realiza a preparação básica da mídia é muitas vezes referida como "formatação de baixo nível". Particionamento é o termo comum para a segunda parte do processo, dividindo o dispositivo em vários subdispositivos e, em alguns casos, gravando informações no dispositivo permitindo que um sistema operacional seja inicializado a partir dele. A terceira parte do processo, geralmente chamada de "formatação de alto nível", geralmente se refere ao processo de geração de um novo sistema de arquivos. Em alguns sistemas operacionais, todos ou partes desses três processos podem ser combinados ou repetidos em diferentes níveis e o termo "formatar" é entendido como uma operação na qual uma nova mídia de disco está totalmente preparada para armazenar arquivos. Alguns utilitários de formatação permitem distinguir entre uma formatação rápida, que não apaga todos os dados existentes, e uma opção longa, que apaga todos os dados existentes.
Como regra geral, formatar um disco, por padrão, deixa a maioria dos (senão todos os) dados existentes na mídia de disco. Alguns, ou a maioria, dos quais podem ser recuperáveis com ferramentas privilegiadas ou especiais. Ferramentas especiais podem remover dados do usuário através de uma única substituição (sobregravação/sobrescrita) de todos os arquivos e liberar espaço.

## História

Um bloco, um número contíguo de bytes, é a unidade mínima de armazenamento que é lida e gravada em um disco por um driver de disco. As primeiras unidades de disco tinham tamanhos de bloco fixos (por exemplo, na unidade de armazenamento em disco IBM 350 (do final da década de 1950) o tamanho do bloco era de 100 caracteres de seis bits), mas começando com o 1301 a IBM comercializou subsistemas que apresentavam tamanhos de bloco variáveis: uma trilha pode ter blocos de tamanhos diferentes. Os subsistemas de disco e outros dispositivos de armazenamento de acesso direto no IBM System/360 expandiram esse conceito na forma de contagem de dados-chave (CKD) e, posteriormente, contagem de dados-chaves extendida (ECKD); no entanto, o uso de tamanho de bloco variável em HDDs caiu em desuso na década de 1990; uma das últimas HDDs a suportar tamanho de bloco variável foi a IBM 3390 Model 9, anunciada em maio de 1993.
Unidades de disco rígido modernas, como as unidades Serial attached SCSI (SAS) e Serial ATA (SATA), aparecem em suas interfaces como um conjunto contíguo de blocos de tamanho fixo; por muitos anos com 512 bytes de comprimento, mas começando em 2009 e acelerando até 2011, todos os principais fabricantes de discos rígidos começaram a lançar plataformas de discos rígidos usando o formato avançado de blocos lógicos de 4.096 bytes.
Os disquetes geralmente usavam apenas tamanhos de bloco fixos, mas esses tamanhos eram uma função do sistema operacional do hospedeiro (host) e sua interação com seu controlador, de modo que um tipo específico de mídia (por exemplo, DSDD de 5¼ polegadas) teria tamanhos de bloco diferentes dependendo do sistema operacional do host e do controlador.
Os discos ópticos geralmente usam apenas tamanhos de bloco fixos.

## Processo de formatação de disco

Formatar um disco para uso por um sistema operacional e seus aplicativos normalmente envolve três processos diferentes.
* A formatação de baixo nível (ou seja, mais próxima do hardware) marca as superfícies dos discos com marcadores que indicam o início de um bloco de gravação (normalmente chamados de marcadores de setor hoje) e outras informações (como a verificação cíclica de redundância (CRC) de bloco) para serem usado(a)s posteriormente, em operações normais, pelo controlador de disco para ler ou gravar dados. Esta destina-se a ser a base permanente do disco e geralmente é concluído na fábrica.
* O particionamento divide um disco em uma ou mais regiões, gravando estruturas de dados no disco para indicar o início e o fim das regiões. Esse nível de formatação geralmente inclui a verificação de trilhas ou setores defeituosos.
* A formatação de alto nível cria a formatação do sistema de arquivos em uma partição de disco ou um volume lógico. Essa formatação inclui as estruturas de dados usadas pelo sistema operacional para identificar o conteúdo da unidade lógica ou da partição. Isso pode ocorrer durante a instalação do sistema operacional ou ao adicionar um novo disco. Os discos e os sistema de arquivos distribuídos podem especificar um bloco de inicialização opcional e/ou várias informações de volume e diretório para o sistema operacional.

### Formatação de baixo nível de disquetes

A formatação de baixo nível dos disquetes (e dos primeiros discos rígidos) é executada pelo controlador da unidade de disco.
Para um disquete de 1,44 MB padrão, a formatação de baixo nível normalmente grava 18 setores de 512 bytes em cada uma das 160 trilhas (80 em cada lado) do disquete, fornecendo 1.474.560 bytes de armazenamento no disco.
Os setores físicos são na verdade maiores que 512 bytes, pois além do campo de dados de 512 bytes eles incluem um campo identificador de setor, bytes de CRC (em alguns casos bytes de correção de erros) e intervalos entre os campos. Esses bytes adicionais normalmente não são incluídos no valor citado para a capacidade geral de armazenamento do disco.
Diferentes formatos de baixo nível podem ser usados na mesma mídia; por exemplo, registros grandes podem ser usados para reduzir o tamanho do intervalo entre registros.
Vários programas freeware, shareware e software livre (por exemplo, o GParted, o fdformat, o nformat, o VGA-Copy e o 2M) permitiram um controle consideravelmente maior sobre a formatação, permitindo a formatação de discos de 3,5" de alta densidade com capacidade de até 2 MB.
As técnicas utilizadas incluem:
* inclinar o setor de cabeça/trilha (movendo a numeração do setor para frente na mudança de lado e passo de trilha para reduzir o atraso mecânico);
* intercalar setores (para aumentar o rendimento organizando os setores na trilha);
* aumentar o número de setores por trilha (enquanto um formato normal de 1,44 MB usa 18 setores por trilha, é possível aumentar para um máximo de 21) e
* aumentar o número de trilhas (a maioria das unidades pode tolerar a extensão para 82 trilhas: embora algumas possam lidar com mais, outras podem travar).
O Linux suporta uma variedade de tamanhos de setor. O DOS e o Windows suportam um formato de disquete formatado em DMF de tamanho de registro grande.

### Formatação de baixo nível (LLF) de discos rígidos

As unidades de disco rígido anteriores à década de 1990 normalmente tinham um controlador de disco separado que definia como os dados eram codificados na mídia. Com a mídia, a unidade e/ou o controlador possivelmente adquiridos de fornecedores separados, os usuários geralmente conseguiam realizar formatação de baixo nível. A aquisição separada também tinha o potencial de incompatibilidade entre os componentes separados, de modo que o subsistema não armazenasse dados de forma confiável.
A formatação de baixo nível (LLF) de unidades de disco rígido instigada pelo usuário era comum para sistemas de minicomputadores e computadores pessoais até a década de 1990. A IBM e outros fornecedores de sistemas de mainframe normalmente forneciam suas unidades de disco rígido (ou mídia, no caso de HDDs de mídia removível) com uma formatação de baixo nível. Normalmente, isso envolvia subdividir cada trilha no disco em um ou mais blocos que conteriam os dados do usuário e as informações de controle associadas. Computadores diferentes usavam tamanhos de bloco diferentes e a IBM usava tamanhos de bloco variáveis, mas a popularidade do IBM PC fez com que a indústria adotasse um padrão de 512 bytes de dados de usuário por bloco em meados da década de 1980.
Dependendo do sistema, a formatação de baixo nível geralmente era feita por um utilitário do sistema operacional. PCs compatíveis com a IBM usaram o BIOS, que é invocado usando o programa de depuração (debug) do MS-DOS, para transferir o controle para uma rotina oculta em diferentes endereços em diferentes BIOS.

#### Transição para longe do LLF

A partir do final da década de 1980, impulsionadas pelo volume de PCs compatíveis com a IBM, as HDDs tornaram-se rotineiramente disponíveis pré-formatadas com uma formatação de baixo nível compatível. Ao mesmo tempo, a indústria mudou de interfaces seriais de bits históricas para interfaces seriais de bits modernas (inteligentes) e interfaces seriais de palavras em que a formatação de baixo nível era executado na fábrica. Assim, "não" seria possível para um usuário final formatar em baixo nível uma unidade de disco rígido moderna.

#### Reinicialização de disco

Embora seja geralmente impossível executar uma LLF completa na maioria dos discos rígidos modernos (desde meados da década de 1990) fora da fábrica, o termo "formatação de baixo nível" ainda é usado para o que poderia ser chamado de reinicialização de uma unidade de disco rígido para sua configuração de fábrica (e mesmo esse termo é errôneamente interpretado).
A presente ambiguidade no termo formatação de baixo nível parece ser devido tanto à documentação inconsistente em sites da web quanto à crença de muitos usuários de que qualquer processo abaixo de uma formatação de alto nível (sistema de arquivos) deve ser chamado de formatação de baixo nível. Como grande parte do processo de formatação de baixo nível hoje só pode ser executado na fábrica, vários fabricantes de unidades descrevem o software de reinicialização como utilitários de LLF em seus sites. Como os usuários geralmente não têm como determinar a diferença entre uma LLF completa e a reinicialização (eles simplesmente observam que a execução do software resulta em um disco rígido que deve ser formatado em alto nível), tanto o usuário mal informado quanto os sinais mistos de vários fabricantes de unidades perpetuaram esse erro. Nota: qualquer que seja o uso indevido de tais termos, muitos sites disponibilizam esses utilitários de reinicialização (possivelmente como disquete inicializável ou arquivos de imagem de CD), para substituir cada byte e verificar setores danificados no disco rígido.
A reinicialização deve incluir a identificação (e poupar, se possível) de quaisquer setores da unidade que não possam ser gravados e lidos corretamente. O termo, no entanto, tem sido usado por alguns para se referir a apenas uma parte desse processo, no qual cada setor da unidade é gravado; geralmente gravando um valor específico em cada local endereçável no disco.
Tradicionalmente, os setores físicos eram inicializados com um valor de preenchimento de 0xF6 conforme a tabela de parâmetros de disco (DPT) do INT 1Eh durante a formatação em máquinas compatíveis com a IBM. Esse valor também é usado no Atari Portfolio. Os disquetes do CP/M de 8 polegadas normalmente vinham pré-formatados com um valor de 0xE5 e, por meio da Digital research, esse valor também era usado na Atari ST e em alguns disquetes formatados da Amstrad. A Amstrad usava 0xF4 como um valor de preenchimento. Alguns formatadores modernos limpam discos rígidos com um valor de 0x00, às vezes também chamada de preenchimento com zeros, enquanto um valor de 0xFF é usado em discos flash para reduzir o desgaste. O último valor normalmente também é o valor padrão usado em discos de ROM (que não podem ser reformatados). Algumas ferramentas avançadas de formatação permitem configurar o valor de preenchimento.
Um método popular para executar apenas a operação de preenchimento com zeros em um disco rígido é gravar bytes de valor zero na unidade usando o utilitário dd do Unix com o fluxo /dev/zero como o arquivo de entrada e a própria unidade (ou uma partição específica ) como o arquivo de saída. Esse comando pode levar muitas horas para ser concluído e pode apagar todos os arquivos e sistemas de arquivos.
Outro método para discos SCSI pode ser usar o comando sg_format para emitir um comando de formatação de baixo nível de unidade SCSI.
O preenchimento com zeros de uma unidade não é necessariamente um método seguro de apagar dados confidenciais ou de preparar uma unidade para uso com um sistema de arquivos criptografado. O preenchimento com zeros anula a negabilidade plausível do processo.

### Particionamento

Particionamento é o processo de escrever informações nos blocos de um dispositivo ou meio de armazenamento para dividir o dispositivo em vários subdispositivos, cada um dos quais é tratado pelo sistema operacional como um dispositivo separado e, em alguns casos, para permitir que um sistema operacional seja inicializado a partir do dispositivo.
Em sistemas operacionais MS-DOS, Windows da Microsoft e baseados em UNIX (como a BSD, o Linux e o Mac OS X), isso normalmente é feito com um editor de partições, como o fdisk, o GNU Parted ou o Utilitário de disco(s). Esses sistemas operacionais suportam várias partições.
Os disquetes não são particionados; no entanto, dependendo do sistema operacional, eles podem exigir informações de volume para serem acessados pelo sistema operacional.
Os editores de partições e o ickdsf hoje não lidam com funções de baixo nível para HDDs e unidades de disco óptico, como gravar marcas de tempo, e não podem reinicializar um disco moderno que foi desmagnetizado ou perdeu a formatação de fábrica.
Os sistemas operacionais da IBM derivados do CP-67, por exemplo, a z/VM, mantêm informações de particionamento para minidiscos externamente à unidade.

### Formatação de alto nível

A formatação de alto nível é o processo de configurar um sistema de arquivos vazio em uma partição de disco ou volume lógico e, para PCs, instalar um setor de inicialização. Geralmente, essa é uma operação rápida e às vezes é chamada de formatação rápida.
A formatação de uma unidade ou partição lógica inteira pode opcionalmente verificar defeitos, o que pode levar um tempo considerável.
No caso de disquetes, a formatação de alto e baixo nível geralmente é executada em uma única passagem pelo software de formatação de disco. Os disquetes de oito polegadas normalmente vinham formatados em baixo nível e eram preenchidos com um valor de preenchimento de formatação de 0xE5. Desde a década de 1990, a maioria dos disquetes de 5,25 e 3,5 polegadas foi enviada pré-formatada de fábrica como disquetes FAT12 para DOS.
Nos atuais sistemas operacionais de mainframes da IBM derivados do OS/360 e do DOS/360, como o z/OS e o z/VSE, a formatação das unidades é feita pelo comando INIT do utilitário ickdsf. Esses sistemas operacionais suportam apenas uma única partição por dispositivo, chamada de volume. As funções do ickdsf incluem escrever um registro 0 em cada trilha, escrever texto IPL, criar um rótulo de volume, criar um índice do volume (VTOC) e, opcionalmente, criar um índice VTOC (VTOCIX); a formatação de alto nível também pode ser feita como parte da alocação de um arquivo, por um utilitário específico para um sistema de arquivos ou, em alguns métodos de acesso mais antigos, dinamicamente à medida que novos dados são gravados. Nos serviços do sistema Unix do z/OS, há três níveis distintos de formatação de alto nível:
* Inicialização de um volume com o ickdsf;
* inicialização de um conjunto de dados lineares VSAM (LDS) como parte da alocação no volume com o DEFINE dos serviços de método de acesso (IDCAMS) e
* Inicialização de um agregado zFS no LDS usando o ioeagfmt.
Nos sistemas operacionais da IBM derivados do CP-67, a formatação de um volume inicializa a trilha 0 e um VTOC fictício. Os sistemas operacionais convidados são responsáveis pela formatação dos minidiscos; o comando format do CMS formata um sistema de arquivos CMS em um minidisco CMS.

## Área protegida do hospedeiro (host)

A área protegida do hospedeiro (host), às vezes chamada de área protegida oculta, é uma área de um disco rígido formatada de alto nível de forma que a área normalmente não seja visível para seu sistema operacional (OS).

## Reformatação

A reformatação é uma formatação de alto nível executada em uma unidade de disco em funcionamento para liberar a mídia de seu conteúdo. A reformatação é exclusiva de cada sistema operacional porque o que realmente é feito com os dados existentes varia de acordo com o sistema operacional. O aspecto mais importante do processo é que ele libera espaço em disco para uso por outros dados. Para realmente "apagar" tudo, é necessário sobrescrever cada bloco de dados na mídia; algo que não é feito por muitos utilitários de formatação de alto nível.
A reformatação geralmente implica que o sistema operacional e todos os outros softwares serão reinstalados após a conclusão da formatação. Em vez de consertar uma instalação que sofre de mau funcionamento ou comprometimento de segurança, pode ser necessário simplesmente reformatar tudo e começar do zero. Existem vários coloquialismos para este processo, como "limpar e recarregar", "detonar e pavimentar", "refazer a imagem", etc. No entanto, reformatar uma unidade contendo apenas dados do usuário não requer a reinstalação do sistema operacional.

## Formatação
### DOS, OS/2 e Windows

Comando de formatação (format): No MS-DOS, no PC DOS, no OS/2 e no Windows da Microsoft, a formatação do disco pode ser executada pelo comando format. O programa de formatação geralmente pede confirmação de antemão para evitar a remoção acidental de dados, mas algumas versões do DOS têm uma opção /autotest não documentada; se usada, a confirmação usual é ignorada e a formatação começa imediatamente. O vírus de macro WM/FormatC usa este comando para formatar a unidade C: assim que um documento é aberto.
Formatação incondicional: Há também o parâmetro /u que executa uma formatação incondicional que na maioria das circunstâncias substitui a partição inteira, impedindo a recuperação de dados por meio de software. Observe, no entanto, que a opção /u só funciona de maneira confiável com disquetes. Tecnicamente porque, a menos que /q seja usado, os disquetes são sempre formatados em baixo nível, além de formatados em alto nível. Sob certas circunstâncias com partições de disco rígido, no entanto, a opção /u apenas impede a criação de informações não formatadas (unformat) na partição a ser formatada, deixando o conteúdo da partição inteiramente intacto (ainda no disco, mas marcado como excluído). Nesses casos, os dados do usuário permanecem prontos para recuperação com ferramentas especializadas, como EnCase ou editores de disco. Confiar no /u para substituição segura de partições de disco rígido é, portanto, desaconselhável, e ferramentas específicas, como o DBAN, devem ser consideradas.
Sobrescrever: No Windows Vista e versões posteriores, a formatação (sem rápidez) sobrescreverá à medida que avança. Não é o caso do Windows XP e versões anteriores.
OS/2: No OS/2, a formatação substituirá toda a partição ou unidade lógica se o parâmetro /l, que especifica uma formatação longa, for usado. Isso aumenta a capacidade do chkdsk de recuperar arquivos.

### Sistemas operacionais do tipo Unix

A formatação de alto nível de discos nesses sistemas é tradicionalmente feita usando o comando mkfs. No Linux (e potencialmente em outros sistemas também) o mkfs é tipicamente um pacote em torno de comandos específicos do sistema de arquivos que têm o nome mkfs.nomesa, onde nomesa é o nome do sistema de arquivos com o qual formatar o disco. Alguns sistemas de arquivos que não são suportados por certas implementações do mkfs possuem suas próprias ferramentas de manipulação; por exemplo, o ntfsprogs fornece um utilitário de formatação para o sistema de arquivos NTFS.
Alguns sistemas operacionais Unix e do tipo Unix possuem ferramentas de formatação de nível superior, geralmente com o objetivo de facilitar a formatação do disco e/ou permitir que o usuário particione o disco com a mesma ferramenta. Exemplos incluem o GNU Parted (e seus vários frontends de interface gráfica do usuário (GUI), como o GParted e o Gerenciador de partições do KDE) e o aplicativo Utilitário de disco no Mac OS X.

## Recuperação de dados de um disco formatado

Como na exclusão de arquivos pelo sistema operacional, os dados em um disco não são totalmente apagados durante cada formatação de alto nível. Em vez disso, a área do disco que contém os dados é meramente marcada como disponível e retém os dados antigos até que sejam substituídos. Se o disco for formatado com um sistema de arquivos diferente daquele que existia anteriormente na partição, alguns dados, que não seriam se o mesmo sistema de arquivos tivesse sido usado, podem ser sobrescritos. No entanto, em alguns sistemas de arquivos (por exemplo, o NTFS, mas não a FAT), os índices de arquivo (como $MFTs em NTFS, inodes em ext2/3, etc.) podem não ser gravados nos mesmos locais exatos. E se o tamanho da partição for aumentado, mesmo os sistemas de arquivos da FAT sobrescreverão mais dados no início dessa nova partição.
Na perspectiva de impedir a recuperação de dados sensíveis através de ferramentas de recuperação, os dados devem ser completamente sobrescritos (todos os setores) com dados aleatórios antes da formatação, ou o próprio programa de formatação deve realizar essa sobrescrita, como o comando format do DOS fazia com os disquetes, preenchendo cada setor de dados com o valor de byte de preenchimento de formatação (normalmente 0xF6).
No entanto, existem aplicativos e ferramentas, especialmente usados em tecnologia da informação forense, que podem recuperar dados que foram apagados convencionalmente. Para evitar a recuperação de dados confidenciais, organizações governamentais ou grandes empresas usam métodos de destruição de informações como o método de Gutmann. Para usuários comuns, também existem aplicativos especiais que podem realizar a destruição completa de dados substituindo informações anteriores . Embora existam aplicativos que executam várias gravações/escritas para garantir o apagamento de dados, qualquer gravação única sobre dados antigos geralmente é tudo o que é necessário em unidades de disco rígido modernas. O apagamento seguro ATA (do inglês, ATA Secure Erase) pode ser executado por utilitários de disco para limpar as unidades de forma rápida e completa. A desmagnetização é outra opção, no entanto, isso pode tornar a unidade inutilizável.