Linux学习笔记(6)磁盘分区(LVM),PE
1.逻辑管理技术LVM的概念
1.1 LVM ,逻辑卷管理,以便扩展管理盘符。
PV:物理卷
VG:卷组
LV:逻辑卷
PE(physical Extend):物理扩展(默认4M),就是我们逻辑卷管理的最小单位。
1.2 关系如下:
(1)PV N=>1 VG
(2)VG 1=>N LV
N个PV组成一个VG,PE为VG的最小单位。
用VG为生成LV(这个过程就是分配多少个PE给这个LV),然后再挂载目录到LV,就可以用了,完成了逻辑分区的功能
常用查询
pvs // 查询物理卷 vgs // 查询卷组 vgdisplay // 查询卷组详情 lvs // 查看逻辑卷 lsblk //查询分区状态,包括逻辑卷 blkid /dev/sdv //查询分区文件系统信息格式 是 xfs 还是 ext4 df -hT // 查看分区情况. 磁盘文件系统格式
2.LVM的基本操作
2.1 创建PV、创建VG、创建LV
2.2 格式化LV
2.3 挂载文件系统使用
2.4 在线扩展、缩小文件系统
2.5 删除LV、删除VG、删除PV
3.演示
3.1 演示 创建PV、创建VG、创建LV
(1)查看磁盘情况,选定磁盘作为空间源(我们这里用sdc/sdd/sde来做演示,sdf作为我们的扩容)
fdisk -l |grep "Disk /dev/sd"
(2)创建PV:pvcreate /dev/sdc /dev/sdd /dev/sde
查看PV情况 :pvs 或者 pvdisplay
(3)创建名为mysql的VG:vgcreate mysql /dev/sdc /dev/sdd /dev/sde
并且用vgs和vsdisplay 可以查看
(4)创建名为lvmysql的LV,并分配给其2G空间 :lvcreate -n lvmysql -L 2G mysqlvg
查看
3.2 格式化LV并且挂载文件系统使用
(5)格式化:mkfs.ext4 /dev/mysql/lvmysql
(6)挂载目录.
mkdir /mysql #在根目录下创建mysql目录
mount /dev/mysql/lvmysql /mysql #把刚刚新建的 lvmysql 挂载到 /mysql 目录下
(7)直接映射挂载(修改 /etc/fstab 文件数据,这样下次重启就可以直接用)
验证,能直接挂载目录说明就成功了,如图
3.3 在线扩展、缩小文件系统
(8)在线扩展
扩展VG
把新磁盘加入到pv,然后再吧pv加入到vg(由(1)中可知,我们把 /dev/sdf 加进来)
pvcreate /dev/sdf
vgextend mysql /dev/sdf #mysql为vg名称,后面的/dev/sdf是需要加入vg的磁盘空间
扩展LV
首先看看当前是多大,是2G
然后开始扩展5个G,变成7G
lvextend -L +5G /dev/mysql/lvmysql
然后重新组织分配文件系统
- 如果使用xfs文件系统
xfs_growfs /dev/mysql/lvmysql
- 如果使用ext4文件系统
resize2fs /dev/mysql/lvmysql
查验,看我们的 mysql-lvmysql 已经7个G了,挂载在 /mysql 目录
(9)在线缩小
卸载目录=》缩小文件系统=》缩小LV=》把盘符从VG和PV里面解放出来
卸载目录与缩小文件系统
resize2fs /dev/mysql/lvmysql 2G 缩小到2G
缩小LV
lvreduce -L -5G /dev/mysql/lvmysql
验证
把盘符从VG里面解放出来
提2G出来
vgreduce mysql /dev/sdf
把盘符从PV里面解放出来
pvremove /dev/sdf
验证
3.4 删除LV、删除VG、删除PV
步骤:卸载目录=》按顺序 删除LV,删除VG,删除 PV
3.5 命令参考总结
-- (1)创建分区 (2)格式化分区 (3)挂载分区
#参考代码 #创建PV pvcreate /dev/sdb /dev/sdc #创建VG vgcreate mysqlvg /dev/sdb vgcreate bakvg /dev/sdc #创建LV lvcreate -n mysqllv -L 10G mysqlvg lvcreate -n datalv -L 20G mysqlvg lvcreate -n loglv -L 20G mysqlvg lvcreate -n baklv -L 50G bakvg
#格式化
mkfs.ext4 /dev/mysqlvg/mysqllv
mkfs.ext4 /dev/mysqlvg/datalv
mkfs.ext4 /dev/mysqlvg/loglv
mkfs.ext4 /dev/bakvg/baklv
#建立目录
mkdir -p /mysql/app
mkdir -p /mysql/data
mkdir -p /mysql/log
mkdir -p /mysql/backup
#挂载
mount /dev/mysqlvg/mysqllv /mysql/app
mount /dev/mysqlvg/datalv /mysql/data
mount /dev/mysqlvg/loglv /mysql/log
mount /dev/bakvg/baklv /mysql/backup
#df -h 查看结果
#修改 /etc/fstab 以便可以重启自动挂载
/dev/mysqlvg/mysqllv /mysql/app ext4 defaults 0 0
/dev/mysqlvg/datalv /mysql/data ext4 defaults 0 0
/dev/mysqlvg/loglv /mysql/log ext4 defaults 0 0
/dev/bakvg/backuplv /mysql/backup ext4 defauls 0 0
# 查看 /etc/fstab 是否有误,如果有问题可能机器因为磁盘问题开不了机。
mount -a
#reboot 查看效果
4.在线刷新新增磁盘,扩展LV
它使用的命令非常简单, 用来增加 CentOS 7 系统上逻辑卷空间大小。
所以第一步是打开您的虚拟机客户端的设置页面,点击 ‘增加’ 按纽,然后继续下一步操作。
然后进入服务端重复如下的命令来扫描您的磁盘设备,以使新磁盘在系统中可见。
查看扫描host,ls /sys/class/scsi_host(运行下面代码),一般到这一步就解决了 fdisk -l 就可以看到了
echo "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan
列出您的 SCSI 设备的名称:
# ls /sys/class/scsi_device/ # echo 1 > /sys/class/scsi_device/1:0:0:0/device/rescan # echo 1 > /sys/class/scsi_device/2:0:0:0/device/rescan # echo 1 > /sys/class/scsi_device/3:0:0:0/device/rescan # fdisk -l
一旦新增的磁盘可见,就可以运行下面的命令来创建新的物理卷,然后增加到卷组,如下示。
# pvcreate /dev/sdb # vgextend centos /dev/sdb # vgdisplay
现在根据此磁盘的空间大小来扩展逻辑卷,然后添加到根分区。
# lvextend -L +20G /dev/mapper/centos-root # xfs_growfs /dev/mapper/centos-root # df -h
在 Linux CentOS 7 系统上管理磁盘分区的操作过程是非常简单的,可以使用这篇文章所述的操作步骤来扩充您的任意逻辑卷的磁盘空间。您不需要重启生产线上的服务器,只是简单的重扫描下 SCSI 设备,和扩展您想要的 LVM(逻辑卷管理)。我们希望这文章对您有用。请随意的发表有用的评论和建议。
5. 修改VG的PE(最小分配单元)
PE(physical Extend):物理扩展(默认4M),就是我们逻辑卷管理的最小单位。
# 定义VG myvg 的PE为1M ,可以使用 vgdisplay myvg 查看 vgcreate -s 1M myvg /dev/vdc2 # lvcreate -l 即为分配PE单位,如下代码就是分配 50个PE lvcreate -n mylv -l 50 myvg
【最佳实践】在线扩容
(1)在线添加磁盘
(2)在线扫描出新磁盘
ls /sys/class/scsi_host echo "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan 列出您的 SCSI 设备的名称: ls /sys/class/scsi_device/ echo 1 > /sys/class/scsi_device/0:0:0:0/device/rescan echo 1 > /sys/class/scsi_device/0:0:1:0/device/rescan echo 1 > /sys/class/scsi_device/2:0:0:0/device/rescan fdisk -l
(3)在线Lvm扩展
# (3)LVM 操作 pvcreate /dev/sdb vgs vgextend centos /dev/sdb lvs lvextend -L +20G /dev/centos/root df -Th xfs_growfs /dev/centos/root df -Th
【故障处理】
(1)pvcreate时报错:Can't open /dev/sdb5 exclusively. Mounted filesystem
linux filesystem not open,建立物理卷报错Can't open /dev/sdb5 exclusively. Mounted filesystem的问题解决过程记录...
dmsetup ls ,会发现一些已经没有的挂载
然后 dmsetup remove xxx 即可;