Eu tenho um Debian Wheezy
sistema com um par de 500 GB HDDs em RAID-1 ( mdadm
espelho), no topo do qual se senta LVM
volumes lógicos com 5 partições ( boot
, root
, usr
, var
e tmp
), o tamanho total de 47.15 GiB. 418,38 GiB no volume físico são gratuitos. GRUB
instalado em ambas as unidades.
Um dos HDDs falhou e agora a matriz está degradada, mas os dados estão intactos.
O que eu quero é trocar todos esses 2 HDDs para SSDs de 80 GB sem a necessidade de reinstalar o sistema do zero. O ponto sutil aqui é que eu preciso reduzir o volume físico do LVM para corresponder ao tamanho do SSD, mas os volumes lógicos não são contíguos (há muito espaço livre no começo), então tenho que, de alguma forma, mover volumes lógicos dentro de um físico . E não há lvmove
comando no Debian.
Como faço para conseguir isso?
Alguma saída do console:
Versões:
root@wheezy:~# uname -a && mdadm --version && lvm version
Linux wheezy 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux
mdadm - v3.2.5 - 18th May 2012
LVM version: 2.02.95(2) (2012-03-06)
Library version: 1.02.74 (2012-03-06)
Driver version: 4.22.0
Detalhes da matriz:
root@wheezy:~# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 4 12:20:22 2014
Raid Level : raid1
Array Size : 488148544 (465.53 GiB 499.86 GB)
Used Dev Size : 488148544 (465.53 GiB 499.86 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Thu Dec 4 13:08:59 2014
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : wheezy:0 (local to host wheezy)
UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a
Events : 26
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 0 0 1 removed
Breves detalhes do LVM:
root@wheezy:~# pvs && vgs && lvs
PV VG Fmt Attr PSize PFree
/dev/md0 system lvm2 a-- 465.53g 418.38g
VG #PV #LV #SN Attr VSize VFree
system 1 5 0 wz--n- 465.53g 418.38g
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
boot system -wi----- 152.00m
root system -wi----- 2.00g
tmp system -wi----- 10.00g
usr system -wi----- 20.00g
var system -wi----- 15.00g
Segmentação do PV:
root@wheezy:~# pvs -v --segments /dev/md0
Using physical volume(s) on command line
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md0 system lvm2 a-- 465.53g 418.38g 0 89600 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 89600 38 boot 0 linear /dev/md0:89600-89637
/dev/md0 system lvm2 a-- 465.53g 418.38g 89638 512 root 0 linear /dev/md0:89638-90149
/dev/md0 system lvm2 a-- 465.53g 418.38g 90150 5120 usr 0 linear /dev/md0:90150-95269
/dev/md0 system lvm2 a-- 465.53g 418.38g 95270 3840 var 0 linear /dev/md0:95270-99109
/dev/md0 system lvm2 a-- 465.53g 418.38g 99110 1280 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 100390 2560 tmp 0 linear /dev/md0:100390-102949
/dev/md0 system lvm2 a-- 465.53g 418.38g 102950 16226 0 free
rsync
seus arquivos acabados. Não está online, mas provavelmente será mais rápido do que qualquer outra coisa.Respostas:
Você não precisa encolher o PV ou reconstruir a matriz. Você só precisa criar uma nova matriz a partir das novas unidades e adicioná-la como um novo pv (
pvcreate
+vgextend
), depoispvmove
todos os lvs existentes fora do antigo pv, remover o antigo pv (vgreduce
) e tirar essa unidade de serviço.fonte
GRUB
partir do sistema Live. É mais fácil inicializar no sistema de produção e instalar o GRUB a partir dele com um simples comando.dpkg-reconfigure grub-pc
e selecione os novos drives.Não é
lvmove
maspvmove
.Isso deve mover quaisquer extensões dentro do intervalo 89600-102950 para o intervalo 0-12070. De acordo com os dados que você postou, os resultados devem ser realocados para os LVs no início do seu PV.
fonte
LV
alinhar parte da tarefa.ATENÇÃO: ESTE GUIA ESTÁ LONGE DO OPTIMAL. VERIFIQUE A RESPOSTA ACEITADA
Ok, eu descobri como fazer o que tentei. Este será um tipo de tutorial.
Durante esse período, eu ainda não havia percebido que manipulações com LVs são realmente possíveis quando os sistemas de arquivos são montados e inicializados em alguma
live
distribuição Linux (SystemRescueCD). As pessoas aqui me explicaram que não há necessidade disso se você não estiver manipulando com sistemas de arquivos reais e apenas alinhando LVs e diminuindo o PV.Assim, com este guia você definitivamente vai conseguir o que deseja, mas não de uma forma eficiente, porque confronta a própria natureza do LVM - possibilidade de fazer as coisas viver .
Devido à natureza não contígua dos volumes lógicos no meu volume físico, devo movê-los de alguma forma no início do volume físico. O
pvmove
comando, conforme sugerido por @frostschutz, pode se moverLVs
dentro dePV
:Agora
PV
está pronto para diminuir para o tamanho do SSD (80 GB). 80 gigabytes são na verdade 80000000000 bytes:Depois disso, eu posso redimensionar a própria matriz. Não há sistemas de arquivos nesse nível, então acabo com apenas um
mdadm --grow
comando, que também pode ser usado para reduzir matrizes. O tamanho deve ser inseridokibibytes
, por isso é 80000000000/1024 = 78125000:Agora é hora de adicionar um SSD existente ao array e deixá-lo reconstruir:
Após a reconstrução, tenho uma matriz saudável. Seus membros podem ser trocados e a instalação do GRUB pode ser realizada rotineiramente (após a inicialização no sistema de produção) com
grub-install /dev/sdc
.fonte