Diferenças entre discos rígidos e SSD’s (Solid State Drives)

O meu primeiro artigo vai ser sobre um tópico que já abordei numa das Confrarias de Segurança da Informação cá em Portugal, a diferença entre discos rígidos e ssd’s (solid state drives).  Curioso é o facto de utilizar o termo disco rígido em português, mas sinceramente o termo disco de estado sólido é um pouco estranho, e parece-me que nem sequer é reconhecido no mercado.  Provavelmente se entrasse numa loja a pedir um disco de estado sólido, em alguns locais iam ficar a olhar para mim como se fosse uma pessoa estranha.  Por isso, vamos manter o termo inglês SSD.

O objectivo do artigo não é simplesmente explicar as diferenças em termos físicos e lógicos entre uma coisa e outra, mas sim abordar mais a temática da recuperação (de informação) e segurança associada a estes dois tipos de suporte de armazenamento, além dos desafios associados a cada um deles.

Primeiro que tudo temos que voltar atrás no tempo e perceber de onde aparecem estes termos e qual é a sua história.  Em boa parte, com isso, vai ser fácil perceber quais as diferenças entre os discos rígidos e os SSD’s.

No caso dos discos rígidos, a história começa há muito tempo, bem antes sequer de eu ter nascido, nos anos 50, quando a IBM (que neste momento já está fora desta indústria) produziu os primeiros discos rígidos, sendo que o primeiro a ter algum sucesso no mercado foi o IBM RAMAC 305, com uma estonteante capacidade de 5Mb (era mesmo na época!) e com um preço de 160.000 USD.  Parece que devido ao custo tão elevado que o disco tinha, uma das opções era o aluguer do disco durante um período de tempo.  Vou aqui abrir um parenteses, porque naquela época, a utilização do termo disco rígido não criava o mesmo quadro mental que cria nos dias de hoje, porque hoje quando pensamos nisso, temos um quadro mental de um dispositivo que mede uns centímetros e levamos na mão ou facilmente na nossa mala, mas naqueles tempos um disco rígido era maior ainda do que o frigorifico lá de casa.

Os anos passaram e logicamente o custo por MB foi diminuindo, assim como o tamanho dos dispositivos, até que em 1980, cerca de 30 anos após o arranque desta indústria, viu-se o primeiro disco rígido com um formato que talvez a malta mais nova já conseguisse associar a um disco, quando a Seagate lançou o modelo ST-506, o primeiro disco rígido de 5 ¼, com uma capacidade de 5Mb e um custo de 1.500 USD (veja-se bem a diferença do IBM RAMAC 305, em termos de custo e tamanho).

A partir dos anos 80, já começámos a assistir a uma massificação dos discos rígidos, alavancado claro está pela utilização cada vez mais crescente de computadores e a passagem de processos para formatos digitais.  Com isto, começou a pensar-se em como criar discos para uma utilização mais profissional, mais rápidos e mais fiáveis.  Foi a partir de algumas dessas necessidades que se desenvolveu o interface SCSI (Small Computer System Interface), que possibilitou elevar a fasquia em termos de desempenho, e este passou a ser o padrão utilizado em servidores.  Hoje, ainda existem muitos discos no mercado com este padrão, apesar de já ter sido substituído por outro mais recente, o SAS (Serial Attached SCSI).  Num próximo artigo falarei sobre estes e outros interfaces e as diferenças entre cada um deles.

Outro dos pontos altos dos discos rígidos foi quando em 2007, foi lançado o primeiro disco rígido de 1Tb (Terabyte).  Em grande parte todo este desenvolvimento foi muito potenciado pelos conteúdos que foram gerados, que impulsionaram a necessidade cada vez maior de espaço para armazenamento de informação digital.  Apenas para referir a última inovação mais mediática, quando este ano, começaram a ser lançados os primeiros discos rígidos com Hélio, o que, segundo os fabricantes, possibilita uma maior densidade e também um aumento do número de pratos que o disco pode conter.

