anyuan2002.com - vwin网

查找: 您的方位主页 > 电脑频道 > 电脑教程 > 阅览资讯:Linux下LVM磁盘运维

Linux下LVM磁盘运维

2019-04-20 07:17:11 来历:www.anyuan2002.com 【

 

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履行成果如下:

Linux下LVM磁盘运维

能够看到vdb没有被挂载,然后履行fisk -l称号检查盘符称号,如下图,盘符称号是/dev/vdb

Linux下LVM磁盘运维

  • 运用fdisk指令对磁盘分区

fdisk /dev/vdb

输入:n 表明创立一个新的分区(new的意思)

输入:p表明创立一个根本分区(p是根本分区,e是扩展分区)

挑选分区编号,1~4,默许运用1,直接按回车即可。

挑选分区起始点,直接按回车运用默许即可。

挑选分区结尾,直接按回车运用默许即可。

输入:w表明保存设置

Linux下LVM磁盘运维

  • 创立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. 运用指令卸载盘

  1. umount -l /dev/vg01/log
  2. echo "y"| lvremove /dev/vg01/log
  3. echo "y"| vgremove vg01
  4. echo "y"| pvremove /dev/vdb1
  5. echo -e "d \n w"|fdisk /dev/vdb
  6. 手动删去/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 $1}' | 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 1

echo "n
p
1


w
" | 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 $1}'`
    disk_path=`echo ${lvm} |awk -F',' '{print $2}'`
    disk_size=`echo ${lvm} |awk -F',' '{print $3}'`
    fs_name=`echo ${lvm} |awk -F',' '{print $4}'`
    lv_name=`echo ${lvm} |awk -F',' '{print $5}'`
    
    # 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 $3}' | 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:保存

Linux下LVM磁盘运维

  • 创立物理卷履行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重设巨细
 
 

本文地址:http://www.anyuan2002.com/dnjc/100431.html
Tags: linux 磁盘 LVM
修正:vwin网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部