1. Note préliminaire
Ce tutoriel s'inspire de deux articles que j'ai lus :
- http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html
- http://www.debian-administration.org/articles/410
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.