Falando sobre a arquitetura de um disco rígido, de um modo simples pode ser dividida em duas grandes partes, a PCB (Printed Circuit Board) e o HDA (Head Disk Assembly).  Existem outras nomenculaturas ou formas de “dividir” um disco rígido, mas esta foi a que decidi usar para facilitar a explicação.  Basicamente, podemos dizer que a PCB é como se fosse a parte externa e o HDA a parte interna, com todos os seus componentes, que falaremos de seguida.  Além disso, existe o chassis que suporta todos os componentes, mas que não tem grande interesse para o objectivo deste artigo.

A PCB tem por missão efectuar tarefas como controlo de tráfego de dados, controlo dos componentes electrónicos, codificação e descodificação de dados e contém alguns componentes fundamentais ao funcionamento do disco rígido, como o MCU (Micro Controller Unit), que faz todo o processamento e cálculo, assim como controla o canal de escrita e leitura, que tem que transformar os sinais analógicos vindos das cabeças de leitura em sinais digitais para o processo de leitura e o reverso no processo de escrita.  Além disso, o MCU controla o fluxo de dados para o interface SATA, de forma a serem disponibilizados ao utilizador.  Todas as PCB’s têm também um chip denominado VCM (Voice Coil Motor) Controller, que controla o movimento do motor e também a deslocação das cabeças.  Se este chip estiver danificado, um dos comportamento típicos é o motor do disco rígido nem sequer inicializar.  Além do consumo de energia enorme, este chip pode aquecer bastante e isso é possível confirmar, colocando o dedo 🙂

Como muitos outros dispositivos, os discos rígidos também têm uma memória, normalmente conhecida por cache, que pode ser de 16, 32 ou 64 MB, sendo estes os tamanhos mais comuns actualmente.  O objectivo desta memória é acelerar o funcionamento global do disco rígido, por colocar nela informação acedida regularmente, inclusive alguma informação relacionada com o Firmware do disco.  Um chip que a maioria das vezes está presente, mas nem sempre como memória física isolada, é a ROM (Read Only Memory), curiosamente um chip do tipo Flash.  Este componente contém uma parte do Firmware do disco, que é acedido quando o disco inicializa.  Em alguns casos já se verificou que não existe este chip, o que significa que o seu conteúdo está numa memória flash dentro do próprio MCU.

Existem ainda muitos outros componentes, mas a ideia não é descrever exaustivamente a PCB nem nenhum deles, apenas considerar os principais e a sua função.

Vou apenas referir mais um, que é um caso curioso.  Desde há uns anos para cá muitas PCB’s, talvez todas (não estive atento a confirmar isso), contêm um Sensor de Choque, que basicamente aquilo que faz é receber um sinal quando existe um determinado grau de choque no dispositivo e enviar uma instrução para alguns componentes, de maneira a que as cabeças possam entrar na sua zona de parqueamento e o motor possa parar, tudo isto sem causar (ou para impedir) danos nos componentes do disco rígido.  Até me recordo de há alguns anos atrás um fabricante ter feito uma publicidade enorme aos seus portáteis com base nesta tecnologia.  Devo dizer que aqueles clientes que testaram esta funcionalidade devem ter ficado desiludidos, pois na realidade não funciona (ou pelo menos quase nunca funciona), por isso, a ideia de deixar cair um disco rígido ou um portátil não é muito saudável (e isto falo com conhecimento de causa).

Bem, passando ao que chamamos de HDA (Head Disk Assembly), além do chassis, que até tem alguns pormenores interessantes (talvez num outro artigo fale sobre eles), vamos concentrar-nos no interior do disco rígido.  Os componentes que visualmente identificamos com facilidade são os pratos, o motor, o HSA (Head Stack Assembly), o pré-amplificador e um íman.  Logicamente, entre estes o mais importante é ou são os pratos, que é onde os nossos preciosos dados estão alojados (apesar de quando olhamos apenas vemos um género de um espelho), que são constituídos de alumínio polido ou de vidro, apesar de vidro ser muito menos frequente e bastante mais perigoso no caso das famosas quedas.  São depois revestidos por uma séria de compostos, inclusive uma camada ferromagnética, que aloja os sinais (ou os nossos dados).

