Guide de démarrage avec LVM

1. Note préliminaire

Ce tutoriel s'inspire de deux articles que j'ai lus :

Ce sont d'excellents articles, mais difficiles à comprendre si vous n'avez jamais travaillé avec LVM. C'est pourquoi j'ai créé une image VMware Debian Etch que vous pouvez télécharger et exécuter dans VMware Server ou VMware Player (voir http://www.howtoforge.com/import_vmware_images pour apprendre comment faire).

J'ai installé tous les outils nécessaires sur le système Debian Etch (en exécutant la commande ci-dessous) afin que vous n'ayez pas à vous en soucier.

apt-get install lvm2 dmsetup mdadm reiserfsprogs xfsprogs

Le réseau du système Debian Etch est configuré via DHCP, donc vous n'avez pas à vous soucier de conflits d'adresses IP. Le mot de passe root est howtoforge. Vous pouvez également vous connecter à ce système avec un client SSH comme PuTTY. Pour connaître l'adresse IP du système Debian Etch, exécutez :

# ifconfig

Le système dispose de six disques durs SCSI, /dev/sda à /dev/sdf. /dev/sda est utilisé pour le système Debian Etch lui-même, tandis que nous utiliserons /dev/sdb à /dev/sdf pour LVM et RAID. Chacun de /dev/sdb à /dev/sdf a 80 Go d'espace disque. Au début, nous ferons comme s'ils n'avaient que 25 Go chacun (en utilisant seulement 25 Go sur chacun), et au cours du tutoriel, nous "remplacerons" nos disques durs de 25 Go par des disques de 80 Go, démontrant ainsi comment remplacer de petits disques durs par des plus gros dans LVM.

L'article http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html utilise des disques durs de 250 Go et 800 Go, mais certaines commandes comme pvmove prennent beaucoup de temps avec de telles tailles, c'est pourquoi j'ai décidé d'utiliser des disques de 25 Go et 80 Go (cela suffit pour comprendre le fonctionnement de LVM).

1.1 Résumé

Téléchargez l'image VMware Debian Etch (~310 Mo) et démarrez-la. Connectez-vous en root avec le mot de passe howtoforge.

2. Structure de LVM

Fondamentalement, LVM ressemble à ceci :

Vous avez un ou plusieurs volumes physiques (/dev/sdb1 à /dev/sde1 dans notre exemple), et sur ces volumes physiques, vous créez un ou plusieurs groupes de volumes (par exemple fileserver), et dans chaque groupe de volumes, vous pouvez créer un ou plusieurs volumes logiques. Si vous utilisez plusieurs volumes physiques, chaque volume logique peut être plus grand que l'un des volumes physiques sous-jacents (mais la somme des volumes logiques ne peut évidemment pas dépasser l'espace total offert par les volumes physiques).

Il est de bonne pratique de ne pas allouer tout l'espace aux volumes logiques, mais de laisser un peu d'espace inutilisé. Ainsi, vous pourrez agrandir un ou plusieurs volumes logiques plus tard si nécessaire.

Dans cet exemple, nous allons créer un groupe de volumes appelé fileserver, et nous créerons également les volumes logiques /dev/fileserver/share, /dev/fileserver/backup et /dev/fileserver/media (qui n'utiliseront pour l'instant que la moitié de l'espace offert par nos volumes physiques – de cette façon, nous pourrons passer à RAID1 plus tard, comme décrit dans ce tutoriel).

3. Notre première configuration LVM

Examinons nos disques durs :

fdisk -l

La sortie ressemble à ceci :

server1:~# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          18      144553+  83  Linux
/dev/sda2              19        2450    19535040   83  Linux
/dev/sda4            2451        2610     1285200   82  Linux swap / Solaris

Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sde doesn't contain a valid partition table

Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdf doesn't contain a valid partition table

Il n'y a pas encore de partitions sur /dev/sdb à /dev/sdf. Nous allons créer les partitions /dev/sdb1, /dev/sdc1, /dev/sdd1 et /dev/sde1 et laisser /dev/sdf intact pour l'instant. Nous faisons comme si nos disques durs n'avaient que 25 Go au lieu de 80 Go, donc nous allouons 25 Go à /dev/sdb1, /dev/sdc1, /dev/sdd1 et /dev/sde1 :

fdisk /dev/sdb
server1:~# fdisk /dev/sdb

The number of cylinders for this disk is set to 10443.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): <-- m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): <-- n
Command action
   e   extended
   p   primary partition (1-4)
<-- p
Partition number (1-4): <-- 1
First cylinder (1-10443, default 1): <-- <ENTER> 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-10443, default 10443): <-- +25000M

Command (m for help): <-- t
Selected partition 1
Hex code (type L to list codes): <-- L

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
Hex code (type L to list codes): <-- 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Nous faisons de même pour les disques /dev/sdc, /dev/sdd et /dev/sde :

fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde

Ensuite, exécutez :

fdisk -l

La sortie devrait ressembler à ceci :

server1:~# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          18      144553+  83  Linux
/dev/sda2              19        2450    19535040   83  Linux
/dev/sda4            2451        2610     1285200   82  Linux swap / Solaris

Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        3040    24418768+  8e  Linux LVM

Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        3040    24418768+  8e  Linux LVM

Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        3040    24418768+  8e  Linux LVM

Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1        3040    24418768+  8e  Linux LVM

Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdf doesn't contain a valid partition table

Maintenant, nous préparons nos nouvelles partitions pour LVM :

pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdc1" successfully created
  Physical volume "/dev/sdd1" successfully created
  Physical volume "/dev/sde1" successfully created

Annulons cette dernière action à des fins d'entraînement :

pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
  Labels on physical volume "/dev/sdb1" successfully wiped
  Labels on physical volume "/dev/sdc1" successfully wiped
  Labels on physical volume "/dev/sdd1" successfully wiped
  Labels on physical volume "/dev/sde1" successfully wiped

Puis exécutez à nouveau :

pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdc1" successfully created
  Physical volume "/dev/sdd1" successfully created
  Physical volume "/dev/sde1" successfully created

Maintenant, exécutez :

pvdisplay

pour connaître l'état actuel de vos volumes physiques :

