当前位置: 首页 > news >正文

*Linux磁盘管理全攻略:LVM+RAID+文件系统指南

目录

一、磁盘结构

1.设备文件 

2.硬盘类型

3.机械硬盘和固态硬盘

二、管理存储

1.磁盘分区(MBR/GPT)

1.1目的

1.2MBR

1.3GPT

1.4BIOS和UEFI

2.管理分区

2.1列出块设备

2.2创建分区

二、文件系统

1.文件系统类型

2.文件系统组成类型

3.文件系统管理

3.1创建文件系统

3.2查看和管理分区信息

3.3文件系统检测和修复

4.挂载

4.1挂载文件系统mount

4.2卸载文件系统umount

4.3查看挂载情况

4.4持久挂载

4.5重新挂载

5.处理交换文件和分区

5.1交换分区实现过程

5.2启用swap分区

5.3禁用swap分区

5.4创建swap分区

5.5查看swap分区

5.6修改swap优先级

5.7以文件作为swap分区

5.8永久禁用swap

5.9swap使用策略

6.文件系统查看工具df

7.目录统计工具du

8.文件工具dd

三、RAID

1.实现逻辑卷

1.1pv管理工具

1.2vg管理工具

1.3lv管理工具

1.4扩展逻辑卷

1.5缩减逻辑卷

2.跨主机迁移卷组

3.拆除指定的pv存储设备

五、逻辑卷快照


一、磁盘结构

1.设备文件 

对于Linux,一切皆文件,硬件设备同样是以文件形式呈现出来的。设备文件是操作系统中一种特殊的文件类型,其核心作用是作为硬件设备与软件(驱动程序)之间的桥梁。

添加硬盘,不重启识别

[root@rocky136 ~]# echo '- - -' > /sys/class/scsi_host/host0/scan 
[root@rocky136 ~]# echo '- - -' > /sys/class/scsi_host/host1/scan 
[root@rocky136 ~]# echo '- - -' > /sys/class/scsi_host/host2/scan
##但是在 ubuntu 中,该目录下的内容太多
[root@rocky-136 ~]#ls /sys/class/scsi_host
host0   host12  host16  host2   host23  host27  host30  host5  host9
host1   host13  host17  host20  host24  host28  host31  host6
host10  host14  host18  host21  host25  host29  host32  host7
host11  host15  host19  host22  host26  host3   host4   host8#两种方法
#1.循环遍历
[root@ubuntu2204 ~]# for i in `ls /sys/class/scsi_host/`;do echo '- - -' > 
/sys/class/scsi_host/$i/scan;done#2.找出SPI总线对应的 host,只扫描该 host
[root@ubuntu2204 ~]# grep mptspi /sys/class/scsi_host/host*/proc_name
/sys/class/scsi_host/host32/proc_name:mptspi
#此处是重新扫描 SCSI 总线来添加设备,之所以是 SCSI 总线,是因为我们添加的是 SCSI 类型的硬盘[root@ubuntu2204 ~]# echo '- - -' > /sys/class/scsi_host/host32/scan

SCSI:(small computer system interface),小型计算机系统接口,是常用且重要的数据传输协议之一,它支撑着操作系统对外部设备的i/o操作。实际应用场景中,在linux系统上添加一个新的 scsi 磁盘是不需要重启的,一般可以通过扫描发现的操作来识别就绪设备。

/sys 文件是系统是和 /proc 一样,是一个内存文件系统 ,在磁盘上并没有对应的内容。通常称其为
sysfs, 这是内核 “暴露” 给用户空间的一个 驱动模型层次结构的展现。因此,host0, host1 这些 “文件” 是内核根据设备驱动程序 “发现” 的设备后在内存中创建的对应的 “文件” 和 "文件层次"。

2.硬盘类型

3.机械硬盘和固态硬盘

        机械硬盘(HDD)是传统存储设备,核心结构包含盘片、磁头等精密部件,工作时盘片高速旋转,磁头以极微小间隙贴近盘面并沿半径移动来定位数据,通过电磁流改变磁极读写数据。因依赖机械运动,对环境洁净度要求苛刻,不过具有成本低、容量大的优势,适用于大规模数据存储。

        固态硬盘(SSD)则采用固态电子芯片阵列,无机械结构,靠电信号直接读写数据,接口和外形与HDD兼容,性能上防震抗摔、传输速率快、功耗低、重量轻且无噪音,适合高效数据访问和移动场景,但单位容量成本高,大容量产品价格远超HDD 。

#识别SSD和HDD类型
#1表示机械,0表示SSD
[root@rocky86 ~]# lsblk -d -o name,rota
NAME   ROTA
sda        1
sr0        1
nvme0n1    0
nvme0n2    0[root@rocky86 ~]# ls /sys/block/
nvme0n1 nvme0n2 sda sr0[root@rocky86 ~]# cat /sys/block/*/queue/rotational
0
0
1
1[root@rocky86 ~]# cat /sys/block/sda/queue/rotational 
1#测速
[root@rocky-136 ~]#dd | hdparm -t /dev/sda
/dev/sda:Timing buffered disk reads: 322 MB in  3.01 seconds = 107.10 MB/sec

磁盘寻址:CHS、LBA。

二、管理存储

使用磁盘空间过程:

        1.设备分区
        2.创建文件系统
        3.挂载新的文件系统

1.磁盘分区(MBR/GPT)

1.1目的

        优化I/O性能
        实现磁盘空间配额限制
        提高修复速度
        隔离系统和程序
        安装多个OS 
        采用不同文件系统

1.2MBR

MBR,硬盘的第一个物理扇区(0 柱面 0 磁头 1 扇区),大小 512 字节

446bytes: 主引导程序代码,用于在系统启动时查找并加载操作系统引导程序
64bytes:分区表,其中每16bytes标识一个分区
2bytes: 55AA,标识位,用于标识该扇区为有效的 MBR 扇区

MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区) 。

MBR分区:主和扩展分区对应的1--4,/dev/sda3,逻辑分区从5开始,/dev/sda。

#查看分区表信息
[root@rocky-136 ~]#hexdump -C -n 512 /dev/sda

备份MBR分区表,破坏后恢复

#查看分区表
[root@rocky86 ~]# fdisk -l /dev/sda
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5b8e1003
Device     Boot   Start       End   Sectors Size Id Type
/dev/sda1 *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 419430399 417331200 199G 8e Linux LVM#备份MBR分区表
[root@rocky86 ~]# dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446#64字节大小
[root@rocky86 ~]# ll /data/dpt.img 
-rw-r--r-- 1 root root 64 Jul 30 11:49 /tmp/dpt.img#查看具体内容
[root@rocky86 ~]# hexdump -vC /data/dpt.img#备份到远端
[root@rocky86 ~]# scp /tmp/dpt.img 192.168.61.140:#破坏MBR分区表
[root@rocky86 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
64+0 records in
64+0 records out
64 bytes copied, 0.00248682 s, 25.7 kB/s#再次查看前512字节
[root@rocky86 ~]# hexdump -vC -n 512 /dev/sda#再次查看分区表,没有分区信息
[root@rocky86 ~]# fdisk -l /dev/sda
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3475e2b0#但内存中还有相关信息
[root@rocky86 ~]# lsblk
NAME       MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda           8:0    0 200G  0 disk 
├─sda1        8:1    0   1G  0 part /boot
└─sda2        8:2    0 199G  0 part ├─rl-root 253:0    0   70G  0 lvm /├─rl-swap 253:1    0   2G  0 lvm [SWAP]└─rl-home 253:2    0 127G  0 lvm /home
sr0          11:0    1 10.5G  0 rom#重启后无法进系统
[root@rocky86 ~]# reboot#用光盘启动,进入Rescue mode,选第3项skip to shell#配置网络
ifconfig ens33 192.168.61.136/24#从远端拿回分区表信息
scp 192.168.61.140:/root/dpt.img .#恢复MBR分区表
dd if=dpt.img of=/dev/sda bs=1 seek=446#重启
reboot

1.3GPT

GPT优势显著,支持 128 个分区,采用 64 位技术,兼容 8Z(512Byte/block)和 64Z(4096Byte/block)模式,用 128 位 UUID 标识磁盘与分区。分区表具备自动备份功能,头尾各存一份,还设有 CRC 校验位保障数据准确。同时,UEFI 硬件对 GPT 的支持,让操作系统能基于 GPT 分区启动。GPT 分区结构由 GPT 头、分区表、GPT 分区以及备份区域这 4 个区域构成。

#ubuntu默认使用GPT分区
[root@ubuntu-140 ~]#fdisk -l /dev/sda
Disk /dev/sda: 150 GiB, 161061273600 bytes, 314572800 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B2665541-61DD-47CD-9C55-6F66731D73F1Device       Start       End   Sectors  Size Type
/dev/sda1     2048      4095      2048    1M BIOS boot
/dev/sda2     4096   4198399   4194304    2G Linux filesystem
/dev/sda3  4198400 314570751 310372352  148G Linux filesystem

1.4BIOS和UEFI

BIOS是固化在主板上用于系统自检和引导操作系统的程序,诞生于1975年,用16位汇编语言编写,只能访问1M内存,仅支持MBR初始化的硬盘,最大支持2T硬盘和4个主分区,采用字符操作界面,已无法满足64位系统需求。EFI作为BIOS的继任标准,由UEFI继承发展,后者由国际组织统一管理,采用32/64位C语言编写,突破实模式限制,提供图形化界面和文件式信息存储,支持GPT分区表及2T以上硬盘,能实现更灵活的硬盘分区。

2.管理分区

2.1列出块设备

lsblk [options] [<device> ...]#常用选项
-a|--all            #输出所有设备信息
-b|--bytes          #以字节为单位显示设备大小
-d|--nodeps         #不显示分区信息
-e|--exclude <list> #以主设备号排除设备
-f|--fs             #显示文件系统
-i|--ascii          #只使用 ascii 字符输出
-I|--include <list> #仅显示指定的设备
-J|--json           #以json格式显示输出
-l|--list           #以列表显示
-T|--tree           #以树状结构显示,默认项
-m|--perms          #显示属主属组及权限
-n|--noheadings     #不显示表头
-o|--output <list>  #只显示指定列
-O|--output-all     #显示所有列
-p|--paths          #显示设备全路径
-P|--pairs          #以 k=>v 的格式显示输出
-r|--raw            #原样输出
-s|--inverse        #反向显示关联信息
-S|--scsi           #显示scsi设备(small computer system interface device,小型计算机接口设备)
-t|--topology       #显示拓扑信息#常用字段
NAME     #设备名称
MAJ:MIN  #主设备号:次设备号
RM       #是否是可移动设备
SIZE     #设备容量大小
RO       #是否是只读设备
TYPE     #设备类型
MOUNTPOINT #挂载点

2.2创建分区

2.2.1parted高级分区操作命令,可以是交互或非交互方式,实时生效的,没有交互式确认。

parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]#常用选项
-l|--list         #显示所有硬盘分区信息        
-s|--script       #不输出提示信息   #常用子命令
align-check TYPE N                       #检查分区是否满足对齐(最小|最佳)类型的对齐方式
help [COMMAND]                           #显示命令帮助
mklabel|mktable LABEL-TYPE               #指定磁盘的分区类型 gpt|msdos(mbr)
mkpart PART-TYPE [FS-TYPE] START END     #新建分区,指定分区类型,文件系统,开始结束位置
name NUMBER NAME                         #重命名指定分区
print [devices|free|list,all|NUMBER]     #显示
quit                                     #退出
rescue START END                         #空间碎片整理
resizepart NUMBER END                    #重置分区大小
rm NUMBER                                #删除指定分区
select DEVICE                            #选择设备
disk_set FLAG STATE                      #为设备打标签
disk_toggle [FLAG]                       #修改flag
set NUMBER FLAG STATE                    #设置flag
toggle [NUMBER [FLAG]]                   #修改flag
unit UNIT                                #设置默认单位, 默认为MB,B|KB|MB|GB|TB
version                                  #显示版本
#显示所有硬盘分区信息
[root@ubuntu-140 ~]#parted -l#查看指定磁盘设备分区信息,unknown无分区信息,新磁盘
[root@ubuntu-140 ~]#parted /dev/sdb print
Error: /dev/sdb: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)                            
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: #磁盘上指定GPT分区
[root@ubuntu-140 ~]#parted /dev/sdb mklabel gpt
Information: You may need to update /etc/fstab.#查看
[root@ubuntu-140 ~]#parted /dev/sdb print                         
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start  End  Size  File system  Name  Flags#创建分区
[root@ubuntu-140 ~]#parted /dev/sdb mkpart primary 1 1001
Information: You may need to update /etc/fstab.#查看
[root@ubuntu-140 ~]#parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start   End     Size    File system  Name     Flags1      1049kB  1001MB  1000MB               primary#再次创建
[root@ubuntu-140 ~]#parted /dev/sdb mkpart primary 1002 1102
Information: You may need to update /etc/fstab.#再次查看
[root@ubuntu-140 ~]#parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start   End     Size    File system  Name     Flags1      1049kB  1001MB  1000MB               primary2      1002MB  1102MB  99.6MB               primary#删除
[root@ubuntu-140 ~]#parted /dev/sdb rm 2
Information: You may need to update /etc/fstab.#再次查看
[root@ubuntu-140 ~]#parted /dev/sdb print                         
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start   End     Size    File system  Name     Flags1      1049kB  1001MB  1000MB               primary

