Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Armazenamento grande, rápido, estável e dentro do orçamento

Crie e mantenha um servidor de armazenamento rápido com ZFS e RAID-Z

Alfredo Deza, Software Engineer
Photo of Alfredo Deza
Alfredo Deza é engenheiro de software, ex-atleta profissional e olímpico com forte formação em administração de sistema. Ele é apaixonado por software livre e é orador regular em grupos de tecnologia local e conferências internacionais, como a PyCon. Em seu tempo livre, ele tenta melhorar suas habilidades com a fotografia e gosta de contribuir para projetos de software livre.

Resumo:  Crie armazenamento flexível e escalável sem sacrificar seu orçamento ou a velocidade. Usando o sistema de arquivos ZFS e RAID-Z, é possível recuperar facilmente a partir de um sistema operacional corrompido e lidar com falhas comuns na unidade de disco rígido.

Data:  20/Jul/2011
Nível:  Avançado Também disponível em :   Inglês
Atividade:  874 visualizações
Comentários:  


Introdução a ZFS e RAID-Z

O ZFS é um dos sistemas de arquivos mais avançado disponíveis atualmente. A sigla significa "zettabyte file system", ou seja "sistema de arquivos de zetabytes", uma referência direta à sua capacidade de armazenamento: até 256 quatrilhões de zetabytes. Dito de outra forma, um único zetabyte é igual a 1.073.741.824 terabytes!

Essa ferramenta única e eficiente é multifacetada. Vamos nos concentrar nas partes relevantes para a criação de um servidor de armazenamento escalável e redundante. Isso nos leva ao RAID-Z, que, como indica o nome, é similar à tecnologia RAID (mais especificamente ao RAID-5).

Gravações de dados atômicas

O RAID-Z e o sistema de arquivos ZFS usam as gravações de dados atômicas. Os dados são totalmente gravados no disco ou não são gravados. Não há meio-termo. Isso quase sempre garante que as gravações não serão corrompidas por falhas relacionadas à conectividade de rede, falta de energia ou travamentos no sistema operacional.

Quem está familiarizado com RAID provavelmente vai se perguntar que dispositivo (ou controlador) manipula os discos e dados. No caso do RAID-Z, tudo é manipulado pelo próprio sistema de arquivos. No entanto, ao contrário de outras tecnologias semelhantes, ele faz a autocorreção de blocos corrompidos e os corrige durante a operação sem interação do usuário. O RAID-Z está constantemente verificando somas de verificação de dados quanto à integridade e é capaz de identificar blocos que precisam ser reconstruídos. Ele faz isso antes de os dados solicitados atingirem o usuário.

Visto que vários sistemas operacionais suportam RAID-Z e ZFS, o SO fica à escolha do leitor. A maioria dos exemplos e técnicas discutidos neste artigo deve aplicar-se e funcionar corretamente, independentemente do SO.


Design de armazenamento

De quanto espaço precisamos agora? De quanto espaço deveremos precisar em um ano? Qual é o número adequado de discos rígidos para essa configuração? Todas essas são boas perguntas a analisar antes de começar. Vou analisar cada uma dessas decisões de design para obter a preparação ideal.

Ambiente de simulação de teste

Para fins de demonstração, os exemplos são feitas com cinco dispositivos com dois gigabytes cada um. É altamente recomendável a configuração de um ambiente de simulação de testes em um ambiente virtual, se o leitor não estiver familiarizado com RAID-Z ou ZFS.

Sistema operacional

É altamente recomendável usar um sistema operacional que suporte nativamente o sistema de arquivos ZFS para aproveitar todos os recursos e o desempenho. Todos os exemplos a seguir usam o OpenIndiana como o sistema operacional (uma bifurcação mantido pela comunidade do Open Solaris), de modo que os comandos e a interação de terminal refletirá esse ambiente. (Consulte Recursos para obter mais informações sobre o OpenIndiana).

Mas quem se sente à vontade com Linux® e conhece os comandos compatíveis para obter os mesmos resultados alcançados por este artigo pode conferir se sua distribuição preferida suporta zfs-fuse, uma porta do sistema de arquivos ZFS.

Espaço de armazenamento

Visto que isso afetará diretamente o restante de suas escolhas, é vital planejar as necessidades de espaço de armazenamento no início da fase de design. O espaço também será afetado pelo tipo de configuração RAID-Z necessário (há mais informações sobre isso na seção Opções de RAID-Z ).