server1:~# pvdisplay
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               23.29 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               G8lu2L-Hij1-NVde-sOKc-OoVI-fadg-Jd1vyU

  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name
  PV Size               23.29 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               40GJyh-IbsI-pzhn-TDRq-PQ3l-3ut0-AVSE4B

  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name
  PV Size               23.29 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               4mU63D-4s26-uL00-r0pO-Q0hP-mvQR-2YJN5B

  --- NEW Physical volume ---
  PV Name               /dev/sde1
  VG Name
  PV Size               23.29 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               3upcZc-4eS2-h4r4-iBKK-gZJv-AYt3-EKdRK6

Créons maintenant notre groupe de volumes fileserver et ajoutons /dev/sdb1 à /dev/sde1 :

vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
  Volume group "fileserver" successfully created

Examinons nos groupes de volumes :

vgdisplay
server1:~# vgdisplay
  --- Volume group ---
  VG Name               fileserver
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               93.14 GB
  PE Size               4.00 MB
  Total PE              23844
  Alloc PE / Size       0 / 0
  Free  PE / Size       23844 / 93.14 GB
  VG UUID               3Y1WVF-BLET-QkKs-Qnrs-SZxI-wrNO-dTqhFP

Autre commande pour examiner nos groupes de volumes :

vgscan
server1:~# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "fileserver" using metadata type lvm2

Pour l'entraînement, renommons notre groupe de volumes fileserver en data :

vgrename fileserver data
server1:~# vgrename fileserver data
  Volume group "fileserver" successfully renamed to "data"

Exécutons à nouveau vgdisplay et vgscan pour voir si le groupe de volumes a été renommé :

vgdisplay
server1:~# vgdisplay
  --- Volume group ---
  VG Name               data
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               93.14 GB
  PE Size               4.00 MB
  Total PE              23844
  Alloc PE / Size       0 / 0
  Free  PE / Size       23844 / 93.14 GB
  VG UUID               3Y1WVF-BLET-QkKs-Qnrs-SZxI-wrNO-dTqhFP
vgscan
server1:~# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "data" using metadata type lvm2

Supprimons maintenant le groupe de volumes data :

vgremove data
server1:~# vgremove data
  Volume group "data" successfully removed
vgdisplay

Pas de sortie cette fois :

server1:~# vgdisplay

vgscan

server1:~# vgscan
  Reading all physical volumes.  This may take a while...

Recréons notre groupe de volumes fileserver :

vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
  Volume group "fileserver" successfully created

Nous créons ensuite nos volumes logiques share (40 Go), backup (5 Go) et media (1 Go) dans le groupe de volumes fileserver. Ensemble, ils utilisent un peu moins de 50 % de l'espace disponible (de cette façon, nous pourrons utiliser RAID1 plus tard) :

lvcreate --name share --size 40G fileserver
server1:~# lvcreate --name share  --size 40G fileserver
  Logical volume "share" created
lvcreate --name backup --size 5G fileserver
server1:~# lvcreate --name backup --size  5G fileserver
  Logical volume "backup" created
lvcreate --name media --size 1G fileserver
server1:~# lvcreate --name media  --size  1G fileserver
  Logical volume "media" created

Obtenons un aperçu de nos volumes logiques :

lvdisplay
server1:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/fileserver/share
  VG Name                fileserver
  LV UUID                280Mup-H9aa-sn0S-AXH3-04cP-V6p9-lfoGgJ
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                40.00 GB
  Current LE             10240
  Segments               2
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/fileserver/backup
  VG Name                fileserver
  LV UUID                zZeuKg-Dazh-aZMC-Aa99-KUSt-J6ET-KRe0cD
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                5.00 GB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1

  --- Logical volume ---
  LV Name                /dev/fileserver/media
  VG Name                fileserver
  LV UUID                usfvrv-BC92-3pFH-2NW0-2N3e-6ERQ-4Sj7YS
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                1.00 GB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:2
lvscan
server1:~# lvscan
  ACTIVE            '/dev/fileserver/share' [40.00 GB] inherit
  ACTIVE            '/dev/fileserver/backup' [5.00 GB] inherit
  ACTIVE            '/dev/fileserver/media' [1.00 GB] inherit

Pour l'entraînement, nous renommons notre volume logique media en films :

lvrename fileserver media films
server1:~# lvrename fileserver media films
  Renamed "media" to "films" in volume group "fileserver"
lvdisplay
server1:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/fileserver/share
  VG Name                fileserver
  LV UUID                280Mup-H9aa-sn0S-AXH3-04cP-V6p9-lfoGgJ
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                40.00 GB
  Current LE             10240
  Segments               2
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/fileserver/backup
  VG Name                fileserver
  LV UUID                zZeuKg-Dazh-aZMC-Aa99-KUSt-J6ET-KRe0cD
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                5.00 GB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1

  --- Logical volume ---
  LV Name                /dev/fileserver/films
  VG Name                fileserver
  LV UUID                usfvrv-BC92-3pFH-2NW0-2N3e-6ERQ-4Sj7YS
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                1.00 GB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:2
lvscan
server1:~# lvscan
  ACTIVE            '/dev/fileserver/share' [40.00 GB] inherit
  ACTIVE            '/dev/fileserver/backup' [5.00 GB] inherit
  ACTIVE            '/dev/fileserver/films' [1.00 GB] inherit

Supprimons ensuite le volume logique films :

lvremove /dev/fileserver/films
server1:~# lvremove /dev/fileserver/films
Do you really want to remove active logical volume "films"? [y/n]: <-- y
  Logical volume "films" successfully removed

Nous recréons le volume logique media :

lvcreate --name media --size 1G fileserver
server1:~# lvcreate --name media  --size  1G fileserver
  Logical volume "media" created

Agrandissons maintenant media de 1 Go à 1,5 Go :

lvextend -L1.5G /dev/fileserver/media
server1:~# lvextend -L1.5G /dev/fileserver/media
  Extending logical volume media to 1.50 GB
  Logical volume media successfully resized

Réduisons-le à nouveau à 1 Go :

lvreduce -L1G /dev/fileserver/media
server1:~# lvreduce -L1G /dev/fileserver/media
  WARNING: Reducing active logical volume to 1.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce media? [y/n]: <-- y
  Reducing logical volume media to 1.00 GB
  Logical volume media successfully resized

Jusqu'à présent, nous avons trois volumes logiques, mais nous n'avons aucun système de fichiers à l'intérieur. Sans système de fichiers, nous ne pouvons rien y enregistrer. Nous créons donc un système de fichiers ext3 dans share, un système de fichiers xfs dans backup et un système de fichiers reiserfs dans media :

