DevOps—Linux的卷管理

概述

在Linux中尽可能使用lvm对磁盘进行管理,而不是直接使用磁盘。以免容器不够用的时候很难进行扩展。

创建卷并挂载

例如,机器中有一块硬盘,容量为200G,其磁盘的设备名为:/dev/sdb

1、创建物理卷

命令格式:pvcreate 【disk-driver】

pvcreate /dev/sdb

#查看
pvdisplay

#删除
pvremove /dev/sdb

2、创建逻辑卷组

命令格式:vgcreate 【vg-name】【 pv-name,使用pvdisplay查看】

#创建新的逻辑卷(添加物理卷/dev/sdb)
vgcreate nexus-data-vg /dev/sdb

#添加新的物理卷到卷组
vgextend ubuntu-vg /dev/sdc

#查看
vgdisplay

#删除
vgremove nexus-data-vg /dev/sdb
如果存在多个磁盘,格式如下:vgcreate vg-name /dev/sda4 /dev/sda5

3、创建逻辑卷

#指定容量创建
lvcreate -L 600G -n custome-lvm-name vg-name

#指定逻辑区块
lvcreate --extents 51199 -n nexus-data nexus-data-vg

#查看全部
lvdisplay
#查看卷组nexus-data-vg下所有的逻辑卷
lvdisplay nexus-data-vg


#删除逻辑卷
umount /dev/datavg/lvdata      //卸载逻辑卷
vim /etc/fstab                 //检查fstab,删除对应的挂载记录
reboot                         //需要重新启动,否则磁盘会一直处于busy状态

lvchange -an -v /dev/datavg/lvdata     //释放逻辑卷
lvremove -vf /dev/datavg/lvdata        //删除逻辑卷

#扩容
lvextend --extents 12287 /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

逻辑区块:每个逻辑卷被分割成数据块,称为逻辑区段。卷组中所有逻辑卷的区段大小都相同。通常每一个逻辑区块的大小为4M。

如上例中,原有的磁盘为200G,但是使用lvm管理磁盘后会有一定的容量损失,用于存放系统数据。因此逻辑块为51199*4/1024约等于199.9G,正如使用vgdisply所显示的<200G。

挂载

使用lvdisplay命令查看逻辑卷的详细情况:

我们可以使用图中画红框的磁盘路径进行格式化或挂载操作。

mkfs.ext4 /dev/nexus-data-vg/nexus-data
mount /dev/nexus-data-vg/nexus-data /data

可以在/etc/fstab中添加对应的选项,以实现开机后自动挂载

/dev/nexus-data-vg/nexus-data   /data   ext4    defaults 0 1

扩展已经有逻辑卷

# 查看卷组是否还有剩余空间
vgdisplay
#查看对应卷组下的逻辑卷的使用情况
lvdisplay

#将所有剩余空间扩展给指定的逻辑卷
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
#刷新对应的逻辑卷分区(ext4)
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
#刷新对应的逻辑卷分区(xfs)
xfs_growfs /dev/mapper/ubuntu--vg-ubuntu--lv

使用dd命令创建磁盘再用逻辑卷管理

# 创建一个100G的磁盘文件
dd if=/dev/zero of=/sata/sdb_disk.img bs=1G count=100
# 挂载为回环设备
losetup -fP /sata/sdb_disk.img
# 查看所有回环设备,找到对应的设备
losetup -a
                  /dev/loop0: [66304]:12 (/sata/sdb_disk.img)
# 创建pv
pvcreate /dev/loop0
# 创建卷组
vgcreate qly-vg /dev/loop0
# 创建逻辑卷
lvcreate -L 190G -n qly-disk qly-vg
# 格式化逻辑卷
mkfs.ext4 /dev/qly-vg/qly-disk
# 挂载使用

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注