2.2.2fdisk

fdisk [options] <disk>      
fdisk [options] -l [<disk>] #类似于fdisk 的GPT分区工具
gdisk [options] [device...] #常用选项
-b|--sector-size <size>      #指定扇区大小,默认512字节
-L|--color[=color]           #显示时是否添加颜色(auto|always|never)默认启用颜色
-l|--list                    #显示所有磁盘设备
-o|--output <list>           #只显示指定列
-u|--units[=<unit>]          #设置显示单位 cylinders|sectors,默认sectors
-s|--getsz                   #显示设备有多少个扇区
-b|--bytes N                 #以指定的字节大小来计算扇区数量
-t|--type type               #只显示指定类型的分区表
-C|--cylinders N             #指定柱面数
-H|--heads N                 #指定磁头数
-S|--sectors N                #指定每条磁道的扇区数#常用子命令
p     #输出分区列表
t     #更改分区类型
n     #创建新分区
d     #删除分区
v     #校验分区
u     #转换单位
w     #保存并退出
q     #不保存并退出
x     #高级功能(专家模式)#不同类型分区可用的列,配合 -o 选项
gpt: Device Start End Sectors Size Type Type-UUID Attrs Name UUID
dos: Device Start End Sectors Cylinders Size Type Id Attrs Boot End-C/H/S StartC/H/S
bsd: Slice Start End Sectors Cylinders Size Type Bsize Cpg Fsize
sgi: Device Start End Sectors Cylinders Size Type Id Attrs
sun: Device Start End Sectors Cylinders Size Type Id Flags
#显示所有设备
[root@rocky86 ~]# fdisk -l#显示指定设备
[root@rocky86 ~]# fdisk -l /dev/sda#显式指定列
[root@ubuntu-140 ~]#fdisk /dev/sda -lo start,end,type
Disk /dev/sda: 150 GiB, 161061273600 bytes, 314572800 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B2665541-61DD-47CD-9C55-6F66731D73F1Start       End Type2048      4095 BIOS boot4096   4198399 Linux filesystem
4198400 314570751 Linux filesystem#查看内核是否已经识别新的分区
[root@ubuntu-140 ~]#cat /proc/partitions
...#同步分区表
partprobe
#创建分区
[root@rocky-136 ~]#fdisk /dev/sdbWelcome to fdisk (util-linux 2.37.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x75d3fb8f.Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75d3fb8fCommand (m for help): n
Partition typep   primary (0 primary, 0 extended, 4 free)e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +5GCreated a new partition 1 of type 'Linux' and of size 5 GiB.Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75d3fb8fDevice     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 10487807 10485760   5G 83 Linux.
.
.Command (m for help): n
Partition typep   primary (2 primary, 0 extended, 2 free)e   extended (container for logical partitions)
Select (default p): e
Partition number (3,4, default 3): 
First sector (20973568-41943039, default 20973568): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (20973568-41943039, default 41943039): +8GCreated a new partition 3 of type 'Extended' and of size 8 GiB.Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75d3fb8fDevice     Boot    Start      End  Sectors Size Id Type
/dev/sdb1           2048 10487807 10485760   5G 83 Linux
/dev/sdb2       10487808 20973567 10485760   5G 83 Linux
/dev/sdb3       20973568 37750783 16777216   8G  5 Extended.
.
.Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75d3fb8fDevice     Boot    Start      End  Sectors Size Id Type
/dev/sdb1           2048 10487807 10485760   5G 83 Linux
/dev/sdb2       10487808 20973567 10485760   5G 83 Linux
/dev/sdb3       20973568 37750783 16777216   8G  5 Extended
/dev/sdb5       20975616 27267071  6291456   3G 83 Linux
/dev/sdb6       27269120 37750783 10481664   5G 83 LinuxCommand (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.[root@rocky-136 ~]#lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0  20G  0 disk 
├─sdb1   8:17   0   5G  0 part 
├─sdb2   8:18   0   5G  0 part 
├─sdb3   8:19   0   1K  0 part 
├─sdb5   8:21   0   3G  0 part 
└─sdb6   8:22   0   5G  0 part #删除第二个分区
Command (m for help): d
Partition number (1-3,5,6, default 6): 2Partition 2 has been deleted.Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75d3fb8fDevice     Boot    Start      End  Sectors Size Id Type
/dev/sdb1           2048 10487807 10485760   5G 83 Linux
/dev/sdb3       20973568 37750783 16777216   8G  5 Extended
/dev/sdb5       20975616 27267071  6291456   3G 83 Linux
/dev/sdb6       27269120 37750783 10481664   5G 83 Linux

2.2.3gdisk

gdisk [ -l ] device#常用子命令
b       #备份分区表到指定文件
c       #修改分区名
d       #删除分区
i       #显示分区详细信息
l       #列出所有分区类型
n       #新建分区
o       #创建新的分区表
p       #查看分区
q       #退出
r       #恢复和转换选项,非专业人士勿用
s       #排序
t       #修改分区类型,默认 8300,表示普通分区
v       #检测硬盘是否有问题
w       #保存退出
x       #额外功能,专家模式
?       #显示帮助
#创建分区
[root@ubuntu-140 ~]#gdisk /dev/sdc
GPT fdisk (gdisk) version 1.0.8Partition table scan:MBR: not presentBSD: not presentAPM: not presentGPT: not presentCreating new GPT entries in memory.Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +5G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): L
Type search string, or <Enter> to show all codes: L
0701 Microsoft Storage Replica           3900 Plan 9                            
...                         
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'Command (? for help): p
Disk /dev/sdc: 41943040 sectors, 20.0 GiB
Model: VMware Virtual S
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C75F7D47-329E-4639-88DD-F49EA483A872
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 31457213 sectors (15.0 GiB)Number  Start (sector)    End (sector)  Size       Code  Name1            2048        10487807   5.0 GiB     8300  Linux filesystemCommand (? for help): n
Partition number (2-128, default 2): 
First sector (34-41943006, default = 10487808) or {+-}size{KMGTP}: 
Last sector (10487808-41943006, default = 41943006) or {+-}size{KMGTP}: +5G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'Command (? for help): n
Partition number (3-128, default 3): 
First sector (34-41943006, default = 20973568) or {+-}size{KMGTP}: 
Last sector (20973568-41943006, default = 41943006) or {+-}size{KMGTP}: 
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'Command (? for help): p
Disk /dev/sdc: 41943040 sectors, 20.0 GiB
Model: VMware Virtual S
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C75F7D47-329E-4639-88DD-F49EA483A872
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)Number  Start (sector)    End (sector)  Size       Code  Name1            2048        10487807   5.0 GiB     8300  Linux filesystem2        10487808        20973567   5.0 GiB     8300  Linux filesystem3        20973568        41943006   10.0 GiB    8300  Linux filesystemCommand (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.#删除分区
[root@ubuntu-140 ~]#gdisk /dev/sdc
GPT fdisk (gdisk) version 1.0.8Partition table scan:MBR: protectiveBSD: not presentAPM: not presentGPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): p
Disk /dev/sdc: 41943040 sectors, 20.0 GiB
Model: VMware Virtual S
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C75F7D47-329E-4639-88DD-F49EA483A872
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)Number  Start (sector)    End (sector)  Size       Code  Name1            2048        10487807   5.0 GiB     8300  Linux filesystem2        10487808        20973567   5.0 GiB     8300  Linux filesystem3        20973568        41943006   10.0 GiB    8300  Linux filesystemCommand (? for help): d
Partition number (1-3): 2Command (? for help): p
Disk /dev/sdc: 41943040 sectors, 20.0 GiB
Model: VMware Virtual S
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C75F7D47-329E-4639-88DD-F49EA483A872
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 10487774 sectors (5.0 GiB)Number  Start (sector)    End (sector)  Size       Code  Name1            2048        10487807   5.0 GiB     8300  Linux filesystem3        20973568        41943006   10.0 GiB    8300  Linux filesystemCommand (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.

二、文件系统

        文件系统是操作系统中专门管理存储设备上数据的核心组件,它通过定义文件存储的结构、规则和访问方式,将物理存储空间逻辑化为可操作的目录和文件,实现数据的组织、存储、检索与保护,具体功能包括分配磁盘空间、管理文件权限、记录文件信息(如名称、大小、修改时间)、支持快速读写操作,以及提供数据备份、加密、压缩等高级服务,确保用户能高效、安全地管理和使用存储设备中的数据。所谓文件系统,是做在分区或者磁盘上的。

#查看当前内核支持的文件系统
ls /lib/modules/`uname -r`/kernel/fs
#查看当前系统可用的文件系统
cat /proc/filesystems

注意:系统“当前可用”的文件系统是编译内核时选入modules的,而默认支持的文件系统只是可用文件系统的子集;若要使用未在/proc文件系统列出的文件系统,需重新编译内核将其加入modules。

1.文件系统类型

2.文件系统组成类型

        用户空间的应用程序无需直接与硬件或底层文件系统交互,而是通过操作系统提供的抽象接口(如系统调用)来间接操作文件,操作系统作为中间层,向上为应用程序提供统一的文件操作接口,向下管理硬件和文件系统的具体实现  。      

3.文件系统管理

3.1创建文件系统

①mkfs

mkfs [options] [-t <type>] [fs-options] <device> [<size>]#常用选项
-t|--type=model  #指定文件系统类型 (ext2|ext3|ext4|xfs),默认 ext2
-b               #指定块 block 大小 (1024|2048|4096)
-L LABEL         #设置卷标
-V|--verbose     #显示创建过程
-j               #同 -t ext3
-i N             #为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N N             #指定分区中创建多少个inode
-I N             #一个inode记录占用的磁盘空间大小,128---4096
-m N             #默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] #启用指定特性
-O ^FEATURE      #关闭指定特性
root@ubuntu-140:~# lsblk /dev/sdc -f
NAME   FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sdc                                           
├─sdc1                                        
├─sdc2                                        
└─sdc3     ##创建xfs文件系统                                 
root@ubuntu-140:~# mkfs -t xfs /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=327680 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=1, sparse=1, rmapbt=0=                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=1310720, 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@ubuntu-140:~# lsblk /dev/sdc -f
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdc                                                                           
├─sdc1 xfs                c27dc89c-4b76-4708-bdc3-fc73675b9879                
├─sdc2                                                                        
└─sdc3  #df只能查看已挂载的而设备                                                                      
root@ubuntu-140:~# df -lh
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              193M  1.5M  192M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   73G  6.4G   63G  10% /
tmpfs                              964M     0  964M   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  252M  1.6G  14% /boot
tmpfs                              193M  4.0K  193M   1% /run/user/0

②mke2fs

#ext系列文件系统专用管理工具
mke2fs [OPTION]... DEVICE #常用选项
-t         #指定文件系统类型 {ext2|ext3|ext4|xfs} 
-b         #指定块大小{1024|2048|4096} 
-L LABEL   #设置卷标
-j         #同 -t ext3,mkfs.ext3|mkfs -t ext3|mke2fs -j|mke2fs -t ext3
-i N       #为数据空间中每多少个字节创建一个inode 不应该小于block大小
-N N       #指定分区中创建多少个inode
-I N       #一个inode记录占用的磁盘空间大小,128---4096
-m N       #默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] #启用指定特性
-O ^FEATURE      #关闭指定特性

3.2查看和管理分区信息

①blkid

#查看块设备属性信息
blkid [OPTION]... [DEVICE]#常用选项
-U UUID     #根据指定的UUID来查找对应的设备
-L LABEL    #根据指定的LABEL来查找对应的设备
[root@rocky-136 ~]#blkid
/dev/mapper/rl-swap: UUID="ef5bdf1d-9726-4b85-9fe3-444e70d8db7c" TYPE="swap"
/dev/sr0: UUID="2024-11-16-01-52-31-00" LABEL="Rocky-9-5-x86_64-dvd" TYPE="iso9660" PTUUID="5d896d99" PTTYPE="dos"
/dev/mapper/rl-home: UUID="8eda8e72-ea86-4d70-a4eb-1e59d3d7b9a7" TYPE="xfs"
/dev/mapper/rl-root: UUID="bd30888e-8a4e-4125-9644-528e1dafc887" TYPE="xfs"
/dev/sda2: UUID="202a26bd-1f18-4fae-bdf8-c1096dafbadd" TYPE="xfs" PARTUUID="4f872db8-9313-4f1d-b439-5ca4ec05eede"
/dev/sda3: UUID="318G1d-SxtT-RwiR-Wfmr-Sh2a-0flK-MOXskh" TYPE="LVM2_member" PARTUUID="a47321ad-6ff6-475b-ba98-513ec9a3670c"
/dev/sda1: UUID="24A0-CF4F" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="6611a933-97f4-4c90-8105-66b9f0f1d411"
/dev/sdb2: UUID="aff8b768-0957-4a0e-8ed0-f7b42e4166c1" TYPE="ext4" PARTUUID="75d3fb8f-02"
/dev/sdb5: UUID="47854f8e-a05c-4773-905f-b3cb6e677e79" TYPE="xfs" PARTUUID="75d3fb8f-05"
/dev/sdb1: UUID="0dba9e49-6366-404d-bf26-f5cb4b0c615e" TYPE="xfs" PARTUUID="75d3fb8f-01"
/dev/sdb6: PARTUUID="75d3fb8f-06"[root@rocky-136 ~]#blkid -U 'aff8b768-0957-4a0e-8ed0-f7b42e4166c1'
/dev/sdb2

②e2label

#管理ext系列文件系统的LABEL
e2label DEVICE [LABEL]

③findfs

#查找分区
findfs [options] {LABEL,UUID,PARTUUID,PARTLABEL}=<value>
[root@ubuntu2204 ~]# findfs UUID=b2d34757-f593-46ce-a8e6-d1009eb71fdc
/dev/sdc2[root@ubuntu2204 ~]# findfs LABEL='Ubuntu-Server 22.04 LTS amd64'
/dev/sr0

④tune2fs

#重新设定ext系列文件系统可调整参数的值
tune2fs [OPTION]... [DEVICE]#常用选项
-l       #查看指定文件系统信息
-L LABEL #修改卷标
-m N     #修预留给管理员的空间百分比
-j       #将ext2升级为ext3
-O       #文件系统属性启用或禁用, -O ^has_journal
-o       #调整文件系统的默认挂载选项,-o ^acl 
-U UUID  #修改UUID号
[root@ubuntu2204 ~]# tune2fs -l /dev/sdc1
tune2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:   <none>
Last mounted on:         <not available>
Filesystem UUID:         e55d9611-63c5-43dd-a6b3-fe6409778834
Filesystem magic number: 0xEF53
Filesystem revision #:   1 (dynamic)
......
...... 

⑤dumpe2fs

#显示ext文件系统信息,将磁盘块分组管理
dumpe2fs [OPTION]... [DEVICE]
[root@ubuntu2204 ~]# dumpe2fs /dev/sdc1
dumpe2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:   <none>
Last mounted on:         <not available>
Filesystem UUID:         e55d9611-63c5-43dd-a6b3-fe6409778834
Filesystem magic number: 0xEF53
Filesystem revision #:   1 (dynamic)
......
......#查看超级块信息
[root@ubuntu2204 ~]# dumpe2fs -h /dev/sdc1
dumpe2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:   <none>
Last mounted on:         <not available>
Filesystem UUID:         e55d9611-63c5-43dd-a6b3-fe6409778834
Filesystem magic number: 0xEF53
Filesystem revision #:   1 (dynamic)
......
......

⑥xfs_info

#显示已挂载的 xfs 文件系统信息
xfs_info mountpoint|devname

超级块和INODE TABLE

超级块(Superblock)是文件系统的元数据核心,存储文件系统类型、大小、状态等全局信息;INode表(INode Table)是文件索引数据库,记录每个文件的属性、权限及数据块位置,二者共同支撑文件系统的组织与访问。


3.3文件系统检测和修复

文件系统故障常发生于死机或者非正常关机之后,挂载为文件系统标记为"no clean"。

注意:一定不要在挂载状态下执行下面命令修复

①fsck

fsck [options] -- [fs-options] [<filesystem> ...]#常用选项
-a     #自动修复
-r     #交互式修复错误

②e2fsck

#ext系列文件专用的检测修复工具
e2fsck [options] -- [fs-options] [<filesystem> ...]#常用选项
-y     #自动回答为yes
-f     #强制修复
-p     #自动进行安全的修复文件系统问题

③xfs_repair

#xfs文件系统专用检测修复工具
xfs_repair [options] device#常用选项
-f     #修复文件,而设备
-n     #只检查
-d     #允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot

4.挂载

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为。

卸载:为解除此关联关系的过程。

挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空 进程正在使用中的设备无法被卸载。

4.1挂载文件系统mount

device:指明要挂载的设备

设备文件:例如:/dev/sda5
卷标:-L 'LABEL', 例如 -L 'MYDATA' 
UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e' 
伪文件系统名称:proc, sysfs, devtmpfs, configfs

mountpoint:挂载点目录必须事先存在,建议使用空目录

mount [-lhV]
mount -a [options]
mount [options] [--source] <source> | [--target] <directory>
mount [options] <source> <directory>
mount <operation> <mountpoint> [<target>]-a|--all     #自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-B|--bind              #绑定目录到另一个目录上
-c|--no-canonicalize   #不对路径规范化
-f|--fake              #空运行;跳过 mount(2) 系统调用
-F|--fork              #对每个设备禁用 fork,配合-a 选项一起使用
-T|--fstab path        #指定写文件,默认 /etc/fstab
-i|--internal-only     #不调用 mount.<type> 辅助程序
-l|--show-labels       #显示文件系统的 labels
-n|--no-mtab           #不更新/etc/mtab,mount不可见
-o|--options o1,o2     #挂载选项列表,以英文逗号分隔
-O|--test-opts o1,o2   #限制文件系统集合(和 -a 选项一起使用)
-r|--read-only         #以只读方式挂载文件系统(同 -o ro)
-t|--types            #指定要挂载的设备上的文件系统类型,如:ext4,xfs
--source device       #指明源(路径、标签、uuid)
--target mountpoint   #指明挂载点
-v|--verbose          #显示过程
-w|--rw|--read-write  #以读写方式挂载文件系统(默认)
-L LABEL              #以卷标指定挂载设备
-U UUID               #以UUID指定要挂载的设备#-o选项值
async     #异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
sync      #同步模式,内存更改时,同时写磁盘,安全,但效率低下
atime/noatime       #包含目录和文件
diratime/nodiratime #目录的访问时间戳
auto/noauto         #是否支持开机自动挂载,是否支持-a选项
exec/noexec         #是否支持将文件系统上运行应用程序
dev/nodev           #是否支持在此文件系统上使用设备文件
suid/nosuid         #是否支持suid和sgid权限
remount             #重新挂载
ro/rw               #只读/读写   
user/nouser         #是否允许普通用户挂载此设备,/etc/fstab使用
acl/noacl           #启用此文件系统上的acl功能
loop                #使用loop设备
_netdev       #当网络可用时才对网络资源进行挂载,如:NFS文件系统
defaults      #相当于rw, suid, dev, exec, auto, nouser, async#--source 选项值
-L|--label label      #同 LABEL=label
-U|--uuid uuid        #同 UUID=uuid
LABEL=label           #用label值指定设备
UUID=uuid             #用uuid值指定设备
PARTLABEL=label       #按PARTLABEL值指定设备
PARTUUID=uuid         #按PARTUUID值指定设备
device                #按路径指定设备
directory             #绑定式挂载的挂载点(参阅 --bind/rbind)
file                  #用于设置回环设备的常规文件

规则:

        一个挂载点同一时间只能挂载一个设备。
        一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏。
        一个设备可以同时挂载到多个挂载点。
        通常挂载点一般是已存在空的目录。

4.2卸载文件系统umount

#卸载时:可使用设备,也可以使用挂载点
umount [-hV]
umount -a [options]
umount [options] <source> | <directory>

4.3查看挂载情况

查看挂载

mount                 #通过mount命令查看
cat /etc/mtab         #通过查看/etc/mtab文件显示当前已挂载的所有设备
cat /proc/mounts      #查看内核追踪到的已挂载的所有设备

查看挂载点情况

findmnt [options]
findmnt [options] <device> | <mountpoint>
findmnt [options] <device> <mountpoint>
findmnt [options] [--source <device>] [--target <path> | --mountpoint <dir>]

查看正在访问指定文件系统的进程

lsof      MOUNT_POINT
fuser -v  MOUNT_POINT

终止所有在正访问指定的文件系统的进程

fuser -km MOUNT_POINT

4.4持久挂载

将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载。

[root@rocky-136 ~]#cat /etc/fstab | grep -v "^[#]"/dev/mapper/rl-root     /                       xfs     defaults        0 0
UUID=202a26bd-1f18-4fae-bdf8-c1096dafbadd /boot xfs     defaults        0 0
UUID=24A0-CF4F          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
/dev/mapper/rl-home     /home                   xfs     defaults        0 0
/dev/mapper/rl-swap     none                    swap    defaults        0 0#要挂载的设备或伪文件系统设备文件(LABEL=label | UUID=uuid | /dev/sda1)
#挂载点:必须是事先存在的目录
#文件系统类型:ext4,xfs,iso9660,nfs,none 
#挂载选项:defaults ,acl,bind,ro,rw 等
#转储频率:0 不做备份; 1 每天转储; 2 每隔一天转储
#fsck检查的文件系统的顺序:0 不自检 ; 1 首先自检,一般只有rootfs才用;2 非rootfs使用

添加新的挂载项,需要执行下面命令生效;此命令只针对文件新增行或删除行有效,如果在中间修改了挂载选项,则此命令无效。

mount -a

4.5重新挂载

修改了/etc/fstab 文件中的挂载规则,无法通过 mount -a 生效,要执行执行挂载。

mount -o remount MOUNTPOINT

5.处理交换文件和分区

Swap交换分区是Linux系统虚拟内存机制的核心组件,作为RAM的补充空间,当物理内存不足时自动将不活跃数据换出至磁盘,防止内存耗尽导致进程崩溃;但过度配置会浪费存储资源并掩盖内存泄漏问题,合理优化方案包括分散布局swap分区或使用高速存储介质以提升性能。

[root@rocky-136 ~]#free -h -s 1[root@rocky-136 ~]#dd if=/dev/zero of=/dev/null bs=3G count=1
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 28.4729 s, 75.4 MB/s...total        used        free      shared  buff/cache   available
Mem:           1.7Gi       1.2Gi       260Mi        12Mi       418Mi       509Mi
Swap:          2.0Gi          0B       2.0Gitotal        used        free      shared  buff/cache   available
Mem:           1.7Gi       1.6Gi        81Mi       5.0Mi       230Mi       142Mi
Swap:          2.0Gi        11Mi       2.0Gi
...

5.1交换分区实现过程

①创建交换分区或者文件

② 使用mkswap写入特殊签名

③在/etc/fstab文件中添加适当的条目

④使用swapon -a 激活交换空间

5.2启用swap分区

swapon [options] [<spec>]#常用选项
-a|--all               #激活 /etc/fstab 中的所有交换区
-d|--discard[=policy]  #根据条件禁用(once|pages)
-e|--ifexists          #自动跳过不存在的设备而不提示
-f|--fixpgsz           #必要时重新初始化交换区
-o|--options list      #指定选项,swapon -o pri=1,discard=pages,nofail /dev/sda2
-p|--priority N        #指定交换设备的优先级(-1到32767),值越大优先级越高,也可在/etc/fstab第4列指定pri=value
-s|--summary           #显示已使用交换设备的摘要
--show[=columns]       #以可自定义的表格形式打印摘要   swapon --show|swapon --show=NAME,TYPE
--noheadings           #不打印表头,配合 --show 选项
--raw                  #使用原生输出格式,配合 --show 选项
--bytes                #在 --show 输出中以字节数显示交换区大小
-v|--verbose           #显示详细信息#<spec> 参数:
-L label             #同 LABEL=label
-U uuid              #同 UUID=uuid
LABEL=label          #按交换区标签指定设备
UUID=uuid            #按交换区 UUID 指定设备
PARTLABEL=label      #按分区标签指定设备
PARTUUID=uuid        #按分区 UUID 指定设备
device               #要使用设备的名称
filename             #要使用文件的名称#可显示列
NAME       #设备文件或分区路径
TYPE       #设备的类型
SIZE       #交换区大小
USED       #已使用字节数
PRIO       #交换优先级
UUID       #uuid
LABEL      #label

5.3禁用swap分区

swapoff [options] [<spec>]#常用选项
-a|--all             #禁用 /proc/swaps 中的所有交换区
-v|--verbose         #显示过程#spec 参数
-L label              #要使用设备的标签
-U uuid               #要使用设备的 UUID
LABEL=label           #要使用设备的标签
UUID=uuid             #要使用设备的 UUID
device                #要使用设备的名称
filename              #要使用文件的名称

5.4创建swap分区

#创建swap分区
#先创建分区,选择swap类型#在创建swap文件系统
[root@ubuntu-140 ~]#mkswap /dev/sdb3
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=6ef3b273-eb49-42d7-b7df-3ea988705ec7
[root@ubuntu-140 ~]#mkswap /dev/sdb4
Setting up swapspace version 1, size = 5 GiB (5367635968 bytes)
no label, UUID=d443c378-8610-41ee-8a5a-bb4f0c9e8eb4#查看
[root@ubuntu-140 ~]#lsblk  -f
NAME                      FSTYPE      FSVER            LABEL                          
loop0                     squashfs    4.0                                             
loop1                     squashfs    4.0                                             
loop2                     squashfs    4.0                                             
loop4                     squashfs    4.0                                             
loop5                     squashfs    4.0                                             
loop6                     squashfs    4.0                                             
sda                                                                                   
├─sda1                                                                                
├─sda2                    ext4        1.0                                             
└─sda3                    LVM2_member LVM2 001                                        └─ubuntu--vg-ubuntu--lv ext4        1.0                                             
sdb                                                                                   
├─sdb1                                                                                
├─sdb2                                                                                
├─sdb3                    swap        1                                               
└─sdb4                    swap        1                                               
sr0                       iso9660     Joliet Extension Ubuntu-Server 22.04.5 LTS amd6[root@ubuntu-140 ~]#vim /etc/fstab
...
/dev/sdb3       none    swap    sw      0       0
/dev/sdb4       none    swap    sw      0       0[root@ubuntu-140 ~]#free -htotal        used        free      shared  buff/cache   available
Mem:           1.9Gi       344Mi       249Mi       1.0Mi       1.3Gi       1.4Gi
Swap:          2.0Gi       0.0Ki       2.0Gi#禁用 启用
[root@ubuntu-140 ~]#swapoff -a
[root@ubuntu-140 ~]#swapon -a[root@ubuntu-140 ~]#free -htotal        used        free      shared  buff/cache   available
Mem:           1.9Gi       351Mi       241Mi       1.0Mi       1.3Gi       1.3Gi
Swap:           10Gi          0B        10Gi

5.5查看swap分区

[root@ubuntu-140 ~]#swapon -s
Filename				Type		Size		Used		Priority
/swap.img                               file		2097148		0		-2
/dev/sdb3                               partition	4194300		0		-3
/dev/sdb4                               partition	5241832		0		-4[root@ubuntu-140 ~]#cat /proc/swaps
Filename				Type		Size		Used		Priority
/swap.img                               file		2097148		0		-2
/dev/sdb3                               partition	4194300		0		-3
/dev/sdb4                               partition	5241832		0		-4

5.6修改swap优先级

Linux的Swap分区优先级机制允许用户通过指定0到32767的正数值来控制Swap设备的使用顺序(值越大优先级越高);若未手动指定,内核会自动分配负优先级(从-1开始递减),确保用户显式设置的Swap(正数)始终优先于系统自动分配的Swap(负数),从而实现灵活的内存换出策略管理。

[root@ubuntu-140 ~]#swapon -s
Filename				Type		Size		Used		Priority
/swap.img                               file		2097148		0		-2
/dev/sdb3                               partition	4194300		0		-3
/dev/sdb4                               partition	5241832		0		-4
[root@ubuntu-140 ~]#vim /etc/fstab
[root@ubuntu-140 ~]#cat /etc/fstab | grep -v "^#"
/dev/disk/by-id/dm-uuid-LVM-fNrnSk6JqHwgGPkevf3TEE7uQHJ9SVkHmQrhmuvVeWeZlZ0c8wojejRJEz8wa9i7 / ext4 defaults 0 1
/dev/disk/by-uuid/519162fa-646a-4961-ade8-3e2269441253 /boot ext4 defaults 0 1
/swap.img	none	swap	sw	0	0/dev/sdb3  	none	swap	sw,pri=100 	0	0
/dev/sdb4 	none 	swap 	sw 	0	0[root@ubuntu-140 ~]#swapoff -a;swapon -a;swapon -s
Filename				Type		Size		Used		Priority
/swap.img                               file		2097148		0		-2
/dev/sdb3                               partition	4194300		0		100
/dev/sdb4                               partition	5241832		0		-3

5.7以文件作为swap分区

#创建文件
[root@rocky86 ~]# dd if=/dev/zero of=/swapfile bs=1G count=2
2+0 records in
2+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 4.72333 s, 455 MB/s#创建文件系统
[root@rocky86 ~]# mkswap /swapfile 
mkswap: /swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=b1edc27b-2f23-4991-b211-0d2c4bd6a85f#修改/etc/fstab,添加行
/swapfile   none   swap   sw  0  0#启用
[root@ubuntu2204 ~]# swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.#查看
[root@ubuntu2204 ~]# swapon -s
Filename Type Size Used Priority
/swap.img                               file 2097148 0 -2
/dev/sdc3                               partition 2097148 3352 123
/swapfile                               file 2097148 0 -3

5.8永久禁用swap

#删除swap行
[root@ubuntu2204 ~]# sed -i.bak '/swap/d' /etc/fstab#或注释swap行
[root@ubuntu2204 ~]# sed -i.bak '/swap/s@^@#@' /etc/fstab#禁用swap,由于修改了配置文件,所以重启也不会有SWAP
[root@ubuntu2204 ~]# swapoff -a

5.9swap使用策略

        /proc/sys/vm/swappiness 的值决定了当内存占用达到一定的百分比时,会启用swap分区的空间。当内存使用率达到100-swappiness时,会启用交换分区;简单地说这个参数定义了系统对swap的使用倾向,此值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性


移动介质

挂载意味着使外来的文件系统看起来如同是主目录树的一部分,所有移动介质也需要挂载,挂载点通常在/media 或 /mnt下。访问前,介质必须被挂载,摘除时,介质必须被卸载。

按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)。

