Decidi que alguma informação de fundo poderia ser útil para tornar esta resposta clara, mas como podem ver, fui um pouco ao TOC, por isso talvez queiram saltar para o fim e depois voltar, se necessário. Embora eu saiba um pouco, não sou especialista em S.S.D.s, por isso, se alguém vir um erro EDIT :).
Informação de fundo:
** O que é um S.S.D.?:**
Um S.S.D. ou drive de estado sólido é um dispositivo de armazenamento sem partes móveis. O termo S.S.D. destina-se frequentemente a referir-se especificamente a unidades de estado sólido baseadas em nano-flash destinadas a actuar como uma alternativa de disco rígido, mas na realidade são apenas uma forma de S.S.D., e nem sequer a mais popular. O tipo de S.S.D. mais popular é o S.S.D. à base de nano-flash, como os bastões de memória (unidades flash), e os cartões de memória, embora raramente sejam referidos como S.S.D.. Os S.S.D.s também podem ser baseados em ram, mas a maioria dos ram-drives são software gerados em oposição ao hardware físico.
Por que razão as S.S.D.s Nand-flash pretendem agir como uma alternativa ao disco rígido?:
Para executar um sistema operativo, e para o seu software, é necessário um meio de armazenamento rápido. É aqui que o ram entra em jogo, mas historicamente o ram era caro e os cpu’s não conseguiam lidar com grandes quantidades. Quando executa um sistema operativo, ou programa as partes de dados actualmente requeridas são copiadas para o seu ram, porque o seu dispositivo de armazenamento não é suficientemente rápido. É criado um estrangulamento, porque tem de esperar que os dados sejam copiados do dispositivo de armazenamento lento para o carneiro. Embora nem todos os S.S.D.s nand-flash tenham melhor desempenho do que os discos rígidos mais tradicionais, os que ajudam a reduzir o gargalo, dando tempos de acesso mais rápidos, velocidades de leitura e de escrita.
O que é Nand-flash?:
O armazenamento Flash é um meio de armazenamento que utiliza electricidade em vez de magnetismo para armazenar dados. Nand-flash é um armazenamento flash que utiliza um gateway NAND. Ao contrário de A nor-flash que é acesso aleatório, o nand-flash é acedido sequencialmente.
** Como é que Nand-flash S.S.D.s armazena dados?:**
O armazenamento Nand-flash é composto por blocos, esses blocos são divididos em células, as células contêm páginas. Ao contrário de um disco rígido que utiliza magnetismo para armazenar dados, os suportes flash utilizam electricidade, devido a estes dados não podem ser escritos em excesso; os dados devem ser apagados a fim de reutilizar o espaço. O dispositivo não pode apagar páginas individuais; o apagamento deve ocorrer a um nível de bloco. Uma vez que os dados não podem ser escritos num bloco que já esteja a ser utilizado (mesmo que nem todas as páginas do mesmo sejam), o bloco inteiro deve ser apagado primeiro, e depois o bloco agora em branco pode ter dados escritos nas suas páginas. O problema é que perderia quaisquer dados já nessas páginas, incluindo dados que não quer descartar! Para evitar que estes dados existentes sejam retidos deve ser copiado para outro lugar antes de se proceder ao apagamento do bloco. Este procedimento de cópia não é executado pelo sistema operativo do computador, é executado a nível de dispositivo por uma funcionalidade conhecida como recolha de lixo.
Nos discos rígidos é utilizada uma placa magnética para armazenar os dados. Tal como nos discos de vinil, a placa tem pistas, e estas pistas são divididas em secções chamadas sectores. Um sector pode conter uma certa quantidade de dados (tipicamente 512 bytes, mas alguns mais recentes são 4KB). Quando se aplica um sistema de ficheiros, os sectores são agrupados em clusters (com base num tamanho especificado, chamado tamanho de alocação ou tamanho de cluster), e depois os ficheiros são escritos através de clusters. É também possível dividir um sector para fazer clusters menores do que o seu tamanho de sector. O espaço não utilizado num agrupamento depois de um ficheiro ser escrito através de um agrupamento (ou vários) não é utilizável, o ficheiro seguinte começa num novo agrupamento. Para evitar muito espaço inutilizável, as pessoas usam tipicamente tamanhos de clusters mais pequenos, mas isto pode diminuir o desempenho ao escrever ficheiros grandes. Os S.S.D.s Nand-flash não têm uma placa magnética, utilizam electricidade que passa através de blocos de memória. Um bloco é feito de células contendo páginas. As páginas têm capacidade X (normalmente 4 KB), e assim o número de páginas determinará a capacidade de um bloco (normalmente 512 KB). Nas SSD’s uma página equivale a um sector num disco rígido, porque ambas representam a menor divisão de armazenamento.
O que é nivelamento de desgaste?:
Nand-flash os blocos de armazenamento podem ser escritos, e apagados um número limitado de vezes (referido como o seu ciclo de vida). Para evitar que a unidade sofra de redução de capacidade (blocos mortos), faz sentido desgastar os blocos o mais uniformemente possível. O ciclo de vida limitado é também a principal razão pela qual muitas pessoas sugerem não ter um ficheiro de página ou partição de troca no seu sistema operativo se estiver a utilizar um S.S.D. baseado em Nand-flash (embora as rápidas velocidades de transferência de dados do dispositivo para o ram são também um factor importante nessa sugestão).
O que é o Over Provisioning?:
O Over Provisioning define a diferença entre quanto espaço livre existe, em comparação com o que parece existir. Os dispositivos de armazenamento baseados em Nand-flash afirmam ser mais pequenos do que eles são, de modo a garantir a existência de blocos vazios para a eliminação do lixo a utilizar. Existe um segundo tipo de sobreprovisionamento chamado “dinâmico sobreprovisionamento” que se refere simplesmente ao espaço livre conhecido dentro do espaço livre mostrado. Há dois tipos de sobreabastecimento dinâmico: nível do sistema operacional, e nível do controlador de accionamento. Ao nível do sistema operativo, o Trim pode ser utilizado para libertar blocos que podem depois ser escritos de imediato. Ao nível do controlador pode ser utilizado espaço não atribuído na unidade (não particionado, nenhum sistema de ficheiros). Ter mais blocos livres ajuda a manter a unidade a funcionar com o seu melhor desempenho, porque pode escrever imediatamente. Também aumenta a provável capota de ter blocos que estão localizados sequencialmente, o que reduz os tempos de acesso porque os S.S.D.s Nand-flash usam acesso sequencial para ler e escrever dados.
O que é Write Amplification?:
Porque os meios Nand-flash requerem que um bloco seja apagado antes de poder ser escrito, qualquer dado dentro do bloco que não esteja a ser apagado deve ser copiado para um novo bloco por eliminação de lixo. Estas escritas adicionais são chamadas amplificação de escrita.
O que é Trim…:
Os sistemas operativos são construídos tendo em mente os discos rígidos tradicionais. Lembre-se de que um disco rígido tradicional pode sobregravar dados directamente. Quando se elimina um ficheiro, o sistema operativo marca-o como apagado (está bem para sobreescrever), mas os dados continuam lá até que ocorra uma operação de gravação. Nos S.S.D.s baseados em Nand-flash isto é um problema, porque os dados devem ser apagados primeiro. O apagamento ocorre a um nível de bloco, pelo que pode haver dados adicionais que não estejam a ser apagados. A eliminação do lixo copia quaisquer dados que não estejam prontos para eliminação para blocos vazios, e depois os blocos em questão podem ser apagados. Tudo isto leva tempo, e causa escritas desnecessárias (amplificação da escrita)! Para contornar isto, foi feita uma funcionalidade chamada Trim. Trim dá ao sistema operativo o poder de dizer ao S.S.D. para apagar blocos com páginas que contenham dados que o sistema operativo tenha marcado como apagados durante períodos de tempo em que não está a pedir uma operação de escrita lá. A recolha de lixo faz a coisa, e como resultado, os blocos são libertados para que a escrita possa, assim se espera, ocorrer aos blocos que não precisam de ser apagados primeiro, o que torna o processo mais rápido, e ajuda a reduzir a amplificação da escrita a um mínimo. Isto não é feito com base num ficheiro; Trim utiliza o endereçamento lógico dos blocos. O L.B.A. especifica quais os sectores (páginas) a apagar, e o apagamento ocorre a nível de bloco.
A resposta à sua pergunta “Desvantagens de particionar uma SSD?”:
** S.S.D.s baseados em Ram:**
Não há absolutamente nenhuma desvantagem porque são acesso aleatório!
Nand-flash Based S.S.D.s:
As únicas desvantagens que me vêm à mente seriam:
o nivelamento do desgaste não terá tanto espaço livre para jogar, porque as operações de escrita serão espalhadas por um espaço menor, pelo que “poderia”, mas não necessariamente desgastará essa parte da unidade mais rapidamente do que se toda a unidade fosse uma única partição, a menos que esteja a executar um desgaste equivalente nas partições adicionais (por exemplo: uma dupla bota).
Tal como os discos rígidos, os S.S.D. nand-flash são acesso sequencial, assim quaisquer dados que escreva/leia a partir das partições adicionais estarão mais longe do que “poderiam” estar se fossem escritos numa única partição, porque as pessoas normalmente deixam espaço livre nas suas partições. Isto aumentará os tempos de acesso aos dados que são armazenados nas partições adicionais.
Menos espaço total aumenta o provável capô de escrever ficheiros fragmentados, e embora o impacto do desempenho seja pequeno tenha em mente que é geralmente considerada uma má ideia desfragmentar uma S.S.D. de nano-flash porque esta irá desgastar a unidade. Claro que, dependendo do sistema de ficheiros que estiver a utilizar, alguns resultam em quantidades extremamente baixas de fragmentação, porque são concebidos para escrever ficheiros como um todo sempre que possível, em vez de os despejar por todo o lado para criar velocidades de escrita mais rápidas.
Eu diria que não há problema em ter múltiplas partições, mas o nivelamento do desgaste pode ser uma preocupação se tiver algumas partições com muita actividade de escrita, e outras com muito pouca. Se não particionar espaço não planeia utilizar, e em vez disso deixá-lo para uma dinâmica sobre o aprovisionamento, poderá receber um aumento de desempenho porque será mais fácil libertar blocos e escrever dados sequenciais. No entanto, não há garauntee de que será necessário espaço de sobreprovisionamento, o que nos leva de volta ao ponto #1 sobre nivelamento de desgaste.
Algumas outras pessoas neste tópico levantaram a discussão de como a partição afectará as contribuições de Trim para a dinâmica de sobre provisionamento. Ao meu entender, a TRIM é utilizada para apontar sectores (páginas) que têm dados assinalados para eliminação, e assim a eliminação do lixo pode apagar livremente esses blocos. Este espaço livre actua como dinâmico sobre o aprovisionamento dentro DAQUELA partição, porque esses sectores fazem parte de aglomerados sendo utilizadas pelo sistema de ficheiros dessa partição; outras partições têm os seus próprios sistemas de ficheiros. No entanto, posso estar totalmente enganado quanto a isto, uma vez que a ideia de sobreprovisionamento é um pouco obscura para mim, uma vez que os dados serão escritos em locais que nem sequer têm sistemas de ficheiros ou aparecem na capacidade das unidades. Isto faz-me pensar se talvez o espaço de aprovisionamento excessivo seja utilizado numa base temporária antes de uma operação final de escrita optomizada em blocos dentro de um sistema de ficheiros? Claro que as contribuições de Trim para o provisionamento dinâmico em excesso dentro do sistema de ficheiros não seriam temporárias, uma vez que poderiam ser escritas directamente, uma vez que já se encontram em espaço utilizável. Essa é pelo menos a minha teoria. Talvez a minha compreensão dos filesytems esteja errada? Tenho sido incapaz de encontrar quaisquer recursos que entrem em detalhes sobre isto.