存储管理之 逻辑卷LVM

2023-12-15 11:27:14

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?实操

首先给虚拟机添加三块硬盘,用来后续操作

查看磁盘信息

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk 
sdc               8:32   0    5G  0 disk 
sdd               8:48   0    3G  0 disk 
sr0              11:0    1  4.4G  0 rom  

创建物理卷 pv ,将物理磁卷转化成物理卷.

[root@localhost ~]# pvcreate  /dev/sdb      
  Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# pvs           -----查看PV信息可以是pvs,pvscan,pvdisplay      
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   10.00g 10.00g

创建卷组? vg

[root@localhost ~]# vgcreate vg1 /dev/sdb   ---创建vg
  Volume group "vg1" successfully created
[root@localhost ~]# vgs                     ---查看vg
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n- <19.00g      0 
  vg1      1   0   0 wz--n- <10.00g <10.00g

创建逻辑卷

[root@localhost ~]# lvcreate -L +4G vg1 -n lv1 
  Logical volume "lv1" created.

   -L : 指定大小  M G
    VG1: 从vg1这拿的空间
    -n: 指定名字

[root@localhost ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-a-----   4.00g      ----给lv1了4G的大小

逻辑卷创建好以后 就是熟悉的套路? 格式化 挂载 设置开机自动挂载

格式化??

[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

创建挂载点,挂载,设置开机自启


[root@localhost ~]# mkdir /mnt/lv1
[root@localhost ~]# mount /dev/vg1/lv1 /mnt/lv1
[root@localhost ~]# vim /etc/fstab 

/dev/vg1/lv1 ? ? ? /mnt/lv1 ? ? ? ? ? ? ? ? ? ? ? ?ext4 ? ?defaults ? ? ?0 0

这是创建了一个EXT4类型的逻辑卷,还可以创建一个xfs类型的逻辑卷lv2

[root@localhost ~]# lvcreate -L 3G vg1 -n lv2     ----创建逻辑卷lv2
  Logical volume "lv2" created.

[root@localhost ~]# mkfs.xfs /dev/vg1/lv2         ----格式化
meta-data=/dev/vg1/lv2           isize=512    agcount=4, agsize=196608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=786432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@localhost ~]# mkdir /mnt/lv2      ----创建挂载点

[root@localhost ~]# mount /dev/vg1/lv2 /mnt/lv2   ----挂载
[root@localhost ~]# vim /etc/fstab             ----设置开机自启
  

查看文件系统信息,发现成功

[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G    0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G    1% /run
tmpfs                   tmpfs     3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   11G  7.0G   60% /
/dev/sda1               xfs      1014M  195M  820M   20% /boot
tmpfs                   tmpfs     781M     0  781M    0% /run/user/0
/dev/mapper/vg1-lv1     ext4      3.9G   16M  3.6G    1% /mnt/lv1   --------
/dev/mapper/vg1-lv2     xfs       3.0G   33M  3.0G    2% /mnt/lv2    -------

给lvm逻辑卷扩容

我们先让逻辑卷lv1满,方法是给磁盘写入信息

语法: dd if=/dev/zero of=磁盘挂载点下新文件? bs=** M/G? count= ***

/dev/zero 是一个取之不尽用之不竭的文件?

bs后面跟的是大小 可以是M 可以是G

count 后面跟的是 次数

[root@localhost ~]# dd if=/dev/zero of=/mnt/lv1/a.txt bs=39M count=100
dd: 写入"/mnt/lv1/a.txt" 出错: 设备上没有空间
记录了100+0 的读入
记录了99+0 的写出
4059762688字节(4.1 GB)已复制,19.9588 秒,203 MB/秒
[root@localhost ~]# df -TH
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  4.1G     0  4.1G    0% /dev
tmpfs                   tmpfs     4.1G     0  4.1G    0% /dev/shm
tmpfs                   tmpfs     4.1G   13M  4.1G    1% /run
tmpfs                   tmpfs     4.1G     0  4.1G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G   11G  7.5G   60% /
/dev/sda1               xfs       1.1G  204M  860M   20% /boot
tmpfs                   tmpfs     819M     0  819M    0% /run/user/0
/dev/mapper/vg1-lv1     ext4      4.1G  4.1G     0  100% /mnt/lv1 ----------磁盘lv1已满
/dev/mapper/vg1-lv2     xfs       3.3G   34M  3.2G    2% /mnt/lv2

lv1已满,要想让lv1继续能存储信息? 需要给他扩容,而它本身就是从vg里拿出空间来使用的,因此我们首先看vg里还有多少空间,查看vg的信息命令是 vgs
?

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <19.00g     0 
  vg1      1   2   0 wz--n- <10.00g <3.00g

扩容lv1

语法: lvextend -L + ***G? /dev/vg1/lv*

刷新:? resize2fs? /dev/vg1/lv*? ? ? ? ?由于lv1的类型是ext4 因此用resize2fs

[root@localhost ~]# lvextend -L +2.9G /dev/vg1/lv1   --------------给lv1扩容
  Rounding size to boundary between physical extents: 2.90 GiB.
  Size of logical volume vg1/lv1 changed from 4.00 GiB (1024 extents) to 6.90 GiB (1767 extents).
  Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# resize2fs /dev/vg1/lv1      -----------刷新
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg1/lv1 is now 1809408 blocks long.

[root@localhost ~]# df -TH        -------查看文件系统的信息
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  4.1G     0  4.1G    0% /dev
tmpfs                   tmpfs     4.1G     0  4.1G    0% /dev/shm
tmpfs                   tmpfs     4.1G   13M  4.1G    1% /run
tmpfs                   tmpfs     4.1G     0  4.1G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G   11G  7.5G   60% /
/dev/sda1               xfs       1.1G  204M  860M   20% /boot
tmpfs                   tmpfs     819M     0  819M    0% /run/user/0
/dev/mapper/vg1-lv1     ext4      7.2G  4.1G  2.8G   60% /mnt/lv1    ------lv1有空间
/dev/mapper/vg1-lv2     xfs       3.3G   34M  3.2G    2% /mnt/lv2

扩容lv2 ,但是vg已经没有空间 允许我们继续从里面拿取空间,因此想要继续扩容lv2,首先得扩容vg,而vg又是由多个pg组合起来的 因此我们可以将一个新磁盘加入到vg里 也就是给vg扩容

扩容vg

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <19.00g     0 
  vg1      1   2   0 wz--n- <10.00g 96.00m  ------vg已没有空间
 
[root@localhost ~]# pvcreate /dev/sdc         ----做成物理卷,打上pv的标记
  Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# vgextend vg1 /dev/sdc      ----给vg扩容
  Volume group "vg1" successfully extended
[root@localhost ~]# vgs                       ------查看vg信息
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <19.00g     0 
  vg1      2   2   0 wz--n-  14.99g <5.09g      -----成功扩容

扩容lv2

此时lv2的空间

[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G    0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G    1% /run
tmpfs                   tmpfs     3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   11G  7.0G   60% /
/dev/sda1               xfs      1014M  195M  820M   20% /boot
tmpfs                   tmpfs     781M     0  781M    0% /run/user/0
/dev/mapper/vg1-lv1     ext4      6.7G  3.8G  2.6G   60% /mnt/lv1
/dev/mapper/vg1-lv2     xfs       3.0G  3.0G   29M  100% /mnt/lv2

扩容 刷新

[root@localhost ~]# lvextend -L +3G /dev/vg1/lv2    -----扩容
  Size of logical volume vg1/lv2 changed from 3.00 GiB (768 extents) to 6.00 GiB (1536 extents).
  Logical volume vg1/lv2 successfully resized.
[root@localhost ~]# xfs_growfs /dev/vg1/lv2      -----刷新
meta-data=/dev/mapper/vg1-lv2    isize=512    agcount=4, agsize=196608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=786432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 786432 to 1572864

成功扩容

[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G    0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G    1% /run
tmpfs                   tmpfs     3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   11G  7.0G   60% /
/dev/sda1               xfs      1014M  195M  820M   20% /boot
tmpfs                   tmpfs     781M     0  781M    0% /run/user/0
/dev/mapper/vg1-lv1     ext4      6.7G  3.8G  2.6G   60% /mnt/lv1
/dev/mapper/vg1-lv2     xfs       6.0G  3.0G  3.1G   50% /mnt/lv2

交换分区

? swap? 也就是虚拟内存

作用: 提升内存的容量,防止OOM(Out Of Memory)

现象是当内存不够的时候内核会随机杀死进程,它认为占用内存多的进程。(内核会先删除占用内存多的进程).

如何制作交换分区?
#我们可以将硬盘空间拿来当作内存来用
什么时候用到交换分区?
#当物理内存不够用的时候使用swap分区,防止物理内存耗尽
?

扩展知识
swap分区大小设置规则
在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。
内存小于4GB时,推荐不少于2GB的swap空间;
内存4GB~16GB,推荐不少于4GB的swap空间;
内存16GB~64GB,推荐不少于8GB的swap空间;
内存64GB~256GB,推荐不少于16GB的swap空间。
```

查看swap大小

[root@localhost dev]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7802         404         144          11        7254        7088
Swap:          2047           0        2047
[root@localhost dev]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        403M        145M         11M        7.1G        6.9G
Swap:          2.0G          0B        2.0G

给swap扩容

可以通过将一个新的分区 添加到swap? ? ?,首先来一块新的磁盘(/dev/sdd),然后进行分区

[root@localhost dev]# fdisk /dev/sdd

sdd               8:48   0    3G  0 disk 
└─sdd1            8:49   0    3G  0 part 

老步骤 格式化 设置开机自启

swap分区的格式化有所不同: mkswap /dev/sdd1

[root@localhost dev]# mkswap /dev/sdd1
正在设置交换空间版本 1,大小 = 3144700 KiB
无标签,UUID=44d449fb-630f-4747-8b8d-d0c4a01cd11f

[root@localhost dev]# vim /etc/fstab 


/dev/sdd1         swap                           swap   defaults        0 0

然后关闭swap分区,查看swap信息

[root@localhost dev]# swapoff -a
[root@localhost dev]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7802         401         145          11        7256        7090
Swap:             0           0           0

激活swap,查看swap信息

[root@localhost dev]# free -m    ----这是没有swap扩容时的大小
              total        used        free      shared  buff/cache   available
Mem:           7802         404         144          11        7254        7088
Swap:          2047           0        2047




[root@localhost dev]# swapon -a      ----这是对swap扩容后的大小
[root@localhost dev]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7802         405         141          11        7256        7087
Swap:          5118           0        5118

给swap扩容方法2:

创建以及 格式化

[root@localhost dev]# dd if=/dev/zero of=/opt/swap  bs=500M  count=10
记录了10+0 的读入
记录了10+0 的写出
5242880000字节(5.2 GB)已复制,6.19374 秒,846 MB/秒
[root@localhost dev]# mkswap /opt/swap 
正在设置交换空间版本 1,大小 = 5119996 KiB
无标签,UUID=569e9a04-4adb-4f36-aeea-cbaf59a2285b

编写开机自启文件

[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# swapon -a      -----激活swap
swapon: /opt/swap:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7802         408         609          11        6785        7084
Swap:         10118           0       10118

[root@localhost ~]# chmod 600 /opt/swap     ----给权限
[root@localhost dev]# vim /etc/fstab    ----编写配置文件


/opt/swap           swap                              swap   defaults     0 0

给根分区扩容

首先准备一个新的磁盘 /dev/sde

sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]

或者

/dev/mapper/centos-root xfs        27G  4.0G   23G   15% /

1,将centos看成vg,root当成lv

2, 将mapper看成vg,centos-root当成lv

方式一:将新的磁盘进行分区? ?fdisk /dev/sde,全部大小都给它

/dev/mapper/centos-root xfs        17G   12G  5.7G   67% /

格式化 mkfs.xfs /dev/sde1

将其做成物理卷,打上pv标记

[root@localhost ~]# pvcreate /dev/sdd
  Device /dev/sdd excluded by a filter.

对centos扩容

vgextend centos /dev/sde1

查看

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   2   2   0 wz--n- 23.99g <5.00g

在对根分区扩容

 lvextend -L +5G /dev/centos/root
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  970M     0  970M    0% /dev
tmpfs                   tmpfs     982M     0  982M    0% /dev/shm
tmpfs                   tmpfs     982M  9.6M  973M    1% /run
tmpfs                   tmpfs     982M     0  982M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   12G  5.7G   67% /    -----

刷新? xfs_growfs? /dev/mapper/centos-root

最后查看分区的挂载信息? df -Th即可我。

方式2,直接不分区,将磁盘/dev/sde做成物理卷

pvcreat /dev/sde

给vg扩容:? vgextend? mapper /dev/sde

给lv扩容L:? ? lvextend? -L +4G? /dev/mapper/centos-root

刷新:? ?xfsx_growfs? /dev/mapper/centos-root

即可。

将卷组里面的剩余空间全部扩容的逻辑卷中

lvextent -l +100%Free? /dev/vg*/lv*

理论? lvm

1.逻辑卷LVM--(Logical Volume Manager(逻辑卷管理)的简写)

1.1.LVM管理

lvm概念:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。

lvm的特点

#传统分区的缺点:
传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变。当一个分区空间已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中。
?
#当采用LVM时:
1.将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
2.当磁盘空间不足而加入新的硬盘时,不必将数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。
3.文件系统建立在LVM上,可以跨分区,方便使用;
?
#使用LVM主要是方便管理、增加了系统的扩展性。可以跨分区,多个硬盘组合。
lvm
1.lvm的制作
2.lvm的使用
3.lvm扩容-------在线扩容。可以在有数据的情况下去扩容。
基本分区(MBR|GPT) ----> Filesystem(制作文件系统类型) ----> mount(挂载)
逻辑卷LVM ----> Filesystem(制作文件系统类型) ----> mount(挂载)

1.2.lvm的制作

第一步:拥有基本分区
第二步:做成物理卷:  pv ------- sdb1、sdb2 打pv的标记。
第三步:加入卷组: ? vg-------- 卷组里面包含:sdb1  sdb2,建立在PV之上。
第四步:逻辑卷 ? lv  -------  逻辑卷是从卷组里面拿空间出来做成的逻辑卷,在起个名,建立在VG之上
第五步:制作文件系统------mkfs.xfs ?  lvm路径
第六步:挂载 ------mount ? 使用lvm
#制作lvm的时候可以是一整块硬盘也可以是硬盘分好的区并且是还没有用的。必须是没有做文件系统的

理论:swap分区

交换分区管理 Swap---也叫虚拟内存

作用: ·提升· 内存的容量,防止OOM(Out Of Memory)

现象是当内存不够的时候内核会随机杀死进程,它认为占用内存多的进程。(内核会先删除占用内存多的进程).
?
如何制作交换分区?
#我们可以将硬盘空间拿来当作内存来用
什么时候用到交换分区?
#当物理内存不够用的时候使用swap分区,防止物理内存耗尽

扩展知识

swap分区大小设置规则
在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。
内存小于4GB时,推荐不少于2GB的swap空间;
内存4GB~16GB,推荐不少于4GB的swap空间;
内存16GB~64GB,推荐不少于8GB的swap空间;
内存64GB~256GB,推荐不少于16GB的swap空间

mount??

常用于挂载?

-o? 指定文件系统属性

rw? 读写

ro? 只读

auto? ? mount -a 开机自动挂载

remount? 在线重新挂载

取下挂载   umount /跟你挂载点

文章来源:https://blog.csdn.net/m0_59933574/article/details/132721618
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。