Além dos pratos, um dos componentes mais importantes são as cabeças, cujo objetivo é realizar o processo de leitura e escrita nos pratos.  O HSA contém na sua extremidade as cabeças, que poderão ir de uma a dez, consoante o tamanho do disco.  As cabeças contêm um elemento de leitura e um elemento de escrita para que possam realizar ambas as operações e são na realidade um dos elementos mais sensíveis de todo o conjunto, e só poderiam ser, pois na realidade são responsáveis por conseguir ler os sinais alojados nos pratos que podem rodar a 10000 rotações por minuto, e “voam” a uma distância de cerca de 5 a 10 nanómetros dos pratos (sim, nunca entram em contacto com a superfície, pois na realidade, quando isso acontece é muito mau sinal).  Para termos uma ideia do que isto significa, basta pensarmos que um cabelo nosso em média tem cerca de 25000 nanómetros de diâmetro.  Por esta razão é fácil entender porque é que não é boa ideia abrir um disco rígido fora de uma câmara adequada para o efeito, pois se uma partícula entrar em contacto com as cabeças, pode facilmente fazer com que se danifiquem.  Por isso é que os discos têm que funcionar num ambiente em que ar tem que ser muito limpo e controlado.

Um outro componente importante é o pré-amplificador ou preamp.  O objectivo deste chip é controlar as cabeças e amplificar os sinais que são enviados ou recebidos.  Como os sinais das cabeças são muito fracos, o preamp tem que estar o mais próximo possível das cabeças, e essa é a razão pela qual está dentro do HSA, em vez de estar na PCB.

O último dos componentes principais dentro do HSA é o motor e tudo aquilo que o constitui, ou seja o motor propriamente dito, que é colocado num eixo, onde depois são colocados os pratos, divididos por anéis entre eles para criar o espaçamento necessário e finalmente fixos por um tipo de engate que suporta os parafusos que ligam os pratos ao eixo, permitindo que rodem todos ao mesmo tempo.

A nível de arquitetura a forma como os dados são guardados e acedidos é feita através de pistas concêntricas distribuídas pelas superfícies de todos os pratos, que por sua vez estão divididas em clusters, e finalmente em sectores.  Um cluster é um conjunto adjacente de sectores, e por norma é a menor unidade de espaço endereçável pelo sistema operativo.  Um sector pode conter 512 bytes ou 4096 bytes, nas unidades mais recentes.  Um cilindro é uma forma de endereçar a mesma pista em todas as superfícies.  Isso leva-nos à famosa notação CHS (Cylinder Head Sector), que não é mais do que a notação física de endereçamento dos sectores do disco rígido, em que com as coordenadas corretas, conseguimos endereçar todos os sectores do disco.  É óbvio que não é muito fácil para os utilizadores entenderem e lidarem com este endereçamento, daí que para facilitar muito as coisas isso foi transformado num endereçamento lógico muito mais simples chamado LBA (Logical Block Addressing), em que basicamente os sectores do disco rígido iniciam no zero e vão até um determinado número dependendo do tamanho do suporte.  Existe depois uma função a nível de Firmware de nome Translator, que é responsável por fazer a conversão das coordenadas físicas em lógicas.  Para o utilizador tudo fica simplificado e bem mais transparente.

Como muitos outros dispositivos electrónicos, um disco rígido também tem um firmware, que contem informação indispensável ao seu funcionamento.  Não conseguindo aceder ao firmware, nunca conseguiremos aceder aos dados alojados.

As falhas mais típicas associadas a discos rígidos e que originam perdas de dados são as lógicas (como dados apagados, falhas no master boot record, etc), as electrónicas (picos de tensão, etc), as de Firmware (informação crítica não acessível) e por último as físicas (cabeças danificadas, motor inoperacional ou preamp danificado).  Depois de falarmos sobre os SSD’s, falaremos mais um pouco sobre as diferenças entre as falhas comuns entre discos rígidos e SSD’s.