手动挂载:mount  /dev/sr0  /mnt/

自动挂载

#ubuntu
[root@ubuntu2204 ~]# apt install autofs#己运行,己加开机启动
[root@ubuntu2204 ~]# systemctl status autofs#修改配置文件
[root@ubuntu2204 ~]# vim /etc/auto.master
......
/misc /etc/auto.misc #取消此行注释#重启服务
[root@ubuntu2204 ~]# systemctl restart autofs#查看
[root@ubuntu2204 ~]# ls /misc/cd
boot boot.catalog casper dists EFI install md5sum.txt pool ubuntu#rocky
[root@rocky86 ~]# yum install -y autofs
[root@rocky86 ~]# systemctl enable --now autofs
#这样就能自动列出光盘内容
[root@rocky86 ~]# ls /misc/cd

6.文件系统查看工具df

df [OPTION]... [FILE]...#常用选项
-a|--all             #显示所有
-B|--block-size=SIZE #显示时指定块大小
--direct             #将挂载点那一列标题显示为文件
-h|--human-readable  #以方便阅读的方式显示
-H|--si              #以 1000为单位,而不是1024
-i|--inodes          #显示inode 信息而非块使用量
-k                   #同 --block-size=1K
-l|--local                 #只显示本机的文件系统
--output[=FIELD_LIST]      #只显示指定字段
-P|--portability           #以Posix兼容的格式输出
--total                    #最后加一行汇总数据
-t|--type=TYPE             #根据文件系统类型过滤
-T|--print-type         #显示文件系统类型
-x|--exclude-type=TYPE  #根据文件系统类型反向过滤
[root@ubuntu2204 ~]# df -Th
[root@ubuntu-140 ~]#df -Th
Filesystem                        Type   Size  Used Avail Use% Mounted on
tmpfs                             tmpfs  193M  1.9M  191M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4    73G  6.4G   63G  10% /
tmpfs                             tmpfs  964M   96K  964M   1% /dev/shm
tmpfs                             tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4   2.0G  252M  1.6G  14% /boot
tmpfs                             tmpfs  193M  4.0K  193M   1% /run/user/0[root@ubuntu-140 ~]#df /dev/sda
Filesystem     1K-blocks  Used Available Use% Mounted on
udev              928960     0    928960   0% /dev

