Linux下LVM磁盘运维

Linux下LVM磁盘运维,第1张

概述? 1. 基础知识 /etc/fstab文件 ? ? 系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。我们可以到机器上执行vim /etc/fstab查看文件中的内容。 ? ? 第一列:磁盘设备文件或者该设备的Label或者UUID ? ? 第二列:挂载点 ? ? 第三列:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等 ? ? ? 1. 基础知识 /etc/fstab文件

? ? 系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。我们可以到机器上执行vim /etc/fstab查看文件中的内容。

? ? 第一列:磁盘设备文件或者该设备的Label或者UUID

? ? 第二列:挂载点

? ? 第三列:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等

? ? 第四列:挂载选项,详细参考man mount. 下面列出一些常用的选项:

? ? ? ?auto: 系统自动挂载,fstab默认就是这个选项

? ? ? ?ro: read-only

? ? ? ?rw: read-write

? ? ? ?defaults: rw,suID,dev,exec,auto,nouser,and async.

? ? 第五列:为dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为每天进行dump的 *** 作,2为不定日期的进行dump *** 作。

??? 第六列:为fsck选项是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整,此配置告诉fsck程序以什么顺序检查文件系统,0为忽略,1为最早检验(一般根目录会选择),2为1级别检验完成之后进行检验。

df -Th命令:查看磁盘挂载信息 fdisk -l:查看硬盘及分区信息 pv(物理卷):一个磁盘分区就是一个pv lv(逻辑卷) vg(卷组):由一个或多个pv组成,可以划分出多个lv 2. 使用命令挂盘

? ? 以前做linux挂盘直接格式化盘然后做挂载,这样做固然简单快捷,但是后续如果磁盘想扩容的话不能直接在原挂载点上扩容,因此我们可以将磁盘制作成逻辑卷,方便后续扩容。

使用root用户,执行命令fdisk -l和lsblk查看需要挂载的数据盘盘符名称。

? ? ? lsbllk执行结果如下:

? ? 可以看到vdb没有被挂载,然后执行fisk -l名称查看盘符名称,如下图,盘符名称是/dev/vdb

使用fdisk命令对磁盘分区

? ? fdisk /dev/vdb

? ? 输入:n?表示创建一个新的分区(new的意思)

? ? 输入:p表示创建一个基本分区(p是基本分区,e是扩展分区)

? ??选择分区编号,1~4,默认使用1,直接按回车即可。

? ? 选择分区起始点,直接按回车使用默认即可。

? ? 选择分区终点,直接按回车使用默认即可。

? ? 输入:w表示保存设置

创建pv

? ??pvcreate /dev/vdb1

? ? 输出:Physical volume "/dev/vdb1" successfully created

? ? 可以执行pvdisplay命令查看结果

创建vg

? ? vgcreate vg01 /dev/vdb1

? ? 输出:Volume group "vg01" successfully created

? ? 这里vg01是vg组名称,可以自定义

? ? 可以执行vgdisplay命令查看结果

创建lv

? ? lvcreate -l 100%VG -n log vg01

? ? log是lv卷组名称,vg01是上面创建的vg组名称

? ? 输出:Logical volume "log" created.

? ? 可以执行lvdisplay查看结果

格式化lv

? ? mkfs.ext4 /dev/vg01/log

? ? ext4是文件类型,/dev/vg01/log是lv的path,可以用lvdisplay查看

磁盘挂载

? ? mount /dev/vg01/log /usr/local/logs

? ??/dev/vg01/log是lv的path,/usr/local/logs是需要挂载的路径

编辑/etc/fstab

? ? 执行命令vim /etc/fstab,在最后一行加上/dev/vg01/log /usr/local/logs ext4 defaults 0 0或使用root用户执行echo "/dev/vg01/log /usr/local/logs ext4 defaults 0 0" >> /etc/fstab

? ? 根据实际需要替换上面的参数

3. 使用命令卸载盘 umount -l /dev/vg01/log echo "y"| lvremove /dev/vg01/log echo "y"| vgremove vg01 echo "y"| pvremove /dev/vdb1 echo -e "d \n w"|fdisk /dev/vdb 手动删除/etc/fstab配置

? ? 命令卸载盘中的参数与使用命令挂在盘是相对应的,上面的参数需要根据实际情况修改。

