Em um servidor virtual (Debian GNU / Linux 8 amd64) eu tenho os seguintes discos e sistemas de arquivos:
# pvscan
PV /dev/vda1 VG vg0 lvm2 [100.00 GiB / 0 free]
PV /dev/vdb1 VG vg0 lvm2 [46.56 GiB / 0 free]
PV /dev/vda2 VG vg0 lvm2 [100.00 GiB / 0 free]
PV /dev/vdc1 VG vg0 lvm2 [60.00 GiB / 60.00 GiB free]
Total: 4 [306.55 GiB] / in use: 4 [306.55 GiB] / in no VG: 0 [0 ]
# lvdisplay
--- Logical volume ---
LV Path /dev/vg0/root
LV Name root
VG Name vg0
LV UUID qpeei3-v1nW-pYVR-lK7Y-4wwy-Y4Y4-c9yQEl
LV Write Access read/write
LV Creation host, time nomos, 2015-03-17 16:34:05 +0100
LV Status available
# open 1
LV Size 246.56 GiB
Current LE 63119
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/dm-0 243G 135G 98G 59% /
[... no other on-disk filesystems]
O sistema de arquivos raiz é ext4.
Como /dev/vda
tem espaço suficiente para todos os meus dados, desejo remover /dev/vdb
e /dev/vdc
. Este último existe como espaço temporário apenas para dar espaço às manobras necessárias. Os dados em /dev/vdb1
devem ser movidos para /dev/vda*
antes de remover /dev/vdb1
. No entanto, o sistema de arquivos raiz atualmente abrange todas as três partições /dev/vda1
, /dev/vda2
e /dev/vdb1
.
O problema é que posso desligar a máquina virtual apenas por períodos de tempo muito curtos (alguns segundos, apenas reinicializações), por isso não posso reduzir o tamanho do sistema de arquivos raiz, porque isso requer desmontá-lo e mantê-lo o servidor para baixo por um longo tempo. Eu posso adicionar outros discos, até 500 GB, se necessário.
Eu executei pvmove para mover dados da unidade:
# pvmove /dev/vdb1
Detected pvmove in progress for /dev/vdb1
/dev/vdb1: Moved: 4.0%
e esperou até atingir 100%. No entanto, o pvmove moveu os dados para /dev/vdc1
.
# pvs
PV VG Fmt Attr PSize PFree
/dev/vda1 vg0 lvm2 a-- 100.00g 0
/dev/vda2 vg0 lvm2 a-- 100.00g 0
/dev/vdb1 vg0 lvm2 a-- 46.56g 46.56g
/dev/vdc1 vg0 lvm2 a-- 60.00g 13.43g
E agora? Eu provavelmente poderia remover /dev/vdb1
, mas estou preso com meus dados em /dev/vdc1
. O que eu realmente preciso é mover os inodes alocados do sistema de arquivos raiz para fora do /dev/vdb1
para o espaço livre do sistema de arquivos em /dev/vda*
. Então eu sonho que posso mover /dev/vdb1
para fora do caminho porque o sistema de arquivos mudou para /dev/vda*
. Percebo que não funciona dessa maneira automaticamente, mas não consigo imaginar uma estratégia de migração que me permita fazer isso manualmente, sem encolher o sistema de arquivos raiz.
Você pode ajudar, por favor?