7.目录统计工具du

du [OPTION]... [FILE]...
du [OPTION]... --files0-from=F#常用选项
-0|--null             #输出时以NULL分割,而不是换行
-a|--all              #显示所有文件和目录大小
-B|--block-size=SIZE   #指定块大小
-b|--bytes             #同 --apparent-size --block-size=1
-c|--total             #汇总
-d|--max-depth=N       #指定最大目录层级
-h|--human-readable    #以方便阅读的格式显示
-k                     #同 --block-size=1K
-m                     #同 --block-size=1M
--si                   #友好显示,以 1000 为单位,而不是 1024
-s|--summarize         #只显示外层目录
-X|--exclude-from=FILE #根据文件名忽略
--exclude=PATTERN      #根据正则表达式忽略
-x|--one-file-system   #忽略不在同一个文件系统的目录
#查看目录占用多大空间
[root@ubuntu2204 ~]# du -sh /etc/
6.5M /etc/#查看目录下每个文件或子目录大小
[root@ubuntu2204 ~]# du -sh /var/log/* | head -n 3
40K /var/log/alternatives.log
16K /var/log/apache2
252K /var/log/apt

8.文件工具dd

dd [OPERAND]...
dd OPTION#常用格式
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST  bs=N count=N#常用选项
if=file     #从所命名文件读取而不是从标准输入
of=file     #写到所命名的文件而不是到标准输出
ibs=size    #一次读size个byte
obs=size    #一次写size个byte
bs=size     #指定块大小(既是是ibs也是obs)
cbs=size       #一次转化size个byte
skip=blocks    #从开头忽略blocks个ibs大小的块
seek=blocks    #从开头忽略blocks个obs大小的块
count=n        #复制n个bs
conv=conversion[,conversion...] #用指定的参数转换文件#conversion 转换参数
ascii     #转换 EBCDIC 为 ASCII
ebcdic    #转换 ASCII 为 EBCDIC
lcase     #把大写字符转换为小写字符
ucase     #把小写字符转换为大写字符
nocreat   #不创建输出文件
noerror   #出错时不停止
notrunc   #不截短输出文件
sync      #把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
fdatasync #写完成前,物理写入输出文件