mkfs.ext3 /dev/fileserver/share
server1:~# mkfs.ext3 /dev/fileserver/share
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
5242880 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
320 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
mkfs.xfs /dev/fileserver/backup
server1:~# mkfs.xfs /dev/fileserver/backup
meta-data=/dev/fileserver/backup isize=256    agcount=8, agsize=163840 blks
         =                       sectsz=512   attr=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0
mkfs.reiserfs /dev/fileserver/media
server1:~# mkfs.reiserfs /dev/fileserver/media
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
Alexander  Lyamin  keeps our hardware  running,  and was very  generous  to our
project in many little ways.

Chris Mason wrote the journaling code for V3,  which was enormously more useful
to users than just waiting until  we could create a wandering log filesystem as
Hans would have unwisely done without him.
Jeff Mahoney optimized the bitmap  scanning code for V3,  and performed the big
endian cleanups.


Guessing about desired format.. Kernel 2.6.17-2-486 is running.
Format 3.6 with standard journal
Count of blocks on the device: 262144
Number of blocks consumed by mkreiserfs formatting process: 8219
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 2bebf750-6e05-47b2-99b6-916fa7ea5398
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
        ALL DATA WILL BE LOST ON '/dev/fileserver/media'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.

ReiserFS is successfully created on /dev/fileserver/media.

Maintenant, nous sommes prêts à monter nos volumes logiques. Je veux monter share dans /var/share, backup dans /var/backup et media dans /var/media, donc nous devons d'abord créer ces répertoires :

mkdir /var/media /var/backup /var/share

Nous pouvons maintenant monter nos volumes logiques :

mount /dev/fileserver/share /var/share
mount /dev/fileserver/backup /var/backup
mount /dev/fileserver/media /var/media

Exécutez :

df -h

Vous devriez voir vos volumes logiques dans la sortie :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  665M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-share
                       40G  177M   38G   1% /var/share
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.0G   33M  992M   4% /var/media

Félicitations, vous venez de configurer votre premier système LVM ! Vous pouvez maintenant écrire et lire dans /var/share, /var/backup et /var/media comme d'habitude.

Nous avons monté nos volumes logiques manuellement, mais bien sûr nous aimerions les avoir montés automatiquement au démarrage. Nous modifions donc /etc/fstab :

mv /etc/fstab /etc/fstab_orig
cat /dev/null > /etc/fstab

vi /etc/fstab

Mettez les lignes suivantes :

# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda2 / ext3 defaults,errors=remount-ro 0 1 /dev/sda1 /boot ext3 defaults 0 2 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 /dev/fileserver/share /var/share ext3 rw,noatime 0 0 /dev/fileserver/backup /var/backup xfs rw,noatime 0 0 /dev/fileserver/media /var/media reiserfs rw,noatime 0 0

Si vous le comparez à la sauvegarde du fichier original, /etc/fstab_orig, vous remarquerez que nous avons ajouté les lignes :

/dev/fileserver/share   /var/share     ext3       rw,noatime    0 0
/dev/fileserver/backup    /var/backup      xfs        rw,noatime    0 0
/dev/fileserver/media    /var/media      reiserfs   rw,noatime    0 0

Redémarrez maintenant le système :

shutdown -r now

Après le redémarrage, exécutez à nouveau :

df -h

Il devrait encore montrer nos volumes logiques dans la sortie :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  665M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-share
                       40G  177M   38G   1% /var/share
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.0G   33M  992M   4% /var/media

4. Redimensionnement des volumes logiques et de leurs systèmes de fichiers

Dans ce chapitre, nous allons apprendre à redimensionner notre volume logique share qui possède un système de fichiers ext3. (Je montrerai comment redimensionner des volumes logiques avec des systèmes de fichiers xfs et reiserfs plus loin dans ce tutoriel.)

Nous devons d'abord le démonter :

umount /var/share

share ne devrait plus apparaître dans la sortie de :

df -h
server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  665M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.0G   33M  992M   4% /var/media

Agrandissons maintenant share de 40 Go à 50 Go :

lvextend -L50G /dev/fileserver/share
server1:~# lvextend -L50G /dev/fileserver/share
  Extending logical volume share to 50.00 GB
  Logical volume share successfully resized

Pour l'instant, nous n'avons agrandi que share, mais pas le système de fichiers ext3 sur share. C'est ce que nous faisons maintenant :

e2fsck -f /dev/fileserver/share
server1:~# e2fsck -f /dev/fileserver/share
e2fsck 1.40-WIP (14-Nov-2006)
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/fileserver/share: 11/5242880 files (9.1% non-contiguous), 209588/10485760 blocks

Notez le nombre total de blocs (10485760) car nous en aurons besoin plus tard pour réduire share.

resize2fs /dev/fileserver/share
server1:~# resize2fs /dev/fileserver/share
resize2fs 1.40-WIP (14-Nov-2006)
Resizing the filesystem on /dev/fileserver/share to 13107200 (4k) blocks.
The filesystem on /dev/fileserver/share is now 13107200 blocks long.

Montons share :

mount /dev/fileserver/share /var/share

et dans la sortie de :

df -h

share devrait maintenant avoir 50 Go au lieu de 40 :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  665M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.0G   33M  992M   4% /var/media
/dev/mapper/fileserver-share
                       50G  180M   47G   1% /var/share

Réduire un volume logique se fait dans l'autre sens : il faut d'abord réduire le système de fichiers avant de réduire la taille du volume logique. Réduisons share à nouveau à 40 Go :

umount /var/share
df -h
server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  665M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.0G   33M  992M   4% /var/media

e2fsck -f /dev/fileserver/share

 
server1:~# e2fsck -f /dev/fileserver/share
e2fsck 1.40-WIP (14-Nov-2006)
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/fileserver/share: 11/6553600 files (9.1% non-contiguous), 251733/13107200 blocks

Lors du redimensionnement d'un système de fichiers ext3 à une taille spécifique (au lieu de tout l'espace disponible), resize2fs prend le nombre de blocs comme argument (vous pouvez aussi spécifier la nouvelle taille en Mo, etc.). Voyez :

man resize2fs

pour plus de détails. D'après l'opération précédente, nous savons que 40 Go équivaut à 10485760 blocs, donc nous exécutons :

