Come creare un mirror Lvm su Linux

Nel mondo dei computer, l’archiviazione è il fattore più importante. Se i dati vengono persi, tutto viene perso per l’organizzazione o l’azienda. Inizialmente, i dati vengono archiviati su dischi normali, non ha la flessibilità per gestire i dati ed è molto complicato e disastroso gestire il ripristino. Per raggiungere la flessibilità e l’obiettivo di gestione del ripristino di emergenza, viene introdotto il RAID. Utilizzando RAID, la ridondanza può essere mantenuta, ma manca ancora la flessibilità per gestire il file system e la gestione dello storage. Logical Volume Manager (LVM) fornisce una vista di primo livello dell’archiviazione su disco. LVM è tradizionalmente associato a una grande installazione contenente molti dischi, e anche molti, in un piccolo ambiente.
LVM ha molte funzionalità, come il ridimensionamento dei gruppi di volumi online assorbendo nuovi volumi fisici (PV) o rimuovendo i PV esistenti e ridimensionando i volumi logici (LV) online aggiungendo o rimuovendo le estensioni fisiche al LV esistente. Usando LVM, puoi creare istantanee di sola lettura e lettura-scrittura di LV. È possibile eseguire lo striping o il mirroring di tutti o parte di LV su più PV, in modo simile a RAID 0 o RAID 1. È possibile spostare LV online tra PV. LVM funzionerà anche in un cluster di archiviazione condiviso. Mostreremo i passaggi per creare il mirroring LVM
1) Crea una partizione
Per creare il mirror LVM, devi assicurarti di avere spazio libero. Nel nostro caso, creeremo due partizioni usando il comando fdisk (puoi usare una partizione o un intero disco). Prima di creare la partizione accertarsi di quanti cilindri sono stati utilizzati e quanti sono liberi.
Controllo dello spazio libero per creare una partizione.
# fdisk -l
Disk /dev/sdf: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdf1 * 1 765 6144831 83 Linux
/dev/sdf2 766 892 1020127+ 82 Linux swap / Solaris
Il comando precedente mostra che i cilindri totali sono 1305 e i cilindri utilizzati sono 892. Significa che hai ancora cilindri liberi, quindi possiamo creare una partizione.
Creazione di due nuove partizioni utilizzando fdisk.
# fdisk /dev/sdf
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3):
First sector (391168-20971519, default 391168):
Using default value 391168
Last sector, +sectors or +size{K,M,G} (391168-20971519, default 20971519): +100MB
Partition 3 of type Linux and of size 95 MiB is set
Command (m for help): t
Partition number (1-3, default 3):
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
Selected partition 4
First sector (585728-20971519, default 585728):
Using default value 585728
Last sector, +sectors or +size{K,M,G} (585728-20971519, default 20971519): +100MB
Partition 4 of type Linux and of size 95 MiB is set
Command (m for help): t
Partition number (1-4, default 4):
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Disk /dev/sdf: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xabe92155
Device Boot Start End Blocks Id System
/dev/sdf1 * 1 765 6144831 83 Linux
/dev/sdf2 766 892 1020127+ 82 Linux swap/Solaris
/dev/sdf3 391168 585727 97280 8e Linux LVM
/dev/sdf4 585728 780287 97280 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Assicurati che l’ID della partizione sia 8e durante la creazione delle partizioni.
2) Crea volume fisico
Ora che abbiamo le partizioni libere, dobbiamo creare un volume fisico con le partizioni di cui sopra.
Crea volume fisico
# pvcreate /dev/sdf[3,4]
Physical volume "/dev/sdf3" successfully created
Physical volume "/dev/sdf4" successfully created
Il comando precedente inizializzerà la partizione come partizione LVM. Qui LVM assegnerà il PV e l’UUID solo alla partizione.
3) Creare un gruppo di volumi
Ora che abbiamo creato il nostro volume fisico, dobbiamo creare un gruppo di volumi. Se hai già un VG basato su due o più dischi/partizioni con spazio libero, non è necessario creare un nuovo gruppo di volumi
Crea gruppo di volumi
# vgcreate datavg /dev/sdf[3,4]
Volume group "datavg" successfully created
Il comando precedente creerà gruppi di volumi come datavg. LVM crea la Volume Group Descriptor Area (VGDA). VGDA contiene informazioni sui gruppi di volumi. LVM crea l’estensione fisica (PE).
4) Creazione di un volume logico speculare
Quando si creano volumi con mirroring in un gruppo di volumi specifico, è necessario specificare il numero di copie dei dati richiesti con -m
l’argomento del comando lvcreate. Per creare una copia speculare dei dati, è necessario specificare il file as -m1
. affermando -m1
crea un mirror, che genera due copie del file system.
Crea specchio lv
# lvcreate -L 50M -m1 -n mirrorlv datavg
Rounding up size to full physical extent 52.00 MB
Logical volume "mirrorlv" created
Nel comando precedente, ho creato 50 MB di dimensione LV con 1 copia dei dati da mantenere. Possiamo controllare con
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 17.47g
swap centos -wi-ao---- 2.00g
mirrorlv datavg rwi-a-r--- 50MB
Puoi controllare lo stato LV nello specchio con lvdisplay -v
comando. Basta cercare le informazioni relative al volume logico creato in precedenza come di seguito
# lvdisplay -v
--- Logical volume ---
LV Path /dev/datavg/mirrorlv
LV Name mirrorlv1
VG Name datavg
LV UUID J2kcdf-YxAn-k2d2-KFGS-pnhb-0Zhz-GRECFr
LV Write Access read/write
LV Creation host, time centos7-srv, 2017-05-08 03:17:28 +0100
LV Status available
# open 0
LV Size 52.00 MiB
Current LE 13
Mirrored volumes 2
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:18
Puoi vedere Mirrored volumes 2
riga che indica il numero di dischi utilizzati per il volume logico e inoltre possiamo dedurre un’altra informazione che è il tipo del nostro volume logico: capovolto.
5) Crea un filesystem e monta
Ora che abbiamo creato il nostro volume logico, dobbiamo creare un filesystem per accedervi
Utilizzare i comandi seguenti per creare un file system.
# mkfs:ext4 /dev/datavg/mirrorlv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=54525952
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done.
Ora possiamo montare il filesystem in una posizione a nostra scelta. Il metodo più comunemente utilizzato per montare il file system è manualmente, utilizzando il comando mount o aggiungendo voci a /etc/fstab
quindi il file system è stato montato all’avvio.
Monta il file system su /mnt/mirrorlv
Posizione
# mount /dev/datavg/mirrorlv /mnt/mirrorlv
Puoi controllare eseguendo il comando.
# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 5.2G 13G 30% /
devtmpfs 897M 0 897M 0% /dev
tmpfs 912M 156K 912M 1% /dev/shm
tmpfs 912M 9.1M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 497M 189M 309M 38% /boot
tmpfs 183M 8.0K 183M 1% /run/user/1000
/dev/mapper/datavg-mirrorlv 51M 842K 47M 2% /mnt/mirrorlv
Conclusione
Un mirror conserva copie identiche dei dati su dispositivi diversi. Quando i dati vengono scritti su un dispositivo, vengono scritti anche su un secondo dispositivo, rispecchiando i dati. Ciò fornisce protezione per i guasti del dispositivo.