Não conte com o SO como parte do armazenamento total. Recomendo a instalação do SO em uma unidade de disco rígido separada, pois isso facilitará a reinstalação ou o reparo do sistema, sem afetar o compartilhamento.

Certifique-se de qualquer número cogitado corresponda às suas necessidades de RAID-Z (por exemplo, pelo menos cinco discos rígidos para esta demonstração). Embora as configurações de RAID-Z possam ter discos rígidos com tamanhos diferentes (por exemplo, cinco unidades de 2 terabytes e uma de um terabyte), o ZFS definirá os discos rígidos de forma efetiva a partir do menor do conjunto.

O desempenho ideal é obtido por unidades da mesma marca e com o mesmo tamanho.

Tamanho geral de armazenamento

Ao decidir sobre o armazenamento total, lembre-se de que o tamanho final vai variar dependendo da configuração RAID-Z. Por exemplo, dois terabytes em uma configuração de espelho exigem quatro terabytes no total.

Opções de RAID-Z

Existem inúmeras configurações disponíveis em uma configuração RAID-Z. Vou tratar de duas e, em seguida, apresentarei mais detalhes sobre a escolha final para este projeto.

RAID-Z é o menos tolerante a falhas. Ele oferece uma paridade de disco no conjunto. Se houver problemas com mais de uma unidade, isso é indício de que há um conjunto de armazenamentos corrompido e não recuperável.

RAID-Z2 usa dois discos para paridade. Dois discos fornecem segurança, mesmo com problemas como disco corrompido ou com mau funcionamento. Embora o RAID-Z2 exija duas unidades extras para a configuração correta, é mais tolerante a falhas do que uma configuração RAID-Z simples.

No mínimo, uma configuração RAID-Z2 deve ser configurada com cinco unidades no total (duas usadas para paridade), que deixa três unidades para serem contadas como de armazenamento geral. Por exemplo, unidades de dois terabytes resultariam em cerca de seis terabytes de armazenamento.

Unidades de disco rígido

Como mencionei antes, é melhor usar unidades da mesma marca e com o mesmo tamanho. É mais seguro usar um conjunto de unidades o mais semelhante possível.

O ideal é comprar pelo menos uma unidade de disco rígido extra ao desenvolver o servidor de armazenamento para reduzir os atrasos em potencial. Não é incomum receber uma unidade de disco rígido com problemas de fabricação.

Crescimento e escalabilidade

Unidades adicionais significam que a velocidade aumenta conforme os dados são espalhados pelo espaço. Portanto, é importante certificar-se de que o tamanho total corresponda ao espaço de armazenamento de destino. Há alguns controladores SATA que permitem a expansão da placa-mãe, mas podem criar um gargalo se não forem planejados com antecedência.

Existem três elementos-chave para armazenamento escalável e com possibilidade de crescimento:

  1. Número de unidades de disco rígido
  2. Capacidade geral de armazenamento
  3. Capacidade do servidor de discos rígidos

Recentemente, construí um servidor de armazenamento com dezesseis terabytes, que inclui a capacidade de crescer para o dobro de espaço. Isso permitiu crescimento inesperado e ajudou a controlar o orçamento.


Criando um conjunto

Inicialmente, decidimos instalar o sistema operacional em uma unidade separada, e temos mais cinco dispositivos disponíveis. Precisamos tomar nota das etiquetas de cada dispositivo para especificá-los mais tarde, quando criarmos o conjunto de armazenamentos.


Listagem 1. Localizar as etiquetas de dispositivos
        
root@raidz:~# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0. c7d0 DEFAULT cyl 4092 alt 2 hd 128 sec 32
/pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
1. c9t0d0 DEFAULT cyl 1022 alt 2 hd 128 sec 32
/pci@0,0/pci8086,2829@d/disk@0,0
2. c9t1d0 DEFAULT cyl 1022 alt 2 hd 128 sec 32
/pci@0,0/pci8086,2829@d/disk@1,0
3. c9t2d0 DEFAULT cyl 1022 alt 2 hd 128 sec 32
/pci@0,0/pci8086,2829@d/disk@2,0
4. c9t3d0 DEFAULT cyl 1022 alt 2 hd 128 sec 32
/pci@0,0/pci8086,2829@d/disk@3,0
5. c9t4d0 DEFAULT cyl 1022 alt 2 hd 128 sec 32
/pci@0,0/pci8086,2829@d/disk@4,0