resize2fs /dev/fileserver/share 10485760
server1:~# resize2fs /dev/fileserver/share 10485760
resize2fs 1.40-WIP (14-Nov-2006)
Resizing the filesystem on /dev/fileserver/share to 10485760 (4k) blocks.
The filesystem on /dev/fileserver/share is now 10485760 blocks long.

Nous avons réduit le système de fichiers, maintenant nous devons aussi réduire le volume logique :

lvreduce -L40G /dev/fileserver/share
server1:~# lvreduce -L40G /dev/fileserver/share
  WARNING: Reducing active logical volume to 40.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce share? [y/n]: <-- y
  Reducing logical volume share to 40.00 GB
  Logical volume share successfully resized

Nous pouvons ignorer l'avertissement concernant la destruction des données car nous avons réduit le système de fichiers avant.

Montons à nouveau share :

mount /dev/fileserver/share /var/share

La sortie de :

df -h

devrait maintenant ressembler à ceci :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  665M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.0G   33M  992M   4% /var/media
/dev/mapper/fileserver-share
                       40G  177M   38G   1% /var/share

5. Ajout d'un disque dur et suppression d'un autre

Nous n'avons pas utilisé /dev/sdf jusqu'à présent. Nous allons maintenant créer la partition /dev/sdf1 (25 Go) et l'ajouter à notre groupe de volumes fileserver.

fdisk /dev/sdf
server1:~# fdisk /dev/sdf
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.


The number of cylinders for this disk is set to 10443.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): <-- m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): <-- n
Command action
   e   extended
   p   primary partition (1-4)
<-- p
Partition number (1-4): <-- 1
First cylinder (1-10443, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-10443, default 10443): <-- +25000M

Command (m for help): <-- t
Selected partition 1
Hex code (type L to list codes): <-- 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Préparons /dev/sdf1 pour LVM :

pvcreate /dev/sdf1
server1:~# pvcreate /dev/sdf1
  Physical volume "/dev/sdf1" successfully created

Ajoutons /dev/sdf1 à notre groupe de volumes fileserver :

vgextend fileserver /dev/sdf1

Exécutez :

vgdisplay

La taille VG devrait maintenant être plus grande qu'avant :

server1:~# vgdisplay
  --- Volume group ---
  VG Name               fileserver
  System ID
  Format                lvm2
  Metadata Areas        5
  Metadata Sequence No  12
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                5
  Act PV                5
  VG Size               116.43 GB
  PE Size               4.00 MB
  Total PE              29805
  Alloc PE / Size       11776 / 46.00 GB
  Free  PE / Size       18029 / 70.43 GB
  VG UUID               iWr1Vk-7h7J-hLRL-SHbx-3p87-Rq47-L1GyEO

C'est tout. /dev/sdf1 a été ajouté au groupe de volumes fileserver.

Supprimons maintenant /dev/sdb1. Avant de le faire, nous devons copier toutes les données qu'il contient sur /dev/sdf1 :

pvmove /dev/sdb1 /dev/sdf1

Cela peut prendre quelques minutes :

server1:~# pvmove /dev/sdb1 /dev/sdf1
  /dev/sdb1: Moved: 1.9%
  /dev/sdb1: Moved: 3.8%
  /dev/sdb1: Moved: 5.8%
  /dev/sdb1: Moved: 7.8%
  /dev/sdb1: Moved: 9.7%
  /dev/sdb1: Moved: 11.6%
  /dev/sdb1: Moved: 13.6%
  /dev/sdb1: Moved: 15.6%
  /dev/sdb1: Moved: 17.5%
  /dev/sdb1: Moved: 19.4%
  /dev/sdb1: Moved: 21.4%
  [...]
  /dev/sdb1: Moved: 85.7%
  /dev/sdb1: Moved: 87.7%
  /dev/sdb1: Moved: 89.7%
  /dev/sdb1: Moved: 91.7%
  /dev/sdb1: Moved: 93.6%
  /dev/sdb1: Moved: 95.5%
  /dev/sdb1: Moved: 97.5%
  /dev/sdb1: Moved: 99.4%
  /dev/sdb1: Moved: 100.0%

Ensuite, nous supprimons /dev/sdb1 du groupe de volumes fileserver :

vgreduce fileserver /dev/sdb1
server1:~# vgreduce fileserver /dev/sdb1
  Removed "/dev/sdb1" from volume group "fileserver"
vgdisplay
server1:~# vgdisplay
  --- Volume group ---
  VG Name               fileserver
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  16
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               93.14 GB
  PE Size               4.00 MB
  Total PE              23844
  Alloc PE / Size       11776 / 46.00 GB
  Free  PE / Size       12068 / 47.14 GB
  VG UUID               iWr1Vk-7h7J-hLRL-SHbx-3p87-Rq47-L1GyEO

Ensuite, nous exécutons :

pvremove /dev/sdb1

/dev/sdb1 ne devrait plus apparaître comme volume physique :

pvdisplay
server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               1682
  Allocated PE          4279
  PV UUID               40GJyh-IbsI-pzhn-TDRq-PQ3l-3ut0-AVSE4B

  --- Physical volume ---
  PV Name               /dev/sdd1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               4681
  Allocated PE          1280
  PV UUID               4mU63D-4s26-uL00-r0pO-Q0hP-mvQR-2YJN5B

  --- Physical volume ---
  PV Name               /dev/sde1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               5705
  Allocated PE          256
  PV UUID               3upcZc-4eS2-h4r4-iBKK-gZJv-AYt3-EKdRK6

  --- Physical volume ---
  PV Name               /dev/sdf1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               0
  Allocated PE          5961
  PV UUID               1xgo2I-SBjj-0MAz-lmDu-OLZ1-3NdO-mLkS20

Vous pouvez maintenant retirer /dev/sdb du système (s'il s'agissait d'un système réel et non d'une machine virtuelle).

6. Retour à l'état d'origine du système

Dans ce chapitre, nous allons annuler toutes les modifications des chapitres précédents pour revenir à l'état d'origine du système. Ceci est uniquement à des fins d'entraînement pour apprendre à annuler une configuration LVM.

Nous devons d'abord démonter nos volumes logiques :

umount /var/share
umount /var/backup
umount /var/media
df -h
server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  665M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   92K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot

Ensuite, nous les supprimons un par un :

