sexta-feira, 17 de outubro de 2014

Resetando ID do Teamview no Linux


Nova ID do Teamview.

O teamviewer usa as detecções de seus hardwares para gerar o ID, então se voce mudar um deles mudara o seu ID, no Linux podemos por exemplo fazer uma simulação de mudança de hardware usando o Gparted.

De boot com um pendrive usando Linux que tenha o Gparted e acesse o seu HD mudando o UUID , isto deve resolver, lembre-se de fazer backup antes de quaisquer alterações em seus discos por sua própria segurança e risco.

Ah, Não se pode esquecer de editar o Grub la em /boot/grub/grub.cfg

Pegue o novo UUID e coloque no lugar do anterior....ou seu sistema não ira iniciar dando erro de init...

Depois que der o boot certinho novamente......force a desinstalação do teamviewer e apague suas pastas como rm -rf.

sudo apt-get purge -autoremove teamviewer

sudo rm -rf /home/usuario/.config/teamviewer9

depois reinstale-o

Pronto, seu teamviewer com novo ID.

sábado, 11 de outubro de 2014

O básico sobre RAID com mdadm e raidtools


Introdução, softwares e o ambiente utilizado

Trago neste artigo, uma abordagem simples sobre conceitos e a configuração de RAID por software com duas ferramentas muito utilizadas para tal propósito, o raidtools e o mdadm.

Mas antes de entrarmos afundo nas ferramentas, o que é RAID?!

- RAID significa: Redudant Array of Independent Disk

Algo como "Matriz redundante de discos independentes", e a ideia básica de RAID é combinar diversos discos em um volume lógico com o intuito de disponibilizar maior confiabilidade, redundância de dados e/ou ganho de desempenho, dividindo as operações realizadas nos discos (leitura e escrita).

O que define o modo ao qual o RAID em si irá trabalhar (desempenho e/ou redundância) é o "nível" de RAID, onde destes existem vários (0,1,5,10..), cada um com uma utilização específica, podendo inclusive ser combinados entre si.

Abaixo, abordarei dois níveis básicos e muito conhecidos, o RAID-0 e o RAID-1.

RAID 0

É utilizado exclusivamente para o aumento de desempenho usando dois discos iguais para reduzir o tempo de escrita no disco. O grande problema deste tipo de RAID é a falta de confiabilidade nos dados, pois se um dos discos falhar todos os dados armazenados serão perdidos devido aos dados estarem "separados" entre os membros do array.

RAID 1

Este tipo de RAID é utilizado para a redundância dos dados, onde uma cópia dos dados é feita entre os membros que estão no array.

São utilizados dois discos, sendo que o espaço disponível será o do menor disco, porém, o desempenho é um pouco afetado devido às operações serem gravadas mais de uma vez.
Outros exemplos de RAID: http://pt.wikipedia.org/wiki/RAID

Quanto aos softwares utilizados:
  • raidtools → Esta é uma ferramenta que tem se tornado obsoleta. Eu, particularmente, prefiro o mdadm, mas de qualquer forma é uma ferramenta bacana, antiga, porém ainda usada. Segundo as "más" línguas, o software em questão é instável e contém alguns bugs, mas gosto é gosto. :)
  • mdadm → Uma ferramenta muito poderosa, seu suporte foi incorporado ao kernel 2.6, onde módulos referentes ao RAID e também sobre o LVM (que por sinal será o próximo artigo), melhoraram e muito. A ferramenta em questão é de fácil configuração, estável e é muito fácil encontrar sua documentação na Internet. O nome md significa "multiple Device". E adm, é óbvio que significa "administrar" (ou seja, administrar múltiplos dispositivos). Ele é um software free e disponibilizado sobre a licença GPL.

O ambiente: Dois discos rígidos de 3GB, utilizando uma máquina virtual com o Debian instalado.


RAID: Particionando os discos com a ferramenta fdisk

A primeira coisa a fazer é criar e configurar o tipo de partições dos discos que serão utilizados no RAID para o tipo fd (RAID Linux autodetect), onde nos exemplos seguintes, iremos configurar um RAID nível 1.

Podemos utilizar o fdisk para o particionamento e para alterar o tipo da partição, exemplo:

Obs.: Os discos que irei utilizar estão representados no meu servidor como /dev/sdd e /dev/sdc.

# fdisk -l /dev/sd[cd]
Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Conclusão: O disco /dev/sdc não contém uma tabela de partições válida:
Disk /dev/sdd: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Conclusão: O disco /dev/sdd não contém uma tabela de partições válida.

