OVH Community, votre nouvel espace communautaire.

[How-to] Swap Raid0 sur SSD et carte LSI - Serveur Hybrid


Dga
01/09/2010, 01h45
Vous pouvez retrouver ce tuto sur mon blog
http://lnk.sweetweb.fr/SwapRaid0


J’ai plein de notes sur mon google docs, et je me suis dit pourquoi pas partager mon expérience avec vous.


Je me suis inspiré du tuto de Toorop (blog.toorop.fr) visible à cette adresse :
How To: Serveur OVH Hybrid (SSD+SATA) sous openvz « In My Mind

Je suis en plein test de Xen, je le test sur les derniers EG Hybrid d’OVH avec une carte Raid LSI, 2 HDD 750Go et 2 SSD 80Go.

80Go étant trop petit à mon gout, je me sert de mes 2 SSD de swap ! En raid0 donc ça fait environ 150Go de swap!
Heu oui, vous avez bien lu 150Go de swap, c’est énorme, un peu du gâchis j’avoue. Mais je veux pas ralentir mes VMs quand l’une d’elle va swapé.

! Attention, ce tutoriel n’a rien avoir avec Xen, si vous voulez que la swap des VMs soit sur les SSD en raid0 il faudra créer une partition lvm vide et non une partition swap !


Un petit peu de teasing !
Code:
# free -m
total used free shared buffers cached
Mem: 12031 441 11589 0 9 93
-/+ buffers/cache: 338 11692
Swap: 151534 0 151534

# hdparm -tT /dev/sdb

/dev/sdb:
Timing cached reads: 34736 MB in 2.00 seconds = 17384.13 MB/sec
Timing buffered disk reads: 1558 MB in 3.00 seconds = 519.30 MB/sec
Pas mal, non ?

Depuis quelques mois OVH a renouvelé ses cartes raid, c’est pas plus mal, car j’en ai une sur un vieux EG et avec, tu dépasses pas les 50 Mo/s
On passe donc d’une vieille carte 3ware à une LSI (LSI Logic SAS1064E B3) flambant « neuf », l’option raid hard est payante par contre alors qu’avant non, mais au moins on peut enfin profiter de la puissance des SSD avec du raid hard sur des machines OVH.

J’ai rien contre le raid soft, je l’utilise sur la plupart de mes machines et j’en suis très satisfait, mais je voulais tester cette nouvelle carte.
On va commencer par effacer toutes les partitions du SSD, la commande magique « lsiutil »

On sélectionne notre carte raid : 1
Ensuite direction Raid actions : 21
Pou vérifier si vos SSD font bien partie du volume 1, affichez les volumes : 1

Vous devriez avoir ceci
Code:
2 volumes are active, 4 physical disks are active

Volume 0 is Bus 0 Target 0, Type IM (Integrated Mirroring)
Volume Name:
Volume WWID: 024ea689498e459d
Volume State: optimal, enabled
Volume Settings: write caching disabled, auto configure
Volume draws from Hot Spare Pools: 0
Volume Size 715255 MB, 2 Members
Primary is PhysDisk 1 (Bus 0 Target 10)
Secondary is PhysDisk 0 (Bus 0 Target 1)

Volume 1 is Bus 0 Target 2, Type IM (Integrated Mirroring)
Volume Name:
Volume WWID: 0a32a61241aa4464
Volume State: optimal, enabled
Volume Settings: write caching disabled, auto configure
Volume draws from Hot Spare Pools: 0
Volume Size 75340 MB, 2 Members
Primary is PhysDisk 2 (Bus 0 Target 11)
Secondary is PhysDisk 3 (Bus 0 Target 3)
2 volumes et 4 disques, par défaut les deux volumes sont en raid1 (Mirroring), ceux qui nous intéressent sont les deux SSD de 75340 Mo.
On va effacer le volume 1, tapez 31 puis il vous demande quel volume est à supprimer ici le 1, vous confirmez.
Code:
RAID actions menu, select an option: [1-99 or e/p/w or 0 to quit] 31
Volume: [0-1 or RETURN to quit] 1
All data on Volume 1 will be lost!
Are you sure you want to continue? [Yes or No, default is No] Yes
Volume 1 is being deleted
RAID ACTION returned IOCLogInfo = 00000001
Nous allons recréer le volume mais cette fois-ci en raid0, tapez 30
Là on voit deux disques de libres.
Code:
RAID actions menu, select an option: [1-99 or e/p/w or 0 to quit] 30

B___T___L Type Vendor Product Rev Disk Blocks Disk MB
1. 0 2 0 Disk ATA INTEL SSDSA2M080 02HD 156301488 76319
2. 0 3 0 Disk ATA INTEL SSDSA2M080 02HD 156301488 76319

To create a volume, select 2 or more of the available targets
select 2 to 10 targets for a mirrored volume
select 2 to 10 targets for a striped volume
Selectionnez le premier : 1, puis le deuxième : 2.
Code:
Select a target: [1-2 or RETURN to quit] 1
Select a target: [1-2 or RETURN to quit] 2

2 physical disks were created
Ensuite on a le choix entre un raid1 (Mirroring) ou du Raid0 (Striping), donc tapez 1, si vous voulez utiliser la totalité des SSD laissez la valeur par défaut (151,5 Go), j’ai laissé tout par défaut.
Code:
Select volume type: [0=Mirroring, 1=Striping, default is 0] 1
Select volume size: [1 to 151536 MB, default is 151536]
Select stripe size: [4 to 256 KB, default is 64]
Enable write caching: [Yes or No, default is Yes]
Zero the first and last blocks of the volume? [Yes or No, default is No]
Skip initial volume resync? [Yes or No, default is No]