lvremove /dev/fileserver/share
server1:~# lvremove /dev/fileserver/share
Do you really want to remove active logical volume "share"? [y/n]: <-- y
  Logical volume "share" successfully removed
lvremove /dev/fileserver/backup
server1:~# lvremove /dev/fileserver/backup
Do you really want to remove active logical volume "backup"? [y/n]: <-- y
  Logical volume "backup" successfully removed
lvremove /dev/fileserver/media
server1:~# lvremove /dev/fileserver/media
Do you really want to remove active logical volume "media"? [y/n]: <-- y
  Logical volume "media" successfully removed

Ensuite, nous supprimons le groupe de volumes fileserver :

vgremove fileserver
server1:~# vgremove fileserver
  Volume group "fileserver" successfully removed

Finalement, nous exécutons :

pvremove /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
server1:~# pvremove  /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
  Labels on physical volume "/dev/sdc1" successfully wiped
  Labels on physical volume "/dev/sdd1" successfully wiped
  Labels on physical volume "/dev/sde1" successfully wiped
  Labels on physical volume "/dev/sdf1" successfully wiped
vgdisplay
server1:~# vgdisplay
  No volume groups found
pvdisplay

ne devrait rien afficher du tout :

server1:~# pvdisplay

Maintenant, nous devons annuler nos modifications dans /etc/fstab pour éviter que le système n'essaie de monter des périphériques inexistants. Heureusement, nous avons fait une sauvegarde du fichier original que nous pouvons restaurer :

mv /etc/fstab_orig /etc/fstab

Redémarrez le système :

shutdown -r now

Après le redémarrage, la sortie de :

df -h

devrait ressembler à ceci :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  666M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   92K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot

Le système est maintenant comme au début (sauf que les partitions /dev/sdb1 à /dev/sdf1 existent toujours – vous pourriez les supprimer avec fdisk, mais nous ne le faisons pas maintenant – ainsi que les répertoires /var/share, /var/backup et /var/media que nous ne supprimons pas non plus).

7. LVM sur RAID1

Dans ce chapitre, nous allons configurer à nouveau LVM et le déplacer vers une matrice RAID1 pour garantir une haute disponibilité. À la fin, cela devrait ressembler à ceci :

Cela signifie que nous créerons la matrice RAID /dev/md0 à partir des partitions /dev/sdb1 et /dev/sdc1, et la matrice RAID /dev/md1 à partir des partitions /dev/sdd1 et /dev/sde1. /dev/md0 et /dev/md1 seront ensuite les volumes physiques pour LVM.

Avant cela, nous configurons LVM comme précédemment :

pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
lvcreate --name share --size 40G fileserver
lvcreate --name backup --size 5G fileserver
lvcreate --name media --size 1G fileserver

mkfs.ext3 /dev/fileserver/share
mkfs.xfs /dev/fileserver/backup
mkfs.reiserfs /dev/fileserver/media

Ensuite, nous montons nos volumes logiques :

mount /dev/fileserver/share /var/share
mount /dev/fileserver/backup /var/backup
mount /dev/fileserver/media /var/media

La sortie de :

df -h

devrait maintenant ressembler à ceci :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  666M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   92K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-share
                       40G  177M   38G   1% /var/share
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.0G   33M  992M   4% /var/media

Maintenant, nous devons déplacer le contenu de /dev/sdc1 et /dev/sde1 (les secondes partitions de nos futures matrices /dev/md0 et /dev/md1) vers les partitions restantes, car nous allons ensuite les supprimer de LVM, les formater avec le type fd (détection automatique RAID Linux) et les ajouter à /dev/md0 et /dev/md1 respectivement.

modprobe dm-mirror
pvmove /dev/sdc1
vgreduce fileserver /dev/sdc1
pvremove /dev/sdc1
pvdisplay
server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               0
  Allocated PE          5961
  PV UUID               USDJyG-VDM2-r406-OjQo-h3eb-c9Mp-4nvnvu

  --- Physical volume ---
  PV Name               /dev/sdd1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               4681
  Allocated PE          1280
  PV UUID               qdEB5d-389d-O5UA-Kbwv-mn1y-74FY-4zublN

  --- Physical volume ---
  PV Name               /dev/sde1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               1426
  Allocated PE          4535
  PV UUID               4vL1e0-sr2M-awGd-qDJm-ZrC9-wuxW-2lEqp2
pvmove /dev/sde1
vgreduce fileserver /dev/sde1
pvremove /dev/sde1
pvdisplay
server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               0
  Allocated PE          5961
  PV UUID               USDJyG-VDM2-r406-OjQo-h3eb-c9Mp-4nvnvu

  --- Physical volume ---
  PV Name               /dev/sdd1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               146
  Allocated PE          5815
  PV UUID               qdEB5d-389d-O5UA-Kbwv-mn1y-74FY-4zublN

Maintenant, nous formatons /dev/sdc1 avec le type fd (détection automatique RAID Linux) :

fdisk /dev/sdc
server1:~# fdisk /dev/sdc

The number of cylinders for this disk is set to 10443.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): <-- m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): <-- t
Selected partition 1
Hex code (type L to list codes): <-- L

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Faites de même avec /dev/sde1 :

fdisk /dev/sde

La sortie de :

fdisk -l

devrait maintenant ressembler à ceci :

server1:~# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          18      144553+  83  Linux
/dev/sda2              19        2450    19535040   83  Linux
/dev/sda4            2451        2610     1285200   82  Linux swap / Solaris

Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        3040    24418768+  8e  Linux LVM

Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        3040    24418768+  fd  Linux raid autodetect

Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        3040    24418768+  8e  Linux LVM

Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1        3040    24418768+  fd  Linux raid autodetect

Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1               1        3040    24418768+  8e  Linux LVM

Ensuite, nous ajoutons /dev/sdc1 à /dev/md0 et /dev/sde1 à /dev/md1. Comme les seconds nœuds (/dev/sdb1 et /dev/sdd1) ne sont pas encore prêts, nous devons spécifier missing dans les commandes suivantes :

mdadm --create /dev/md0 --auto=yes -l 1 -n 2 /dev/sdc1 missing
server1:~# mdadm --create /dev/md0 --auto=yes -l 1 -n 2 /dev/sdc1 missing
mdadm: array /dev/md0 started.
mdadm --create /dev/md1 --auto=yes -l 1 -n 2 /dev/sde1 missing
server1:~# mdadm --create /dev/md1 --auto=yes -l 1 -n 2 /dev/sde1 missing
mdadm: array /dev/md1 started.