Specify disk (enter its number): 
      

Damos o comando format para descobrir as etiquetas (ou IDs), mas não digitamos um número como seleção. Aperte Ctrl-C para sair do prompt.

Instalei o SO no dispositivo 0 e depois decidi acrescentar os outros cinco dispositivos, de modo que as seguintes etiquetas são interessantes para o conjunto de armazenamentos:

  • c9t0d0
  • c9t1d0
  • c9t2d0
  • c9t3d0
  • c9t4d0

Um recurso fascinante do ZFS é que ele cria rapidamente o próprio sistema de arquivos. Formatar ou reformatar discos rígidos costuma ser demorado. A criação do sistema de arquivos, nesse caso, demorou cerca de dois segundos. Em média, isso não deve levar mais que alguns segundos, independentemente do tamanho dos discos rígidos.


Listagem 2. Crie o conjunto de armazenamentos
        
zpool create tank raidz2 c9t0d0 c9t1d0 c9t2d0 c9t3d0 c9t4d0
      

Zpool create tank é um comando que diz a sistema de arquivos para criar e formatar algumas unidades, e definir a etiqueta desse conjunto de armazenamentos como tank. Especifiquei raidz2 como tipo de RAID-Z, mas é possível selecionar raidz ou raidz3. Os IDs para os cinco dispositivos que selecionei encontram-se na Listagem 1.

Demos mais um passo significativo: o conjunto de armazenamentos já está montado e pronto para usar!


Listagem 3. Verificando a criação do conjunto
        
root@raidz:~# df -h
Filesystem             size   used  avail capacity  Mounted on
swap                   642M    16K   642M     1%    /tmp
swap                   642M    44K   642M     1%    /var/run
rpool/export/home      7.8G    21K   4.1G     1%    /export/home
rpool                  7.8G    77K   4.1G     1%    /rpool
tank                   5.8G    34K   5.8G     1%    /tank
      

A saída de comando foi encurtada para abreviar, mas é possível ver que tank é exibido com quase seis gigabytes e já montado no nível-raiz do sistema de arquivos. Visto que escolhemos uma configuração de paridade com dois discos, o tamanho de armazenamento efetivo será próximo ao total dos outros três dispositivos. Agora que sabemos o conjunto de armazenamentos está montado e pronto, vamos verificar o status de funcionamento dos discos e do array geral.


Listagem 4. Status do conjunto de armazenamentos
        
root@raidz:~# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
tank        ONLINE       0     0     0
raidz2      ONLINE       0     0     0
c9t0d0      ONLINE       0     0     0
c9t1d0      ONLINE       0     0     0
c9t2d0      ONLINE       0     0     0
c9t3d0      ONLINE       0     0     0
c9t4d0      ONLINE       0     0     0

errors: No known data errors
      

Se desejar, poderá criar sistemas de arquivos aninhados dentro do conjunto de armazenamentos tank. Isso é muito útil se desejar definir as necessidades de armazenamento específicas que são isoladas e as permissões que estão ligadas ao compartilhamento em si. Se houver apenas um compartilhamento, isso pode ser complicado.


Listagem 5. Acrescentando compartilhamentos
        
root@raidz:/tank# zfs create tank/bar 
root@raidz:/tank# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT
rpool                      3.74G  4.07G  77.5K  /rpool
rpool/ROOT                 2.99G  4.07G    19K  legacy
rpool/swap                  512M  4.43G   137M  -
tank                        160K  5.83G  34.8K  /tank
tank/bar                   34.0K  5.83G  34.0K  /tank/bar
      

Criamos um compartilhamento chamado bar que aparece como um compartilhamento separado. Ótimo! No entanto, não deixe que os quase seis gigabytes exibidos o confundam. Não dobramos o espaço de compartilhamento total, pelo contrário, é útil saber quanto temos disponível a partir do conjunto de armazenamentos total.


Recuperação

Agora que o conjunto de armazenamentos está pronto, precisamos estar cientes de que os dados podem ficar corrompidos ou as unidades de disco rígido podem sofrer falhas. Felizmente, o ZFS e o RAID-Z permitem administração fácil dessas tarefas. Esta seção fornece uma simulação de uma unidade de disco rígido com defeito e uma falha total do sistema na qual o sistema operacional não consegue se recuperar.

Unidade de disco rígido danificada

Neste cenário, fiz de propósito que uma unidade de disco rígido ficasse inacessível para o servidor. Vejamos o que o ZFS informa quando isso acontece.


