Vou apresentar uma pergunta postada em stackoverflow há uma semana, desculpe se alguém encontrou esse spam, mas ainda preciso de ajuda para resolver esse problema. Eu pensei que poderia ser útil também para os outros.
Primeiro de tudo, eu tenho um servidor baseado no Centos7 que roda em um hardware não compatível como política corporativa, eu só preciso suportar a tolerância a falhas.
Estou colidindo com uma coisa aparentemente simples.
Eu preciso colocar meu servidor atrás do controlador RAID, isso significa que eu preciso mover minha instalação do CentOS 7 em um dispositivo cabeado nele (um controlador 3ware 9650se-2lp, o computador é uma classe executiva HP, DC7600 Convertible Minitower).
Meus problemas começam com sistemas de arquivos adotados, é um XFS que não pode ser reduzido pelo design. Eu preciso reduzi-lo porque o mesmo disco visto pelo controlador parece menor porque o controlador armazena o firmware nele.
Meu sistema é uma instalação padrão do CentOS 7 com volumes LVM. Após uma semana de documentação sobre o que e como o mapeador de dispositivos funciona, acabei tendo um grupo de volumes chamado "centos" e os volumes lógicos chamados "root", "home" e "swap". Fácil.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 148,56g 64,00m
# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 148,56g 64,00m
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 96,50g
root centos -wi-ao---- 50,00g
swap centos -wi-ao---- 2,00g
Agora eu preciso reduzir todo o meu layout e eu vou conseguir isso reduzindo o lvm "home" do sda2. Eu planejei ter uma nova instalação para 130G enquanto agora é 148,56G, então eu pensei em reduzir a "casa" de 18,56G.
Primeiro de tudo fdisk para o novo disco para criar os novos dois volumes, sdb1 e sdb2, Depois disso eu comecei a lidar com os volumes lógicos.
# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
# vgextend centos /dev/sdb2
Volume group "centos" successfully extended
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 148,56g 64,00m
/dev/sdb2 centos lvm2 a-- 130,00g 130,00g
# lvcreate --size 77,50G --name home1 centos
Logical volume "home1" created.
# mkfs.xfs /dev/centos/home1
meta-data=/dev/centos/home1 isize=512 agcount=4, agsize=5079040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=20316160, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=9920, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# lvcreate --size 50,00G --name root1 centos
# mkfs.xfs /dev/centos/root1
# lvcreate --size 2G --name swap1 centos
# mkswap /dev/centos/swap1
Depois disso, do Clonezilla do liveecd eu clonei o sda1 em sdb1 sem reescrever a tabela de partições e da linha de comando eu montei os volumes lógicos para copiar os dados. Eu não posso usar o dd simples que eu sei que é o melhor, porque dd irá copiar também o espaço em branco e a nova casa será reduzida.
# mkdir /mnt/home
# mkdir /mnt/home1
# mount -o ro /dev/centos/home /mnt/home
# mount /dev/centos/home1 /mnt/home1
# cd /mnt/home
# find . -mount -print | cpio -pdm /mnt/home1
5885177 blocks
# cd /
# umount home
# umount home1
# mkdir /mnt/root
# mkdir /mnt/root1
# mount -o ro /dev/centos/root /mnt/root
# mount /dev/centos/root1 /mnt/root1
# cd /mnt/root
# find . -mount -print | cpio -pdm /home/root1
43415372 blocks
Feito isso, eu desliguei o computador, desativei o disco sda e movi o sdb na primeira porta sata da minha placa-mãe. Agora sda está a salvo das minhas mãos de pudim. O melhor ainda está por vir.
Eu iniciei novamente a partir do Clonezilla sem copiar nada, e eu limpei e renomei meus volumes lógicos.
# vgreduce --removemissing --force centos
WARNING: Device for PV 0tJwU5-KA41-LEJa-hhFG-SIzx-RGq3-fJNzkm not found or rejected by a filter.
WARNING: Removing partial LV centos/swap.
Logical volume "swap" successfully removed
WARNING: Removing partial LV centos/home.
Logical volume "home" successfully removed
WARNING: Removing partial LV centos/root.
Logical volume "root" successfully removed
Wrote out consistent volume group centos.
# lvrename /dev/centos/root1 /dev/centos/root
Renamed "root1" to "root" in volume group "centos"
# lvrename /dev/centos/home1 /dev/centos/home
Renamed "home1" to "home" in volume group "centos"
# lvrename /dev/centos/swap1 /dev/centos/swap
Renamed "swap1" to "swap" in volume group "centos
Finalmente eu instalei o grub2:
# mount /dev/centos/root /mnt
# mount /dev/sda1 /mnt/boot
# mount --bind /dev /mnt/dev &&
mount --bind /dev/pts /mnt/dev/pts &&
mount --bind /proc /mnt/proc &&
mount --bind /sys /mnt/sys
# chroot /mnt
# grub2-install /dev/sda
# grub2-install --recheck /dev/sda
# grub2-mkconfig -o /boot/grub2/grub.cfg
Eu consertei um aviso no grub2-mkconfig que substitui o update-grub do grub1, habilitando um novo serviço que eu nunca usei antes do lvm2-lvmetad
# grub2-mkconfig -o /boot/grub2/grub.cfg
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
Found linux image: /boot/vmlinuz-3.10.0-514.21.2.el7.centos.plus.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.21.2.el7.centos.plus.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-6f6078afdaf94da59deb321bd428dfdf
Found initrd image: /boot/initramfs-0-rescue-6f6078afdaf94da59deb321bd428dfdf.img
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
done
# systemctl enable lvm2-lvmetad.service
# systemctl enable lvm2-lvmetad.socket
# systemctl start lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.socket
É claro que o início do serviço não funcionou no livecd, eu sei disso.
Uma vez reinicializado meu sistema, tenho vários problemas com o SELinux. Ele fica me devolvendo uma vez que o login foi feito, tanto do remoto quanto do local, ssh ou não. Claro que a partir do livecd é fácil configurar o SELinux como permissivo, mas este é um servidor de produção e hospeda serviços para desenvolvimento como mediawiki e git. Eu não posso começar a usar a unidade clonada, colocar novos dados em um sistema quase bugado, não entendo o que estou errado. Eu tentei reinstalar os pacotes relacionados ao SELinux, mas puramente aleatórios não descobri o que poderia estar errado. Estou faltando alguma coisa?
Obrigado pelas respostas,
respeito.