三、RAID

        RAID(磁盘阵列)技术由David Patterson等人在1987年提出,最初称为“廉价磁盘冗余阵列,后更名为“独立硬盘冗余阵列,其核心是通过虚拟化存储技术将多个物理硬盘组合为逻辑硬盘,以提升性能、数据冗余或兼顾两者。

        1988年论文中定义了RAID 1至RAID 5的五个基础级别,后续扩展出RAID 0、RAID 6等更多层级,每个级别通过不同的数据分散模式(如条带化、镜像、校验)平衡数据可靠性与读写性能。

        RAID将多块硬盘视为单一实体,常用于服务器场景,现因硬盘成本下降及主板集成支持,也普及至普通用户的大容量存储需求(如音视频制作)。

        实现方式包括外接式磁盘阵列(通过扩展卡适配)、内接式RAID(主板集成控制器,需BIOS配置)和软件RAID(依赖操作系统,如NAS系统),主要功能为通过并行读写提升IO能力,并利用冗余算法保障数据耐用性。

RAID级别总结

四、逻辑卷管理

        LVM(Logical Volume Manager,逻辑卷管理器)是Linux系统中一种灵活的磁盘管理技术,通过将物理存储设备(如硬盘、分区)抽象为逻辑卷,实现动态调整存储空间、跨磁盘合并容量、支持快照与数据迁移等功能;用户可按需扩展或缩减卷大小,无需受限于物理分区,同时通过卷组(Volume Group)和逻辑卷(Logical Volume)的分层架构,显著提升存储资源的利用率和管理效率。

实现过程:

1.将设备指定为物理卷

2.用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域PE定义

3.在物理卷上创建的逻辑卷, 是由物理区域(PE)组成

4.可以在逻辑卷上创建文件系统并挂载

1.实现逻辑卷

apt install lvm2

1.1pv管理工具

将块设备创建为物理卷,本质上就是给块设备打一个标签,块设备数量和物理卷数量是对应的,有几个块设备,就可以创建几个物理卷,块设备容量大小不限,可以跨分区。

#显示pv信息
pvs         #简要pv信息显示
pvdisplay   #显示详细信息#创建pv
pvcreate /dev/DEVICE#删除pv
pvremove /dev/DEVICE

1.2vg管理工具

#显示卷
vgs
vgdisplay#创建卷组
vgcreate [-s Size ] vgname pv1 [pv2...]
#-s 指定PE大小,数字加单位,单位为 k|K|m|M|g|G|t|T|p|P|e|E#管理卷组
vgextend vgname pv1 [pv2...] #往卷组中添加物理卷
vgreduce vgname pv1 [pv2...] #从卷组中移除物理卷#删除卷组
#删除vg之前,要先把对应的 pv 解除绑定 (pvmove)
vgremove vgname

1.3lv管理工具

#显示逻辑卷
lvs
Lvdisplay#创建逻辑卷
lvcreate {-L N[mMgGtT]|-l N} -n NAME VolumeGroup
-L|--size N[mMgGtT]    #指定大小 
-l|--extents N         #指定PE个数,也可用百分比
-n Name                #逻辑卷名称#扩展逻辑卷
lvextend {-L N[mMgGtT]|-l N} LV_NAME#常用选项
-L|--size [+]Size[mMgGtT]       #N个单位大小,也可写成+10M
-l|--extents [+]Number[PERCENT] #N个PE,也可以写成+10,表示在原基础上加10个PE大小,+100%free 表示把剩下空间都用完
-r|--resizefs                   #自动重置文件系统大小#缩减逻辑卷
lvreduce {-L N[mMgGtT]|-l N} LV_NAME#常用选项
-L|--size [-]Size[mMgGtT]        #N个单位大小,也可写成-10M
-l|--extents [-]Number[PERCENT]  #N个PE,也可以写成-10,表示在原基础上减10个PE大小#删除逻辑卷
lvremove /dev/VG_NAME/LV_NAME#重设文件系统大小
#修改了逻辑卷大小后,要同步文件系统
fsadm [options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] lvname     #只支持ext系列文件系统
xfs_growfs /mountpoint                        #只支持xfs 文件系统

逻辑卷的使用跟硬盘分区使用一样,要先创建文件系统,再进行挂载。

1.4扩展逻辑卷

扩展逻辑卷之前,要先保证卷组上还有空间,先扩展逻辑卷,再扩容文件系统。

#第一步实现逻辑卷的空间扩展
lvextend -L [+]N[mMgGtT] /dev/VG_NAME/LV_NAME#第二步实现文件系统的扩展
#针对ext
resize2fs /dev/VG_NAME/LV_NAME#针对xfs 
xfs_growfs MOUNTPOINT
#一步实现容量和文件系统的扩展
lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME

1.5缩减逻辑卷

注意:缩减有数据损坏的风险,建议先备份再缩减,不支持在线缩减,要先取消挂载,xfs文件系统不支持缩。

#取消挂载
umount /dev/VG_NAME/LV_NAME#文件系统检测,e2fsck可写成fsck
e2fsck -f /dev/VG_NAME/LV_NAME#缩减文件系统到指定大小
resize2fs /dev/VG_NAME/LV_NAME N[mMgGtT]#缩减逻辑卷
lvreduce -L [-] N[mMgGtT] /dev/VG_NAME/LV_NAME#重新挂载
mount /dev/VG_NAME/LV_NAME mountpoint#简化版
umount /dev/VG_NAME/LV_NAME
lvreduce  -L N[mMgGtT] -r /dev/VG_NAME/LV_NAME
mount /dev/VG_NAME/LV_NAME mountpoint

2.跨主机迁移卷组

源计算机上
1 在旧系统中,umount 所有卷组上的逻辑卷
2 禁用卷组
vgchange -a n vg0 
lvdisplay3 导出卷组
vgexport vg0 
pvscan
vgdisplay4 拆下旧硬盘在目标计算机上,并导入卷组
vgimport vg05 启用
vgchange -ay vg06 mount 所有卷组上的逻辑卷

3.拆除指定的pv存储设备

