lvm 概念:LVM 是Linux 环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。
使用LVM 主要是为了方便管理、增加了系统的扩展性。可以跨分区,多个硬盘结合。
Lvm的特点
1.将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间。
2.文件系统建立在LVM 上,可以跨分区,方便使用。
3.当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并且扩充逻辑卷即可。
传统分区的缺点
传统的文件系统时基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变。当一个分区空间已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦。或者把分区中的数据移到另一个更大的分区
lvm 和 分区的使用流程:
基本分区(MBR GPT)--------->Filesystem(制作文件系统类型)----------->mount(挂载)
逻辑卷LVM ---------->Filesystem(制作文件系统类型)------------>mount(挂载)
1.1lvm 的制作的整体思路
第一步,拥有基本分区(挂载过的分区不可以)
做成物理卷 pv ---------- sdb1、sdb2 打上pv的标记
加入卷组 vg ----------- 卷组里包含:sdb1、sdb2,建立在Pv之上
逻辑卷 lv --------- 逻辑卷就是从卷组里面拿空间出来做成逻辑卷,起个名字,建立在vg之上
制作文件系统(也叫格式化)---------mkfs.xfs lvm的绝对类路径
挂载使用 mount --------- 使用lvm
*制作lvm 的时候可以是一整块硬盘也可以是硬盘分好的区并且还是没有用的。必须是没有做文件系统的。
把多个pv放在卷组中 这个过程叫池化 零碎磁盘汇总
相关命令
pvcreate /dev/sdb(*)
vgcreate vg_1(卷组名) /dev/sdb(*)
lvcreate -L +2G -n lv_1(逻辑卷名) /dev/vg_1(已经成为独立的设备)
lvcreate -l +500(PE) -n lv_1 /dev/vg_1
mkfs.xfs / mkfs.ext4
mkdir /LVM
mount /dev/vg_1/lv_1 /LVM
相关查看
pvs pvscan pvdisplay(可查看PE值)
vgs vgscan vgdisplay
lvs lvscan lvdisplay
df -Th
lsblk
blkid
[root@localhost ~]# 制作LVM^C
[root@localhost ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# vgcreate vg_1 /dev/sdb2
Volume group "vg_1" successfully created
[root@localhost ~]# lvcreate -L +2G -n lv_1 /dev/vg_1
WARNING: swap signature detected on /dev/vg_1/lv_1 at offset 4086. Wipe it? [y/n]: y
Wiping swap signature on /dev/vg_1/lv_1.
Logical volume "lv_1" created.
[root@localhost ~]# mkfs.xfs /dev/vg_1/lv_1
mkfs.xfs: cannot open /dev/vg_1/lv_1: 设备或资源忙
{解决方法:
[root@localhost ~]# dmsetup ls
vg_1-lv_1 (253:2)
centos-swap (253:1)
centos-root (253:0)
我查的但是对我不管用 重启一下居然可以了 旁边的两位大佬还在研究
}
[root@localhost ~]# mkfs.xfs /dev/vg_1/lv_1
meta-data=/dev/vg_1/lv_1 isize=512 agcount=4, agsize=131072 bl
ks
[root@localhost ~]# mount /dev/vg_1/lv_1 /LVM
[root@localhost ~]# df -Th
1.2 lvm扩容的整体思路
如果lvm 所在的vg有空间直接扩容
没有 则需要重新卷化 即pv
vgextend 加入lvm所在的卷组vg 完成vg 扩容
vgdisplay 查看PE 有多少 比较精确 (适用于-l)
lvextend 从lvm所在的vg中拿走所需要的内存 完成lvm 扩容(注意+)
lvs 查看逻辑卷内存
blkid 查看文件系统的类型声明扩容后的lvm文件格式(两种)即写入文件系统:
xfs_growfs /dev/vg1/lv1 ------->xfs扩容
resize2fs /dev/vg1/lv2 -------->ext4df -Th 查看内存
逻辑卷扩容的相关命令
逻辑卷扩容的相关命令
需要一个未使用的分区或磁盘(pv化过的,没有则pvcreate /dev/sdb1)
vgextend vg_1(已有的卷组要扩容的卷组)
情况一:
如果卷组有空间 则直接 lvextend -l +500 /dev/vg_1/lv_1
根据文件系统的类型选择不同的声明文件系统的方式
xfs_growfs /dev/vg1/lv1 ------->xfs扩容
resize2fs /dev/vg1/lv2 -------->ext4
vgs 查看的是卷组的内存 vg的内存自己不用 给逻辑卷用
lvs 查看的是逻辑卷的内存
[root@localhost ~]# pvcreate /dev/sdb1
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# vgextend vg_1 /dev/sdb1
Volume group "vg_1" successfully extended
[root@localhost ~]# vgdisplay vg_1
--- Volume group ---
Alloc PE / Size 512 / 2.00 GiB
Free PE / Size 1022 / 3.99 GiB
[root@localhost ~]# lvextend -l +500 /dev/vg_1/lv_1
Size of logical volume vg_1/lv_1 changed from 2.00 GiB (512 extents) to 3.95 GiB (1012 extents).
Logical volume vg_1/lv_1 successfully resized.
[root@localhost ~]# blkid
[root@localhost ~]# xfs_growfs /dev/vg_1/lv_1
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 2 0 wz--n- 20.99g 44.00m
vg_1 2 1 0 wz--n- 5.99g <2.04g
二、交换分区
交换分区管理 Swap ---也叫虚拟内存
作用:’提升‘ 内存的容量,防止OOM (out of memory)
现象是当内存不够的时候内核会随机杀死进程,它认为占用内存多的进程。(内核会先删除占用内存多的进程)
如何制作交换分区
我们可以将硬盘空间拿来当内存来用
什么时候用到交换分区
当物理内存不够用的时候使用swap 分区,防止物理内存耗尽
交换分区的两种方式
1、挂载方式扩容 开机自启
free -m 查看交换分区的内存
swapon -s 查看交换分区信息
{准备工作:分出一个主分区 fdisk /dev/sdb
partprobe /dv/sdb 刷新分区表
ll /dev/sdb1
}
mkswap /dev/sdb1 初始化
blkid /dev/sdb1 查看UUID 也就是设备号
vim /etc/ fstab 制作开机挂载
swapon -a 激活swap分区 (读取/etc/fstab)
swapon -s 查看信息
swapoff /dev/sdb1 关闭swap 分区
2、创建文件方式扩容 (dd ----->创建文件系统的命令)
dd if=/dev/zero of=/swap2.img bs=1M count=512 dd 读入 从空设备里面拿空块 到交换分区 块多大 一共多少兆
mkswap /swap2.img 初始化
vim /etc/fstab 开机自动挂载
chmod 600 /swap2.img 需要修改文件系统的权限为600 默认644权限不安全
swapon -a
swapon -s