No que toca à segurança associada a um disco rígido, este ainda é um ponto de falha bastante grande, pois a maioria dos utilizadores não utiliza qualquer tipo de encriptação, o que significa que se alguém malicioso consegue aceder ao disco fisicamente, terá acesso a toda a informação contida no disco rígido.  Para isso, ultimamente temos assistido aumentarem o número de discos rígidos com a possibilidade de encriptação, quer parcial, quer total, normalmente chamados FDE (Full Disk Encryption).  Em termos de aplicações mais utilizadas no mercado empresarial para encriptação de discos rígidos, temos o Bitlocker, o Safeboot e o Safeguard, que utilizam AES128 ou AES256, o que torna as coisas bastante seguras.

Vamos começar então a falar de Flash.  A memória Flash foi inventada em 1980 pelo Dr. Fujio Masuoka (se não estou em erro trabalhava na Toshiba).  Um pormenor curioso é o nome em si, pois o processo de escrita nas células faz lembrar o Flash de uma câmara fotográfica, e daí ter sido o nome usado.  Existem dois tipos principais de memórias Flash utilizadas, que são as memórias NAND e NOR.  As memórias Flash, depois de serem apresentadas numa conferência da IEEE em San Francisco em 1984, foram apresentadas comercialmente pela primeira vez em 1988 pela Intel, naquele caso do tipo NOR.  Só alguns anos depois, em 1995, foi lançada no mercado a primeira memória Flash amovível.  A partir daí o desenvolvimento comercial e tecnológico foi grande, e as memórias Flash são utilizadas em inúmeros dispositivos sem sequer nos apercebermos, apesar de serem mais conhecidas pela sua utilização em pen drives USB, em cartões SD ou mais recentemente nos SSD’s.  Portanto, em conclusão, é tudo menos um tipo de memória novo, mas como em muitos outros casos, tem o seu tempo de desenvolvimento e maturidade no mercado.

A nível físico, em termos simples, existem células que guardam os electrões e que têm uma espécie de porta de entrada para os electrões entrarem e saírem.  Quando o electrão está dentro da célula significa que o resultado é 0 (zero) e quando o electrão está fora significa que o resultado é 1 (eu sei que parece estranho porque normalmente os bits são interpretados ao contrário).  Existem dois tipos de células utilizadas, o tipo SLC (Single Layer Chips) e o tipo MLC (Multi Layer Chips), em que a diferença é que o SLC grava 1 bit (0 ou 1) por transístor, enquanto o MLC grava dois bits por transístor, conseguindo o dobro da capacidade, mas diminuindo o desempenho de leitura e escrita.

Logicamente não podemos endereçar as células individualmente, por isso, em termos de arquitectura as memórias estão divididas em Pages, Blocks, Planes, Dies e TSOP’s (Thin Small Outline Package, que são o circuito integrado em si, ou chip).

Uma Page é um conjunto de células que compõem a unidade mais pequena em que é possível escrever (semelhante a um cluster nos discos rígidos).  O tamanho de uma Page pode ser variável dependendo do fabricante.  Um tamanho comum pode ser 4.314 bytes, onde apenas 4.096 bytes são utilizáveis, enquanto os restantes 218 bytes são utilizados para ECC, gestão e firmware.  Um Block é composto por 128 Pages, que segundo as contas acima, é uma unidade de 512 Kb.  Tem o pormenor curioso de ser a unidade mais pequena que se consegue apagar (este é um pormenor importante, pois os SSD’s não podem escrever sobre Pages que não foram previamente apagadas, e isto leva a dois tópicos que são a degradação das células ao longo do tempo e a função TRIM, que falarei numa próxima oportunidade).  Planes são conjuntos de 2048 Blocks e  Dies são conjuntos de 2 Planes.  Cada SSD (dos mais comuns) pode conter 8 ou 16 TSOP’s, para perfazer o tamanho total pretendido pelo fabricante.

Um outro componente fundamental dos SSD’s é o MCU (Controller), que gere uma série de processos críticos para o funcionamento da unidade, como Wear Leveling, Bad Block Management, Erase Cycles, ECC, etc.