#vg中拆除
vgreduce vg_name device#pv重拆除
pvremove /device
root@ubuntu-140:~# lsblk -f
NAME   FSTYPE      FSVER         LABEL                           UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
...
sdb                                                                                                                    
sdc                                                                                                                    
├─sdc1 LVM2_member LVM2 001                                      mk2Ceu-LOZL-DEqC-ffCm-cXf2-0fSK-QBONcf                
└─sdc2 LVM2_member LVM2 001                                      BfIUUZ-guuU-cLPC-yFcR-Vhke-GVvk-imK0fY                
sr0    iso9660     Joliet Extens Ubuntu-Server 22.04.5 LTS amd64 2024-09-11-18-46-48-00 root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00groot@ubuntu-140:~# pvcreate /dev/sdc1Physical volume "/dev/sdc1" successfully created.
root@ubuntu-140:~# pvcreate /dev/sdc2Physical volume "/dev/sdc2" successfully created.root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdc1            lvm2 ---     4.00g  4.00g/dev/sdc2            lvm2 ---     6.00g  6.00groot@ubuntu-140:~# vgsVG        #PV #LV #SN Attr   VSize    VFree ubuntu-vg   1   1   0 wz--n- <148.00g 74.00g
root@ubuntu-140:~# vgcreate vg1 /dev/sdc1 /dev/sdc2Volume group "vg1" successfully created
root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdc1  vg1       lvm2 a--    <4.00g <4.00g/dev/sdc2  vg1       lvm2 a--    <6.00g <6.00g
root@ubuntu-140:~# vgdisplay vg1--- Volume group ---VG Name               vg1System ID             Format                lvm2Metadata Areas        2Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               9.99 GiBPE Size               4.00 MiBTotal PE              2558Alloc PE / Size       0 / 0   Free  PE / Size       2558 / 9.99 GiBVG UUID               H2ZkkJ-T0XA-PV9d-etIh-VCuS-TKr2-Px3HJGroot@ubuntu-140:~# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.
root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb             lvm2 ---    10.00g 10.00g/dev/sdc1  vg1       lvm2 a--    <4.00g <4.00g/dev/sdc2  vg1       lvm2 a--    <6.00g <6.00g
root@ubuntu-140:~# vgextend vg1 /dev/sdbVolume group "vg1" successfully extended
root@ubuntu-140:~# vgsVG        #PV #LV #SN Attr   VSize    VFree  ubuntu-vg   1   1   0 wz--n- <148.00g  74.00gvg1         3   0   0 wz--n-  <19.99g <19.99g
root@ubuntu-140:~# vgdisplay vg1--- Volume group ---VG Name               vg1System ID             Format                lvm2Metadata Areas        3Metadata Sequence No  2VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                3Act PV                3VG Size               <19.99 GiBPE Size               4.00 MiBTotal PE              5117Alloc PE / Size       0 / 0   Free  PE / Size       5117 / <19.99 GiBVG UUID               H2ZkkJ-T0XA-PV9d-etIh-VCuS-TKr2-Px3HJGroot@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree  /dev/sda3  ubuntu-vg lvm2 a--  <148.00g  74.00g/dev/sdb   vg1       lvm2 a--   <10.00g <10.00g/dev/sdc1  vg1       lvm2 a--    <4.00g  <4.00g/dev/sdc2  vg1       lvm2 a--    <6.00g  <6.00g
root@ubuntu-140:~# lvcreate -l 100 -n lv1 vg1Logical volume "lv1" created.
root@ubuntu-140:~# lvsLV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertubuntu-lv ubuntu-vg -wi-ao---- <74.00g                                                    lv1       vg1       -wi-a----- 400.00m                                                    root@ubuntu-140:~# lvcreate -L 12G -n lv2 vg1Logical volume "lv2" created.
root@ubuntu-140:~# lvsLV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertubuntu-lv ubuntu-vg -wi-ao---- <74.00g                                                    lv1       vg1       -wi-a----- 400.00m                                                    lv2       vg1       -wi-a-----  12.00g                                                  root@ubuntu-140:~# lsblk 
...
sdb                         8:16   0   10G  0 disk 
└─vg1-lv2                 253:2    0   12G  0 lvm  
sdc                         8:32   0   20G  0 disk 
├─sdc1                      8:33   0    4G  0 part 
│ ├─vg1-lv1               253:1    0  400M  0 lvm  
│ └─vg1-lv2               253:2    0   12G  0 lvm  
└─sdc2                      8:34   0    6G  0 part 
sr0                        11:0    1    2G  0 rom  
root@ubuntu-140:~# mkfs.ext4 /dev/vg1/lv2
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 3145728 4k blocks and 786432 inodes
Filesystem UUID: 1bb711b4-9437-4e21-8fdd-b9edce933fc8
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done root@ubuntu-140:~# lsblk -f
...
sdb         LVM2_membe LVM2 001                                     wrB17P-ajY5-0JaC-8M76-PoRz-rO7W-WYQM34                
└─vg1-lv2   ext4       1.0                                          1bb711b4-9437-4e21-8fdd-b9edce933fc8                  
sdc                                                                                                                       
├─sdc1      LVM2_membe LVM2 001                                     mk2Ceu-LOZL-DEqC-ffCm-cXf2-0fSK-QBONcf                
│ ├─vg1-lv1                                                                                                               
│ └─vg1-lv2 ext4       1.0                                          1bb711b4-9437-4e21-8fdd-b9edce933fc8                  
└─sdc2      LVM2_membe LVM2 001                                     BfIUUZ-guuU-cLPC-yFcR-Vhke-GVvk-imK0fY                
sr0         iso9660    Joliet Exten Ubuntu-Server 22.04.5 LTS amd64 2024-09-11-18-46-48-00                         root@ubuntu-140:~# mkdir /lv{1,2,3}
root@ubuntu-140:~# mount /dev/vg1/lv2 /lv2
root@ubuntu-140:~# lsblk
...
sdb                         8:16   0   10G  0 disk 
└─vg1-lv2                 253:2    0   12G  0 lvm  /lv2
sdc                         8:32   0   20G  0 disk 
├─sdc1                      8:33   0    4G  0 part 
│ ├─vg1-lv1               253:1    0  400M  0 lvm  
│ └─vg1-lv2               253:2    0   12G  0 lvm  /lv2
└─sdc2                      8:34   0    6G  0 part 
sr0                        11:0    1    2G  0 rom  
root@ubuntu-140:~# df -lh
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              193M  1.6M  192M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   73G  6.4G   63G  10% /
tmpfs                              964M   96K  964M   1% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  252M  1.6G  14% /boot
tmpfs                              193M  4.0K  193M   1% /run/user/0
/dev/mapper/vg1-lv2                 12G   24K   12G   1% /lv2root@ubuntu-140:~# dd if=/dev/zero of=/lv2/test.img bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 9.84044 s, 109 MB/s
root@ubuntu-140:~# cp /etc/fstab /lv2/
root@ubuntu-140:~# cp /var/log/auth.log /lv2/root@ubuntu-140:~# df -lh
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              193M  1.6M  192M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   73G  6.4G   63G  10% /
tmpfs                              964M   96K  964M   1% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  252M  1.6G  14% /boot
tmpfs                              193M  4.0K  193M   1% /run/user/0
/dev/mapper/vg1-lv2                 12G  1.1G   11G  10% /lv2
root@ubuntu-140:~# ls /lv2/
auth.log  fstab  lost+found  test.img#添加新分区
root@ubuntu-140:~# lsblk
...
sdb                         8:16   0   10G  0 disk 
└─vg1-lv2                 253:2    0   12G  0 lvm  /lv2
sdc                         8:32   0   20G  0 disk 
├─sdc1                      8:33   0    4G  0 part 
│ ├─vg1-lv1               253:1    0  400M  0 lvm  
│ └─vg1-lv2               253:2    0   12G  0 lvm  /lv2
├─sdc2                      8:34   0    6G  0 part 
└─sdc3                      8:35   0    8G  0 part 
sr0                        11:0    1    2G  0 rom  root@ubuntu-140:~# pvcreate /dev/sdc3Physical volume "/dev/sdc3" successfully created.
root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb   vg1       lvm2 a--   <10.00g     0 /dev/sdc1  vg1       lvm2 a--    <4.00g  1.60g/dev/sdc2  vg1       lvm2 a--    <6.00g <6.00g/dev/sdc3            lvm2 ---     8.00g  8.00g
root@ubuntu-140:~# vgextend vg1 /dev/sdc3Volume group "vg1" successfully extended
root@ubuntu-140:~# vgsVG        #PV #LV #SN Attr   VSize    VFree ubuntu-vg   1   1   0 wz--n- <148.00g 74.00gvg1         4   2   0 wz--n-   27.98g 15.59g
root@ubuntu-140:~# lvsLV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertubuntu-lv ubuntu-vg -wi-ao---- <74.00g                                                    lv1       vg1       -wi-a----- 400.00m                                                    lv2       vg1       -wi-ao----  12.00g                                                    
root@ubuntu-140:~# lvextend -L +10G /dev/vg1/lv2Size of logical volume vg1/lv2 changed from 12.00 GiB (3072 extents) to 22.00 GiB (5632 extents).Logical volume vg1/lv2 successfully resized.
root@ubuntu-140:~# df -lh
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              193M  1.7M  192M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   73G  6.4G   63G  10% /
tmpfs                              964M   96K  964M   1% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  252M  1.6G  14% /boot
tmpfs                              193M  4.0K  193M   1% /run/user/0
/dev/mapper/vg1-lv2                 12G  1.1G   11G  10% /lv2
root@ubuntu-140:~# resize2fs /dev/vg1/lv2
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/vg1/lv2 is mounted on /lv2; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/vg1/lv2 is now 5767168 (4k) blocks long.root@ubuntu-140:~# df -lh
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              193M  1.7M  192M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   73G  6.4G   63G  10% /
tmpfs                              964M   96K  964M   1% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  252M  1.6G  14% /boot
tmpfs                              193M  4.0K  193M   1% /run/user/0
/dev/mapper/vg1-lv2                 22G  1.1G   20G   5% /lv2#root@ubuntu-140:~# umount /lv2
root@ubuntu-140:~# lsblk 
...
sda                         8:0    0  150G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    2G  0 part /boot
└─sda3                      8:3    0  148G  0 part └─ubuntu--vg-ubuntu--lv 253:0    0   74G  0 lvm  /
sdb                         8:16   0   10G  0 disk 
└─vg1-lv2                 253:2    0   22G  0 lvm  
sdc                         8:32   0   20G  0 disk 
├─sdc1                      8:33   0    4G  0 part 
│ ├─vg1-lv1               253:1    0  400M  0 lvm  
│ └─vg1-lv2               253:2    0   22G  0 lvm  
├─sdc2                      8:34   0    6G  0 part 
│ └─vg1-lv2               253:2    0   22G  0 lvm  
└─sdc3                      8:35   0    8G  0 part └─vg1-lv2               253:2    0   22G  0 lvm  
sr0                        11:0    1    2G  0 rom  
root@ubuntu-140:~# e2fsck -f /dev/vg1/lv2
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg1/lv2: 14/1441792 files (0.0% non-contiguous), 380298/5767168 blocks
root@ubuntu-140:~# resize2fs /dev/vg1/lv2 16G
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/vg1/lv2 to 4194304 (4k) blocks.
The filesystem on /dev/vg1/lv2 is now 4194304 (4k) blocks long.root@ubuntu-140:~# lvreduce -L 16G /dev/vg1/lv2WARNING: Reducing active logical volume to 16.00 GiB.THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv2? [y/n]: ySize of logical volume vg1/lv2 changed from 22.00 GiB (5632 extents) to 16.00 GiB (4096 extents).Logical volume vg1/lv2 successfully resized.
root@ubuntu-140:~# mount /dev/vg1/lv2 /lv2
root@ubuntu-140:~# ls /lv2
auth.log  fstab  lost+found  test.imgroot@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb   vg1       lvm2 a--   <10.00g     0 /dev/sdc1  vg1       lvm2 a--    <4.00g     0 /dev/sdc2  vg1       lvm2 a--    <6.00g <6.00g/dev/sdc3  vg1       lvm2 a--    <8.00g <5.60g
root@ubuntu-140:~# pvmove /dev/sdc2No data to move for vg1.
root@ubuntu-140:~# vgreduce vg1 /dev/sdc2Removed "/dev/sdc2" from volume group "vg1"
root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb   vg1       lvm2 a--   <10.00g     0 /dev/sdc1  vg1       lvm2 a--    <4.00g     0 /dev/sdc2            lvm2 ---     6.00g  6.00g/dev/sdc3  vg1       lvm2 a--    <8.00g <5.60g
root@ubuntu-140:~# pvremove /dev/sdc2Labels on physical volume "/dev/sdc2" successfully wiped.
root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb   vg1       lvm2 a--   <10.00g     0 /dev/sdc1  vg1       lvm2 a--    <4.00g     0 /dev/sdc3  vg1       lvm2 a--    <8.00g <5.60g
root@ubuntu-140:~# vgsVG        #PV #LV #SN Attr   VSize    VFree ubuntu-vg   1   1   0 wz--n- <148.00g 74.00gvg1         3   2   0 wz--n-  <21.99g <5.60g
root@ubuntu-140:~#  pvdisplay /dev/sdc*Cannot use /dev/sdc: device is partitioned--- Physical volume ---PV Name               /dev/sdc1VG Name               vg1PV Size               4.00 GiB / not usable 4.00 MiBAllocatable           yes (but full)PE Size               4.00 MiBTotal PE              1023Free PE               0Allocated PE          1023PV UUID               mk2Ceu-LOZL-DEqC-ffCm-cXf2-0fSK-QBONcf--- Physical volume ---PV Name               /dev/sdc3VG Name               vg1PV Size               8.00 GiB / not usable 4.00 MiBAllocatable           yes PE Size               4.00 MiBTotal PE              2047Free PE               1433Allocated PE          614PV UUID               XOQZqW-Ur0S-R4TF-9SEB-vCcV-GXpM-DjJUoAFailed to find physical volume "/dev/sdc2".
root@ubuntu-140:~# lvsLV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertubuntu-lv ubuntu-vg -wi-ao---- <74.00g                                                    lv1       vg1       -wi-a----- 400.00m                                                    lv2       vg1       -wi-ao----  16.00g            
root@ubuntu-140:~# pvmove /dev/sdc1 /dev/sdc1: Moved: 7.82%/dev/sdc1: Moved: 9.78%/dev/sdc1: Moved: 100.00%
root@ubuntu-140:~# pvdisplay /dev/sdc*Cannot use /dev/sdc: device is partitioned--- Physical volume ---PV Name               /dev/sdc1VG Name               vg1PV Size               4.00 GiB / not usable 4.00 MiBAllocatable           yes PE Size               4.00 MiBTotal PE              1023Free PE               1023Allocated PE          0PV UUID               mk2Ceu-LOZL-DEqC-ffCm-cXf2-0fSK-QBONcf--- Physical volume ---PV Name               /dev/sdc3VG Name               vg1PV Size               8.00 GiB / not usable 4.00 MiBAllocatable           yes PE Size               4.00 MiBTotal PE              2047Free PE               410Allocated PE          1637PV UUID               XOQZqW-Ur0S-R4TF-9SEB-vCcV-GXpM-DjJUoAFailed to find physical volume "/dev/sdc2".
root@ubuntu-140:~# vgreduce vg1 /dev/sdc1Removed "/dev/sdc1" from volume group "vg1"
root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb   vg1       lvm2 a--   <10.00g     0 /dev/sdc1            lvm2 ---     4.00g  4.00g/dev/sdc3  vg1       lvm2 a--    <8.00g  1.60g
root@ubuntu-140:~# pvremove /dev/sdc1Labels on physical volume "/dev/sdc1" successfully wiped.
root@ubuntu-140:~# pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb   vg1       lvm2 a--   <10.00g     0 /dev/sdc3  vg1       lvm2 a--    <8.00g  1.60g
root@ubuntu-140:~# lsblk -f
...
sda                                                                                                                      
├─sda1                                                                                                                   
├─sda2      ext4       1.0                                         519162fa-646a-4961-ade8-3e2269441253      1.5G    13% /boot
└─sda3      LVM2_membe LVM2 001                                    4WDF2I-3rZ6-fHkc-IyCD-L8S7-NRKw-iRu4Xh                └─ubuntu--vg-ubuntu--lvext4       1.0                                         b13468b6-d709-4cb1-a6bc-377fb60c3785     62.2G     9% /
sdb         LVM2_membe LVM2 001                                    wrB17P-ajY5-0JaC-8M76-PoRz-rO7W-WYQM34                
└─vg1-lv2   ext4       1.0                                         1bb711b4-9437-4e21-8fdd-b9edce933fc8     13.9G     6% /lv2
sdc                                                                                                                      
├─sdc1                                                                                                                   
├─sdc2                                                                                                                   
└─sdc3      LVM2_membe LVM2 001                                    XOQZqW-Ur0S-R4TF-9SEB-vCcV-GXpM-DjJUoA                ├─vg1-lv1                                                                                                              └─vg1-lv2 ext4       1.0                                         1bb711b4-9437-4e21-8fdd-b9edce933fc8     13.9G     6% /lv2
sr0         iso9660    Joliet Exte Ubuntu-Server 22.04.5 LTS amd64 2024-09-11-18-46-48-00                                

