一、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命令 查看文件系统的使用情况
[root@lihu-test ~]# 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) [root@lihu-test ~]# 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) [root@lihu-test ~]# 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