Desses processos críticos, o Wear Leveling tem por objectivo lidar com um problema das memórias flash, a degradação.  Os blocos que são escritos muitas vezes acabam por sofrer muito mais ciclos de destruição (para apagar os dados) do que outros blocos.  Por causa do número de leituras e escritas sobre os blocos, a probabilidade de falha é maior, até porque a memória teoricamente só pode ser escrita um determinado número de vezes (cerca de 100.000), e devido a isso, o número de ciclos é monitorizado e o controlador consegue mapear os blocos a escrever de forma a não utilizar sempre os mesmos e evitar assim a degradação mais rápida.  Um outro processo que está relacionado é o Garbage Collection, pois no funcionamento normal quando um utilizador apaga um conjunto de dados, fisicamente os dados não são eliminados.  O sistema operativo (Windows) utiliza o comando TRIM para informar o controlador que um determinado conjunto de páginas está disponível para utilização e o controlador desta forma sabe que os dados nestas páginas não são necessários e não necessita de efectuar o processo realocação, diminuindo assim o número de ciclos de escrita.

Normalmente uma parte do espaço disponível num SSD é reservado para o controlador, para que este possa fazer toda a gestão interna do SSD.  Isto permite em muitos casos que existam um conjunto de blocos vazios que estão preparados para ser utilizados assim que necessário.  Isto também pode ser a razão porque em alguns casos existem tamanho menos convencionais, como 60Gb ou 120Gb em SSD’s, e esta gestão pode ser feita pela funcionalidade de Over Provisioning.

Como qualquer outro suporte, o SSD não é excepção no que toca a produzir erros, e por isso existem uma série de processos para gerir esses erros, como por exemplo o Bad Block Management. Durante o processo de fabrico e posteriormente no processo de funcionamento de um SSD (o mesmo acontece no caso dos discos rígido), existem muitas células que já vêm inicialmente com defeitos e células que se vão danificar ao longo do tempo, e os fabricantes já preveem como lidar com isso por reservar um espaço determinado para guardar essa informação.  Esta parte do firmware faz a gestão quer dos defeitos iniciais, quer dos gerados com o tempo, para que essas células possam ser remapeadas e não utilizadas novamente.

Relacionados com a integridade dos dados existem dois processos críticos, o ECC (Error Correction Code), já é uma técnica bastante antiga, que também é utilizada em discos rígidos tradicionais, que tem por objectivo validar a integridade dos dados que passam no bus de dados, para detectar erros e incoerências e conseguir corrigir esses erros para que dados inválidos não sejam guardados e posteriormente acedidos.  Novamente, como no caso dos SSD’s existem milhões de células, a probabilidade de ocorrerem erros é muito alta e o controlador tem que gerir isso.  Além disso, existe ainda o CRC (Cyclic Redundancy Check), cujo objectivo é a protecção da integridade dos dados à semelhança do ECC, no entanto, o CRC garante que os dados que são escritos são os mesmos que são lidos e disponibilizados ao utilizador.  É gerado um valor CRC para um determinado conjunto de dados, que depois é gravado no SSD juntamente com os dados em si.  Quando esses dados são requisitados, é calculado novamente o CRC e verificado se está de acordo com o que está guardado.  Se estiver, significa que os dados são íntegros.  Se não estiver, significa que ocorreram erros e que os dados não são íntegros, e o utilizador tem que saber disso.  No entanto, o CRC é apenas uma validação e não corrige erros caso eles existam.

No que toca à componente recuperação de dados e segurança, aqui existe um pormenor que pode fazer muita diferença, pois na maioria dos actuais SSD’s existe encriptação por defeito (também AES128 ou AES256), e a chave de encriptação está guardada na maioria dos casos no MCU, o que significa que em caso de falha do MCU, a probabilidade de voltar a ver os dados é praticamente nula.

As falhas comuns que podem levar a perdas de dados em SSD’s são em boa parte semelhantes às dos discos rígidos, como por exemplo no que toca aos problemas lógicos, onde, na maioria dos casos, o problema está no utilizador, quando são apagados dados, criadas novas partições, etc.  Também existem problemas a nível electrónico, onde partilham problemas comuns com os discos rígidos, como os picos de tensão e outros.  Os SSD’s também contêm Firmware (apesar da sua estrutura ser diferente da dos discos rígidos), que pode ficar inacessível por diversas razões e levar à perda do acesso aos dados.

