个人用云计算学习笔记 --14( Linux 逻辑卷管理、Linux 交换空间管理) - 教程

news/2025/9/29 12:44:48/文章来源:https://www.cnblogs.com/slgkaifa/p/19118545

个人用云计算学习笔记 --14( Linux 逻辑卷管理、Linux 交换空间管理) - 教程

文章目录

  • Linux 逻辑卷管理(8. Linux 逻辑卷管理)
    • 逻辑卷基本管理
      • 硬盘分区管理方案缺点
      • 逻辑卷管理硬盘方案优点
      • 逻辑卷基本概念
    • 命令部分
      • 环境准备
      • pvcreate(创建物理卷)
      • vgcreate(创建卷组)
      • lvcreate(创建逻辑卷)
      • 创建文件系统(挂载)
      • 清理
    • 扩展和缩减卷组
      • 环境准备
      • 扩展卷组
      • 缩减卷组
    • 扩展和缩减逻辑卷
      • 扩展逻辑卷
      • 缩减逻辑卷
    • 扩展和缩减文件系统
      • 扩展 XFS 文件系统
      • 扩展 EXT4 文件系统
      • 缩减 EXT4 文件系统
    • 逻辑卷快照
    • raid 逻辑卷
  • Linux 交换空间管理(9. Linux 交换空间管理)
    • 计算机存储器的层次结构
    • 计算机存储器的工作原理
    • 物理内存
    • Swap 空间
      • free(查看内存)
      • Swap 空间大小
      • 创建交换空间
      • 激活 swap 空间(swapon)
      • 取消 swap 空间激活
      • 持久化激活 swap 空间(/etc/fstab)

Linux 逻辑卷管理(8. Linux 逻辑卷管理)

逻辑卷基本管理

硬盘分区管理方案缺点

  • 硬盘分区空间必须使用连续空间,所以硬盘分区扩容很麻烦,特别是要扩容的分区后没有空间。
  • 使用硬盘分区创建的文件系统不同跨多个硬盘,受单个硬盘容量限制。
  • 如果硬盘损坏,则文件系统中数据也会丢失。

逻辑卷管理硬盘方案优点

逻辑卷基本概念

LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。

在这里插入图片描述

  • 物理卷(PV, Physical Volume),是LVM的基本存储逻辑块,通过块设备创建。块设备是指磁盘、磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID)。与基本的物理存储介质(如分区、磁盘等)相比,物理卷包含有和LVM相关的管理参数。
  • 卷组(VG, Volume Group),是一个逻辑的存储空间,由一个或多个物理卷组成。
  • 逻辑卷(LV, Logical Volume),是从卷组中创建出来的一个逻辑空间。如果把一个卷组类比为一个逻辑硬盘,那么逻辑卷则可以类比为一个硬盘分区,所以也可以在逻辑卷之上创建文件系统。

简单地说:卷组由多个物理卷组成,可以在卷组中创建多个逻辑卷,对逻辑卷创建文件系统给用户使用。

LVM管理基本流程:

  1. 创建物理卷
  2. 创建卷组
  3. 创建逻辑卷

在这里插入图片描述

命令部分

环境准备

虚拟机添加3块20G硬盘,sdb sdc sdd

[root@centos7 ~]# lsblk /dev/sd{b..d}
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  20G  0 disk
sdc    8:32   0  20G  0 disk
sdd    8:48   0  20G  0 disk

pvcreate(创建物理卷)

pvcreate [选项] 设备路径
  • -v:显示详细过程(verbose 模式)。
  • -f:强制初始化(即使设备上有数据或分区表,慎用!)。
  • -u UUID:指定物理卷的 UUID(默认自动生成)。
  • -y:所有提示都自动回答 “yes”(批量操作时使用)。