4. 使用脚本挂载lvm盘
#!/bin/bash# 该参数需要修改:挂载磁盘的名称disk_name=/dev/vdb# 该参数可以不修改:vg组名称volume_group="vg01"# 该参数需要修改:指定磁盘挂载信息#format: "fileSystemType,MountPath,Size,fileSystemname,LogicalVolumename"lvms=("ext4,/user/local/data,40,/dev/mapper/vg01-data,data""ext4,/user/local/logs,60,/dev/mapper/vg01-log,log")function mount_disk(){    fdisk -l ${disk_name} &> /dev/null    (( $? != 0 )) && echo "${disk_name} is not found !" && exit 1    df -Th | tail -n +2 | awk ‘{print }‘ | grep "${disk_name}" &>/dev/null    (( $? == 0 )) && echo "${disk_name} is mounted !" && exit 1    pvdisplay | grep -i "PV name" | grep "${disk_name}" &>/dev/null    (( $? == 0 )) && echo "${disk_name} is LVM !" && exit 1echo "np1w" | fdisk ${disk_name}  &>/dev/null	partprobe ${disk_name}    fdisk -l ${disk_name}1 &>/dev/null    (( $? != 0 )) && echo "fdisk ${disk_name}1 Failed !" && exit 1    #create Physical volume    echo "y" |pvcreate ${disk_name}1 &>/dev/null    (( $? != 0 )) && echo "pvcreate ${disk_name}1 Failed !" && exit 1    #create volume group    echo "y" |vgcreate -s 128 ${volume_group} ${disk_name}1 &>/dev/null    (( $? != 0 )) && echo "vgcreate ${disk_name}1 Failed !" && exit 1    for lvm in ${lvms[@]}    do        disk_type=`echo ${lvm} |awk -F‘,‘ ‘{print }‘`        disk_path=`echo ${lvm} |awk -F‘,‘ ‘{print }‘`        disk_size=`echo ${lvm} |awk -F‘,‘ ‘{print }‘`        fs_name=`echo ${lvm} |awk -F‘,‘ ‘{print }‘`        lv_name=`echo ${lvm} |awk -F‘,‘ ‘{print }‘`                # create Logical volume        echo "y" | lvcreate -l ${disk_size}%VG -n ${lv_name} ${volume_group} &>/dev/null        (( $? != 0 )) && echo "lvcreate Failed !" && exit 1        #format volume        mkfs -Vt ${disk_type} ${fs_name} &>/dev/null        mktype_fs_name=$(blkID -o value -s TYPE ${fs_name})        [[ "$mktype_fs_name" != "${disk_type}" ]] && echo "mkfs ${disk_type} ${fs_name} Failed !" && exit 1        #mount disk        mount | awk ‘{print }‘ | grep -w "${disk_path}" &>/dev/null        (( $? == 0 )) && echo "${disk_path} already mounted !" && exit 1                mkdir -p ${disk_path} 2>/dev/null        mount ${fs_name} ${disk_path}        mount | grep "${fs_name}" | grep "${disk_path}" &>/dev/null        (( $? != 0 )) && echo "mount ${fs_name} on ${disk_path} Failed !" && exit 1        #add to fstab        fsmount=$(grep "${fs_name}" /etc/fstab | grep "${disk_path}")        if [[ ! -n $fsmount ]]; then            echo "${fs_name} ${disk_path} ${disk_type} defaults 0 0" >>/etc/fstab        fi        echo "mkfs and mount ${fs_name} success."    done}mount_disk $*

? ? 注意:脚本最上方的参数disk_name,volume_group,lvms中的参数需要修改

5. LVM磁盘扩容

? ? 我们将磁盘做成LVM盘就是为了方便的动态扩容,LVM盘我们不需要将原有挂载点卸载再重新挂载,这样极大的降低了运维成本,比如说我之前的100G磁盘用完了,我又新增了一块100G的磁盘,这时候我就可以给我原先的挂载点新增这100G的容量,下面我简单的演示一下

? ? 首先看原有环境,执行lvdisplay命令进行查看 ? ? 执行lsblk和fdisk -l查看新增磁盘路径

? ? ? ?我新增的磁盘是/dev/vdc

执行fIDsk /dev/vdc

? ? ? ?依次输入:

? ? ? ?n:新增分区

? ? ? ?p:选择分区类型为主分区

? ? ? ?回车:分区号默认为1

? ? ? ?回车:磁盘开始位置,默认即可

? ? ? ?回车:磁盘结束位置,默认即可

? ? ? ?t:修改分区格式

? ? ? ?L:查看分区格式列表

? ? ? ?8e:选择分区格式为linux LVM

? ? ? ?w:保存

创建物理卷执行pvcreat /dev/vdc1 给vg组扩容,执行vgextend vg01 /dev/vdc1

? ? 可以执行vgdisplay查看? ??

? ? 已经增大了200G,总共400G

逻辑卷扩容:lvextend -l 50%VG /dev/vg01/data

? ? 执行lvdisplay查看结果

? ? 可以看到已经扩容到了200G,也就是我VG组全部400G的50%

? ? 这时执行df -h看到磁盘挂载点仍是原先大小,需要执行resize2fs /dev/mapper/vg01-data重设大小 总结

以上是内存溢出为你收集整理的Linux下LVM磁盘运维全部内容,希望文章能够帮你解决Linux下LVM磁盘运维所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1028641.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存