Listagem 6. Status de unidade danificada
        
root@raidz:~# zpool status tank
pool: tank
state: DEGRADED
status: One or more devices could not be opened.  
Sufficient replicas exist for the pool to continue functioning in 
a degraded state.
action: Attach the missing device and online it using 'zpool online'.
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
tank        DEGRADED     0     0     0
raidz2      DEGRADED     0     0     0
c9t0d0      ONLINE       0     0     0
c9t1d0      ONLINE       0     0     0
c9t2d0      ONLINE       0     0     0
c9t3d0      ONLINE       0     0     0
c9t4d0      UNAVAIL      0     0     0  cannot open

errors: No known data errors
      

Nosso conjunto de armazenamentos ficou degradado. O comando de status mostra o que está acontecendo no conjunto e qual unidade de disco rígido parece estar com defeito. Também é importante notar que o armazenamento está totalmente utilizável. Lembre-se de que selecionei raidz2 que permite até duas falhas simultâneas em unidades de discos rígidos. Para tornar esse cenário um pouco mais realista, copiei alguns arquivos de log para o armazenamento a fim de simular um estado degradado.

Após substituir a unidade de disco rígido com defeito, reiniciei o servidor para observar o resultado.


Listagem 7. Recuperação de um estado degradado
        
root@raidz:~# zpool status tank
pool: tank
state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace.'
scrub: resilver completed after 0h0m with 0 errors on Tue Nov  9 07:25:23 2010
config:

NAME        STATE     READ WRITE CKSUM
tank        ONLINE       0     0     0
raidz2      ONLINE       0     0     0
c9t0d0      ONLINE       0     0     0
c9t1d0      ONLINE       0     0     0
c9t2d0      ONLINE       0     0     0
c9t3d0      ONLINE       0     0     0
c9t4d0      ONLINE       0     0     2  31.5K resilvered

errors: No known data errors
      

Não só o compartilhamento se recuperou totalmente sem qualquer interação nossa, mas a saída forneceu detalhes sobre o que aconteceu, quais ações foram tomadas e as possíveis opções se não estivermos satisfeitos com os resultados (por exemplo, arquivos corrompidos).

A tag resilvered significa que o ZFS reconstruiu aquela quantidade de dados naquela unidade específica.

Sistema operacional irrecuperável

Nesta seção, replicarei um erro do sistema com incapacidade de boot. Visto que o sistema foi instalado em uma unidade de disco rígido separada, longe do armazenamento precioso, ele pode ser reinstalado na mesma unidade de disco rígido sem tocar nos dispositivos associados ao compartilhamento.

Como antes, usamos o comando zpool para diagnosticar o armazenamento e ver se podemos anexá-lo novamente.


Listagem 8. Status do conjunto após a reinstalação
        
root@reinstalled:~# zpool status
pool: rpool
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
rpool       ONLINE       0     0     0
c7d0s0      ONLINE       0     0     0

errors: No known data errors
      

Isso verifica se a instalação funcionou, mas ainda não vê o armazenamento.


Listagem 9. Localizando o conjunto
        
root@reinstalled:~# zpool import
pool: tank
id: 11026414298329032494
state: ONLINE
status: The pool was last accessed by another system.
action: The pool can be imported using its name or numeric identifier and
the '-f' flag.
see: http://www.sun.com/msg/ZFS-8000-EY
config:

tank        ONLINE
raidz2      ONLINE
c9t0d0      ONLINE
c9t1d0      ONLINE
c9t2d0      ONLINE
c9t3d0      ONLINE
c9t4d0      ONLINE
      

Ótimo! Esse é o conjunto. Está em perfeita forma e pronto para ser importado.


Listagem 10. Importação e verificação do conjunto
        
root@reinstalled:~# zpool import tank
cannot import 'tank': pool may be in use from other system, it was 
last accessed by raidz (hostid: 0x4013af) on Tue Nov  9 07:31:33 2010
use '-f' to import anyway
root@reinstalled:~# zpool import -f tank
root@reinstalled:~# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
tank        ONLINE       0     0     0
raidz2      ONLINE       0     0     0
c9t0d0      ONLINE       0     0     0
c9t1d0      ONLINE       0     0     0
c9t2d0      ONLINE       0     0     0
c9t3d0      ONLINE       0     0     0
c9t4d0      ONLINE       0     0     0