Como pode ser verificado, os discos em questão não contêm nenhuma tabela de partição, ainda. Eu irei criar uma única partição que irá englobar todo o HD, vamos lá:

# fdisk /dev/sdc

Comando (m para ajuda): n  # Nova partição
Comando - ação
   e   estendida
   p   partição primária (1-4)
p  # partição primária

Número da partição (1-4): 1   #Primeira partição (/dev/sdc1)
Primeiro cilindro (1-391, default 1):  # Valor do primeiro cilindro
Using default value 1
Last cilindro, +cilindros or +size{K,M,G} (1-391, default 391): +3000M # cilindro final, ou # tamanho, neste caso aproximadamente 3 GB.

Comando (m para ajuda): p  #Imprime a tabela de partições
Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd976698f

Dispositivo Boot      Start       End      Blocks   Id  System
/dev/sdc1               1         383     3076416   83  Linux

Aqui, eu altero o tipo de partição para fd:

Comando (m para ajuda): t  #Tipo de partição
Selected partition 1
Código hexadecimal (digite L para listar os códigos): fd #Tipo de partição selecionada

O tipo da partição 1 foi alterado para fd (Detecção automática de RAID Linux)

Comando (m para ajuda): w  #Grava a tabela de partições
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.
Sincronizando discos.

O mesmo deve ser feito com o segundo disco e após o correto particionamento dos discos, vamos à configuração. ;)


Configurando um RAID 1 com o raidtools

Pacotes necessários

Tenho que admitir que, devido ao raidtools ser um software deveras antigo, tive um pouco de dificuldade para encontrá-lo, até por que ele não está presente nos repositórios oficiais, pelo menos não da distribuição que usei.

Encontrei para o Debian neste mirror:

Depois de feito o download, instale o pacote através do dpkg:

# dpkg -i raidtools_0.42-33_i386.deb

Caso ocorram dependências, use a seguinte opção do apt-get, ou instale as dependências manualmente:

# apt-get install -f

E depois, rode o dpkg novamente.

Após instalar o raidtools e alterar o tipo de partição em ambos os discos, iremos partir para o arquivo de configuração do nosso dispositivo de RAID, o /etc/raidtab:

# vi /etc/raidtab

# Informa qual o nome do dispositivo de RAID.
raiddev /dev/md0

# O nivel de RAID.
raid-level 1

# A quantidade de discos que farão parte do RAID.
nr-raid-disks 2

# Tamanho dos blocos do Array(KB).
chunk-size 4

# Cria um superbloco no final de cada um dos discos RAID (valores 0 ou 1)
persistent-superblock 1

# Os discos a serem utilizados no array.
device /dev/sdc1
raid-disk 0

device /dev/sdd1
raid-disk 1

Agora precisamos somente criar o dispositivo de RAID, e para isso utilizamos o comando mkraid:

# mkraid /dev/md0

Ele deve retornar algo como:
mkraid version 0.36.4
parsing configuration file
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/sdc1, 3076416kB, raid superblock at 3076352kB
disk 1: /dev/sdd1, 3076416kB, raid superblock at 3076352kB
initializing raid set
clearing device /dev/sdc1
clearing device /dev/sdd1
(98% done; ~0:00 left 1:30 elapsed [33821.2 KB/sec])
writing raid superblock
MD ID:                   a92b4efc
Conforms to MD version:  0.36.4
Raid set ID:             48eeb121
Creation time:           Sun Jan 20 03:35:16 2013
Update time:             Sun Jan 20 03:36:48 2013
State:                   1 (clean)
Raid level:              1
Individual disk size:    3004MB (3076352kB)
Total number of disks:   2
Number of raid disks:    2
Number of active disks:  2
Number of working disks: 2
Number of failed disks:  0
Number of spare disks:   0

Disk 0: raid_disk 0, state: 6 (operational, active, sync)
Disk 1: raid_disk 1, state: 6 (operational, active, sync)
mkraid: completed


Obs.: Podemos verificar a sincronização dos HD's no arquivo /proc/mdstat.

Agora basta formatar:

# mkfs -t ext3 /dev/md0

E montar:

# mount /dev/md0 /backup

Pronto! :)


Configurando um RAID 1 com o mdadm

O ambiente utilizado foi o mesmo do exemplo anterior, neste caso somente restaurei o snapshoot da VM.

