LVM管理

发布 : 2020-03-24 分类 : Linux 浏览 :

环境

Oracle Linux 7.x
服务器 DL380 Gen8
光纤卡 HPE 82Q 8Gb Dual Port PCI-e FC HBA
阵列柜 MSA2040

理论

物理存储介质(The physical media)
如磁盘或LUN等,比如系统认出来的/dev/sda

物理卷(physical volume)
物理卷就是指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,包含LVM的管理信息

卷组(Volume Group)
LVM卷组由一个或多个物理卷组成,可以在卷组上创建一个或多个“LVM分区”(逻辑卷)
卷组的作用类似于非LVM系统中的磁盘

逻辑卷(Logical Volume)
在逻辑卷之上可以建立文件系统(比如/home或者/usr等)
逻辑卷类似于非LVM系统中的硬盘分区

PE(physical extent)
PE是物理卷的基本单位,默认为4MB

LE(logical extent)
LE是逻辑卷的基本单位,在同一个卷组中,LE的大小和PE是相同的,并且一一对应

配置

本例中做完多路径映射的LUN为/dev/mapper/dblun01

创建物理卷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@labdb db12ccdb]# pvcreate /dev/mapper/dblun01
Physical volume "/dev/mapper/dblun01" successfully created.
[root@labdb db12ccdb]# pvdisplay
"/dev/mapper/dblun01" is a new physical volume of "6.54 TiB"
--- NEW Physical volume ---
PV Name /dev/mapper/dblun01
VG Name
PV Size 6.54 TiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID c3mo3X-Z1re-8uwq-mc2f-vTBN-JPsT-HDPkhg

创建卷组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@labdb db12ccdb]# vgcreate dblun01 /dev/mapper/dblun01
Volume group "dblun01" successfully created
[root@labdb db12ccdb]# vgdisplay
--- Volume group ---
VG Name dblun01
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 6.54 TiB
PE Size 4.00 MiB
Total PE 1714705
Alloc PE / Size 0 / 0
Free PE / Size 1714705 / 6.54 TiB
VG UUID ew0syV-ncdU-gta0-4KRX-iDyS-11r2-8xP2yf

创建逻辑卷

创建固定大小的逻辑卷

在卷组dblun01上创建名为oradata 大小为100G的逻辑卷

1
lvcreate -L 100G -n oradata dblun01

创建固定百分比大小的逻辑卷

在卷组dblun01上创建名为oradata 大小卷组50%的逻辑卷

1
lvcreate -l 50%VG -n oradata dblun01

创建使用了卷组所有剩余空间的逻辑卷

在卷组dblun01上创建名为oradata 大小为卷组所有剩余空间的逻辑卷

1
lvcreate -l 100%FREE -n oradata dblun01

删除逻辑卷

首先要umount分区
如果不能删除,需要用fuser先找到哪些线程在用,然后删除

1
2
3
4
5
6
[root@labdb db12cn2]# fuser -v /u05/oradata/db12cn2
USER PID ACCESS COMMAND
/u05/oradata/db12cn2:
root kernel mount /u05/oradata/db12cn2
root 24330 ..c.. bash
root 31344 ..c.. bash

去掉/etc/fstab里面的开机挂载项

删除不需要的逻辑卷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@labdb ~]# lvdisplay
--- Logical volume ---
LV Path /dev/db/db-u09
LV Name db-u09
VG Name db
LV UUID 1eEoLq-Svkg-HdUY-yvUU-g599-kVDo-ekJJxE
LV Write Access read/write
LV Creation host, time labdb, 2019-09-24 11:41:57 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 249:12

[root@labdb ~]# lvremove /dev/db/db-u09
Do you really want to remove active logical volume db/db-u09? [y/n]: y
Logical volume "db-u09" successfully removed

格式化逻辑卷

将逻辑卷/dev/mapper/dblun01-oradata看作一个磁盘,使用前需要格式化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@labdb ~]# mkfs.ext4 /dev/mapper/dblun01-oradata
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=256 blocks
219484160 inodes, 1755857920 blocks
87792896 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3904897024
53585 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

挂载并使用

挂载逻辑卷到某目录,并使用

1
[root@labdb ~]# mount /dev/mapper/dblun01-oradata /u03/oradata/db12ccdb/

查看挂载情况

1
2
3
4
5
6
7
8
9
10
11
[root@labdb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 63G 0 63G 0% /dev
tmpfs 63G 0 63G 0% /dev/shm
tmpfs 63G 27M 63G 1% /run
tmpfs 63G 0 63G 0% /sys/fs/cgroup
/dev/mapper/os-root 20G 4.1G 16G 21% /
/dev/sda2 1014M 204M 811M 21% /boot
tmpfs 13G 12K 13G 1% /run/user/42
tmpfs 13G 0 13G 0% /run/user/0
/dev/mapper/dblun01-oradata 6.5T 89M 6.2T 1% /u03/oradata/db12ccdb

挂载的时候用fdisk -l查出来的/dev/mapper/dblun01-oradata
lvdisplay查出来的/dev/dblun01/oradata都是可以的

扩展逻辑卷

使用lvextend -L来扩展逻辑卷的大小,+号代表增加

1
2
3
[root@labdb oradata]# lvextend -L +60G /dev/db/db-oracle
Size of logical volume db/db-oracle changed from 20.00 GiB (5120 extents) to 80.00 GiB (20480 extents).
Logical volume db/db-oracle successfully resized.

查看发现依然还是扩容前的大小

1
2
3
4
[root@labdb oradata]# df -h
...
/dev/mapper/db-db--oracle 20G 13G 5.9G 69% /u01
...

此时需要用resize2fs使扩容生效,或者在lvextend时使用-r参数自动使配置生效,如lvextend -r -L +60G /dev/db/db-oracle

1
2
3
4
5
6
[root@labdb oradata]# resize2fs /dev/db/db-oracle
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/db/db-oracle is mounted on /u01; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 5
Performing an on-line resize of /dev/db/db-oracle to 20971520 (4k) blocks.
The filesystem on /dev/db/db-oracle is now 20971520 blocks long.

要将vg上剩余的空间都用于lv扩展,如下

1
2
3
4
5
6
7
[root@labdb oradata]# lvextend -r -l +100%FREE /dev/db/db-arch
Size of logical volume db/db-arch changed from 50.00 GiB (12800 extents) to <138.36 GiB (35419 extents).
Logical volume db/db-arch successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/db-db--arch is mounted on /u99/oradata/archive; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 18
The filesystem on /dev/mapper/db-db--arch is now 36269056 blocks long.

History

v1.0 2020.03.12~2020.03.23,初始版本

本文作者 : Shen Peng
原文链接 : http://yoursite.com/2020/03/24/LVM管理/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