五、逻辑卷快照

        LVM快照是一种高效的逻辑卷数据保护机制,通过创建原始逻辑卷在特定时间点的虚拟副本实现数据备份或临时复制。其核心原理是仅在原始卷或快照数据发生修改时,将变更前的旧数据块动态存储到快照预留空间中,未修改部分则由快照与原始卷共享存储,从而大幅减少空间占用(快照初始仅需少量空间,可后续通过lvextend扩展)。

说明:
1. 如果log_lv 中的文件不做任何修改,则快照空间为空 
2. 修改f1,第一次修改时,将修改前的f1推到快照,后续的修改不管 
3. 删除f2,将f2推送到快照 
4. 新建f3,不会被推送到快照 
5. 使用快照还原,则f1被还原,f2被还原,f3也没有

特点:备份速度快,瞬间完成;应用场景是测试环境,不能完全代替备份;快照后,逻辑卷的修改速度会一定有影响。

#实现逻辑快照
[root@ubuntu-140 ~]#pvcreatr /dev/sdc{1,2}
Command 'pvcreatr' not found, did you mean:command 'pvcreate' from deb lvm2 (2.03.11-2.1ubuntu5)
Try: apt install <deb name>
[root@ubuntu-140 ~]#pvcreate /dev/sdc{1,2}Physical volume "/dev/sdc1" successfully created.Physical volume "/dev/sdc2" successfully created.
[root@ubuntu-140 ~]#pvsPV         VG        Fmt  Attr PSize    PFree /dev/sda3  ubuntu-vg lvm2 a--  <148.00g 74.00g/dev/sdb   vg1       lvm2 a--   <10.00g     0 /dev/sdc1            lvm2 ---     4.00g  4.00g/dev/sdc2            lvm2 ---     6.00g  6.00g/dev/sdc3  vg1       lvm2 a--    <8.00g  1.60g
[root@ubuntu-140 ~]#vgcreate vg2 /dev/sdc{1,2}Volume group "vg2" successfully created
[root@ubuntu-140 ~]#vgsVG        #PV #LV #SN Attr   VSize    VFree ubuntu-vg   1   1   0 wz--n- <148.00g 74.00gvg1         2   2   0 wz--n-   17.99g  1.60gvg2         2   0   0 wz--n-    9.99g  9.99g
[root@ubuntu-140 ~]#lvcreate -L 6G -n test-lv vg2Logical volume "test-lv" created.
[root@ubuntu-140 ~]#lsblk -f
NAME                      FSTYPE      FSVER            LABEL                           UUID          
loop0                     squashfs    4.0                                                            
loop1                     squashfs    4.0                                                            
loop2                     squashfs    4.0                                                            
loop4                     squashfs    4.0                                                            
loop5                     squashfs    4.0                                                            
loop6                     squashfs    4.0                                                            
sda                                                                                                  
├─sda1                                                                                               
├─sda2                    ext4        1.0                                              519162fa-646a-
└─sda3                    LVM2_member LVM2 001                                         4WDF2I-3rZ6-fH└─ubuntu--vg-ubuntu--lv ext4        1.0                                              b13468b6-d709-
sdb                       LVM2_member LVM2 001                                         wrB17P-ajY5-0J
└─vg1-lv2                 ext4        1.0                                              1bb711b4-9437-
sdc                                                                                                  
├─sdc1                    LVM2_member LVM2 001                                         cZ65hz-nr4r-WK
│ └─vg2-test--lv                                                                                     
├─sdc2                    LVM2_member LVM2 001                                         lFw7Dd-N5Bo-0e
│ └─vg2-test--lv                                                                                     
└─sdc3                    LVM2_member LVM2 001                                         XOQZqW-Ur0S-R4├─vg1-lv1                                                                                          └─vg1-lv2               ext4        1.0                                              1bb711b4-9437-
sr0                       iso9660     Joliet Extension Ubuntu-Server 22.04.5 LTS amd64 2024-09-11-18-
[root@ubuntu-140 ~]#mkfs.ext4 /dev/vg2/test-lv
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 1572864 4k blocks and 393216 inodes
Filesystem UUID: bc50f5ed-f9e0-46da-a6ac-87a4be5e3699
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done [root@ubuntu-140 ~]#mkdir /test-lv
[root@ubuntu-140 ~]#mount /dev/vg2/test-lv /test-lv/
[root@ubuntu-140 ~]#lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0   87M  1 loop /snap/lxd/29351
loop1                       7:1    0 63.8M  1 loop /snap/core20/2599
loop2                       7:2    0 38.8M  1 loop /snap/snapd/21759
loop4                       7:4    0 89.4M  1 loop /snap/lxd/31333
loop5                       7:5    0 50.8M  1 loop /snap/snapd/25202
loop6                       7:6    0 63.8M  1 loop /snap/core20/2669
sda                         8:0    0  150G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    2G  0 part /boot
└─sda3                      8:3    0  148G  0 part └─ubuntu--vg-ubuntu--lv 253:0    0   74G  0 lvm  /
sdb                         8:16   0   10G  0 disk 
└─vg1-lv2                 253:2    0   16G  0 lvm  /lv2
sdc                         8:32   0   20G  0 disk 
├─sdc1                      8:33   0    4G  0 part 
│ └─vg2-test--lv          253:3    0    6G  0 lvm  /test-lv
├─sdc2                      8:34   0    6G  0 part 
│ └─vg2-test--lv          253:3    0    6G  0 lvm  /test-lv
└─sdc3                      8:35   0    8G  0 part ├─vg1-lv1               253:1    0  400M  0 lvm  └─vg1-lv2               253:2    0   16G  0 lvm  /lv2
sr0                        11:0    1    2G  0 rom  
[root@ubuntu-140 ~]#vgdisplay vg2--- Volume group ---VG Name               vg2System ID             Format                lvm2Metadata Areas        2Metadata Sequence No  2VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                1Open LV               1Max PV                0Cur PV                2Act PV                2VG Size               9.99 GiBPE Size               4.00 MiBTotal PE              2558Alloc PE / Size       1536 / 6.00 GiBFree  PE / Size       1022 / 3.99 GiBVG UUID               r0Qw43-Yyyn-JuHQ-HqgG-uGyc-MHFs-CJnjIM[root@ubuntu-140 ~]#ls /test-lv/
lost+found
[root@ubuntu-140 ~]#cp /etc/fstab /test-lv/f1
[root@ubuntu-140 ~]#cp /var/log/syslog /test-lv/f2
[root@ubuntu-140 ~]#cp /var/log/auth.log /test-lv/f3
[root@ubuntu-140 ~]#ls /test-lv
f1  f2  f3  lost+found
[root@ubuntu-140 ~]#ll /test-lv
total 52
-rw-r--r-- 1 root root   657 Sep 28 18:52 f1
-rw-r----- 1 root root 25013 Sep 28 18:53 f2
-rw-r----- 1 root root   875 Sep 28 18:53 f3
drwx------ 2 root root 16384 Sep 28 18:51 lost+found
[root@ubuntu-140 ~]#lvdisplay /dev/vg2/test-lv--- Logical volume ---LV Path                /dev/vg2/test-lvLV Name                test-lvVG Name                vg2LV UUID                MSeXq2-DQ4c-dklD-qAu4-YIi8-KtfC-r0yInhLV Write Access        read/writeLV Creation host, time ubuntu-140, 2025-09-28 18:50:30 +0800LV Status              available# open                 1LV Size                6.00 GiBCurrent LE             1536Segments               2Allocation             inheritRead ahead sectors     auto- currently set to     256Block device           253:3[root@ubuntu-140 ~]#lvcreate -n test-lv-snap -s -L 2G -p r /dev/vg2/test-lvLogical volume "test-lv-snap" created.
[root@ubuntu-140 ~]#lvdisplay /dev/vg2/test-lv*--- Logical volume ---LV Path                /dev/vg2/test-lvLV Name                test-lvVG Name                vg2LV UUID                MSeXq2-DQ4c-dklD-qAu4-YIi8-KtfC-r0yInhLV Write Access        read/writeLV Creation host, time ubuntu-140, 2025-09-28 18:50:30 +0800LV snapshot status     source oftest-lv-snap [active]LV Status              available# open                 1LV Size                6.00 GiBCurrent LE             1536Segments               2Allocation             inheritRead ahead sectors     auto- currently set to     256Block device           253:3--- Logical volume ---LV Path                /dev/vg2/test-lv-snapLV Name                test-lv-snapVG Name                vg2LV UUID                7fFupV-Dj3P-53uy-ZtBx-ZKuM-uN9a-p0nURFLV Write Access        read onlyLV Creation host, time ubuntu-140, 2025-09-28 18:55:07 +0800LV snapshot status     active destination for test-lvLV Status              available# open                 0LV Size                6.00 GiBCurrent LE             1536COW-table size         2.00 GiBCOW-table LE           512Allocated to snapshot  0.01%Snapshot chunk size    4.00 KiBSegments               1Allocation             inheritRead ahead sectors     auto- currently set to     256Block device           253:6
#测试
[root@ubuntu-140 ~]#mkdir /test-lv-snap
[root@ubuntu-140 ~]#mount /dev/vg2/test-lv-snap /test-lv-snap
mount: /test-lv-snap: WARNING: source write-protected, mounted read-only.
[root@ubuntu-140 ~]#ls /test-lv -lh
total 52K
-rw-r--r-- 1 root root 657 Sep 28 18:52 f1
-rw-r----- 1 root root 25K Sep 28 18:53 f2
-rw-r----- 1 root root 875 Sep 28 18:53 f3
drwx------ 2 root root 16K Sep 28 18:51 lost+found
[root@ubuntu-140 ~]#ls /test-lv -snap -lh
total 60K
4.0K drwxr-xr-x  3 0 0 4.0K Sep 28 18:53 ./
4.0K drwxr-xr-x 26 0 0 4.0K Sep 28 18:56 ../
4.0K -rw-r--r--  1 0 0  657 Sep 28 18:52 f128K -rw-r-----  1 0 0  25K Sep 28 18:53 f2
4.0K -rw-r-----  1 0 0  875 Sep 28 18:53 f316K drwx------  2 0 0  16K Sep 28 18:51 lost+found/[root@ubuntu-140 ~]#echo "-------" >> /test-lv/f1
[root@ubuntu-140 ~]#ls /test-lv -lh
total 52K
-rw-r--r-- 1 root root 665 Sep 28 18:59 f1
-rw-r----- 1 root root 25K Sep 28 18:53 f2
-rw-r----- 1 root root 875 Sep 28 18:53 f3
drwx------ 2 root root 16K Sep 28 18:51 lost+found
[root@ubuntu-140 ~]#ls /test-lv-snap -lh
total 52K
-rw-r--r-- 1 root root 657 Sep 28 18:52 f1
-rw-r----- 1 root root 25K Sep 28 18:53 f2
-rw-r----- 1 root root 875 Sep 28 18:53 f3
drwx------ 2 root root 16K Sep 28 18:51 lost+found[root@ubuntu-140 ~]#rm -rf /test-lv/f2
[root@ubuntu-140 ~]#ls /test-lv -lh
total 24K
-rw-r--r-- 1 root root 665 Sep 28 18:59 f1
-rw-r----- 1 root root 875 Sep 28 18:53 f3
drwx------ 2 root root 16K Sep 28 18:51 lost+found
root@ubuntu-140:~# ls /test-lv-snap -lh
total 52K
-rw-r--r-- 1 root root 657 Sep 28 18:52 f1
-rw-r----- 1 root root 25K Sep 28 18:53 f2
-rw-r----- 1 root root 875 Sep 28 18:53 f3
drwx------ 2 root root 16K Sep 28 18:51 lost+found[root@ubuntu-140 ~]#dd if=/dev/zero of=/test-lv/f4 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0457188 s, 229 MB/s
[root@ubuntu-140 ~]#ls /test-lv -lh
total 11M
-rw-r--r-- 1 root root 665 Sep 28 18:59 f1
-rw-r----- 1 root root 875 Sep 28 18:53 f3
-rw-r--r-- 1 root root 10M Sep 28 19:01 f4
drwx------ 2 root root 16K Sep 28 18:51 lost+found
root@ubuntu-140:~# ls /test-lv-snap -lh
total 52K
-rw-r--r-- 1 root root 657 Sep 28 18:52 f1
-rw-r----- 1 root root 25K Sep 28 18:53 f2
-rw-r----- 1 root root 875 Sep 28 18:53 f3
drwx------ 2 root root 16K Sep 28 18:51 lost+found
#使用快照恢复
[root@ubuntu-140 ~]#umount /test-lv/
[root@ubuntu-140 ~]#umount /test-lv-snap
[root@ubuntu-140 ~]#lsblk
...
sdb                          8:16   0   10G  0 disk 
└─vg1-lv2                  253:2    0   16G  0 lvm  /lv2
sdc                          8:32   0   20G  0 disk 
├─sdc1                       8:33   0    4G  0 part 
│ ├─vg2-test--lv-real      253:4    0    6G  0 lvm  
│ │ ├─vg2-test--lv         253:3    0    6G  0 lvm  
│ │ └─vg2-test--lv--snap   253:6    0    6G  1 lvm  
│ └─vg2-test--lv--snap-cow 253:5    0    2G  0 lvm  
│   └─vg2-test--lv--snap   253:6    0    6G  1 lvm  
├─sdc2                       8:34   0    6G  0 part 
│ └─vg2-test--lv-real      253:4    0    6G  0 lvm  
│   ├─vg2-test--lv         253:3    0    6G  0 lvm  
│   └─vg2-test--lv--snap   253:6    0    6G  1 lvm  
└─sdc3                       8:35   0    8G  0 part ├─vg1-lv1                253:1    0  400M  0 lvm  └─vg1-lv2                253:2    0   16G  0 lvm  /lv2
sr0                         11:0    1    2G  0 rom  #从快照中恢复
[root@ubuntu-140 ~]#lvconvert --merge /dev/vg2/test-lv-snapMerging of volume vg2/test-lv-snap started.vg2/test-lv: Merged: 100.00%
[root@ubuntu-140 ~]#mount /dev/vg2/test-lv /test-lv
[root@ubuntu-140 ~]#ls
hu  snap
[root@ubuntu-140 ~]#ls /test-lv -lh
total 52K
-rw-r--r-- 1 root root 657 Sep 28 18:52 f1
-rw-r----- 1 root root 25K Sep 28 18:53 f2
-rw-r----- 1 root root 875 Sep 28 18:53 f3
drwx------ 2 root root 16K Sep 28 18:51 lost+found#恢复后快照没有,一次性的
[root@ubuntu-140 ~]#lvsLV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertubuntu-lv ubuntu-vg -wi-ao---- <74.00g                                                    lv1       vg1       -wi-a----- 400.00m                                                    lv2       vg1       -wi-ao----  16.00g                                                    test-lv   vg2       -wi-ao----   6.00g                  
http://www.dtcms.com/a/420441.html