Por úlitmo, também podem ocorrer problemas com o próprio MCU, que por norma são aqueles de mais difícil solução, pois devido à questão da encriptação não é possível simplesmente substituir o MCU.

A nível de segurança os SSD’s partilham muito daquilo que os discos rígidos também têm, ou seja, FDE, utilizando as mesmas aplicações que são usadas para os discos rígidos, Bitlocker, Safeboot ou Safeguard.  Existe ainda a vantagem que os dados contidos nas memórias Flash estão encriptados na maioria dos SSD’s actuais, o que significa que mesmo retirando e lendo as memórias flash em RAW não é possível efectuar a reconstrução dos dados, o que acaba por ser uma vantagem no que toca à componente de segurança.

Vamos então agora às principais diferenças entre os discos rígidos tradicionais e os SSD’s.  Começo por focar a questão da segurança, que me parece que não existirão grandes diferenças, pois o que pode ser utilizado em um, pode também ser utilizado no outro, sendo que o SSD tem ainda a vantagem (pelo menos os mais recentes) de utilizarem encriptação a nível de hardware, o que é uma boa funcionalidade anti-tampering.

Uma das diferenças mais óbvias entre os discos rígidos e SSD’s são as partes móveis.  Os discos rígidos tradicionais têm um conjunto de partes móveis (especialmente as cabeças), o que os torna muito suscetíveis ao movimento, especialmente quando estão em funcionamento.  No caso dos discos rígidos as quedas são um elemento comum que leva a perda de dados e a danos muitas vezes irrecuperáveis.  Por outro lado, os SSD’s não têm partes móveis, apenas componentes electrónicos, o que os torna muito adequados para soluções onde a mobilidade é importante, e dessa forma é possível reduzir o risco de perda de dados.  Uma nota apenas, este simples facto não prova que os SSD’s sejam menos propensos a falhas do que os discos tradicionais, pois isso é apenas uma questão teórica.  Não existem estudos (pelo menos que eu conheça) que levem a essa conclusão, nem sequer as partes móveis são responsáveis pela maioria dos problemas com os discos rígidos.

No que toca à questão da recuperação de dados em discos rígidos versus SSD’s, ainda existe uma diferença substancial, pois nos discos rígidos já existe muito mais investigação neste sentido e as possibilidades de recuperação são sempre muito altas desde que o problema não esteja relacionado com a superfície dos pratos, ou seja, tudo é possível substituir à excepção dos pratos onde estão contidos os dados.  As técnicas existentes também já estão muito refinadas a ponto de permitirem recuperações parciais, mesmo quando uma ou mais superfícies tenham problemas.  No que toca aos SSD’s, a história é bastante diferente.  A investigação nestes dispositivos ainda é muito limitada e bastante complexa também.  Um dos problemas comuns, relacionado com o MCU, torna-se irrecuperável à partida, devido à encriptação ao nível das memórias Flash, e devido à construção destes dispositivos, mesmo que apenas um dos 8, 16 ou 32 chips esteja inacessível, a recuperação parcial ainda não é uma possibilidade existente (pelo menos do conhecimento limitado que tenho).  Daí que no toca à recuperação de dados, sem dúvida que a probabilidade é bem maior em discos rígidos do que em SSD’s (a palavra backup nunca fez tanto sentido para quem usa SSD).

Fugindo da questão da segurança e recuperação, sem dúvida que o SSD apresenta muitas vantagens ao nível do consumo, peso, rapidez, barulho.  A maior e única desvantagem óbvia é o custo, que ainda é altíssimo quando comparado com os discos tradicionais.

Conforme disse, falei sobre este tópico numa Confraria de Segurança da Informação em Abril deste ano.  Aqui fica o link da apresentação para quem quiser.

http://www.datarecovercenter.pt/Noticias/2013/Apresentacao-sobre-Diferencas-entre-Discos-Rigidos-e-SSD-s

Sintam-se à vontade para questões ou criticas.  Como dizia uma pessoa amiga, reservo-me o direito de responder a qualquer pergunta com a resposta “Não sei, vou procurar a resposta!”.

Advertisements
This entry was posted in Data Recovery and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s