O mdadm, provavelmente, encontra-se disponível nos repositórios da sua distribuição. Para procurá-lo em distribuições derivadas do Debian usando o apt, use o seguinte comando:

# apt-cache search mdadm

Ele deve retornar:
mdadm - tool to administer Linux MD arrays (software RAID)

Agora, basta instalar:

# apt-get install mdadm

Em Red Hat e derivados:

# yum list mdadm
# yum install mdadm


Devido ao mdadm trabalhar com superblocos persistentes por padrão, podemos utiliza-lo na criação de dispositivos RAID de duas maneiras, sendo uma delas usando o arquivo de configuração /etc/mdadm/mdadm.conf ou diretamente através da ferramenta mdadm (esta será a forma utilizada no artigo).

O primeiro passo a seguir é idêntico ao utilizar o raidtools, é necessário alterar o tipo das partições para fd. Para quem não sabe realizar o procedimento, na parte onde abordei o raidtools, o procedimento é feito passo a passo, basta dar uma olhadinha. :)

Após as alterações realizadas no disco, vamos começar a criar o nosso dispositivo de RAID (RAID 1) utilizando o comando mdadm, irei explicando seus parâmetros a cada comando:

# mdadm -C -v /dev/md0 -l 1 -n 2 /dev/sdc1 /dev/sdd1
mdadm: size set to 2056192K
mdadm: array /dev/md0 started.

Onde:
  • -C → Cria o Dispositivo de RAID;
  • -l → O Nível(level) do RAID;
  • -n → O número de dispositivos que compõem o RAID;
  • /dev/sd[cd]1 → Os discos que fazem parte do meu novo dispositivo de RAID, o /dev/md0 (lembrando que "md" vem de dispositivos múltiplos).

Finalizamos a criação do array, agora vamos ver o andamento da sincronização dos 2 discos:

# cat /proc/mdstat
ou
# watch -n 1 cat /proc/mdstat 

Como pode ser observado, o próprio mdadm já informa que o dispositivo de RAID foi inicializado na saída do comando.

E uma das maneiras de verificar se o RAID está funcionado é utilizando o arquivo /proc/mdstat, onde o sincronismo entre os discos também pode ser verificado.

Outra maneira de verificar o funcionamento do RAID é utilizando a opção "-D" (ou: --detail [detalhes]) do mdadm, onde a saída é bem completa.

Agora basta fazer o mesmo procedimento básico, aplicar um sistema de arquivos ao nosso sistema de RAID (Ex.: mkfs -t ext3 /dev/md0), montar em um ponto de montagem qualquer, de acordo com as suas necessidades e ser feliz. :)

* Lembrando que o mdadm fornece muitas opções bacanas para o RAID, vamos à mais algumas.

Uma coisa muito interessante é testar a eficiência do RAID que estou configurando, e para isso o mdadm possibilita "falhar" um dos discos. Mas calma, ele não vai destruir o seu HD.

O que o mdadm faz é "marcar" o seu disco como defeituoso, assim o mdadm passa a utilizar os outros discos do array para o seu correto funcionamento (claro, dependendo das configurações que você fez e o nível do RAID).

Antes de falhar um dos meus discos, vamos ver como que está o "status" do meu device de raid:

