2010-01-06 23:41

Avant toute chose : sauvegardez vos données si elles sont sensibles !

Pour agrandir une partition et son système de fichiers, il faut :

  1. Agrandir la partition
  2. Agrandir le système de fichier

Pour rétrécir une partition et son système de fichiers, il faut :

  1. Rétrécir le système de fichier
  2. Rétrécir la partition

Pour une partition ext3, le plus simple est d’utiliser parted :

parted /dev/sdx
print
resize N

Parted ne supporte pas (encore ?) ext4. Pour une partition ext4, ou si parted n’arrive pas à redimensionner votre partition ext3 (Error: File system has an incompatible feature enabled.), utilisez resize2fs :

Pour agrandir :

cfdisk /dev/sdx
# supprimer la partition puis la recréer de la taille voulue
resize2fs /dev/sdxY

Sans préciser de taille, resize2fs agrandit le système de fichier à la taille de la partition.

Pour rétrécir, c’est presque aussi simple :

# exemple si on veut une partition de 10G
# on redimensionne avec une taille plus petite que la taille voulue
resize2fs /dev/sdxY 9G
cfdisk /dev/sdx
# supprimer la partition puis la recréer de la taille voulue
# (un peu plus grande que le système de fichiers !!)
# puis on relance resize2fs
resize2fs /dev/sdxY

On obtient ainsi la bonne taille de partition, sans perdre d’espace.

Notes :

  • Si votre partition est en LVM, vous pourrez utiliser les commandes lvresize ou lvextend ou lvreduce pour redimensionner la partition, à la place de supprimer/recréer la partition avec cfdisk.
  • La méthode fonctionne aussi pour d’autres systèmes de fichiers tel que le NTFS. Pour NTFS, on utilisera la commande ntfsresize, ou parted s’il fonctionne.

Liens :

2010-01-06 23:41 · Tags: , , , , , , , ,
2008-12-30 17:47

Vous disposez sur votre système d’une batterie de disques configurés avec du RAID1 logiciel (/dev/md0). L’espace de stockage est géré par LVM.

Vos deux disques étant en mirroir, il peut être utile de « casser » le RAID pour pouvoir disposer librement du stockage sur le deuxième disque, ou encore, dans le cadre d’une refonte, d’installer un tout nouveau système sur le deuxième disque, qui remplacera le premier à l’avenir.

En premier lieu, quelques commandes utiles en tout temps pour le diagnostic :

mdadm, le couteau suisse du RAID logiciel :

cat /proc/mdstat
mdadm --detail /dev/md0

La batterie de commandes LVM2 :

pvdisplay
pvs
vgdisplay
vgs
lvdisplay
lvs

La manipulation ne coule pas de source. En voici les étapes :

cat /proc/mdstat montre les deux disques actifs (U pour Up). On marque le deuxième disque (/dev/hdc1) comme défectueux puis on l’enlève de la séquence de RAID pour pouvoir l’utiliser librement :

mdadm --manage --set-faulty /dev/md0 /dev/hdc1
mdadm -r /dev/md0 /dev/hdc1

L’objectif maintenant est de remonter la deuxième moitié du RAID/LVM de manière indépendante, mais sans perdre les données dupliquées présentes.

Il faut donc créer une nouvelle séquence RAID identique à la première en partant du deuxième disque. L’initialisation de /dev/md1 se fait comme suit :

mdadm --create --verbose /dev/md1 --level=mirror --force --raid-devices=1 /dev/hdc1

cat /proc/mdstat doit montrer les deux séquences.

La difficulté désormais est de faire en sorte que le système voie les deux VGs de manière indépendante, car toute commande LVM affiche désormais un avertissement du style :

Found duplicate PV LbpGyrR4uvsZivUwqnJQMYoZbCPTCpgu: using /dev/md1 not
/dev/md0

Le soucis est que les deux PVs sur les deux raids possèdent le même UUID, du coup LVM utilise le PV qui n’est pas celui du système actuel. Le problème est ici assez insoluble. Le seul moyen de s’en sortir est d’utiliser la commande pvcreate pour attribuer un nouveau UUID.
D’autre part, impossible d’utiliser cette commande sur un PV qui contient des LVs actifs (pvcreate refuse).

Ajouter des filtres sur /dev/md0 ou /dev/md1 dans /etc/lvm/lvm.conf ne donne rien non plus car pvcreate ne les verra pas.

Voici donc la manipulation :

Vérifiez la présence d’un fichier /etc/lvm/backup/NOM_DU_VG, ou faite en une sauvegarde à l’aide de la commande vgcfgbackup.

Initialisez un volume physique (PV) vierge sur /dev/md1 en forçant la création :

pvcreate -ff /dev/md1

Puis un VG :

vgcreate vg2 /dev/md1

Copiez le fichier /etc/lvm/backup/NOM_DU_VG et éditez le :

cp /etc/lvm/backup/vg /tmp/vg2
vi /tmp/vg2

Modifiez tous les UUID du fichier de sauvegarde. Il suffit par exemple, dans chaque UUID, de modifier un chiffre. Modifiez aussi le nom du vg. Pour le UUID du PV, mettez celui du PV récemment initialisé sur /dev/md1 (commande pvdisplay).

Il est maintenant possible de restaurer la sauvegarde :

vgcfgrestore --file /tmp/vg2 vg2

Si tout s’est bien passé, on peut ensuite activer les LVs puis les monter :

vgchange -a y vg2
mount /dev/vg2/LV /mnt/test/
2008-12-30 17:47 · Tags: , ,