Acasa bullet KB bullet Linux - LVM peste array-uri RAID

Linux - LVM peste array-uri RAID

Aceasta pagina descrie modalitatea in care se pot crea in Linux, din command line partitii LVM peste array-uri RAID.

Acest setup este folosit des in situatiile serverelor pentru firme mici facute sub linux pe masini modeste care nu au controllere RAID dedicate. Necesitatea de a partitiona manual discurile este intalnita cand datorita unui eveniment sau unui upgrade de hardware dorim sa migram datele si aplicatiile de pe o masina fara a fi nevoiti sa reinstalam sistemul de operare si aplicatiile aferente.

Scenariul nostru include doua discuri pe care vom genera doua partitii swap, cate una pe fiecare dintre discuri, o partitie RAID care o vom folosi pentru a retine continutul directorului /boot, si o partitie RAID in care vom construi volume logice sub LVM.

O prima etapa este cea in care refacem partitiile discurilor. Ne vom folosi de un livecd de Centos 5.3 in cazul in care upgrade-ul nu se rezuma doar la discuri ci la tot sistemul. 

Presupunand ca cele doua discuri sunt /dev/sda si /dev/sdb, vom furniza in cele ce urmeaza doar comenzile pe care le vom da pentru a partitiona primul disc, pentru al doilea urmand sa folosim aceleasi comenzi:

# fdisk /dev/sda

Scriem o noua tabela de partitii pentru acest disc:

Command (m for help): o

Generam, pe rand partitiile necesare:

Command (m for help): n

Command action
   e   extended
   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-14593, default 1): 1

Last cylinder, +cylinders or +size{K,M,G} (1-14593, default 14593): +1G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)

p

Partition number (1-4): 2
First cylinder (133-14593, default 133):
Using default value 133
Last cylinder, +cylinders or +size{K,M,G} (133-14593, default 14593):
+512M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)

p

Partition number (1-4): 3
First cylinder (199-14593, default 199):
Using default value 199
Last cylinder, +cylinders or +size{K,M,G} (199-14593, default 14593):
Using default value 14593

Command (m for help): p

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0f73dbf4

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         132     1060258+  83  Linux
/dev/sda2             133         198      530145   83  Linux
/dev/sda3             199       14593   115627837+  83  Linux

Remarcam ca in acest moment partitiile sunt create dar nu sunt de tipul care ne dorim. Le vom modifica folosind comanda 't' si asignand tipul 82 pentru partitia swap si fd pentru partitiile RAID:

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

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): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0f73dbf4

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         132     1060258+  82  Linux swap / Solaris
/dev/sda2             133         198      530145   fd  Linux raid autodetect
/dev/sda3             199       14593   115627837+  fd  Linux raid autodetect

Folositi comanda 'w' pentru a scrie toate modificarile pe disc:

Command (m for help): w,

si partitionati identic si al doilea disc folosind comanda fdisk /dev/sdb.

Urmatorul pas este sa creati array-urile RAID. Acest lucru se realizeaza folosind utilitarul mdadm:

# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2

# mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3

Folositi comanda urmatoare pentru a verifica stadiul sincronizarii array-urilor:

watch -n.5 cat /proc/mdstat. Iata ouputul generat de aceasta comanda in cazul sincronizarii a 4 array-uri RAID:

# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdb7[1] sda7[0]
      783618432 blocks [2/2] [UU]
        resync=DELAYED

md2 : active raid1 sdb6[1] sda6[0]
      579432320 blocks [2/2] [UU]
      [===>.................]  resync = 19.0% (110286656/579432320) finish=278.6min speed=28053K/sec

md1 : active raid1 sdb5[1] sda5[0]
      97667072 blocks [2/2] [UU]

md0 : active raid1 sdb2[1] sda2[0]
      505920 blocks [2/2] [UU]

unused devices: <none>

 

In functie de dimensiunea partitiilor veti avea de asteptat mai mult sau mai putin pana cand acestea se vor sincroniza. Puteti verifica daca device-urile s-au creat folosind comanda:

[root@localhost ~]# ls -l /dev/md*
brw-r----- 1 root disk 9, 0 Aug 28 17:15 /dev/md0
brw-r----- 1 root disk 9, 1 Aug 28 17:33 /dev/md1

Formatati primul array pentru a stoca partitia /boot :

# mkfs.ext3 /dev/md0

Urmeaza sa generam configuratia LVM pe al doilea array:

# pvcreate /dev/md1

Physical volume "/dev/md1" successfully created

# vgcreate mainvg /dev/md1

Volume group "mainvg" successfully created

# lvcreate /dev/mainvg -n rootlv -L 4G

# lvcreate /dev/mainvg -n usrlv -L 4G

# lvcreate /dev/mainvg -n optlv -L 1G

# lvcreate /dev/mainvg -n homelv -L 1G

# lvcreate /dev/mainvg -n tmplv -L 1G

# lvcreate /dev/mainvg -n varlv -L 4G

Logical volume "xxxlv" created

Aceste volume logice le puteti formata folosind de exemplu comanda:

# mkfs.ext3 /dev/mainvg/rootlv