LVM的好处:不同的硬盘之间可以横向扩展,不影响现有的业务。
生产环境中经常会出现这种情况:项目初期使用的磁盘太小,使用了一两年后磁盘容量满了,新的数据无法存储了。就算添加新的硬盘,还得迁移数据等,很麻烦,使用LVM创建逻辑卷,就算磁盘空间占满了,新添加的硬盘可以横向扩展,实现业务不中断的 扩展分区大小。
下面就是如何创建LVM的详细步骤:
1.当服务器添加新的硬盘后,进入系统中:
[root@localhost ~]# fdisk –l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000118b
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41943039 20765696 8e Linux LVM
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0003707b
设备 Boot Start End Blocks Id System
空的 空的 空的
如上图:可以看到新加的硬盘的大小为10.7GB,无分区。
2.可以使用parted和fdisk 命令进行分区,下边使用parted进行分区
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart
分区类型? primary/主分区/extended/扩展分区? p
文件系统类型? [ext2]? ext3
起始点? 0GB
结束点? 3GB
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system 标志
1 1049kB 3000MB 2999MB primary
如上操作为:创建sdb的第一个主分区,分区大小为3GB。
3.通过fdisk 创建扩展分区
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p //print显示现有分区
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0003707b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 5859327 2928640 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):4
起始 扇区 (5859328-20971519,默认为 5859328):5859328
将使用默认值 5859328
Last 扇区, +扇区 or +size{K,M,G} (5859328-20971519,默认为 20971519):20971519
将使用默认值 20971519
分区 4 已设置为 Extended 类型,大小设为 7.2 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0003707b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 5859327 2928640 83 Linux
/dev/sdb4 5859328 20971519 7556096 5 Extended
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (5861376-20971519,默认为 5861376):5861376
将使用默认值 5861376
Last 扇区, +扇区 or +size{K,M,G} (5861376-20971519,默认为 20971519):10000000
分区 5 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (10002049-20971519,默认为 10002432):10002432
将使用默认值 10002432
Last 扇区, +扇区 or +size{K,M,G} (10002432-20971519,默认为 20971519):15000000
分区 6 已设置为 Linux 类型,大小设为 2.4 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 7
起始 扇区 (10002049-20971519,默认为 15003648):15003648
将使用默认值 15003648
Last 扇区, +扇区 or +size{K,M,G} (15003648-20971519,默认为 20971519):
将使用默认值 20971519
分区 7 已设置为 Linux 类型,大小设为 2.9 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0003707b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 5859327 2928640 83 Linux
/dev/sdb4 5859328 20971519 7556096 5 Extended
/dev/sdb5 5861376 10000000 2069312+ 83 Linux
/dev/sdb6 10002432 15000000 2498784+ 83 Linux
/dev/sdb7 15003648 20971519 2983936 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
4.改变分区类型为LVM。
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0003707b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 5859327 2928640 83 Linux
/dev/sdb4 5859328 20971519 7556096 5 Extended
/dev/sdb5 5861376 10000000 2069312+ 83 Linux
/dev/sdb6 10002432 15000000 2498784+ 83 Linux
/dev/sdb7 15003648 20971519 2983936 83 Linux
命令(输入 m 获取帮助):t
分区号 (1,4-7,默认 7):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1,4-7,默认 7):5
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1,4-7,默认 7):6
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1,4-7,默认 7):7
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0003707b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 5859327 2928640 8e Linux LVM
/dev/sdb4 5859328 20971519 7556096 5 Extended
/dev/sdb5 5861376 10000000 2069312+ 8e Linux LVM
/dev/sdb6 10002432 15000000 2498784+ 8e Linux LVM
/dev/sdb7 15003648 20971519 2983936 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
如上操作,将分区1,5,6,7的分区类型改为Linux LVM
5.添加物理卷
将刚才创建的1,5,6,7四个分区添加逻辑卷
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created.
[root@localhost ~]# pvcreate /dev/sdb6
Physical volume "/dev/sdb6" successfully created.
[root@localhost ~]# pvcreate /dev/sdb7
Physical volume "/dev/sdb7" successfully created.
[root@localhost ~]# pvdisplay //查看物理卷 如下标红部分为新加的物理卷
--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size 19.80 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 5069
Free PE 0
Allocated PE 5069
PV UUID N74wt7-kMiN-Otk0-eoxO-1zg0-9v69-ROsDgg
"/dev/sdb5" is a new physical volume of "1.97 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb5
VG Name
PV Size 1.97 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 6ZkqtN-JiDw-V2MS-UleE-Yrfl-lOiy-eGXVVD
"/dev/sdb6" is a new physical volume of "2.38 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb6
VG Name
PV Size 2.38 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 01yes9-CSla-RFHX-RAws-blBf-rtYy-axddJd
"/dev/sdb7" is a new physical volume of "2.85 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb7
VG Name
PV Size 2.85 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID DeHfyP-xyyJ-zIwZ-Lc1G-Puhe-hfNh-PRTsaa
"/dev/sdb1" is a new physical volume of "2.79 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 2.79 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID xMuHw8-0clz-nfto-hOfX-lTri-3qkc-tcIwdv
6.删除物理卷
例子:
[root@localhost ~]# pvremove /dev/sdb7 //删除sdb7分区
删除的前提是:要删除的物理卷不属于任何卷组(vg)
7.添加卷组
[root@localhost ~]# vgcreate vg_data /dev/sdb1 /dev/sdb5 /dev/sdb6 /dev/sdb7
Volume group "vg_data" successfully created
[root@localhost ~]# vgdisplay vg_data //查看卷组信息
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 4
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 4
Act PV 4
VG Size 9.98 GiB
PE Size 4.00 MiB
Total PE 2555
Alloc PE / Size 0 / 0
Free PE / Size 2555 / 9.98 GiB
VG UUID sSZuGa-pEz8-GaMh-L9VV-QcyP-T1t5-tWBii4
8.扩展卷组的容量
[root@localhost ~]# vgextend vg_data /dev/sdb7 //给vg_data卷组添加/dev/sdb7
9.从卷组中删除物理卷
[root@localhost ~]# vgredure vg_data /dev/sdb7 //从vg_data卷组中删除/dev/sdb7物理卷
[root@localhost ~]# vgredure -a //删除所有暂时未使用的物理卷
10.删除卷组
[root@localhost ~]# vgremove vg_data
10.查看物理卷是否不属于任何卷组的方法:
[root@localhost ~]# pvdisplay /dev/sdb7 //查看/dev/sdb7物理卷属于哪个卷组
如果VG Name 这一列为空,就说明不属于任何卷组
11.添加逻辑卷
[root@localhost ~]# lvcreate -L 1000M –n lv_data1 vg_data //在卷组vg_data上创建一个1000M的逻辑卷lv_data1
[root@localhost ~]# ll /dev/vg_data //卷组和逻辑卷创建完成后,会在/dev/目录下创建一个以VG命令的目录,可以看到一个LV名称命名的设备文件
12.更改逻辑卷大小
[root@localhost ~]# lvresize -L 1500M /dev/vg_data/lv_data1 //扩展逻辑卷lv_data1的大小。
[root@localhost ~]# lvdisplay /dev/vg_data/lv_data1 //查看逻辑卷信息
13.删除逻辑卷
[root@localhost ~]# lvremove /dev/vg_data/lv_data1
14.格式化逻辑卷
[root@localhost ~]# mk /dev/vg_data_lv_data1
15.挂载分区
[root@localhost ~]# mkdir /oracle_data1
[root@localhost ~]# mount /dev/vg_data/lv_data1 /oracle_data1
15.添加开机自动挂载
[root@localhost ~]# vim /etc/fstab //在最后一行添加
/dev/vg_data/lv_data1 /oracle_data1 ext3 defaults 0 0
15 查看挂载的分区
[root@localhost ~]# df –h