Criar e utilizar volumes lógicos com Mutlipath no Linux
Olá a todos.
Neste post, vou comentar sobre LVM (Logical Volume Manager) no Oracle Enterprise Linux 6.4 com Multipath. Aconteceu com uma necessidade que tive de configurar um LVM para poder sanar com a necessidade de movimentar dados entre uma partição e outra, e assim prejudicar performance, ou criar uma janela de manutenção. Vou escrever como gerenciar os volumes lógicos do linux de forma simples e fácil.
Neste post, vou comentar sobre LVM (Logical Volume Manager) no Oracle Enterprise Linux 6.4 com Multipath. Aconteceu com uma necessidade que tive de configurar um LVM para poder sanar com a necessidade de movimentar dados entre uma partição e outra, e assim prejudicar performance, ou criar uma janela de manutenção. Vou escrever como gerenciar os volumes lógicos do linux de forma simples e fácil.
Como por padrão não instalo a parte gráfica nos servidores que utilizo, então iremos fazer a configuração pela linha de comando, ok?!
O LVM é um gerenciador de disco que trabalha em alto nível fornecendo uma nova visão na forma de trabalhar com partições no sistema.
O LVM trabalha adicionando mais uma camada ao gerenciamento de disco, as partições criadas sobre o LVM podem ser redimencionadas, aumentando ou diminuindo o seu tamanho, além de podermos adicionar novos discos físicos quando o espaço em disco atual acabar, e melhor não teremos que mover os dados de um disco para outro, basta redimencionar as partições atuais. Na versão do Linux que trabalhei, foi executado "online", "a quente".
Você pode usar o LVM em diversos discos ou em apenas um, podendo deixar espaço livre para futuras adequações de espaço ou mover o espaço ocioso de uma partição para outra com pouco espaço.
Na base de um sistema LVM temos os discos rígidos fisicamente conectados ao computador, depois temos as seguintes camadas.
- PV (Physical Volume): Basicamente serve para criar o UUID. O UUID é um identificador unico para cada volume fisico. Nesse artigo iremos chamar os PV de volume físico.
- VG (Volume Group): Um VG é o agrupamento de vários PVs, você pode ter vários VGs, porém se um VG estiver sem espaço e o outro VG tiver espaço de sobra você não poderá usar o espaço livre de um VG para aumentar o outro, em instalação normais é necessário a criação de apenas um VG. Nesse artigo iremos chamar os VG de grupos.
- LV (Logical Volume): Os LVs podem ser grosseiramente chamados de partições, aqui você formata e monta o sistema de arquivos no Linux, essa e a única camada que realmente acessível para o usuário. Nesse artigo iremos chamar os LV simplesmente de volumes.
Bem, vamos colocar a mão na massa.... vamos validar o multipath primeiro:
- Verificar se o "device" esta apresentado;
- Formatar o mesmo como Linux LVM
[root@u2 ~]# multipath -ll
May 21 13:32:28 | multipath.conf line 99, duplicate keyword: blacklistmpathb (36001438007f2d7970000400002130000) dm-0 HP,HSV300
size=50G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 0:0:0:1 sdb 8:16 active ready running
| `- 1:0:0:1 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 0:0:1:1 sdc 8:32 active ready running
`- 1:0:2:1 sde 8:64 active ready running
[root@u2 ~]# fdisk /dev/mapper/mpathb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xe147c1e0.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): c
DOS Compatibility flag is not set
Command (m for help): u
Changing display/entry units to sectors
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-104857599, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599):
Using default value 104857599
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): l
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/mapper/mpathb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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 identifier: 0xe147c1e0
Device Boot Start End Blocks Id System
/dev/mapper/mpathbp1 2048 104857599 52427776 8e Linux LVM
Aqui eu vou criar apenas uma partição de 50Gb.
Agora precisamos criar o volume físico, para cria-lo basta usar o comando pvcreate.
[root@u2 ~]# pvcreate /dev/mapper/mpathbp1
Writing physical volume data to disk "/dev/mapper/mpathbp1"
Physical volume "/dev/mapper/mpathbp1" successfully created
Para criar um volume físico você não precisa atribuir nenhum nome para ele, epenas apontar qual o dispositivo que deverá ser usado.
Para ver como ficou o seu volume físico basta usar o comando pvdisplay.
[root@u2 ~]# pvdisplay
"/dev/mapper/mpathbp1" is a new physical volume of "50.00 GiB"
--- NEW Physical volume ---
PV Name /dev/mapper/mpathbp1
VG Name
PV Size 50.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID OwAHM8-JojR-l4y8-ncXQ-ehxi-9aMo-YkbNJt
Note que o VG Name está vazio, isso indica que o nosso volume físico ainda não participa de nenhum grupo, e na última linha podemos ver o PV UUID, esse número é que vai identificar o nosso volume físico dentro da estrutura do LVM.
Um grupo é a união de um ou mais volumes físicos. O comando para criar um grupo é o vgcreate, obrigatoriamente você deve especificar o nome do grupo e quais os volumes físicos que farão parte deste grupo.
Um grupo é a união de um ou mais volumes físicos. O comando para criar um grupo é o vgcreate, obrigatoriamente você deve especificar o nome do grupo e quais os volumes físicos que farão parte deste grupo.
[root@u2 ~]# vgcreate oradata /dev/mapper/mpathbp1
Volume group "oradata" successfully created
Você pode especificar mais de um volume físico, indicando-os entre espaços vgcreate dados /dev/hdc1 /dev/hdc2 /dev/hdc3. Agora que criamos o nosso grupo vamos ver como ele ficou, para isso vamos usar o comando vgdisplay.
[root@u2 ~]# vgdisplay
--- Volume group ---
VG Name oradata
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 50.00 GiB
PE Size 4.00 MiB
Total PE 12799
Alloc PE / Size 0 / 0
Free PE / Size 12799 / 50.00 GiB
VG UUID Q5fSB5-i0aU-KnmW-aRnX-mU7F-Ekt2-K18JEh
Aqui temos diversas informação sobre o grupo, uma informação muito importante é Alloc PE / Size e Free PE / Size que respectivamente mostram quanto do espaço em disco do grupo está em uso e quanto está livre para ser alocado.
Se você executar o comando pvdisplay agora poderá notar algumas mudanças como informações sobre o nome do volume e outras sobre a alocação do volume físico, veja abaixo.
[root@u2 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/mapper/mpathbp1
VG Name oradata
PV Size 50.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12799
Free PE 12799
Allocated PE 0
PV UUID OwAHM8-JojR-l4y8-ncXQ-ehxi-9aMo-YkbNJt
Para criar um volume iremos usar o comando lvcreate
[root@u2 ~]# lvcreate --name bi --size 51190M oradata
Rounding up size to full physical extent 49.99 GiB
Logical volume "bi" created
Aqui criamos um uma “partição” com o nome bi com o tamanho 50Gb no grupo backup.
Para ver as informações sobre todos os volumes no seu sistema você pode utilizar o comando lvdisplay sem argumentos ou lvdisplay NOME_DO_GROPO.
[root@u2 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/oradata/bi
LV Name bi
VG Name oradata
LV UUID PYRgSC-X5OK-4hjY-8JTF-8uu2-Zb1z-pWQJGM
LV Write Access read/write
LV Creation host, time u2.cimentoitambe.net, 2014-05-21 14:01:13 -0300
LV Status available
# open 0
LV Size 49.99 GiB
Current LE 12798
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:2
Se você executar o comando vgdisplay poderá ver que o Alloc PE / Size e o Free PE / Size mudaram.
Agora que já criamos um volume podemos trabalhar com ele como uma partição normal, a unica diferença e que ao invés de você acessar o /dev/mapper/mpathcp1 você irá acessar o /dev/GRUPO/VOLUME, por exemplo.
Aqui eu estou utilizando o ext4 como sistema de arquivo principal.
[root@u2 ~]# mkfs.ext4 /dev/oradata/bi
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13105152 blocks
655257 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Depois de criado o sistema de arquivos podemos montar e até mesmo adiciná-lo no /etc/fstab indicando o ponto de montagem como /dev/oradata-bi que será criado automaticamente pelo volume.
[root@u2 ~]# mkdir /u01/app/oracle/lvm
[root@u2 ~]# mkdir /u01/app/oracle/lvm
[root@u2 ~]# chown -R oracle:oinstall /u01/app/oracle/lvm/
[root@u2 ~]# mount /dev/oradata/bi /u01/app/oracle/lvm
[root@u2 ~]# mount /dev/oradata/bi /u01/app/oracle/lvm
[oracle@u2 ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on Wed May 21 14:36:30 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
14:36:30 @ > conn / as sysdba
Connected to an idle instance.
14:36:34 SYS@bi > startup
ORACLE instance started.
Total System Global Area 5.0641E+10 bytes
Fixed Size 2240136 bytes
Variable Size 5637144952 bytes
Database Buffers 4.4963E+10 bytes
Redo Buffers 39092224 bytes
Database mounted.
Database opened.
14:36:52 SYS@bi > CREATE TABLESPACE TBS_TESTE DATAFILE '/u01/app/oracle/lvm/tbs_teste' SIZE 10737418240;
Tablespace created.
Elapsed: 00:01:16.58
14:38:09 SYS@bi >
Para não me estender no post, vou dar continuidade nesse trabalho em um novo, aonde iremos manuzear esse volume, ok???
Conforme eu for criando o mesmo, vou adicionando links nesse.
Bom trabalho a todos e boa sorte !
Para não me estender no post, vou dar continuidade nesse trabalho em um novo, aonde iremos manuzear esse volume, ok???
Conforme eu for criando o mesmo, vou adicionando links nesse.
Bom trabalho a todos e boa sorte !
Nenhum comentário:
Postar um comentário