Ensuite, nous préparons /dev/md0 et /dev/md1 pour LVM :

pvcreate /dev/md0 /dev/md1
server1:~# pvcreate /dev/md0 /dev/md1
  Physical volume "/dev/md0" successfully created
  Physical volume "/dev/md1" successfully created

et étendons notre groupe de volumes fileserver :

vgextend fileserver /dev/md0 /dev/md1
server1:~# vgextend fileserver /dev/md0 /dev/md1
  Volume group "fileserver" successfully extended

Les sorties de :

pvdisplay

et

vgdisplay

devraient ressembler à ceci :

server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               0
  Allocated PE          5961
  PV UUID               USDJyG-VDM2-r406-OjQo-h3eb-c9Mp-4nvnvu

  --- Physical volume ---
  PV Name               /dev/sdd1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               146
  Allocated PE          5815
  PV UUID               qdEB5d-389d-O5UA-Kbwv-mn1y-74FY-4zublN

  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               5961
  Allocated PE          0
  PV UUID               7JHUXF-1R2p-OjbJ-X1OT-uaeg-gWRx-H6zx3P

  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               5961
  Allocated PE          0
  PV UUID               pwQ5AJ-RwVK-EebA-0Z13-d27d-2IdP-HqT5RW
server1:~# vgdisplay
  --- Volume group ---
  VG Name               fileserver
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  14
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               93.14 GB
  PE Size               4.00 MB
  Total PE              23844
  Alloc PE / Size       11776 / 46.00 GB
  Free  PE / Size       12068 / 47.14 GB
  VG UUID               dQDEHT-kNHf-UjRm-rmJ3-OUYx-9G1t-aVskI1

Maintenant, nous déplaçons le contenu de /dev/sdb1 vers /dev/md0 et le contenu de /dev/sdd1 vers /dev/md1, puis nous supprimons /dev/sdb1 et /dev/sdd1 de LVM :

pvmove /dev/sdb1 /dev/md0
pvmove /dev/sdd1 /dev/md1
vgreduce fileserver /dev/sdb1 /dev/sdd1
pvremove /dev/sdb1 /dev/sdd1

Maintenant, seuls /dev/md0 et /dev/md1 devraient rester comme volumes physiques :

pvdisplay
server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               0
  Allocated PE          5961
  PV UUID               7JHUXF-1R2p-OjbJ-X1OT-uaeg-gWRx-H6zx3P

  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               146
  Allocated PE          5815
  PV UUID               pwQ5AJ-RwVK-EebA-0Z13-d27d-2IdP-HqT5RW

Maintenant, nous formatons /dev/sdb1 avec fd (détection automatique RAID Linux) :

fdisk /dev/sdb
server1:~# fdisk /dev/sdb

The number of cylinders for this disk is set to 32635.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): <-- m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): <-- t
Selected partition 1
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Faites de même avec /dev/sdd1 :

fdisk /dev/sdd

Ajoutez ensuite /dev/sdb1 à /dev/md0 et /dev/sdd1 à /dev/md1 :

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdd1
server1:~# mdadm --manage /dev/md1 --add /dev/sdd1
mdadm: added /dev/sdd1

Les deux matrices RAID seront maintenant synchronisées. Cela prendra du temps, vous pouvez vérifier avec :

cat /proc/mdstat

quand le processus est terminé. La sortie pour un processus non terminé ressemble à ceci :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md1 : active raid1 sdd1[2] sde1[0]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  6.4% (1586560/24418688) finish=1.9min speed=198320K/sec

md0 : active raid1 sdb1[2] sdc1[0]
      24418688 blocks [2/1] [U_]
      [==>..................]  recovery = 10.5% (2587264/24418688) finish=2.8min speed=129363K/sec

unused devices: <none></none>

et comme ceci une fois le processus terminé :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md1 : active raid1 sdd1[1] sde1[0]
      24418688 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sdc1[0]
      24418688 blocks [2/2] [UU]

unused devices: <none></none>

Si vous regardez la taille PV dans la sortie de :

pvdisplay

vous verrez que 2 * 23.29 Go = 46,58 Go sont disponibles, mais seulement 40 Go (share) + 5 Go (backup) + 1 Go (media) = 46 Go sont utilisés, ce qui signifie que nous pourrions étendre l'un de nos volumes logiques d'environ 0,5 Go. J'ai déjà montré comment étendre un volume logique ext3 (share), donc nous allons maintenant redimensionner media qui utilise reiserfs. Les systèmes de fichiers reiserfs peuvent être redimensionnés sans démontage :

lvextend -L1.5G /dev/fileserver/media
server1:~# lvextend -L1.5G /dev/fileserver/media
  Extending logical volume media to 1.50 GB
  Logical volume media successfully resized
resize_reiserfs /dev/fileserver/media
server1:~# resize_reiserfs /dev/fileserver/media
resize_reiserfs 3.6.19 (2003 www.namesys.com)

resize_reiserfs: On-line resizing finished successfully.

La sortie de :

df -h

ressemble à ceci :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  666M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M   92K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-share
                       40G  177M   38G   1% /var/share
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.5G   33M  1.5G   3% /var/media

Si nous voulons que nos volumes logiques soient montés automatiquement au démarrage, nous devons modifier à nouveau /etc/fstab (comme au chapitre 3) :

mv /etc/fstab /etc/fstab_orig
cat /dev/null > /etc/fstab

vi /etc/fstab

Mettez les lignes suivantes :

# /etc/fstab: static file system information. # # <file system=""> <mount point=""> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda2 / ext3 defaults,errors=remount-ro 0 1 /dev/sda1 /boot ext3 defaults 0 2 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 /dev/fileserver/share /var/share ext3 rw,noatime 0 0 /dev/fileserver/backup /var/backup xfs rw,noatime 0 0 /dev/fileserver/media /var/media reiserfs rw,noatime 0 0</pass></dump></options></type></mount></file>

Si vous le comparez à la sauvegarde du fichier original, /etc/fstab_orig, vous remarquerez que nous avons ajouté les lignes :

/dev/fileserver/share   /var/share     ext3       rw,noatime    0 0
/dev/fileserver/backup    /var/backup      xfs        rw,noatime    0 0
/dev/fileserver/media    /var/media      reiserfs   rw,noatime    0 0