相关文章:

  • 【复习】计网每日一题--零窗口要启动的计时器
  • 基于python的校园舆情管理系统设计与实现
  • count down 82 days
  • 找一家秦皇岛市做网站的公司白云区建材网站建设
  • 如何做网站的线下推广手机app一般用什么开发
  • 英语四级资源合集
  • 网站制作全过程个人网站有哪些平台
  • istio集群服务治理
  • 网站上传空间下一步东莞网站制作模板
  • 益阳网站建设公司电话网站设计存在的不足
  • 12. C++ 类作用域
  • 【C++】vector 使用和实现
  • c语言基础之函数
  • 成品ppt网站最近国际新闻大事20条
  • 阿里巴巴官方网站微信小程序制作文档
  • php网站开发工程师月薪怎么样在公司配置服务器做网站
  • QML学习笔记(十九)QML的附加信号处理器
  • 免费浏览的网站广告代理公司排名
  • 为女人网上量体做衣网站轻淘客一键做网站
  • 旗讯OCR表格识别精准还原复杂表格,识别还原准确率95%+,还能结构化
  • 天津建站软件网站制作功能多少钱
  • Java入门级教程21——Java 缓存技术、RMI远程方法调用、多线程分割大文件
  • 苏州做网站的专业公司哪家好wordpress插件 网站跳转
  • 东莞中高端网站建设如何上传网页到网站
  • WIN7下安装RTX3050 6GB显卡驱动
  • 一般网站做哪些端口映射如何自助建网站
  • 广州最好的商城网站制作个人网站首页怎么做
  • 建站哪个便宜福州专业网站建设公司
  • 网站程序引擎网络黄推广软件
  • 安徽建设银行官方网站电商运营多少钱一个月