Prenons un serveur DELL avec un controlleur RAID et un volume RAID5 configuré. Vous l’utilisez (sous Linux bien sûr) et un jour vous avez besoin d’ajouter un disque pour avoir plus de place. Est-ce possible ?
Ça dépend du controlleur RAID !
La capacité d’étendre un volume RAID5 en recalculant l’ensemble du volume (la parité étant répartie sur tous les disques) dépend d’un controlleur RAID à un autre. Difficile de donner des proportions, mais forcément plus un controlleur sera cher plus il aura de chance de le supporter. Revenons à notre exemple d’un serveur DELL, équipé d’une classique carte RAID PERC 5/i. Après avoir rajouté un disque, si l’on va dans le BIOS de la carte RAID : aucune trace de la possibilité d’étendre un volume ! On peut le supprimer, modifier ses options, mais absolument pas rajouter un nouveau disque. En fait, cette fonctionnalité n’est pas accessible depuis le BIOS… mais elle est possible via un outil en ligne de commande ! Voici une ligne de commande permettant d’ajouter un disque dans un volume RAID5 existant :
# omconfig storage vdisk action=reconfigure controller=0 vdisk=0 raid=r5 \ pdisk=0:0:0,0:0:1,0:0:2,0:0:3,1:0:5 Command successful!
Et au niveau système, ça se passe comment ?
Une fois cette commande lancée, on peut constater dans le BIOS que le volume RAID5 est en cours de reconstruction. On le voit aussi au niveau système (avec l’outil MegaCli) :
Reconstruction : Completed 17%, Taken 99 min.
Cela va durer plusieurs heures où les accès au volume RAID sera très lent…
Tant que ce n’est pas terminé, le système verra toujours le volume avec son « ancienne » taille :
sd 0:2:0:0: [sda] 1754529792 512-byte logical blocks: (898 GB/836 GiB)
Une fois terminé, le système verra après un reboot la nouvelle taille :
sd 4:2:0:0: [sda] 2339373056 512-byte logical blocks: (1.19 TB/1.08 TiB)
On verra donc sans rien faire de plus la nouvelle taille via les outils fdisk/cfdisk/etc. et donc un espace supplémentaire en Free Space.
Il reste ensuite à gérer cela au niveau partitions et filesystem. Voici un exemple où l’on rajoute une partition LVM et l’on étend d’un LV existant :
# cfdisk /dev/sda # partprobe # pvcreate /dev/sda10 Physical volume "/dev/sda10" successfully created # vgextend group1 /dev/sda10 Volume group "group1" successfully extended # lvextend -L+250G /dev/mygroup/srv Extending logical volume srv to 550.00 GiB Logical volume srv successfully resized # umount /srv # resize2fs -p /dev/mygroup/srv resize2fs 1.41.12 (17-May-2010) Please run 'e2fsck -f /dev/mygroup/srv' first. # e2fsck -f /dev/mygroup/srv e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mygroup/srv: 16/19660800 files (0.0% non-contiguous), 46720716/78643200 blocks # resize2fs -p /dev/mygroup/srv resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mygroup/srv to 144179200 (4k) blocks. Begin pass 1 (max = 2000) Extending the inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX The filesystem on /dev/group1/srv is now 144179200 blocks long. # mount /srv # df -h /srv Filesystem Size Used Avail Use% Mounted on /dev/mapper/group1-srv 542G 174G 341G 34% /srv
Et voilà, c’est donc possible dans certains cas.