# mdadm -D /dev/md0
/dev/md0:
        Version : 00.90
  Creation Time : Mon Jan 21 02:39:08 2013
     Raid Level : raid1
     Array Size : 2056192 (2008.34 MiB 2105.54 MB)
  Used Dev Size : 2056192 (2008.34 MiB 2105.54 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Jan 21 02:39:50 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 48c32905:e7358574:b05e291b:984b098e (local to host daileon)
         Events : 0.18

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1

Como pode ser observado, está tudo OK, agora falhando um dos discos:

# mdadm --manage /dev/md0 --set-faulty /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md0

Agora meu disco apresentou uma "falha" no dispositivo /dev/sdd1:

# mdadm -D /dev/md0
/dev/md0:
        Version : 00.90
  Creation Time : Mon Jan 21 02:39:08 2013
     Raid Level : raid1
     Array Size : 2056192 (2008.34 MiB 2105.54 MB)
  Used Dev Size : 2056192 (2008.34 MiB 2105.54 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Jan 21 02:52:53 2013
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           UUID : 48c32905:e7358574:b05e291b:984b098e (local to host daileon)
         Events : 0.19

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       0        0        1      removed

       2       8       49        -      faulty spare   /dev/sdd1

Neste caso, como existem somente dois HDs e o RAID é de nível 1, os dados não serão perdidos, pois as cópias dos dados estão salvas no outro disco, então, bastaria eu remover este HD "defeituoso", espetar um novo, particionar, alteração o tipo da partição e adicioná-lo no meu RAID.

Como por exemplo:

# mdadm --manage /dev/md0 --add /dev/sde1

Assim eu poderia verificar o andamento da sincronização do novo disco através do arquivo /proc/mdstat.


É isso pessoal!

Até a próxima...

Referências

LVM, NTFS e Kpartx: Acessando partições NTFS em discos virtuais sob LVM.


Este post apresenta como realizar acesso a segmentos/partições alocadas em discos virtuais (criados em volumes LVM).
Suponha que um servidor base de virtualização possua instâncias de máquinas virtuais através do Hypervisor Linux/KVM, e que estas instâncias utilizam discos virtuais alocados sob volumes lógicos (LVM).
Vou considerar a utilização da distribuição CentOS 6 – 64 bits, entretanto, com algumas adaptações dos nomes dos pacotes que necessitarão ser instalados, a dica servirá para praticamente qualquer uma das principais distribuições da atualidade.
Para obter a segmentos/partições criadas sob um volume lógico LVM necessitaremos da ferramenta Kpartx, que permite que estes segmentos de dados alocados sob dispositivos de bloco (device blocks) possam ser mapeados e assim acessados assim como uma partição tradicional.
Vamos considerar que em nosso ambiente exista um grupo de volumes LVM chamados guests, e que existe alocado nele um volume lógico chamado vm01Disk01.
Para instalar o pacote kpartx informe:
aptitude install kpartx
Para verificar os segmentos/partições em nosso volume lógico:
fdisk -l /dev/guests/vm01Disk01
Supondo a existência de dois segmentos/partições seriam exibidas as informações:
/dev/guests/vm01Disk01p1/dev/guests/vm01Disk01p2
Deste modo, basta adicionar o mapeamento para ambos segmentos/partições:
kpartx -a /dev/guests/vm01Disk01
Em seguida verifique os mapeamentos criados:
kpartx -l /dev/guests/vm01Disk01
Serão exibidas as referências aos nomes:
guests-vm01Disk01p1
guests-vm01Disk01p2
Deste modo para montar ambas as partições podemos referenciar os nomes acima através de:
  • /dev/mapper/guests-vm01Disk01p1
  • /dev/mapper/guests-vm01Disk01p2
Para realizar o acesso, throubleshoot em problemas diverso no sistema de arquivos devemos instalar os seguintes pacotes:
  • fuse
  • ntfs-3g
  • ntfsprogs
Sendo que, os dois últimos poderão ser instalados através do repositório EPEL, portanto, para instalar caso necessário os arquivos de configuração do repositório EPEL, basta:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Em seguida instale o fuse e os pacotes ntfs-3g e ntfsprogs:
aptitude install fuse ntfs-3g ntfsprogs
Para montar o primeiro segmento/partição NTFS:
mount /dev/mapper/guests-vm01Disk01p1 /mnt
Caso necessite realizar a checagem do sistema de arquivos utilize a ferramenta ntfsck:
umount /mntntfsck /dev/mapper/guests-vm01Disk01p1
Para resolver problemas de consistência do sistema de arquivos a ferramenta ntfsfix poderá ajudar em muitas situações:
ntfsfix /dev/mapper/guests-vm01Disk01p1
Para remover o mapeamento dos segmentos/partições criados pelo kpartx informe:
kpartx -d /dev/guests/vm01Disk01
É interessante estudar outras ferramentas do projetos ntfs-3g, por exemplo:
  • ntfsclone
  • ntfsinfo
  • ntfsundelete
  • ntfsresize
Antigamente administradores tinham como uma de suas preocupações, o uso de ferramentas para verificar problemas em sistemas de arquivos alocados em partições tradicionais, entretanto, hoje com a concentração cada vez maior de servidores virtualizados torna-se necessário o estudo e conhecimento de ferramentas que permitam o troubleshooting de sistemas de arquivos alocados em discos virtuais.
Em alguns trabalhos de perícia forense que já realizei, o uso de ferramentas como dd para clonagem, kpartx para mapeamento de segmentos/partições sob dispositivos de bloco e o conjunto de ferramentas do pacote ntfsprogs permite realizar diversas tarefas com imagens de possíveis sistemas comprometidos e/ou utilizados para atividades ilícitas.


Autor: Waldemar Dibiazi Junior