Redémarrez maintenant le système :

shutdown -r now

Après le redémarrage, exécutez à nouveau :

df -h

Il devrait encore montrer nos volumes logiques dans la sortie :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  666M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M  100K   10M   1% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-share
                       40G  177M   38G   1% /var/share
/dev/mapper/fileserver-backup
                      5.0G  144K  5.0G   1% /var/backup
/dev/mapper/fileserver-media
                      1.5G   33M  1.5G   3% /var/media

Nous avons maintenant terminé notre configuration LVM sur RAID1.

8. Remplacement des disques durs par des plus gros

Nous utilisons actuellement quatre disques durs d'une taille de 25 Go chacun (du moins agissons-nous comme tel). Supposons maintenant que cela ne suffise plus et que nous ayons besoin de plus d'espace dans notre configuration RAID. Nous allons donc remplacer nos disques durs de 25 Go par des disques de 80 Go (en réalité, nous utiliserons toujours les disques actuels, mais avec leur pleine capacité – dans la vie réelle, vous remplaceriez vos vieux petits disques par de nouveaux plus gros).

La procédure est la suivante : d'abord, nous retirons /dev/sdb et /dev/sdd des matrices RAID, les remplaçons par des disques plus gros, les remettons dans les matrices RAID, puis nous faisons de même avec /dev/sdc et /dev/sde.

Marquons d'abord /dev/sdb1 comme défaillant :

mdadm --manage /dev/md0 --fail /dev/sdb1
server1:~# mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

La sortie de :

cat /proc/mdstat

ressemble maintenant à ceci :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sdc1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sde1[0] sdd1[1]
      24418688 blocks [2/2] [UU]

unused devices: <none></none>

Ensuite, nous retirons /dev/sdb1 de la matrice RAID /dev/md0 :

mdadm --manage /dev/md0 --remove /dev/sdb1
server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sdc1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sde1[0] sdd1[1]
      24418688 blocks [2/2] [UU]

unused devices: <none></none>

Nous faisons de même avec /dev/sdd1 :

mdadm --manage /dev/md1 --fail /dev/sdd1
server1:~# mdadm --manage /dev/md1 --fail /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md1
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sdc1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sde1[0] sdd1[2](F)
      24418688 blocks [2/1] [U_]

unused devices: <none></none>
mdadm --manage /dev/md1 --remove /dev/sdd1
server1:~# mdadm --manage /dev/md1 --remove /dev/sdd1
mdadm: hot removed /dev/sdd1
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sdc1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sde1[0]
      24418688 blocks [2/1] [U_]

unused devices: <none></none>

Sur un système réel, vous l'arrêteriez maintenant, retireriez les disques de 25 Go /dev/sdb et /dev/sdd et les remplaceriez par des disques de 80 Go. Comme je l'ai dit plus tôt, nous n'avons pas à le faire car tous les disques durs ont déjà une capacité de 80 Go.

Ensuite, nous devons formater /dev/sdb et /dev/sdd. Nous devons créer une partition /dev/sdb1 et /dev/sdd1 de type fd (détection automatique RAID Linux), de taille 25 Go (les mêmes paramètres que sur les anciens disques), et une partition /dev/sdb2 et /dev/sdd2 de type fd qui couvre le reste des disques. Comme /dev/sdb1 et /dev/sdd1 sont toujours présents sur nos disques, nous devons seulement créer /dev/sdb2 et /dev/sdd2 dans cet exemple particulier.

fdisk /dev/sdb
server1:~# fdisk /dev/sdb

The number of cylinders for this disk is set to 10443.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): <-- p

Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        3040    24418768+  fd  Linux raid autodetect

Command (m for help): <-- n
Command action
   e   extended
   p   primary partition (1-4)
<-- p
Partition number (1-4): <-- 2
First cylinder (3041-10443, default 3041): <-- <ENTER> 
Using default value 3041
Last cylinder or +size or +sizeM or +sizeK (3041-10443, default 10443): <-- <ENTER> 
Using default value 10443

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)

Command (m for help): <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Faites de même pour /dev/sdd :

fdisk /dev/sdd

La sortie de :

fdisk -l

ressemble maintenant à ceci :

server1:~# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          18      144553+  83  Linux
/dev/sda2              19        2450    19535040   83  Linux
/dev/sda4            2451        2610     1285200   82  Linux swap / Solaris

Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        3040    24418768+  fd  Linux raid autodetect
/dev/sdb2            3041       10443    59464597+  fd  Linux raid autodetect

Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        3040    24418768+  fd  Linux raid autodetect

Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        3040    24418768+  fd  Linux raid autodetect
/dev/sdd2            3041       10443    59464597+  fd  Linux raid autodetect

Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1        3040    24418768+  fd  Linux raid autodetect

Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1               1        3040    24418768+  8e  Linux LVM

Disk /dev/md1: 25.0 GB, 25004736512 bytes
2 heads, 4 sectors/track, 6104672 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/md0: 25.0 GB, 25004736512 bytes
2 heads, 4 sectors/track, 6104672 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md0 doesn't contain a valid partition table

Maintenant, nous ajoutons à nouveau /dev/sdb1 à /dev/md0 et /dev/sdd1 à /dev/md1 :

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdd1
server1:~# mdadm --manage /dev/md1 --add /dev/sdd1
mdadm: re-added /dev/sdd1

Les deux matrices RAID vont maintenant se synchroniser. Nous devons attendre la fin de cette synchronisation avant de continuer. Nous pouvons vérifier l'état avec :

cat /proc/mdstat

La sortie pendant la synchronisation ressemble à ceci :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sdb1[1] sdc1[0]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  9.9% (2423168/24418688) finish=2.8min speed=127535K/sec

md1 : active raid1 sdd1[1] sde1[0]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  6.4% (1572096/24418688) finish=1.9min speed=196512K/sec

unused devices: <none></none>

et comme ceci une fois terminée :

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sdb1[1] sdc1[0]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sdd1[1] sde1[0]
      24418688 blocks [2/2] [UU]

unused devices: <none></none>

Maintenant, nous répétons le même processus en remplaçant /dev/sdc et /dev/sde :

mdadm --manage /dev/md0 --fail /dev/sdc1
mdadm --manage /dev/md0 --remove /dev/sdc1
mdadm --manage /dev/md1 --fail /dev/sde1
mdadm --manage /dev/md1 --remove /dev/sde1

