LVM sur RAID logiciel… comment récuperer les 100GB de disponible de la dernière partition…
~~READMORE~~
Soit mdadm et LVM.
mdadm
avec 2 RAID 1 sur 2 disks:
/dev/sdb /dev/sdc
Et donc, les 2 RAID1 :
/dev/md0 /dev/md1
LVM aussi est là:
# pvs PV VG Fmt Attr PSize PFree /dev/md1 vg0 lvm2 a- 360,00g 49,43g
Pour exemple:
# fdisk -u -l /dev/sdb Disk /dev/sdb: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 976895 487424 fd Linux raid autodetect Partition 1 does not end on cylinder boundary. /dev/sdb2 976896 780273663 389648384 fd Linux raid autodetect
En fait, j'ai prés de 100GB de nos attribué en fin de disk:
echo $[((976773168-780273663)*512)/(1024*1024*1024)] 93
Je me dois de récuperer cette place en fin de disk, de mes 2 disks: sdb
et sdc
(qui ont exactement le même partitionnement).
D'abord, démonter tout ce qui utilise les disks.
Démonter …
# umount <mettre les chemins concernés>
Exemple:
# umount /mnt/warez
(Qui est le mountage de /dev/vg0/warez-disk
)
A ce stade, si vous ne pouvez pas, c'est que vous aurez surement besoin de booter sur un “LiveCD” pour poursuivre.
Arreter LVM.
# /etc/init.d/lvm2 stop
C'est possible parce que LVM n'est en service que sur ces disks.
# mdadm --stop /dev/md0 # mdadm --stop /dev/md1
Voila, les disks /dev/sdb
et /dev/sdc
sont libérés.
La partie la plus délicate: detruire et recréer la partition.
Noter le numéro de 1er secteur de la partition concernés:
... Partition 1 does not end on cylinder boundary. /dev/sdb2 976896 780273663 389648384 fd Linux raid autodetect
C'est 976896
, dans mon cas.
Maintenant, le plus critique :
# fdisk -u /dev/sdb
Petite vérification:
Command (m for help): p Disk /dev/sdb: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 976895 487424 fd Linux raid autodetect Partition 1 does not end on cylinder boundary. /dev/sdb2 976896 780273663 389648384 fd Linux raid autodetect
Ok. On poursuit:
On efface:
Command (m for help): d Partition number (1-4): 2
Qu'est-ce qui reste ?
Command (m for help): p Disk /dev/sdb: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 976895 487424 fd Linux raid autodetect Partition 1 does not end on cylinder boundary.
… plus que la 1er partition (que je ne touche pas)
Récréer la partition:
Command (m for help): n Command action e extended p primary partition (1-4)
Je choisi “primary”:
p Partition number (1-4): 2
Attention: Entrer le numéro du 1er secteur: celui qu'on a noté précédement !
First sector (63-976773167, default 63): 976896
Pour le dernier secteur, laissez le choix par defaut: “tout le reste du disk”.
Last sector, +sectors or +size{K,M,G} (976896-976773167, default 976773167): Using default value 976773167
Il faut aussi changer le type de partition:
Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): fd Changed system type of partition 2 to fd (Linux raid autodetect)
Vérifions:
Command (m for help): p Disk /dev/sdb: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 976895 487424 fd Linux raid autodetect Partition 1 does not end on cylinder boundary. /dev/sdb2 976896 976773167 487898136 fd Linux raid autodetect
Ok. On peut ecrire:
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Retour sous “shell”, on doit recopier ce partitionnement sur /dev/sdc
:
# sfdisk -d /dev/sdb | sfdisk --force /dev/sdc Checking that no-one is using this disk right now ... OK ... #
Et voila. Les 2 disks ont le même partitionnement, et la dernière partition re-créé englobe toute la place qui etait disponible.
# mdadm-startall
Et alors, /dev/md0
et /dev/md1
sont revenu:
# cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sdc2[2] sdb2[3] 389647224 blocks super 1.2 [2/2] [UU] md0 : active (auto-read-only) raid1 sdc1[2] sdb1[3] 487412 blocks super 1.2 [2/2] [UU] unused devices: <none>
En fait, “mdadm” ne semble pas informé que la taille de la partition a évolué.
Donc je fais:
# mdadm --stop /dev/md1
Et puis je re-assemble en exigeant une mise a jour de la taille:
# mdadm --assemble /dev/md1 /dev/sdb2 /dev/sdc2 --no-degraded --update=devicesize Size was 779294720 Size is 975794224 Size was 779294720 Size is 975794224 mdadm: /dev/md1 has been started with 2 drives.
Y a surement plus simple, mais je n'ai pas trouvé |
Ensuite:
# mdadm --grow /dev/md1 -z max mdadm: component size of /dev/md1 has been set to 487897112K
Vérifions:
# mdadm --detail /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Feb 11 18:51:28 2011 Raid Level : raid1 Array Size : 487897112 (465.29 GiB 499.61 GB) Used Dev Size : 487897112 (465.29 GiB 499.61 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Sun Jun 24 15:15:25 2012 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Name : k8:1 (local to host k8) UUID : 11d8200a:d55f73f6:5f3d121e:fa4a9fdf Events : 178914 Number Major Minor RaidDevice State 2 8 34 0 active sync /dev/sdc2 3 8 18 1 active sync /dev/sdb2
# cat /proc/mdstat Personalities : [raid1] md1 : active (auto-read-only) raid1 sdc2[2] sdb2[3] 487897112 blocks super 1.2 [2/2] [UU] resync=PENDING md0 : active (auto-read-only) raid1 sdc1[2] sdb1[3] 487412 blocks super 1.2 [2/2] [UU] unused devices: <none>
“resync=PENDING” ?? Démarrer le “resync” maintenant:
# mdadm --readwrite /dev/md1
Ok?
# cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sdc2[2] sdb2[3] 487897112 blocks super 1.2 [2/2] [UU] [===============>.....] resync = 79.9% (389873216/487897112) finish=14.4min speed=112928K/sec md0 : active (auto-read-only) raid1 sdc1[2] sdb1[3] 487412 blocks super 1.2 [2/2] [UU] unused devices: <none>
La nouvelle partie du RAID est “resync” (si j'en crois mes yeux).
# /etc/init.d/lvm start
Et alors:
# pvs PV VG Fmt Attr PSize PFree /dev/md1 vg0 lvm2 a- 360,00g 49,43g
Comme les mountages sont prédéclaré dans /etc/fstab
, je n'ai qu'a faire:
# mount -a
Et voila.
Mais maintenant, il faut “PV” (du LVM) couvre l'ensemble de la partition….
Etat des lieux:
# pvs PV VG Fmt Attr PSize PFree /dev/md1 vg0 lvm2 a- 360,00g 49,43g
Aggrandir:
# pvresize /dev/md1 Physical volume "/dev/md1" changed 1 physical volume(s) resized / 0 physical volume(s) not resized
Vérifions:
# pvs PV VG Fmt Attr PSize PFree /dev/md1 vg0 lvm2 a- 465,29g 154,73g
Voila.