1. 程式人生 > 其它 >lvm擴容和指令碼實現

lvm擴容和指令碼實現

技術標籤:lvmlinuxshell運維

一、linux磁碟和磁碟管理

linux一切皆檔案,linux中的磁碟是以裝置檔案的形式展示出來的

1、裝置檔案的名稱

linux磁碟裝置檔案的訪問標識:/dev/[s|h]d[a-z][1-n]
	# [s|h]:磁碟裝置介面型別  [a-z]:磁碟的編號  [1-n]:分割槽標號

2、常用命令:df du fdisk lsblk mkfs

# df命令  檢視檔案系統的使用情況
[[email protected] ~]# df -Th
#檔案系統名字             型別       大小   使用  剩餘  使用率 掛載在哪個檔案
Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 96G 2.5G 93G 3% / devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 1.9G 8.6M 1.9G 1% /run tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 xfs 509M 182M 328M 36% /boot tmpfs tmpfs 379M 0 379M 0% /run/user/0
# du命令 檢視檔案、資料夾的大小
du -sh # 常用選項搭配
# fdisk 檢視磁碟情況、磁碟分割槽
# lsblk 檢視linux中的磁碟,檔案系統
# mkfs  格式化

二、LVM

​ LVM-邏輯卷管理,是linux環境下對磁碟分割槽進行管理的一種機制。普通的磁碟分割槽管理方式在邏輯分區劃分好之後就無法改變其大小,LVM可以讓使用者在無需停機的情況下方便的調整各個分割槽的大小

LVM是在磁碟分割槽和檔案系統之間新增的一個邏輯層,來為檔案系統遮蔽下層磁碟分割槽佈局,提供一個抽象的儲存卷。在儲存捲上建立檔案系統

相關術語解釋
物理儲存介質系統裝置,磁碟:/dev/sda、/dev/sdb。
物理卷(PV)LVM的基本儲存邏輯塊,包含了LVM相關的管理引數
卷組(VG)由一個或多個物理卷PV組成,可以在VG上建立邏輯卷
邏輯卷(LV)建立在VG上,在邏輯捲上可以建立檔案系統
物理塊(PE)每一個物理卷PV被劃分為PE,是PV的基本單元,PE預設大小為4MB,可修改

從一塊磁碟到邏輯卷需要:建立磁碟分割槽->建立物理卷、卷組,並在卷組中新增物理卷->建立邏輯卷->格式化邏輯卷->掛載

三、實操

​ 實驗環境:linux 20G磁碟

​ 實驗目的:先建立一個10G和一個5G的邏輯卷,然後給10G的擴容成10G

1、建立磁碟分割槽 — fdisk

​ 為了使磁碟分割槽具有LVM功能,磁碟分割槽型別需要為8e

​ 1個扇區為512位元組,2個扇區1kb,2048扇區為1Mb。

​ 對於已經建立的分割槽也可以修改其分割槽型別。

2、建立物理卷 — pvcreate

pvcreate  /dev/sdb1  # /dev/sdb1為作為物理卷的磁碟分割槽

​ 其他PV相關命令

​ pvdisplay:檢視詳細物理卷資訊

​ pvchange:修改pv的屬性

​ pvs:檢視所有物理卷

3、建立卷組 — vgcreate

vgcreate data /dev/sdb1   # vgcreate [卷組名字] [物理卷]	

​ 給卷組新增PV

vgextend data /dev/sdb2   # vgextend [卷組名字] [物理卷]

​ 其他vg相關命令

​ vgrename:vg重新命名

​ vgs:檢視所有卷組

​ --units:設定顯示空間大小的單位 M/G等

4、建立邏輯卷 — lvcreate

lvcreate -L 10G -n data_part1 data # 在data卷組上建立大小為10G的邏輯卷,名字為data_part1

​ -L:指定大小 -n 指定名字

​ 其他lv相關命令:

​ lvextend:lv擴容 -L指定大小 引數為lv名字

(base) [[email protected] ~]# lvextend -L +3G /dev/data/data_part1 
  Size of logical volume data/data_part1 changed from 10.00 GiB (2560 extents) to 13.00 GiB (3328 extents).
  Logical volume data/data_part1 successfully resized.

​ lvreduce:減少lv大小

(base) [[email protected] ~]# lvreduce -L -3G /dev/data/data_part1 
  WARNING: Reducing active logical volume to 11.99 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data/data_part1? [y/n]: y
  Size of logical volume data/data_part1 changed from 14.99 GiB (3838 extents) to 11.99 GiB (3070 extents).
  Logical volume data/data_part1 successfully resized.

5、格式化邏輯卷和掛載 — mkfs mount

 mkfs.xfs /dev/data/data_part1  # 格式化
mount /dev/data/data_part1 data_part/  # 掛載

6、擴容邏輯卷

​ 使用lvextend命令去進行擴容

四、簡單的指令碼實現

#! /bin/bash
re="y"
echo “開始磁碟擴容”
# echo $lvm_name
while [ "$re" == "y" ]
do
    lvs
    read -p "(依次輸入需要擴容的lvm系統和新增的大小G:)"  lvm_name size_add
    # 根據lvm找到對於的vg
    vg_name=$(lvs|grep "$lvm_name "|awk '{print $2}')
    echo $vg_name
    if [ "$vg_name" == "" ];
    then
        echo "沒找到這個邏輯卷,請核對後重新輸入"
        continue
    fi
    # echo $vg_name
    # 檢視vg剩餘容量,輸出,並對比
    free_size=$(vgs --units G|grep "$vg_name "|awk '{print $7}')
    echo $vg_name"剩餘"$free_size
    free_size=$(echo $free_size | sed 's/[a-zA-Z]//' | awk -F '.' '{print $1}')
    echo $free_size $size_add
    if [ $size_add -le $free_size ];
    then
        lvextend -L +$size_add'G' /dev/$vg_name/$lvm_name
    else
        echo "vg剩餘空間不足"
        continue
    fi
    re="n"
done
lvs