lvm擴容和指令碼實現
一、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