Para que o Vinum possa solucionar esse problema, ele implementa uma hierarquia de objetos em quatro níveis:
O objeto mais visível é o disco virtual, chamado de volume. Volumes tem essencialmente as mesmas propriedades de uma partição UNIX®, contudo tem algumas pequenas diferenças. Eles não tem nenhuma limitação de tamanho.
Volumes são compostos de plexes, no qual representa o espaço total de adressamento de um volume. Dessa forma, esse nível na hierarquia fornece redundância. Pense em plexes como uma partição individual em um vetor clonado, cada um contendo os mesmos dados.
Desde que o Vinum exista no sistema de armazenamento de discos UNIX, seria possível usar partições UNIX como um bloco de construção para plexes de múltiplos discos, mas no final isso acaba sendo muito inflexível: o número de partições de um disco UNIX é limitado. Ao contrário, Vinum subdivide uma única partição UNIX (os discos do vinum) em área contínuas chamadas subdiscos, os quais são usados como blocos de construção para plexes.
Subdiscos residem em discos do Vinum. Atualmente partições UNIX. Com a exceção de uma pequea área no começo do disco, a qual é usada para armazenamento de informações de configuração e estado, o disco todo fica disponível para armazenamento de dados.
As sessões seguintes descrevem o modo com que esses objetos fornecem a funcionalidade requerida pelo Vinum.
Plexes podem ter muitos subdiscos espalhados por todas as partições nas configurações do vinum. Como resultado, o tamanho de uma prtição original não limta o tamanho nem de um plex e nem de um volume.
Vinum implementa espelhamento anexando múltiplos plexes a um volume. Cada plex é a representação dos dados de um volume. Um volume pode conter de um a oito plexes.
Apesar de um plex repesentar os dados completos de um volume, é possivel que partes da representação estejam fisicamente ausentes, seja por planejamento (por não definir um subdisco como parte de um plex), ou por acidente (como resultado de uma falha no disco). Contanto que, pelo menos um plex possa fornecer dados para a extenção completa de endereço do volume, o sistema é completamente funcional.
Vinum implementa no nível do plex tanto concatenação quanto striping:
Um plex concatenado usa um espaço de endereçamento de cada subdisco por vez.
Um plex striped distribui os dados entre cada subdisco. Todos os subdiscos têm que ter o mesmo tamanho, e é preciso que existam pelo menos dois subdiscos para que eles possam ser distinguidos a partir de um plex concatenado.
A versão do Vinum suprida com o FreeBSD 5.3 implementa dois tipos de plexes:
Plexes concatenados são os mais flexíveis: eles podem conter infinitos números de subdiscos e os subdiscos podem ser de tamanhos diferentes. Os plexes podem ser extendendidos adicionando subdiscos. Eles requerem menos tempo de CPU do que plexes striped, mas a diferença em sobrecarga de CPU não da para ser medida. Por outro lado, eles são mais sucetíveis a hot spots, onde um disco é muito ativo e outros estão ociosos.
A grande vantágem de plexes striped (RAID-0) é que eles reduzem os hot spots: escolhendo o melhor tamanho de stripe (mais ou menos 256 kB), você pode igualar a carga nos discos componentes. As desvantagens dessa escolha são códigos (fracionalmente) mais complexos e restrições em subdiscos: eles tem que ser todos do mesmo tamanho, e extender um plex através da adição de um novo subdisco é tão complicado que Vinum atualmente nem o implementa. Vinum impõe uma restrição trivial adicional: Um plex striped precisa ter pelo menos dois subdiscos, pois caso contrário seria indistinguivel de um plex concatenado.
Tabela 13-1 sumariza as vantagens e desvantagens de cada organização plex.
Tabela 13-1. Organizações do Plex no Vinum
Tipo de Plex | Mínimo de subdiscos | Pode adicionar subdiscos | Deve ser de igual tamanho | Aplicação |
---|---|---|---|---|
concatenado | 1 | sim | não | Grande armazenamento de dados com máxima flexibilidade de posicionamento e performance moderada |
striped | 2 | não | sim | Alta performance em combinação com um acesso altamente concorrido |
Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.