Como diminuir o tamanho de discos virtuais VMDK –; parte 2
Se ainda não leu a parte 1, pode acessar ela por aqui.
Continuando o tutorial, iremos agora iniciar a clonagem dos discos. A primeira parte da clonagem é de um disco que não contem o sistema operacional. Se quiser ir direto para a clonagem com o sistema inicializável, pode pular esta parte e ir direto para a parte 3.
Hora de iniciar a clonagem. Iniciamos a máquina virtual no modo terminal (para caso tenha ambiente gráfico) e logamos como root ou nos tornamos root com o comando su –; para que seja possível executar as instruções de particionamento, formatação e clonagem, respectivamente sem necessidade de sudo a todo comando.
No terminal digite fdisk -l para que sejam listados os discos e as partições:
[root@Address21 ~]# fdisk -l Disk /dev/sda: 42.9 GB, 42949672960 bytes 255 heads, 63 sectors/track, 5221 cilindros Unidades = cilindros de 16065 * 512 = 8225280 bytes Tamanho do setor (logical/physical): 512 bytes / 512 Tamanho de E/S de bytes (minimum/optimal): 512 bytes / 512 bytes Identificador de disco: 0x0004f229 ...(detalhes das partições do dispositivo /dev/sda)... Disk /dev/sdb: 221.8 GB, 221807247360 bytes 255 heads, 63 sectors/track, 26966 cilindros Unidades = cilindros de 16065 * 512 = 8225280 bytes Tamanho do setor (logical/physical): 512 bytes / 512 Tamanho de E/S de bytes (minimum/optimal): 512 bytes / 512 bytes Identificador de disco: 0x00000000 Disk /dev/sdc: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cilindros Unidades = cilindros de 16065 * 512 = 8225280 bytes Tamanho do setor (logical/physical): 512 bytes / 512 Tamanho de E/S de bytes (minimum/optimal): 512 bytes / 512 bytes Identificador de disco: 0x00000000
Repare que nossos discos aparecem como sendo /dev/sda, /dev/sdb, /dev/sdc (marquei em vermelho para ficar mais visível) e ao lado o seu tamanho. Essa ordem a, b, c é a ordem de conexão na porta IDE. Como nosso disco foi incluído em Secundário Slave e o Primário Slave está o CDROM (vide imagem na parte 1) ele é o terceiro disco do sistema, ou seja, o /dev/sdc.
Iremos a partir de agora particionar e formatar a unidade. Digite o comando fdisk /dev/sdc.
[root@Address21 ~]# fdisk /dev/sdc O dispositivo não contém nem uma tabela de partições DOS válida nem um rótulo de disco Sun, OSF ou SGI Construindo um novo disklabel DOS com identificador de disco 0x80a19bff. Changes will remain in memory only, until you decide to write them. After that, é claro, the previous content won't be recoverable. Aviso: a opção inválida 0x0000 da tabela de partições 4 será corrigida por gravação (w) WARNING: DOS-compatible mode is deprecated. É altamente recomendável desligar o modo (command 'c') e alterar unidades de exibição para setores (command 'u'). Comando (m para ajuda): n Comando - ação e estendida p partição primária (1-4) p Número da partição (1-4): 1 Primeiro cilindro (1-26108, default 1): 1 Last cilindro, +cilindros or +size{K,M,G} (1-26108, default 26108): 26108
Dentro do fdisk, digite n, escolha partição primária com p, escolha 1 como número da partição, inicie no cilindo 1 e termine no último cilindro (basta teclar ENTER).
Depois digite p para que seja exibida a tabela criada que deve ficar mais ou menos assim
Comando (m para ajuda): p Disk /dev/sdc: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cilindros Unidades = cilindros de 16065 * 512 = 8225280 bytes Tamanho do setor (logical/physical): 512 bytes / 512 Tamanho de E/S de bytes (minimum/optimal): 512 bytes / 512 bytes Identificador de disco: 0x80a19bff Dispositivo Boot Start End Blocos Id System /dev/sdc1 1 26108 209712478+ 83 Linux
Podemos ver que foi criada a partição /dev/sdc1.
Agora digite w para gravar as alterações e sair.
Comando (m para ajuda): w
A tabela de partições foi alterada!
Chamando ioctl() para reler tabela de partições.
Sincronizando discos.
[root@Address21 ~]#
O próximo passo é formatar a partição criada no passo anterior com um sistema de arquivos. No caso utilizarei o ext4 que é o mais rápido para trabalhar com o Banco de Dados em Linux. Para isso use o comando mkfs.ext4 /dev/sdc1 ou mke2fs -T ext4 /dev/sdc1
[root@Address21 ~]# mkfs.ext4 /dev/sdc1 mke2fs 1.41.12 (17-May-2010) ...(diversas informações da partição e do sistema de arquivos)... Writing inode tables: feito Criando diário (32768 blocks): feito Escrevendo superblocos e informações contábeis do sistema de arquivos: feito Este sistema de arquivos será verificado automaticamente a cada 21 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Pronto, a partição está formatada. Agora é hora de montá-la e iniciar a clonagem.
para montar uma unidade, devemos apontá-la para um diretório vazio para facilitar a cópia dos arquivos. Use o comando mkdir para criar um diretório qualquer e em seguida utilize o comando mount para montá-lo nesse diretório.
[root@Address21 ~]# mkdir /z [root@Address21 ~]# mount /dev/sdc1 /z
mount /dev/sdc1 /z.
[root@Address21 ~]# montar /dev/mapper/VolGroup-lv_root em / type ext4 (rw)
proc on /proc type proc (rw)
...(outros pontos de montagem)...
/dev/sdb on /database type ext4 (rw)
/dev/sdc1 on /z type ext4 (rw)
[root@Address21 ~]#
Nosso ponto está exibido acima em vermelho.
Hora de clonar o disco. Vou usar o utilitário rsync para clonar dados de um local para outro. No meu caso, os dados estão no diretório /database (visível nos pontos de montagem exibidos no comando mount acima) e ele será o source enquanto o novo disco foi montado em /z que será o dest
[root@Address21 ~]# rsync -avHX /database/ /z/
Repare que ambos os caminhos terminam em /. Isso é importante para evitar problemas com o caminho.
Se quiser detalhes sobre cada argumento utilizado basta dar um rsync –;help.
O processo é relativamente rápido como uma cópia. Quanto maior a quantidade e o tamanho dos dados, mais tempo vai levar, mas será exibido o progresso.
Ao final já teremos o disco completamente clonado. Falta agora modificar o fstab para que ele monte o novo disco no lugar do antigo.
Primeiro precisamos saber qual o UUID deste disco e para isso utilizamos o blkid
[root@Address21 ~]# blkid (...) /dev/mapper/VolGroup-lv_swap: UUID="b7e866d5-831b-4ee8-b65d-be2589214a35" TYPE="swap" /dev/sdc1: UUID="ca034463-5421-4e17-ade2-c7fe2c07a461" TYPE="ext4"
Agora copie o UUID da partição (/dev/sdc1) e usando um editor abra o arquivo /etc/fstab e substitua o UUID do ponto de montagem que clonou.
Usando o meu como exemplo:
tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 #UUID="d1744a2b-8495-44cd-8196-5d905e3b1926" /database ext4 defaults 0 0 UUID="ca034463-5421-4e17-ade2-c7fe2c07a461" /database ext4 defaults 0 0
Desligue o sistema e veja como ficaram os tamanhos dos discos.
Usando as informações da primeira parte deste tutorial, podemos comparar e perceber que o disco criado ficou com o tamanho real bem menor mesmo possuindo a mesma quantidade de informações.
Quando a VM inicializar já estará utilizando o novo disco montado no antigo diretório. Após fazer testes e se certificar que está tudo OK. podemos excluir o disco de tamanho grande dela sem se preocupar em configurar nada no S.O. pois a montagem foi feito a partir do UUID e não de seu caminho como dispositivo.