# 创建单个PV
[root@centos7 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
# 此次创建多个PV
[root@centos7 ~]# pvcreate /dev/sd{c,d}
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
# 查看PV列表
[root@centos7 ~]# pvs
PV         VG     Fmt  Attr PSize   PFree
/dev/sdb          lvm2 ---   20.00g 20.00g
/dev/sdc          lvm2 ---   20.00g 20.00g
/dev/sdd          lvm2 ---   20.00g 20.00g
# 查看单个PV详细信息
[root@centos7 ~]# pvdisplay /dev/sdb
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdb
VG Name
PV Size               20.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               MBHW0w-OkJL-CasO-PYRR-sduS-U2m5-zdkQ5d

vgcreate(创建卷组)

vgcreate [选项] 卷组名称 物理卷路径1 [物理卷路径2 ...]
  • -s <大小>:指定卷组的物理扩展块(Physical Extent,PE) 大小(默认 4MB),例如 -s 16M 表示 PE 大小为 16MB。PE 是 LVM 中最小的存储分配单位,逻辑卷的大小必须是 PE 的整数倍。
  • -v:显示详细创建过程(verbose 模式)。
  • -y:对所有确认提示自动回答 “yes”。
# 创建包涵单个PV的VG
[root@centos7 ~]# vgcreate webapp /dev/sdb
Volume group "webapp" successfully created
# 创建包涵多个PV的VG
[root@centos7 ~]# vgcreate dbapp /dev/sd{c,d}
Volume group "dbapp" successfully created
[root@centos7 ~]# pvs
PV         VG     Fmt  Attr PSize   PFree
/dev/sdb   webapp   lvm2 a--  <20.00g <20.00g
/dev/sdc   dbapp   lvm2 a--  <20.00g <20.00g
/dev/sdd   dbapp   lvm2 a--  <20.00g <20.00g
# 查看VG列表
[root@centos7 ~]# vgs
VG     #PV #LV #SN Attr   VSize   VFree  
dbapp    2   0   0 wz--n-   39.99g  39.99g
webapp   1   0   0 wz--n-  <20.00g <20.00g
# 查看单个VG详细信息
[root@centos7 ~]# vgdisplay dbapp
--- Volume group ---
VG Name               dbapp
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  1
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                2
Act PV                2
VG Size               39.99 GiB
# PE,Physical Extend,是PV的最小存储单元。
# 在创建VG时,可通过-s选项设置。
PE Size               4.00 MiB
Total PE              10238
Alloc PE / Size       0 / 0
Free  PE / Size       10238 / 39.99 GiB
VG UUID               kjY26m-D0ax-WmMq-fMJv-1Tnb-imqh-GOAWkG

lvcreate(创建逻辑卷)

lvcreate [选项] 卷组名称

选项(指定逻辑卷大小)

  • -L <大小>:直接指定逻辑卷的大小(如 10G500M2T)。
  • -l <PE数量>:按卷组的物理扩展块(PE)数量指定大小(如 -l 1000 表示使用 1000 个 PE,总大小 = 1000×PE 大小)。
  • -n <名称>:指定逻辑卷的名称(必选)。

扩展选项

  • -s:创建快照卷(用于数据备份,基于原逻辑卷的只读 / 可写副本)。
  • -i <数量>:条带化逻辑卷(将数据分散到多个物理卷,提升读写性能,类似 RAID0)。
  • -m <数量>:镜像逻辑卷(创建冗余副本,
# 在卷组webapp中创建一个逻辑卷:名称为webapp01,大小为5G。
[root@centos7 ~]# lvcreate -n webapp01 -L 5G webapp
Logical volume "webapp01" created.
# 在卷组dbapp中创建一个跨硬盘逻辑卷:名称为data01,大小为25G。
[root@centos7 ~]# lvcreate -n data01 -L 25G dbapp
Logical volume "data01" created.
# 查看LV列表
[root@centos7 ~]# lvs
LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
data01   dbapp  -wi-a-----  25.00g
webapp01 webapp -wi-a-----   5.00g

逻辑卷设备名支持以下三种格式:

  • /dev/vname/lvame
  • /dev/mapper/vname-lvame
  • /dev/dm-N
[root@centos7 ~]# ls -l /dev/dbapp/data01 /dev/mapper/dbapp-data01
lrwxrwxrwx 1 root root 7 617 18:26 /dev/dbapp/data01 -> ../dm-4
lrwxrwxrwx 1 root root 7 617 18:26 /dev/mapper/dbapp-data01 -> ../dm-4
# 查看单个LV详细信息
[root@centos7 ~]# lvdisplay /dev/dbapp/data01
--- Logical volume ---
LV Path                /dev/dbapp/data01
LV Name                data02
VG Name                dbapp
LV UUID                W8UafB-A7RJ-dBjM-bsA2-8Obc-p8gE-bMZgmm
LV Write Access        read/write
LV Creation host, time centos7.linux.com, 2022-12-26 11:42:40 +0800
LV Status              available
# open                 0
LV Size                25.00 GiB
# LE,Logical Extend,是LV的最小存储单元。
# 通常一个LE对应于一个PE。
Current LE             6400
Segments               2
Allocation             inherit
Read ahead sectors     auto
- currently set to     8192
Block device           253:4
# 可以看到:物理卷/dev/sdc空间已使用完,物理卷/dev/sdd空间已使用5G
[root@centos7 ~]# pvs
PV             VG     Fmt  Attr PSize    PFree
/dev/sdb       webapp lvm2 a--   <20.00g <15.00g
/dev/sdc       dbapp  lvm2 a--   <20.00g      0
/dev/sdd       dbapp  lvm2 a--   <20.00g  14.99g
# 可以看到逻辑卷/dev/dbapp/data01空间横跨2个硬盘
[root@centos7 ~]# lsblk /dev/sd{b..d}
NAME              MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb                 8:16   0  20G  0 disk
└─webapp-webapp01 253:3    0   5G  0 lvm
sdc                 8:32   0  20G  0 disk
└─dbapp-data01    253:4    0  25G  0 lvm
sdd                 8:48   0  20G  0 disk
└─dbapp-data01    253:4    0  25G  0 lvm

创建文件系统(挂载)

[root@centos7 ~]# mkfs.xfs /dev/webapp/webapp01
[root@centos7 ~]# mount /dev/webapp/webapp01 /var/www/html
# 基于lvm的文件系统持久化挂载,需要修改/etc/fstab文件。

清理

# 卸载文件系统
[root@centos7 ~]# umount /dev/webapp/webapp01
# 删除LV
[root@centos7 ~]# lvremove /dev/webapp/webapp01 /dev/dbapp/data01
Do you really want to remove active logical volume webapp/webapp01? [y/n]: y
Logical volume "webapp01" successfully removed
Do you really want to remove active logical volume dbapp/data01? [y/n]: y
Logical volume "data01" successfully removed
# 删除VG
[root@centos7 ~]# vgremove webapp dbapp
Volume group "webapp" successfully removed
Volume group "dbapp" successfully removed
# 删除PV
[root@centos7 ~]# pvremove /dev/sd{b..d}
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdd" successfully wiped.

扩展和缩减卷组

环境准备

# 创建卷组
[root@centos7 ~]# vgcreate webapp /dev/sdb
Physical volume "/dev/sdb" successfully created.
Volume group "webapp" successfully created
# 创建卷组的时候,如果指定的块设备不是物理卷,则会先将块设备创建为物理卷。
# 创建逻辑卷
[root@centos7 ~]# lvcreate -n webapp01 -L 10G webapp
Logical volume "webapp01" created.

扩展卷组

如果卷组空间不足,可以通过添加新的物理卷到卷组中,以扩展卷组容量。

[root@centos7 ~]# vgextend webapp /dev/sd{c,d}
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
Volume group "webapp" successfully extended

缩减卷组

如果卷组空间中有多余的物理卷或者物理卷容量小需要更换,则可以将物理卷从卷组中剔除。

删除物理卷前确保物理卷不在使用中。

# 查看物理卷使用状态
[root@centos7 ~]# pvs
PV         VG     Fmt  Attr PSize   PFree
/dev/sdb   webapp   lvm2 a--  <20.00g <10.00g # /dev/sdb在使用
/dev/sdc   webapp   lvm2 a--  <20.00g <20.00g
/dev/sdd   webapp   lvm2 a--  <20.00g <20.00g
# 将物理卷/dev/sdb从卷组webapp中剔除,则会报错
[root@centos7 ~]# vgreduce webapp /dev/sdb
Physical volume "/dev/sdb" still in use
# 解决方法:将物理卷/dev/sdb中数据移动到卷组中其他物理卷
[root@centos7 ~]# pvmove /dev/sdb
# 或者移动到卷组中特定物理卷
[root@centos7 ~]# pvmove /dev/sdb /dev/sdd
/dev/sdb: Moved: 0.51%
/dev/sdb: Moved: 100.00%
# 查看物理卷使用状态
[root@centos7 ~]# pvs
PV         VG     Fmt  Attr PSize   PFree
/dev/sdb   webapp   lvm2 a--  <20.00g <20.00g # /dev/sdb不在使用
/dev/sdc   webapp   lvm2 a--  <20.00g <20.00g
/dev/sdd   webapp   lvm2 a--  <20.00g <10.00g # /dev/sdd在使用
# 再次剔除,成功
[root@centos7 ~]# vgreduce webapp /dev/sdb
Removed "/dev/sdb" from volume group "webapp"
[root@centos7 ~]# pvs
PV         VG     Fmt  Attr PSize   PFree
/dev/sdb          lvm2 ---   20.00g  20.00g
/dev/sdc   webapp   lvm2 a--  <20.00g <20.00g
/dev/sdd   webapp   lvm2 a--  <20.00g <10.00g

扩展和缩减逻辑卷

扩展逻辑卷

如果逻辑卷空间不足,在卷组空间充足的情况下,也可以扩展逻辑卷空间。

# 逻辑卷增加2G空间
[root@centos7 ~]# lvextend -L +2G /dev/webapp/webapp01 
Size of logical volume webapp/webapp01 changed from 10.00 GiB (2560 extents) to 12.00 GiB (3072 extents).
Logical volume webapp/webapp01 successfully resized.
[root@centos7 ~]# lvs /dev/webapp/webapp01 
LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
webapp01 webapp -wi-a----- 12.00g

缩减逻辑卷

如果逻辑卷空间充足,希望将多余的空间缩减出来它用,也可以缩减逻辑卷空间。

[root@centos7 ~]# lvreduce -L -2G /dev/webapp/webapp01
WARNING: Reducing active logical volume to 10.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce webapp/webapp01? [y/n]: `y`
Size of logical volume webapp/webapp01 changed from 12.00 GiB (3072 extents) to 10.00 GiB (2560 extents).
Logical volume webapp/webapp01 successfully resized.
[root@centos7 ~]# lvs /dev/webapp/webapp01 
LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
webapp01 webapp -wi-a----- 10.00g

扩展和缩减文件系统

扩展 XFS 文件系统

XFS文件系统只支持扩展,不支持缩减

环境准备:格式化文件系统,并创建数据

[root@centos7 ~]# mkfs.xfs /dev/webapp/webapp01
[root@centos7 ~]# mkdir /var/www/html
[root@centos7 ~]# mount /dev/webapp/webapp01 /var/www/html
[root@centos7 ~]# cp /etc/host* /var/www/html
[root@centos7 ~]# ls /var/www/html
host.conf  hostname  hosts  hosts.allow  hosts.deny
# 第一步:扩展逻辑卷
[root@centos7 ~]# lvextend -L 15G /dev/webapp/webapp01
[root@centos7 ~]# lvs /dev/webapp/webapp01
LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
webapp01 webapp -wi-ao---- 15.00g
# 第二步:扩展文件系统
[root@centos7 ~]# xfs_growfs /var/www/html
[root@centos7 ~]# df -h /var/www/html
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/webapp-webapp01   15G  140M   15G    1% /var/www/html
[root@centos7 ~]# ls /var/www/html
host.conf  hostname  hosts  hosts.allow  hosts.deny
# 块设备和文件系统一并扩展
[root@centos7 ~]# lvextend -rL 20G /dev/webapp/webapp01
[root@centos7 ~]# lvs /dev/webapp/webapp01
LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
webapp01 webapp -wi-ao---- 20.00g
[root@centos7 ~]# df -h /var/www/html
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/webapp-webapp01   20G  176M   20G    1% /var/www/html

扩展 EXT4 文件系统

EXT4文件系统即支持扩展,也支持缩减。

环境准备:格式化文件系统,并创建数据

[root@centos7 ~]# umount /var/www/html
[root@centos7 ~]# mkfs.ext4 /dev/webapp/webapp01
[root@centos7 ~]# mount /dev/webapp/webapp01 /var/www/html
[root@centos7 ~]# df -h /var/www/html
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/webapp-webapp01   20G   24K   19G    1% /var/www/html
[root@centos7 ~]# cp /etc/host* /var/www/html
[root@centos7 ~]# ls /var/www/html
host.conf  hostname  hosts  hosts.allow  hosts.deny
# 第一步:扩展逻辑卷
[root@centos7 ~]# lvextend -L 25G /dev/webapp/webapp01
[root@centos7 ~]# lvs /dev/webapp/webapp01
LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
webapp01 webapp -wi-ao---- 25.00g
# 第二步:扩展文件系统
[root@centos7 ~]# resize2fs /dev/webapp/webapp01
[root@centos7 ~]# df -h /var/www/html
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/webapp-webapp01   25G   36K   24G    1% /var/www/html
[root@centos7 ~]# ls /var/www/html
host.conf  hostname  hosts  hosts.allow  hosts.deny
# 块设备和文件系统一并扩展
[root@centos7 ~]# lvextend -rL 30G /dev/webapp/webapp01
[root@centos7 ~]# lvs /dev/webapp/webapp01
LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
webapp01 webapp -wi-ao---- 30.00g
[root@centos7 ~]# df -h /var/www/html
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/webapp-webapp01   30G   36K   28G    1% /var/www/html

缩减 EXT4 文件系统

缩减EXT4文件系统注意事项:

  • 不支持在线缩减,必须卸载后缩减。
  • 缩减后的容量,不能小于当前使用的容量。

ext4 减容流程:

  1. 卸载文件系统
  2. e2fsck 文件系统
  3. 缩减文件系统
  4. 缩减lv
  5. 挂载测试

具体操作如下:

# 第一步:卸载文件系统
[root@centos7 ~]# umount /var/www/html 
# 第二步:检测文件系统
[root@centos7 ~]# e2fsck -f /dev/webapp/webapp01
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/webapp/webapp01:14/1966080 文件(0.0% 为非连续的), 167445/7864320 块
# 第三步:缩减文件系统
[root@centos7 ~]# resize2fs /dev/webapp/webapp01 10G
resize2fs 1.45.6 (20-Mar-2020)
将 /dev/webapp/webapp01 上的文件系统调整为 2621440 个块(每块 4k)。
/dev/webapp/webapp01 上的文件系统现在为 2621440 个块(每块 4k)。
# 第四步:缩减逻辑卷
[root@centos7 ~]# lvreduce -L 10G /dev/webapp/webapp01
WARNING: Reducing active logical volume to 10.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce webapp/webapp01? [y/n]: `y`
Size of logical volume webapp/webapp01 changed from 30.00 GiB (7680 extents) to 10.00 GiB (2560 extents).
Logical volume webapp/webapp01 successfully resized.
# 第五步:挂载文件系统验证
[root@centos7 ~]# mount /dev/webapp/webapp01 /var/www/html
[root@centos7 ~]# df -h /var/www/html
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/webapp-webapp01  9.7G   36K  9.3G    1% /var/www/html
[root@centos7 ~]# ls /var/www/html
host.conf  hostname  hosts  lost+found

补充说明: 如果文件系统是构建在磁盘分区上,扩展文件系统容量和缩减文件系统容量操作相同。

逻辑卷快照

我们可以使用快照记录了lv中数据,后续可以用来恢复数据。

# 创建快照:快照的容量不能小于lv容量
[root@centos7 ~]# lvcreate -s -n webapp01-snap1 -L 10G /dev/webapp/webapp01
Logical volume "webapp01-snap1" created.
# 挂载快照
[root@centos7 ~]# mount /dev/webapp/webapp01-snap1 /webapp/webapp01/
# 查看数据
[root@centos7 ~]# ls /webapp/webapp01/
host.conf  hostname  hosts  hosts.allow  hosts.deny
# 创建新数据
[root@centos7 ~]# echo hello world > /webapp/webapp01/hello.txt
[root@centos7 ~]# cat /webapp/webapp01/hello.txt
hello world

raid 逻辑卷

准备环境

[root@centos7 ~]# umount /webapp/webapp0
[root@centos7 ~]# umount /var/www/html
[root@centos7 ~]# lvremove /dev/webapp/webapp01*

创建 raid1 逻辑卷

[root@centos7 ~]# lvcreate --type raid1 -n webapp01 -L 15G webapp
[root@centos7 ~]# mkfs.xfs /dev/webapp/webapp01 
[root@centos7 ~]# mount /dev/webapp/webapp01 /var/www/html/
[root@centos7 ~]# cp /etc/ho* /var/www/html/

模拟故障

[root@centos7 ~]# dd if=/dev/zero of=/dev/sdd bs=1M count=256

此时文件系统仍可以正方访问

[root@centos7 ~]# ls /var/www/html/
host.conf  hostname  hosts  hosts.allow  hosts.deny
[root@centos7 ~]# umount /var/www/html
[root@centos7 ~]# mount /dev/webapp/webapp01 /var/www/html/

修复raid

# 删除丢失的物理卷
[root@centos7 ~]# vgreduce --removemissing webapp --force
# 扩容回来
[root@centos7 ~]# vgextend webapp /dev/sdd
# 修复raid1 逻辑卷
[root@centos7 ~]# lvconvert --repair /dev/webapp/webapp01
# 扫描物理卷变化
[root@centos7 ~]# pvscan
# 验证结果
[root@centos7 ~]# pvs|grep webap
/dev/sdb   webapp lvm2 a--  <20.00g   4.99g
/dev/sdc   webapp lvm2 a--  <20.00g   4.99g
/dev/sdd   webapp lvm2 a--  <20.00g <20.00g

其他示例:创建 raid5 逻辑卷

# Create  a  RAID5  LV  with a usable size of 5GiB, 3 stripes, a stripe size of 64KiB, using a total of 4 devices (including one for parity).
lvcreate --type raid5 -L 5G -i 3 -I 64 -n mylv vg00

Linux 交换空间管理(9. Linux 交换空间管理)

计算机存储器的层次结构

计算机存储器速度越快,成本较高。 为了获得好的性能/价格比,计算机中各种存储器组成一个层状的塔式结构,取长补短,协调工作。

在这里插入图片描述

计算机存储器的工作原理

在这里插入图片描述

  1. CPU运行程序时,先从寄存器中读取数据。如果在寄存器中可以找到数据,则直接从寄存器中读取。如果在寄存器中找不到数据,则从CPU Cache中读取数据,并将数据缓存在CPU Cache中。
  2. 如果在CPU cache中可以找到数据,则直接从CPU Cache中读取。如果在CPU cache中找不到数据,则从主存储器(内存)中读取数据,将数据缓存在主存储器中。
  3. 如果在内存中可以找到数据,则直接从内存中读取。如果在内存中找不到数据,则从辅助存储器中读取数据,例如机械磁盘、光盘、U盘等,并将数据缓存在内存中。

物理内存

计算机系统将内存划分为固定大小的块,称为 page,标准 page 大小为 4 KiB。进程并不直接对物理内存寻址,每个进程具有虚拟地址空间virtual address space。当进程请求内存时,MMU 将进程获得的虚拟地址(VA,Virtual Address )映射到物理地址(PA,Physical Address )。

MMU是Memory Management Unit的缩写,即内存管理单元,它是CPU中用来管理虚拟存储器、物理存储器的控制线路,负责将虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。

**思考:**为什么CPU不直接访问物理地址?

  1. 虚拟内存的容量是物理内存和交换空间的总和,而虚拟地址负责映射到物理内存地址和交换空间地址。
  2. 进程使用内存的过程中,希望内存是连续的。如果进程直接访问物理地址,则内核很难保证进程获得的物理地址空间是连续的,因为进程存在着运行和退出,就会出现内存碎片化。进程的虚拟地址在虚拟内存中是连续的,达到了内存连续的目的,而 MMU 会将进程的虚拟地址映射到物理地址。

Swap 空间

Swap,意思是“交换”、“实物交易”。Linux Swap(交换)空间是受Linux内核内存子系统控制的磁盘区域。

  • 功能1:当内存使用量超过定义的限制时,内核寻找已分配给进程但空闲的内存页,将该空闲的内存页写入到交换空间,并向其他进程重新分配RAM页面。
  • 功能2:如果某个程序需要访问磁盘上的页面,则内核会找到另一个空闲的内存页, 将其写入到磁盘,然后从交换区重新调用所需的页面。
  • 功能3:如果某个程序需要访问数据,访问的数据存放在交换空间,则该程序直接从交换空间读取数据,而不需要从磁盘原始位置读取,进而提高速度。

在这里插入图片描述

简单地说,Linux Swap 空间就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。

**交换空间只是临时的解决办法。**虽然交换空间能够作为"虚拟"内存使用,但由于交换区位于磁盘上,它的速度比物理内存慢的多,因此如果需要更快的速度的话,最好的办法仍然是加大物理内存。

free(查看内存)

# 默认单位是KiB,使用-m选项,以MiB为单位
[root@centos7 ~]# free 
total        used        free      shared  buff/cache   available
Mem:        4026156      330460     3528844       12136      166852     3485576
Swap:       4063228           0     4063228

输出说明:

  • Mem:

    • total:物理内存空间大小。

    • used:使用的内存 (total - free - buffers - cache)。

    • free:未使用的内存空间大小(真正的空闲,未被任何程序占用)。

    • shared:多个进程共享的内存空间大小。

    • cached:从磁盘读取的数据占用的内存空间大小,待以后使用(数据没有被修改)。

    • buffers:被更改但未写回磁盘的数据占用的内存空间大小。

  • Swap:

    • total:交换空间大小。

    • used:使用的交换空间大小。

    • free:未使用交换空间大小。

Swap 空间大小

管理员应根据系统的内存工作负载来调整交换空间大小。 应用供应商有时会提供这方面的建议。根据物理内存总量,下表提供了一些指导

物理内存(RAM)交换空间允许HIBERNATE时的交换空间
2GiB或以下两倍的RAM三倍的RAM
2GiB和8GiB之间同等的RAM两倍的RAM
8GiB和64GiB之间至少4GiB1.5倍的RAM
64GiB以上至少4GiB不建议Hibernate

笔记本电脑和台式机的Hibernate功能会在关闭系统电源之前使用交换空间来保存RAM内容。重新打开系统时, 内核将从交换空间恢复RAM内容,无需完全启动。 对于这些系统而言,交换空间需要超过RAM量。

创建交换空间

# 使用parted创建所需大小的分区并将其文件系统类型设置为linux-swap
[root@centos7 ~]# parted /dev/sdb mklabel gpt
[root@centos7 ~]# parted /dev/sdb unit MiB mkpart data01 linux-swap 1 2049
[root@centos7 ~]# parted /dev/sdb unit MiB print
# 格式化swap空间
[root@centos7 ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=2bf4e179-3648-4412-9495-3b278df4acd6

激活 swap 空间(swapon)

# 激活swap空间
[root@centos7 ~]# swapon /dev/sdb1
# 查看swap设备列表
[root@centos7 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1               partition	4063228	0	    -2
/dev/sdb1               partition	2097148	0	    -3

默认情况下,多个交换空间具有相同的优先级时,系统会按顺序使用交换空间,即内核先使用第一个已激活交换空间,直至其空间已满,然后开始使用第二个交换空间。在激活交换分区的时候,可以为每个交换空间定义一个优先级,从而强制按该顺序使用交换空间。

swapon 命令使用-p选项指定优先级,优先级介于-1和32767之间,值越大优先级越高。

示例:

[root@centos7 ~]# swapon -p 4 /dev/sdb1

取消 swap 空间激活

[root@centos7 ~]# swapoff /dev/sdb1
[root@centos7 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1               partition	4063228	0	    -2

持久化激活 swap 空间(/etc/fstab)

修改/etc/fstab文件,添加如下类似记录:

UUID=2bf4e179-3648-4412-9495-3b278df4acd6 swap swap pri=4 0 0

使用命令swapon -a激活/etc/fstab中所有交换设备。

使用命令swapoff -a取消/etc/fstab中所有交换设备激活。

[root@centos7 ~]# swapon -a
[root@centos7 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1               partition	4063228	0	    -2
/dev/sdb1               partition	2097148	0	    -3
[root@centos7 ~]# swapoff -a
[root@centos7 ~]# swapon -s

1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

除了网页外 网站还需要东莞有哪些好企业

我一个朋友的网站&#xff0c;5月份时候被攻击了&#xff0c;然后他找我帮忙看看&#xff0c;我看他的网站、网上查资料&#xff0c;不看不知道&#xff0c;一看吓一跳&#xff0c;最近几年这网络安全形势真是不容乐观&#xff0c;在网上查了一下资料&#xff0c;1、中国信息通…

自然灾害vr学习机:山体滑坡+泥石流避险+洪涝逃生+地震逃生+台风避险+雷电避险 - 详解

自然灾害vr学习机:山体滑坡+泥石流避险+洪涝逃生+地震逃生+台风避险+雷电避险 - 详解2025-09-29 12:37 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; o…

站点搭建使用socket登陆wordpress源码

它是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 1 Spring 特点 轻量级控制反转面向切面容器框架集合 2 Spring 核心组件 3 Spring 常用模块 4 Spring 主要包 5 Spring 常用注解 bean…

小程序网站建站模板百度网址安全中心

全世界只有3.14 % 的人关注了青少年数学之旅科学是人类进步的阶梯&#xff01;在当今社会&#xff0c;科学技术的发展进步将为人类社会带来巨大的效益&#xff0c;毫不夸张的说&#xff0c;科学指引并推着着人类文明的进程。基础科学作为科学技术的理论基石&#xff0c;其重要性…

详细介绍:XXE - 实体注入(xml外部实体注入)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【面板材料】A股上市公司增发股票及配股相关资料(1991-2024年)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

BindingList的应用与改进

在编写UI的过程中,我们通常使用ObservableCollection来监听列表的变化。然而,ObservableCollection只能在添加/移动/移除元素时通知界面,这意味着元素内部更改时,ObservableCollection是无法通知的 如果需要监听列…

谷歌 SEO 新词 xx animate 等实操教程

如上图,最近 AI 圈又冒出新词:wan animate 等,你们都看到了吗? 今天聊聊 SEO 新词这个"淘金"生意,为什么有些词能做,有些词碰都不能碰。 一、wan animate vs veo3:天壤之别如上图:❌ veo3:打死别碰…

US$248 Xhorse VVDI2 BMW FEM/BDC + Copy 48 Transponder (96 Bit) + MQB Authorization

Xhorse VVDI2 BMW FEM/BDC + Copy 48 Transponder (96 Bit) + MQB Authorization Xhorse Promotion for loyal customers till Christmas!!! This is Authorization Only! No Need Shipping, please pass us serial nu…

完整教程:【读书笔记】架构整洁之道 P6 实现细节

完整教程:【读书笔记】架构整洁之道 P6 实现细节pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

Print Conductor打印软件安装教程!一款非常好用的批量打印软件!支持PDF、Word、Excel、图片等

软件介绍 Print Conductor是一款由国外开发者制作的批量打印软件,支持PDF、Word、Excel、图片等多种格式文件的快速打印。它通过拖拽文件到软件界面即可实现批量打印,无需逐个打开文档,特别适合需要处理大量打印任务…

Python 面向对象编程基础:类与对象初体验

面向对象编程(OOP)是一种编程范式,它通过对象和类的概念来组织代码,使程序更加模块化、可维护和可扩展。Python 是一种支持面向对象编程的语言,提供了强大的类和对象机制。今天,就让我们一起学习 Python 中的面向…

Drools 7.0基础环境搭建

Drools 7.0基础环境搭建一、环境概述 Drools 7.0当前最新的是7.74.1 Final,Drools 8.0不兼容JDK8了(你发任你发,我用java8),7.73.0.Final这个兼容最稳定所以选这个 JDK:openjdk version "1.8.0_452" Mav…

o2o网站大全asp.net网站

系列文章目录 本系列课程主要针对于Ehcache缓存框架功能的开发实践全流程技术指南&#xff01; 第一节&#xff1a;Ehcache缓存框架的基本概念和简介第二节&#xff1a;Ehcache缓存框架的配置分析和说明第三节&#xff1a;Ehcache缓存框架的缓存方式的探索第四节&#xff1a;E…

邯郸市网络建站aspx网站开发 案例

前段时间到印度的马德拉斯市出差了3个月(4月到6月)&#xff0c;今天终于有时间将自己的出差心得和见闻记录下来&#xff0c;可能以后就会忘记。下午16:00时在深圳坐车到香港机场&#xff0c;上车没多久会让填一个入境香港的单子&#xff0c;然后是过海关&#xff0c;过海关时会…

自动驾驶中的传感器技术54——USS(0) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站整体规划建设银行网站半天进不去

XSS 概念&#xff1a;由于web应用程序对用户的输入过滤不严&#xff0c;通过html注入篡改网页&#xff0c;插入恶意脚本&#xff0c;从而在用户浏览网页时&#xff0c;控制用户浏览器的一种攻击。XSS类型&#xff1a;Reflected(反射型)&#xff1a;只是简单的把用户输入的数据反…

基于微信小程序的旅游景点体系【2026最新】

基于微信小程序的旅游景点体系【2026最新】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

US$64 NEC KEY II Adapter for CKM100 and Digimaster III

NEC KEY II Adapter for CKM100 and Digimaster IIIPackage List:1set x NEC KEY II Adapter for CKM100 and Digimaster III Pictures of NEC KEY II Adapter for CKM100 and Digimaster IIINEC KEY II Adapter for C…

反电动势法控制BLDC电机的原理图分析

1.概述 无霍尔的BLDC控制方案与有霍尔BLDC的基本原理相似,都是用所谓“六步换向法”,根据转子当前的位置,按照一定的顺序给定子绕组通电使BLDC电机转动。所不同的是无霍尔BLDC不需要霍尔效应传感器,通过检测定子绕…