fdisk /dev/sdc
fdisk /dev/sde

mdadm --manage /dev/md0 --add /dev/sdc1
mdadm --manage /dev/md1 --add /dev/sde1

cat /proc/mdstat

Attendez la fin de la synchronisation.

Ensuite, nous créons les matrices RAID /dev/md2 à partir de /dev/sdb2 et /dev/sdc2, ainsi que /dev/md3 à partir de /dev/sdd2 et /dev/sde2.

mdadm --create /dev/md2 --auto=yes -l 1 -n 2 /dev/sdb2 /dev/sdc2
server1:~# mdadm --create /dev/md2 --auto=yes -l 1 -n 2 /dev/sdb2 /dev/sdc2
mdadm: array /dev/md2 started.
mdadm --create /dev/md3 --auto=yes -l 1 -n 2 /dev/sdd2 /dev/sde2
server1:~# mdadm --create /dev/md3 --auto=yes -l 1 -n 2 /dev/sdd2 /dev/sde2
mdadm: array /dev/md3 started.

Les nouvelles matrices RAID doivent être synchronisées avant de continuer, vérifiez donc :

cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md3 : active raid1 sde2[1] sdd2[0]
      59464512 blocks [2/2] [UU]
      [=>...................]  resync =  5.1% (3044224/59464512) finish=5.5min speed=169123K/sec

md2 : active raid1 sdc2[1] sdb2[0]
      59464512 blocks [2/2] [UU]
      [=>...................]  resync =  5.5% (3312512/59464512) finish=9.3min speed=100379K/sec

md0 : active raid1 sdc1[0] sdb1[1]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sde1[0] sdd1[1]
      24418688 blocks [2/2] [UU]

unused devices: <none></none>

Une fois la synchronisation terminée, nous préparons /dev/md2 et /dev/md3 pour LVM :

pvcreate /dev/md2 /dev/md3
server1:~# pvcreate /dev/md2 /dev/md3
  Physical volume "/dev/md2" successfully created
  Physical volume "/dev/md3" successfully created

et ajoutons /dev/md2 et /dev/md3 à notre groupe de volumes fileserver :

vgextend fileserver /dev/md2 /dev/md3
server1:~# vgextend fileserver /dev/md2 /dev/md3
  Volume group "fileserver" successfully extended

Exécutons maintenant nos commandes *display :

pvdisplay
server1:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               0
  Allocated PE          5961
  PV UUID               7JHUXF-1R2p-OjbJ-X1OT-uaeg-gWRx-H6zx3P

  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               fileserver
  PV Size               23.29 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              5961
  Free PE               18
  Allocated PE          5943
  PV UUID               pwQ5AJ-RwVK-EebA-0Z13-d27d-2IdP-HqT5RW

  --- Physical volume ---
  PV Name               /dev/md2
  VG Name               fileserver
  PV Size               56.71 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              14517
  Free PE               14517
  Allocated PE          0
  PV UUID               300kTo-evxm-rfmf-90LA-4YOJ-2LG5-t4JHnf

  --- Physical volume ---
  PV Name               /dev/md3
  VG Name               fileserver
  PV Size               56.71 GB / not usable 0
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              14517
  Free PE               14517
  Allocated PE          0
  PV UUID               LXFSW6-7LQX-ZGGU-dV95-jQgg-TK44-U5JOjO
vgdisplay
server1:~# vgdisplay
  --- Volume group ---
  VG Name               fileserver
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  26
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               159.98 GB
  PE Size               4.00 MB
  Total PE              40956
  Alloc PE / Size       11904 / 46.50 GB
  Free  PE / Size       29052 / 113.48 GB
  VG UUID               dQDEHT-kNHf-UjRm-rmJ3-OUYx-9G1t-aVskI1
lvdisplay
server1:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/fileserver/share
  VG Name                fileserver
  LV UUID                bcn3Oi-vW3p-WoyX-QlF2-xEtz-uz7Z-4DllYN
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                40.00 GB
  Current LE             10240
  Segments               2
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/fileserver/backup
  VG Name                fileserver
  LV UUID                vfKVnU-gFXB-C6hE-1L4g-il6U-78EE-N8Sni8
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                5.00 GB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1

  --- Logical volume ---
  LV Name                /dev/fileserver/media
  VG Name                fileserver
  LV UUID                H1gagh-wTwH-Og0S-cJNQ-BgX1-zGlM-LwLVzE
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                1.50 GB
  Current LE             384
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:2

Si vos sorties sont similaires, vous avez réussi à remplacer vos petits disques durs par des plus gros.

Maintenant que nous avons plus d'espace disque (2 * 23,29 Go + 2 * 56,71 Go = 160 Go), nous pourrions agrandir nos volumes logiques. Jusqu'à présent, vous savez comment agrandir les partitions ext3 et reiserfs, alors agrandissons maintenant notre volume logique backup qui utilise xfs :

lvextend -L10G /dev/fileserver/backup
server1:~# lvextend -L10G /dev/fileserver/backup
  Extending logical volume backup to 10.00 GB
  Logical volume backup successfully resized

Pour agrandir le système de fichiers xfs, exécutez :

xfs_growfs /dev/fileserver/backup
server1:~# xfs_growfs /dev/fileserver/backup
meta-data=/dev/fileserver/backup    isize=256    agcount=8, agsize=163840 blks
         =                       sectsz=512   attr=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0
data blocks changed from 1310720 to 2621440

La sortie de :

df -h

devrait maintenant ressembler à ceci :

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  666M   17G   4% /
tmpfs                  78M     0   78M   0% /lib/init/rw
udev                   10M  116K  9.9M   2% /dev
tmpfs                  78M     0   78M   0% /dev/shm
/dev/sda1             137M   17M  114M  13% /boot
/dev/mapper/fileserver-share
                       40G  177M   38G   1% /var/share
/dev/mapper/fileserver-backup
                       10G  272K   10G   1% /var/backup
/dev/mapper/fileserver-media
                      1.5G   33M  1.5G   3% /var/media

Voilà ! Si vous êtes arrivé jusqu'ici, vous devriez maintenant être familiarisé avec LVM et LVM sur RAID.

Étiquettes: LVM Logical Volume Manager Linux RAID1 ext3

Publié le 23 juin à 19h37