Volume was created
Pour vérifiez, un petit show volume, 1
Code:
RAID actions menu, select an option: [1-99 or e/p/w or 0 to quit] 1

2 volumes are active, 4 physical disks are active

Volume 0 is Bus 0 Target 0, Type IM (Integrated Mirroring)
Volume Name:
Volume WWID: 024ea689498e459d
Volume State: optimal, enabled
Volume Settings: write caching disabled, auto configure
Volume draws from Hot Spare Pools: 0
Volume Size 715255 MB, 2 Members
Primary is PhysDisk 1 (Bus 0 Target 10)
Secondary is PhysDisk 0 (Bus 0 Target 1)

Volume 1 is Bus 0 Target 2, Type IS (Integrated Striping)
Volume Name:
Volume WWID: 0d71b19c9d6d48f2
Volume State: optimal, enabled
Volume Settings: write caching enabled
Volume Size 151536 MB, Stripe Size 64 KB, 2 Members
Member 0 is PhysDisk 2 (Bus 0 Target 11)
Member 1 is PhysDisk 3 (Bus 0 Target 3)
On a bien les HDD en Raid1 et les SSD en Raid0, vous pouvez quitter l’utilitaire avec 0.

Nous allons pouvoir créer notre partition pour la swap.
On va vérifier sous quel nom sont les SSD, tapez fdisk -l

Vous devriez avoir ceci:
Code:
# fdisk -l

Disk /dev/sda: 749.9 GB, 749999226880 bytes
255 heads, 63 sectors/track, 91182 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 9562 76800993 83 Linux
/dev/sda2 9562 9627 524288 82 Linux swap / Solaris
/dev/sda3 9627 91182 655094102+ f W95 Ext’d (LBA)
/dev/sda5 9627 91182 655094102 8e Linux LVM

Disk /dev/sdb: 158.8 GB, 158897012736 bytes
255 heads, 63 sectors/track, 19318 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn’t contain a valid partition table
Ici notre volume est monté sous /dev/sdb
Code:
# fdisk /dev/sdb
Tapez m, pour voir la liste des commandes :
Code:
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)
Tapez l pour afficher les différents types de partitions :
Code:
Command (m for help): l

0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx
5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
Celle qui nous intéresse c’est n (add a new partition) et 83 (Linux swap / Solaris)
Code:
Command (m for help): n 83
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19318, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-19318, default 19318):
Using default value 19318
Ensuite pour valider et quitter tapez w (write table to disk and exit)

Cependant si on fait un petit fdisk -l on s’aperçoit que notre partition n’est pas pour la swap. On refait fdisk /dev/sdb, tapez t 83 pour changer le type de partition, et tapez 82 puis w.
Code:
# fdisk /dev/sdb
Command (m for help): t 83
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

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

Calling ioctl() to re-read partition table.
Syncing disks.
Code:
# fdisk -l

Disk /dev/sda: 749.9 GB, 749999226880 bytes
255 heads, 63 sectors/track, 91182 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 9562 76800993 83 Linux
/dev/sda2 9562 9627 524288 82 Linux swap / Solaris
/dev/sda3 9627 91182 655094102+ f W95 Ext’d (LBA)
/dev/sda5 9627 91182 655094102 8e Linux LVM

Disk /dev/sdb: 158.8 GB, 158897012736 bytes
255 heads, 63 sectors/track, 19318 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 19318 155171803+ 82 Linux swap / Solaris
Maintenant il va falloir dire à notre système d’utiliser /dev/sdb1 et non /dev/sda2 comme swap
Code:
# mkswap -c /dev/sdb1
Celà peut prendre une bonne dizaine de minutes avec une partition de 150Go !
# Setting up swapspace version 1, size = 158895919 kB

On désactive l’ancienne swap
Code:
# swapoff /dev/sda2
Et on active la nouvelle
Code:
# swapon /dev/sdb1
Ne pas oublier d’éditer /etc/fstab pour que cette nouvelle partition soit monté, car sinon au prochain reboot vous allez avoir des surprise.
Code:
# nano /etc/fstab
Celà devrait ressembler à ceci après modificaiton :
Code:
/dev/sda1 / ext3 errors=remount-ro 0 1
#/dev/sda2 swap swap defaults 0 0
/dev/sdb1 swap swap defaults 0 0
#/dev/vg/lv1 /vps ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts defaults 0 0
Ensuite pour monter le nouveau volume et retirer l’ancien
Code:
# mount -a
Et voilà la bête :
Code:
# free -m
total used free shared buffers cached
Mem: 12028 436 11592 0 9 90
-/+ buffers/cache: 336 11692
Swap: 151534 0 151534
Un petit reboot pour être sur que tout va bien. (pas obligatoire, mais au moins au prochain reboot si il y a une merde, on sera que ça ne viendra pas de notre swap)

Pour les curieux vous pouvez faire un test d’écriture sur le volume en Raid0 avec hdparm
Code:
# hdparm -tT /dev/sdb

/dev/sdb:
Timing cached reads: 34736 MB in 2.00 seconds = 17384.13 MB/sec
Timing buffered disk reads: 1558 MB in 3.00 seconds = 519.30 MB/sec
Et pour comparer avec les HDD
Code:
# hdparm -tT /dev/sda

/dev/sda:
Timing cached reads: 33924 MB in 2.00 seconds = 16977.16 MB/sec
Timing buffered disk reads: 352 MB in 3.01 seconds = 116.95 MB/sec
J’attend avec impatience les futurs SSD 600Go d’intel, comme ça un petit raid10 avec 6 SSD 600Go et 2 SSD 32Go en raid0 pour la swap et là mes VMs seront des petites fusées.

Bon c’est pas pour tout de suite, fin d’année 2010 d’après Octave (et mon porte feuille n’est pas encore prêt).