errors: No known data errors
root@reinstalled:~# df -h
Filesystem             size   used  avail capacity  Mounted on
/                      7.8G   2.8G   4.2G    41%    /
/devices                 0K     0K     0K     0%    /devices
swap                   800M   368K   800M     1%    /etc/svc/volatile
rpool/export           7.8G    21K   4.2G     1%    /export
rpool                  7.8G    79K   4.2G     1%    /rpool
tank                   5.8G   104K   5.8G     1%    /tank
      

Tentei importar o conjunto, mas a saída relata que ele talvez esteja em uso por outro sistema, nesse caso, aquele instalado anteriormente. Forcei a importação e verifiquei o status, que retornou limpo e sem erros. Por fim, verifiquei a montagem e a localização, e confirmei que está exatamente como antes.

Percorremos cenários comuns e recuperamos o armazenamento com pouco esforço.


Compartilhamento

O compartilhamento é muito simples. A próxima seção abrange o compartilhamento com NFS, conforme suportado em vários sistemas operacionais, incluindo diversas variedades de Linux e UNIX.

Visto que o ZFS tem suporte nativo a NFS, só será preciso conhecer o sistema de arquivos, o tipo de compartilhamento e a localização.


Listagem 11. Compartilhamento por meio de NFS
        
root@reinstalled:~# zfs set sharenfs=on tank 
      

Nesse caso, tank é o compartilhamento e é compartilhado instantaneamente pelo NFS na rede local. Além disso, é possível definir permissões em compartilhamentos específicos, mas vale a pena notar que, se compartilharmos a raiz do compartilhamento, compartilharemos automaticamente qualquer compartilhamento-filho presente, ou aqueles criados no futuro.


Figura 1. Conectando-se ao compartilhamento NFS no Mac OSX

Geralmente é demorado configurar compartilhamentos em servidores, mas a capacidade do próprio sistema de arquivo ativar o compartilhamento por meio de um protocolo específico, como o NFS, é útil.

O compartilhamento anterior não tinha proteção nem permissões definidas, então vejamos como modificá-lo para que ele permita as ações read and write em uma sub-rede específica na rede.


Listagem 12. Permissões baseadas na rede no compartilhamento ZFS
        
zfs set sharenfs=rw=@10.0.0.0/8 tank
      

Esse tipo de restrição de rede funciona sem configuração adicional. Assim que esse comando é enviado, o acesso é restrito e somente as sub-redes especificadas terão acesso de leitura e gravação ao compartilhamento.

As permissões podem ser ajustadas para usuários ou grupos específicos, e a implementação e a configuração podem variar de um sistema para outro.


Conclusão

O ZFS foi portado para funcionar em muitos sistemas operacionais e atualmente está disponível em muitas versões de UNIX e Linux.

Embora haja muito mais informações para discutir sobre o ZFS e RAID-Z, este artigo analisou os itens mais importantes para a criação de um compartilhamento, de decisões de design ao compartilhamento do armazenamento pela rede.

O RAID-Z não é o único tipo de array de disco disponível no ZFS. Os espelhos costumam ser mais rápidos e consumir menos memória, mas exigem um número igual de discos rígidos para serem usados. Nesse caso, com cinco discos rígidos prontos para o compartilhamento, não teríamos sido capazes de usar todos eles.

O ZFS é ideal ao tentar desenvolver armazenamento em um servidor que pode conter vários dispositivos e compartilhá-lo pela rede. No entanto, não teria sido possível aproveitar todas as vantagens se não houvesse pelo menos dois dispositivos separados. Com dispositivos mais, temos desempenho melhor.

Espero que você esteja pronto para explorar esse sistema de arquivos e o ache tão útil quanto eu acho.


Recursos

Aprender

Obter produtos e tecnologias

  • Versão de teste do software IBM: inove o seu próximo projeto de desenvolvimento de software livre usando software para teste, disponível para download ou em DVD.

Discutir

Sobre o autor

Photo of Alfredo Deza

Alfredo Deza é engenheiro de software, ex-atleta profissional e olímpico com forte formação em administração de sistema. Ele é apaixonado por software livre e é orador regular em grupos de tecnologia local e conferências internacionais, como a PyCon. Em seu tempo livre, ele tenta melhorar suas habilidades com a fotografia e gosta de contribuir para projetos de software livre.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=742805
ArticleTitle=Armazenamento grande, rápido, estável e dentro do orçamento
publish-date=07202011
author1-email=alfredodeza@gmail.com
author1-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).