kaixin
Published on 2023-09-27 / 15 Visits
0

磁盘管理

1.磁盘

是什么:

  • 硬盘就是计算机中用来存储、持久化存储数据的一个设备。
  • 市面主流的硬盘有两类、机械硬盘、固态硬盘。
  • 区别于内存,关机后,数据就不见了、硬盘中的数据,关机后,一直存在。
  • 硬盘也被称为磁盘,因为硬盘存储数据和电磁有关,机械硬盘里有很多张磁盘。
  • 磁盘现在不仅仅有磁盘(机械磁盘,内部是磁盘,磁头,等机械装置),也有固态的硬盘(没有机械装置,使用闪存芯片进行存储)。

性能的指标:

  • 转速+存储空间。

为什么使用磁盘:

  1. 数据的持久化存储。可选择固态与机械。
  2. 存储的数据备份,数据安全,可以采用rdis磁盘阵列。
  3. 系统对储存的优化参数,数据库类软件的优化参数。

image-20230726215922045

为什么选择机械磁盘:

  1. 硬件成本,固态硬盘相较于机械磁盘要贵的多,因为固态的读写I/O的速度要高于机械。
  2. 维护相较于固态,机械磁盘功耗相对来说较高,但是硬件成本低,使用寿命长(合理维护状态下)。
  3. 机械硬盘容量通常比较大,目前机械硬盘最大容量可以达到16TB,可以满足更多存储需求。
  4. 扩展性强,可以通过磁盘阵列卡实现灵活的扩展,或者是数据冗余与容错功能。
  5. 机械磁盘写入的寿命通常是有限的,但是在某些高写入负载情况下(日志服务器,数据库服务器),机械磁盘耐久性可能更有优势。
  6. 固态硬盘的数据恢复难度较大,而机械磁盘损坏(如磁头损坏、盘片划伤等),数据恢复难度相对来说较低,且都有成熟的技术。

2.磁盘维护

场景:

  • 假设公司服务器的磁盘已经到达了预定值(85%),应该怎么办?

解决方式如下:

  1. 在确保数据完整的情况下,将数据迁移到一个更大的存储磁盘中。
  2. 考虑到数据的增长,可以使用逻辑卷(LVM),或者磁盘阵列卡方式(RAID卡),实现动态的扩容。
  3. 如果公司服务器在云上,那么比较好处理,直接扩容即可(根据云厂商的配置说明进行操作)。

维护流程说明:

1.需要一块新的硬盘
2.新硬盘需要做lvm管理
3.数据库迁移(夜间停机维护,凌晨2点,选择用户量最少的阶段操作。)
    1.停止数据库监控
    2.停止前端入口,或者停止数据提交功能(关闭网站80或者433)
    3.停止mysql数据库(防止数据写入,或者锁表)
    4.备份数据(全备)
    5.迁移数据库导新磁盘(rsync),新磁盘已经做好lvm,并且已经挂载
    6.启动数据库
    7.开启前端如口
    8.测试数据写入是否正常
    9.网站恢复上线
    10.打开数据库监控

LVM逻辑卷简单理解:

  • 新增的一个硬盘 使用了逻辑卷LVM技术,这个磁盘是40G,它并不是固定不变的,是动态的,可以扩大,缩小,当这个硬盘使用到达 35G 时,添加一个硬盘40G到这个逻辑卷中,那么就是 40G + 40G = 80G,可以理解为一个公有的仓库(无限大,无限延展),你只占用了一小块区域,当使用的这片区域已经到达80%的时候,就可以向管理人员申请扩张。

image-20250131231155559

3.磁盘组成

3-1.windows磁盘分区

image-20230726225902346


3-2.磁盘的组成

image-20230726231656927


3-3.磁盘中的盘片

是什么:

  • 是机械磁盘的和核心部分,用来进行存储。
  • 一个硬盘上有多个盘片组成,每个盘片,如同西瓜被切开一样一块一块的扇区。
  • 同时沿着半径的方向被划分成了很多同心圆,就是传说中的磁道。
  • 磁道被扇面切成很多的扇形区域叫做扇区(扇区是从磁盘读出和写入信息的最小单位,通常大小为512字节),不同盘片上的同半径磁道组成了柱面。

扇区(sector):

  • 一个扇区的单位 512字节,是写入读取信息的最小单位

**块(block): **

  • 等于 8个扇区(4KB),linux的最小单位就是块所以为什么创建文件后查看的文件大小就是4KB,windows下被称为簇。

image-20230726232744759

3-4.磁盘的名词

  1. 磁头(head)数:每个盘片一般有上下两面,分别对应1个磁头,共2个磁头;
  2. 磁道(track)数:磁道是从盘片外圈往内圈编号0磁道,1磁道...,靠近主轴的同心圆用于停靠磁头,不存储数据;
  3. 柱面(cylinder)数:同磁道数量;
  4. 扇区(sector)数:每个磁道都别切分成很多扇形区域,每道的扇区数量相同,扇区大小是0.5KB是512字节,文件存储在硬盘中,最小存储单位就是扇区(机械磁盘的核心部分)。
  5. 磁头读取扇区数据,是读取连续的多个扇区,称之为block(块)(机械磁盘的核心部分)。
  6. 圆盘(platter)数:就是盘片的数量。

3-5.磁盘的block

概念:

  • 磁盘的block(块)是文件系统用来寻址磁盘上特定位置的固定大小的区域。
  • 每个块有一个唯一的编号,即磁盘块号(block number)。
  • Block是文件系统读写数据时的最小单位,这是在制作文件系统时决定的,典型的block大小是1024/4096字节。Block的大小正好是扇区(sector)大小的整数倍,它是由诺干个扇区组成。

影响:

  • Block在数据存储中扮演着至关重要的角色。它不仅关系到数据的存储效率,还涉及到数据的完整性。
  • 如果一个Block发生损坏,那么存储在这个Block上的所有数据都可能受到影响。因此,Block作为数据存储的基本单位,在服务器的性能和稳定性中扮演着至关重要的角色。

为什么被称为最小的存储单位:

  • 因为它是文件系统能够寻址和操作的最小数据块。
  • 文件系统在读写文件时是以Block为单位进行操作的。这种设计使得文件系统能够有效地管理存储空间,提高数据读写的效率。
  • 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。
  • 也就说文件系统读取不按照一个扇区(效率慢),而是多个扇区组成一起读取。

注意:

  • block的大小值通常是由文件系统创建时决定的,并且是文件系统操作的最小存储单位。可以通过stat命令进行查看。
  • 块(block) = 4kb,8连续的扇区512字节 = 1块(block)。

image-20250201222835504

如下:

A:Track磁盘磁道(粉红色部分)

B:Geometrical sector几何学中的扇形(紫色部分)

C:Track sector 磁盘扇区(玫红色部分)

D:Cluster块/簇(绿色部分),linux是以"块"为单位,读取磁盘上的数据。

image-20250202005235448

3-6.磁盘的常见接口

1.常见的硬盘接口类型:
    sata接口 (一个是供电 一个是存取数据,机械磁盘偏多)
    m.2 nvme协议接口 m.2 sata协议接口(固态硬盘)
    mstat mini-stata协议接口(固态硬盘)
    # 企业级的专业硬盘 sas接口,性能更高,可靠性好,价格偏贵。
  

2.关于硬盘的历史,主要是如下升级
个人主机
    IDE(Integrated Drive Electronics)传统级硬盘接口、被SATA取代
企业服务器
    SCSI(Small Computer System Interface),小型计算机系统专用接口被SAS(Serial Attached SCSI)取代

3.固态与机械的区别:
    机械怕摔,怕震动
    固态怕突然断电

4.容量计算方式
    1位 = 1 bit
    8 bit = 1 bytes = 1字节
    1024 bytes = 1 KB
    1024 KB = 1 Million Bytes = 1 MB
    1024 MB = 1 Gigabytes = 1 GB
    1024GB = 1TB
    1024TB = 1PB
 
5.容量计算
    一个英文字母(英文逗号),占1个字节
    一个汉字(中文逗号)、3个字节(主流的utf-8编码)
    # 中文占用3个,英文占用1个。
    1字节 = 8bit
    1024字节=1kb

image-20250202005515692


3-7.磁盘的分区类型

更多关于Mbr的原理,https://baike.baidu.com/item/%E4%B8%BB%E5%BC%95%E5%AF%BC%E6%89%87%E5%8C%BA/7612621
关于mbr、gpt更多硬盘原理,https://www.eassos.cn/jiao-cheng/ying-pan/mbr-vs-gpt.php

由于磁盘的容量区别很大,有的超过了1T,关于分区出现了2种方式
    1.小于2T磁盘
        使用MBR
    2.大于2T磁盘
        使用GPT(GUID)

1.MBR分区
    mbr是磁盘的第一个扇区存储分区表,作用让操作系统知道分了几个区,那些是主分区那些是扩展分区,如果加载磁盘的顺序,怎么开机开机
    可以称为:主引导扇区,优点兼容性比较好,缺点不支持管理大硬盘结构
    


2.GPT(GUID)
    由于MBR只能适用于2T以下,所有就诞生了GPT
    优点:
        1.GPT分区的硬盘几乎无限制
        2.分区个数无限制
        3.自带磁盘保险机制

MBR与GPT之间的区别:
    1.MBR分区表最多识别2T的磁盘,大于2T的磁盘无法识别,会导致磁盘浪费,GPT可以识别2T以上的磁盘空间
    2.MBR支持3个主分区+1个扩展分区(逻辑分区不限制),GPT分区表在windonws下支持128个主分区
    3.在MBR中分区表大小是固定的,在GPT分区表头可以自定义分区数量的最大值,也就是说,GPT分区表大小不是固定的
    

选择:
    1.如果是bios主板,使用MBR分区,如果是UEFI主板使用GPT。
    2.如果重装系统,需要了解主板是否支持MBR与UEFI,这就是兼容性
    
    # 注意:不管是新旧系统,或者32/64位系统,同时兼容MBR,相反不是所有的windows都兼容GPT,注意
    

总结:
    MBR支持2T以及一下的大小的(最高2TB,超出的无法识别),GPT支持2T或者更多的(最高可以9400亿TB,相当于容量限制)。
    MBR分区: 4个固定主分区 + 1个扩展分区(逻辑分区)# 一个磁盘最多只能有4个主分区。这是由MBR分区表的结构决定的,MBR分区表总共只有64个字节用于存储分区信息,每个分区条目占用16个字节,因此只能存储4个分区条目。
    GPT分区:128个分区不需要逻辑分区

3-7-1.MBR分区结构

主分区:
    硬盘上的主要存储区域,每个主分区都可以独立地存放一类数据,MBR分区方案中最多只能有4个主分区。

扩展分区:
    一种特殊类型的主分区,它本身不直接存放数据,而是作为一个容器,里面可以创建多个逻辑分区。

逻辑分区:
    在扩展分区内创建的存储区域,可以看作是扩展分区内部的小格子,用于存放特定类型的数据。

解释(主分区/逻辑分区/扩展分区):
    当你需要创建超过4个分区时,你可以将其中一个主分区用作扩展分区,然后在该扩展分区内创建多个逻辑分区,以实现更多的存储区域。扩展分区中的逻辑分区可以任意多个,从而允许你在硬盘上创建更多的独立存储空间。
    一个硬盘20G # 也就是说我将其中某个主分区作为扩展分区使用,然后在内部创建多个逻辑分区。满足使用条件。
        主分区1(2G)
        主分区2(2G)
        主分区3(2G)
        扩展分区(14G) # 占用一个主分区,扩展分区不直接存储数据,而是一个容器。
            逻辑分区(10G)
            逻辑分区(4G)
 
 总结:
     由于MBR分区类型,只支持4个主分区,为了区分更多的分区,使用扩展分区的方式,可以实现更过的分区。

image-20250202011505293


4.linux磁盘

4-1.磁盘写入数据操作流程

磁盘要放入计算机且被Linux系统识别,到可以使用磁盘存储数据,过程如下:
    1.磁盘存储数据  = 人盖房子
    2.磁盘分区 = 将房子内进行隔断(厨房,卫生间,卧室)
    3.磁盘格式化 = 将房子内进行装修
    4.磁盘创建文件系统 = 房子安装门窗户,家具等才能正常住人。

总结:
    1.分区
    2.格式化
    3.创建文件系统

image-20250202012353663


4-2.磁盘的命名规则

# 不同的硬盘(不同的接口)插入到系统中有不同的名字

例如:centos 7 分区:
    /dev/sda #  硬盘名字:sda

为什么是 sda:
    s:硬盘接口类型 sata scsi sas统称为s。
    d:disk 磁盘的英文第一个字母。
    a:代表的第一块。b代表第二块,以此类推。

sda1:指的是第一块硬盘中得第一个分区
sda2:指的是第一块硬盘中得第二个分区

linux的分区与windows分区的区别:# sda1代表着linux下盘符与windows下的C D F这种是类似
    mbr分区表类型下,最多只能分为4个主分区,其他都是逻辑分区
    linux /dev/sda硬盘分区,可以理解为windows下的这4个分区
        /dev/sda1 -------> windows C:\
        /dev/sda2 -------> windows D:\
        /dev/sda3 -------> windows E:\
        /dev/sda4 -------> windows F:\

# 其他的类型:
    云服务器的虚拟磁盘:v开头 
    ide磁盘:h

image-20250202013250740


4-3.外接设备显示的名字

image-20230730220715807


5.linux分区操作

5-1.MBR分区

5-1-1.MBR分区特点

1.不支持2T以上的磁盘 2.最多支持4个分区 3.fidsk命令只能创建MBR分区类型

image-20230801001036705

5-1-2.测试添加磁盘

注意:

  • ​ 使用vmware添加磁盘,请先关机,然后点击编辑虚拟机设置,添加添加。

1.添加磁盘:

image-20250202130808701

2.查看日志等信息:

image-20250202131636025

5-1-3.设置分区操作

相关命令:
    fdisk # fdisk就是linux中得一个磁盘分区工具,与window分区工具一样,和第三方的分区工具diskgenius一样

使用:
    fdisk /dev/分区磁盘名称

# 实现对 /dev/sdb 设置一个主分区(2G)一个扩展分区(18G)扩展分区内含有逻辑分区1(10G)逻辑分区2(8G)
操作如下:
    1.执行命令
        fdisk /dev/sdb
    
    2.执行指令
        p # 查看分区表
    
    3.创建新分区
        n # 创建分区,选择是主分区类型还是扩展分区类型,在进行设置大小。
    
    4.保存设置分区
        w # 保存分区

# 总结:
    操作时,先扩展分区,在对扩展分区内设置逻辑分区(实际存储的)。

image-20250202211335225


5-1-4.查看分区后

image-20250202211654124


5-1-5.删除分区操作

使用的指令:
    d

image-20250202212431573


5-2.GPT分区

注意:

  • 由于fdisk命令不支持gpt分区,parted命令又不好用,因此用gdisk命令(同样支持mbr分区表)。

需要安装命令:

  • yum install gdisk -y

操作与fdisk命令类型也是交互命令。

5-2-1.设置分区

相关命令:
    gdisk # fdisk就是linux中得一个磁盘分区工具,与window分区工具一样,和第三方的分区工具diskgenius一样

使用:
    gdisk /dev/分区磁盘名称

# 实现对 /dev/sdb 设置一个主分区(2G)一个主分区(18G)扩展分区内含有逻辑分区1(10G)逻辑分区2(8G)
操作如下:
    1.执行命令
        gdisk /dev/sdb
    
    2.执行指令
        p # 查看分区表
    
    3.创建新分区
        n # 创建分区,选择是主分区类型还是扩展分区类型,在进行设置大小。
    
    4.保存设置分区
        w # 保存分区

# 总结:
    由于gpt相当来说没有分区限制,最大可以支持128个分区。

image-20250202232406026


5-2-2.查看验证

image-20250202232711256


5-2-3.删除分区

使用的指令:
    d

image-20250202232932057


5-3.文件系统格式化

作用:

  1. 计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念。
  2. 用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址(数据块,也有编号)为多少的数据块上,只需要记住这个文件的所属目录和文件名,即可访问该文件。

image-20230731212550295

5-3-1.常见的文件系统

Dev FAT32 exFAT NTFS ReFS HFS/HFS+ APFS Ext2/3/4 XFS
Window √(淘汰) √(主流)
Mac
Linux √(centos6/5/4淘汰) √(主流)

5-3-2.文件系统的区别

# 区别:
    兼容性,不同系统平台,不一定识别、或者无法读写操作,容量大小、支持硬盘最大容量有限制。

# 例如:
    我们经常需要跨平台工作,例如从 Win10 拷贝个文件到U盘,然后插入到 Mac Book中,或者 Linux 电脑中,这时候如果U盘的文件系统兼容性不够好,就会导致有的平台能识别U盘的文件,有的电脑无法识别。

# 注意:
    不同文件系统的,在不同的系统平台中不兼容,会导致无法读写操作,所以在使用时,请查看当前的磁盘或者优盘属于那个文件系统,要不就修改文件系统。

image-20230731213553546


5-3-3.系统支持的文件系统

# window
    最古老的FAT32用于windows XP,无法支持大于32G的存储分区和大于4G的文件
    Win10 使用NTFS,支持加密、压缩、权限控制等等,且还支持日志保证数据一致性,主流硬盘都是NTFS
    专门给闪存使用的ExFAT,属于是FAT32和NTFS选择的折中,并且同时支持win和macos。

# linux
    Ext系列则是Linux社区上设计的文件系统,由于Linux称霸服务器端,大部分开发者其实都或多或少接触过Ext系列文件系统。
    在centos7.x之前,都还是Ext4、Ext3都支持日志功能(日志功能指的是,不会因为突然断电,导致磁盘数据损坏,能够通过日志恢复磁盘文件)
    XFS(重点,centos7开始默认文件系统)
    
# 关于ext4/ext3日志功能是什么
    在磁盘有一块特定的区域,专门保存日志,叫做journaling(日志) 区域,在更新磁盘特定的block之前,就会在叫做journaling中做变更记录,然后再去更改新的相对应的block。这样在系统崩溃的时候,可以通过journaling区域恢复。

5-3-4.文件系统

类型 说明
ext2 较老的文件系统,不支持日志功能。
ext3 支持日志功能,提高了文件系统的可靠性和恢复能力。
ext4 在 ext3 的基础上进行了优化,支持更大的文件和分区,提高了性能和可靠性。
XFS 一种高性能的文件系统,适用于大容量存储和高吞吐量的场景。它支持大文件和大分区,并且具有良好的扩展性和性能。
Btrfs 一种现代的文件系统,支持快照、压缩、校验等功能。
FAT32 一种较老的文件系统,广泛用于移动存储设备(如 U 盘)。它支持的最大文件大小为 4 GiB,分区大小最大为 2 TiB。
NTFS Windows 系统的默认文件系统,也支持在 Linux 系统中使用。它支持大文件和大分区,并且具有良好的性能和可靠性。
vfat 与 FAT32 类似,但通常用于较小的分区和移动存储设备。

5-3-5.操作命令

# 注意:需要硬盘进行分区,然后对分区设置文件系统。
命令:
    mkfs

作用:
    可以对分区文件系统进行格式化,对磁盘设置文件系统。
参数:
    -f 强制覆盖设置文件系统
    
支持:
    [root@wkxlinux ~]# mkfs
    mkfs         mkfs.cramfs  mkfs.ext3    mkfs.minix   
    mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.xfs  

# 最常用的文件系统:xfs或者ext4

命令使用:
    mkfs.xfs /dev/sdb2 
    mkfs.xfs -f /dev/sdb2  # 强制

image-20250202234940459


5-4.挂载操作

  • 将设备(分区)挂载到某个文件夹上,那么当前的文件存储的数据就会在这个磁盘分区中,只有挂载才能访问这个设备。

image-20230801232148014

5-4-1.挂载命令mount

命令:
    mount 
    
作用:
    对设备进行挂载,查询挂载设备,'不添加任何参数就可以查看全部'

使用:
    mount 参数 设备(硬盘的分区) 挂载点(目录)

参数:
    -l 显示已加载的文件系统列表
    -o 添加挂载选项,是安全、性能优化重要参数,可以在挂载时设置一些参数比如当前为'只读' '只写' 犹如权限一样。

例如:
    mount /dev/sdb1 /mnt/sdb1  # 将/dev/sdb1分区的设备 挂载到 /mnt/sdb1文件夹,这样这个文件夹存储的数据就会到/dev/sdb1分区的设备中,不会占用原来的存储空间。
    
    mount -o ro,async /dev/sdb2 /mnt/sdb2 # 使用-o参数设置挂载的文件夹只读,并且异步方式处理
    [root@template mnt]# mount | grep '/dev/sdb2'
    /dev/sdb2 on /mnt/sdb2 type xfs (ro,relatime,attr2,inode64,noquota)
    # 解释:
         设备名:/dev/sdb2
         挂载点:/mnt/sdb2
         文件系统类型:xfs
         挂载选项:
         	ro:只读模式
         	relatime:用于优化文件访问时间的记录
         	attr2:这是XFS文件系统的一个特性,表示文件系统支持扩展属性(extended attributes),允许存储额外的元数据。
         	inode64:表示文件系统使用64位的inode编号。
         	noquota:表示没有启用磁盘配额(disk quota)。

5-4-2.挂载命令mount的-o参数

  • 也是在永久挂在时使用的参数。
参数 含义
async 以异步方式处理文件系统I/O操作,数据不会同步写入磁盘,而是写到缓冲区,提高系统性能,但损失数据安全性
sync 所有I/O操作同步处理,数据同步写入磁盘,性能较弱,数据安全性高
atime/noatime 文件被访问时是否修改时间戳,不更改时间,可以提高磁盘I/O速度
auto/noauto 通过-a参数可以自动被挂载/不自动挂载
defaults 默认值包括rw、suid、dev、exec、auto、nouser、async,/etc/fstab大多默认值
exec/noexec 是否允许执行二进制程序,取消提供安全性
suid/nosuid 是否允许suid(特殊权限)生效
user/nouser 是否允许普通用户挂载
remount 重新挂载
ro 只读
rw 读写

5-4-3.临时挂载

临时挂载:
    mount 参数 设备块 挂载目录
    mount -o ro,async /dev/sdb2 /mnt/sdb2

缺点:
    当服务器重启后,就会磁盘的挂载就失效。

image-20250203194446338


5-4-4.永久挂载

# 可以避免挂载失效。

配置文件:
    /etc/fstab

配置的格式:
    挂载路径/uuid	挂载点	文件系统类型	[参数(查看-o参数)一般默认为defaults] 0 0 

使用:
    方式1:使用uuid,需要通过命令查询: lsblk -f
    UUID=2bf5f615-47a3-47a3-9a6a-93d4d57fb9e4 /opt/dir_sdb xfs defaults 0 0
    
    方式2:直接使用路径进行挂载即可
        /dev/sdb /opt/dir_sdb xfs defaults 0 0

image-20250203195001903


5-4-5.取消挂载

命令:
    umount 挂载的文件

使用:
    umount /mnt/sdb1

image-20250203195234844


5-4-6.光盘挂载

也就是取消光驱的挂载
    1. umount 挂载点 # 取消挂载
    2.eject # 退出光盘命令
    3.eject -r /dev/sr0 # 指定设备弹出

1.查询光盘.ios
    [root@linux /]# ls /dev/sr*
    /dev/sr0

2.挂载
    [root@linux /]# mount /dev/sr0 /mnt
    mount: /dev/sr0 is write-protected, mounting read-only

3.查询确定挂载
    [root@linux /]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   20G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    └─sda2   8:2    0   19G  0 part /
    sdb      8:16   0   20G  0 disk 
    └─sdb1   8:17   0   20G  0 part 
    sdc      8:32   0   20G  0 disk 
    └─sdc1   8:33   0   20G  0 part 
    sr0     11:0    1  973M  0 rom  /mnt  # 挂载点/mnt

4.指定设备弹出(取消光盘挂载)
    [root@linux /]# eject -r /dev/sr0

5.在进行查询
    [root@linux /]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   20G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    └─sda2   8:2    0   19G  0 part /
    sdb      8:16   0   20G  0 disk 
    └─sdb1   8:17   0   20G  0 part 
    sdc      8:32   0   20G  0 disk 
    └─sdc1   8:33   0   20G  0 part 
    sr0     11:0    1  973M  0 rom  # 挂载点取消


# 操作也是与设备块(硬盘分区)挂载方式相同。

5-4-7.总结

1.如果只进行分区不设置文件系统进行挂载,会报错,无法挂载
2.取消挂载目录是,出现路径繁忙,请查看是否有当前进行正在使用,杀死进程即可取消挂载。
    [root@wkxlinux ~]# umount /mnt
    umount: /mnt: target is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))

    1.可以确定当前路径被人操作,或者被程序占用,所以当前路径无法取消挂载。
    2.使用lsof命令查询/mnt被那个进程使用,使用kill 将整个进程杀死
        找到那个进程占用
        [root@linux ~]# lsof /mnt
        COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
        bash    1238 root  cwd    DIR   8,17     4096    2 /mnt
        强制杀死
        [root@linux ~]# kill -9 1238
        再次查询
        [root@linux ~]# lsof /mnt
        取消挂载
        [root@linux ~]# umount /mnt

3.假设当设备1挂载完毕一个目录A,然后在设备2挂载目录A也是可以的,但会出现问题。如果原挂载目录中有内容,然后在进行挂载新的设备块,内容就会消失,但是如果取消挂载,内容就会恢复。

image-20250203195829291


5-5.相关命令

5-5-1.lsblk

命令:
    lsblk
作用:
    列出所有的块设备,而且还能显示他们之间的依赖关系
参数:
    -a 列出全部设备块,默认。
    -b 使用bytes方式显示设备块。
    -f 显示当前磁盘的操作系统。
    -P kv形式显示数据。

5-5-2.fdisk

命令:
    fdisk

作用:
    磁盘分区命令,非交互模式可以进行对磁盘进行分区。可以操作mbr与gpt(有限制,不如gdisk命令好用)

参数:
    -l 列出全部的设备分区(包含未分区设备)

# 怎么对磁盘进行分区:
    fdisk /dev/sda # 对sda磁盘设备进行分区处理。

# 相关指令如下:
    Command(m for help): m  # 输出帮助信息
      # 指令如下
        a  toggle a bootable flag	# 设置启动分区
        b  edit bsd disklabel	# 编辑分区标签
        c  toggle the dos compatibility flag	# 切换dos兼容性标志				
        d  delete a partition	# 删除一个分区
        l  list known partition types	# 列出分区类型
        m  print this menu	# 帮助
        n  add a new partition # 建立一个新的分区
        o  create a new empty DOS partition table	#  创建一个新的空白DOS分区表
        p  print the partition table	# 打印分区表
        q  quit without saving changes	# 退出不保存设置
        s   createa new empty Sun disklabel 	# 创建一个新的空的SUN标示
        t   changea partition's system id	# 改变分区的类型
        u   changedisplay/entry units	# 改变显示的单位
        v   verifythe partition table	# 检查验证分区表
        w  write table to disk and exit	# 保存并写入分区表

image-20250202132742066


5-5-3.parted

命令:
    parted /dev/sdx

作用:
    可以修改磁盘的类型将mbr修改为gpt,或者gpt修改为mbr。

主要指令:
    mklabel gpt # 将磁盘类型修改为gpt
    mklabel msdos  # 将磁盘类型修改为mbr
    print # 打印当前的磁盘的属性。
    q # 退出

# 注意:
    在转换类型时,当前磁盘的数据将被全部删除。

image-20250202213013266


5-5-4.gdisk

安装:
    yum install gdisk -y

使用:
    gdisk /dev/sdb
    
作用:
    针对gpt属性的磁盘设备设置分区。
    
指令:
    b 将GPT数据备份到文件
    c 更改分区名称
    d 删除分区
    i 显示分区的详细信息
    l 列出已知的分区类型
    n 添加新分区
    o 创建新的空GUID分区表(GPT)
    p 打印分区表
    q 退出而不保存更改
    r 恢复和改造方案(仅限专家)
    s 排序分区
    t 更改分区的类型代码
    v 验证盘
    w 将表写入磁盘并退出
    x 额外功能(仅限专家)
    ?打印此菜单

image-20250202213711050


6.RAID磁盘阵列技术

是什么:

  1. 全称为Redundant Arrays of Independent Drives 磁盘冗余阵列 。
  2. 这个是由多块磁盘组成容量的磁盘组。就将多块磁盘,组成一个整体,不同的raid基本,可以实现不同的功能,如读写加速,数据备份。

过程:

  1. 技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。
  2. RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。
  3. RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度增大容量,提供容错功能,能够确保数据安全性易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。

生产环境:

  1. 可能也不用,现在的存储技术,都发展到分布式,比如主流的云服务器,都不用raid技术,即便用了完全不用raid。
  2. 只有当你拿到一堆服务器,进行服务器从0初始化对磁盘,做reid技术,4块硬盘,采用reid技术搭建,只能用硬件reid卡。

特定:

  • Raid磁盘阵列组能够提升数据冗余性,当然也增加了硬盘的价格成本(需要更多的硬盘),只不过数据本身的价值是超过硬盘购买的价格的,Raid除了能够保障数据丢失造成的严重损失,还能提升硬盘读写效率,被应用在广泛的企业中。

总结:

  • 将多块硬盘冗余的组合为一个硬盘,然后根据不用的策略存储,可以保障数据的安全性。

6-1.RAID级别

类型 读写性能 可靠性 磁盘利用率 成本
RAID0 最好 最低 100% 较低
RAID1 读正常;写两份数据 50%
RAID5 读:近似RAID0 写:多了校验 RAID0<RAID5<RAID1 (n-1)/n RAID0<RAID5<RAID1
RAID6 读:近似RAID0 写:多了双重校验 RAID6>RAID5 RAID6<RAID5 RAID6>RAID1
RAID10 读:RAID10=RAID0 写:RAID10=RAID1 50% 最高

6-2.环境下选择

# 注意:可以用也可以不用
    如果是企业的机房,还是要使用的,保证数据的安全,提高性能,可靠性。
    如果使用的云服务器,那么就不需要操心这个事情。

参考:
    https://en.wikipedia.org/wiki/RAID 

6-3.软RAID与硬RAID

软RAID:

  • 不依赖硬件控制,由本机CPU去控制硬盘驱动器进行数据转换、计算的过程就是软件RAID,消耗性能。

硬RAID:

  • 由专门的RAID卡上的主控芯片操控,就是硬件RAID,单独一个硬件控制,性能好。

差异:

  1. 软件RAID额外消耗CPU资源,性能弱。
  2. 硬件RAID更加稳定,软件RAID可能造成磁盘发热过量,造成威胁。
  3. 兼容性问题,软件RAID依赖于操作系统,硬件RAID胜出。

6-3-1.硬RAID

通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。
RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。
不同的RAID卡支持的RAID功能不同。支持RAlD0、RAID1、RAID4、RAID5、RAID10不等。

# 不同的磁盘的接口,使用的阵列卡不同。

image-20250203201548528


6-3-2.软RAID

软RAID运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。

# 特点:
    1.占用内存空间
    2.占用CPU资源
    3.如果程序或者操作系统故障就无法运行

6-3-3.软件RAID搭建命令

命令:
    mdadm

安装:
    yum install mdadm -y

作用:
    搭建软RAID

参数:
    -C 表示创建RAID阵列卡
    -v 显示创建过程
    -a  yes/no  自动创建阵列设备文件
    -n number 参数表示用number块盘部署阵列
    -l number 代表指定创建raid number级别

例如:
    mdadm -Cv /dev/md0  -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

6-3-4.软件RAID搭建命令参数

参数 解释
-C 用未使用的设备,创建raid
-a yes or no,自动创建阵列设备
-A 激活磁盘阵列
-n 指定设备数量
-l 指定raid级别
-v 显示过程
-S 停止RAID阵列
-D 显示阵列详细信息
-f 移除设备
-x 指定阵列中备用盘的数量
-s 扫描配置文件或/proc/mdstat,得到阵列信息

6-3-5.软件RAID搭建过程

# 搭建 RAID10,是由RAID0 + 2个RAID1组成的


1.在wmware中添加4块硬盘

2.安装命令
    yum install mdadm -y

3.执行命令进行搭建
     mdadm -Cv /dev/md0  -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
     
     解释:
         -C 表示创建RAID阵列卡
         -v 显示创建过程
         /dev/md0 指定raid阵列的名字(组成一块磁盘的名称是什么)
         -a  yes  自动创建阵列设备文件
         -n 4 参数表示用4块盘部署阵列
         -l 10 代表指定创建raid 10级别
         /dev/sdb /dev/sdc /dev/sdd /dev/sde :4块设备的名称
 
 4.查看
     lsblk 或者 fdisk -f /dev/md0
 
 5.设置文件系统挂载使用
     mkfs.xfs /dev/md0 # 设置文件系统
     mount /dev/md0 /mnt # 挂载
     lsblk # 查看

image-20250203232650999


6-3-6.软件RAID取消

1.查看软RAID状态
    mdadm -D /dev/md0 

2.阵列移除一个设备块,在进行查看
    mdadm /dev/md0 -f /dev/sdb
    mdadm -D /dev/md0 

3.将硬盘添加到阵列中	
    reboot # 重启
    mdadm --manage /dev/md0 --add /dev/sdb # 添加

4.停止阵列 # 危险
    mdadm --stop /dev/md0 # 停止阵列,无法使用,需要重新执行命令。

5.移除操作
    1.取消挂载
        umount /mnt
        
    2.停止raid服务
        mdadm -S /dev/md0 
        
    3.卸载raid的磁盘
        [root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sdb
        [root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sdc
        [root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sdd
        [root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sde
        
    4.删除配置文件
        rm -f /etc/mdadm.conf
        
    5.修改开机自起/ect/fstab文件

image-20250203234559705


6-4.RAID级别

条带化:

  • 条带化技术就是一种自动的将 I/O 的负载均衡到多个物理磁盘上的技术,磁盘条带化是指利用条带化技术就是将一块连续的数据分成很多小部分并把它们分别存储到不同磁盘上去。类似于nginx负载均衡轮训算法一样,均匀的将数据分布到每个设备上。

6-4-1.RAID0

特点:

  1. 最少两块硬盘。
  2. 数据条带化分布式的存储在不同的盘中,提高读写速度,100%的利用空间率
  3. 数据没有冗余策略,如果一块硬盘坏了,那么这块硬盘的存储的数据就丢失无法恢复。

缺点:

  • 如果某个磁盘坏了,就会导致系统数据被破坏,数据分别写入两个磁盘中,没有备份。

场景:

  • 对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储。

说明:

  • 将数据打散,数据一次写入到不同的磁盘中(根据reid 0架构的磁盘),相当于下图A数据写入到disk1磁盘,B数据写入disk2磁盘,以此类推,加速了磁盘的写入读取速度。利用率100%。好比超市买东西可以从A门进也可以从B门进,都是进入到超市中,买单的时候可以从A收银台结账,也可以从B收银台结账。

0

6-4-2.RAID1

特点:

  • 数据依次写入到各个物理硬盘中,数据是分开放的(A一份 B一份),因此损坏任意一个硬盘,都会对完整的数据破坏,对于企业数据来说,肯定是不允许。Raid 1技术,是将两块以上硬盘绑定,数据写入时,同时写入多个硬盘,因此即使有硬盘故障,也有数据备份。
  • 最少2块磁盘,数据分别写入到A磁盘与B磁盘,可靠性高,利用率低,一块磁盘坏了,不会影响数据读写操作,因为有另一块磁盘的数据相同。

缺点:

  • 降低了使用率,假设有2块20G的磁盘,只能使用20G,利用率是50%,如果是3块磁盘那么利用率就只有33%,磁盘数越多利用率越低。

场景:

  • 对数据安全性要求高的场景,比如邮件系统,交易系统。

说明:

  • 就是将数据写入AB两个磁盘中,从A或者从B磁盘都能读取到相同的数据,利用率低,但是安全性高,如果磁盘坏了一个,那么另一个磁盘的数据相同,数据不会丢失。

1

6-4-3.RAID5

特点:

  1. 最少3块磁盘,可以简单看成RAID0的升级版。
  2. 数据条带化存储到磁盘中,利用率为(n-1)/n。
  3. 一块磁盘坏了,可以根据其他数据块和对应的校验数据重构坏数据(消耗性能),校验算话是计算机二进制的异或算法,只能允许一块盘坏了。
  4. 兼顾了存储性能,数据安全,存储成本各个方面(性价比高),适用于大部分场景。

说明:

  • 两两数据计算出一个校验值,存储在硬盘上,如果一块硬盘损坏,那么可以通过其他硬盘恢复
  • 每存储2条数据,就会出现计算一个校验值,存储到第三块磁盘中,1存数据 2存数据 3存校验值,以这种方式存储,具有reid 0的 存储效率和读取效率,同时还兼备了 reid 1 备份的特点,但是如果坏一块盘,可以通过其他盘存储的校验数据反推恢复坏盘存储的数据,但是坏两块的话就无法恢复了。

5

6-4-4.RAID6

特点:

  1. 至少4块磁盘,是RAID5的升级版。
  2. 数据条带化存储到磁盘,读取性能好,容错率高,采用双重校验,方式保证数据的安全性,如果两块磁盘出现了问题,可以通过两个校验数据重建2块磁盘的数据。
  3. 成本高,更为复杂。
  4. 一般用于数据安全较高的场景

image-20220302192707102

6-4-4.RAID10

特点:

  1. raid 10 是 raid1 +raid 0的组合。
  2. 至少需要4块磁盘。两块磁盘先做一组raid 1(每次存数据两个盘存储) 在将做好的raid1的两组做成reid0(分布存储)。
  3. 兼顾了数据的冗余(raid1)和读写性能(raid0数据条带化)。
  4. 磁盘利用率50%,成本高,只要不是成组成组的坏,那么数据就不会丢失。

说明:

  • 数据通过 raid 0 分别存储到 raid1组中,raid1组在将数据分别存储到A磁盘与B磁盘中,做到了数据安全性与数据的读写速度的提升。

10

7.LVM逻辑卷

是什么:

  • 是一种存储虚拟化技术,通过在物理存储设备之上创建逻辑卷,实现对存储空间的灵活管理。

与RAID的区别:

特性 LVM RAID
数据冗余能力 不直接提供数据冗余能力,需结合RAID或备份技术使用 提供数据冗余,通过镜像(RAID 1)或校验(RAID 5/6)在磁盘故障后可恢复数据
容错机制 无内置容错功能,逻辑卷损坏可能导致数据不可恢复 具备强大的容错能力,磁盘故障时可利用镜像或校验信息恢复数据,保证系统持续运行
动态管理能力 支持逻辑卷的在线扩展或缩减,允许动态调整存储配置,适应变化的业务需求 配置后难以调整,某些级别(如RAID 0)不提供冗余
快照功能 支持快照功能,可快速创建数据副本用于备份或测试 不支持快照功能,但通过镜像或校验数据减少磁盘故障带来的数据丢失风险
性能优化 不直接提供性能优化,但可以通过灵活的存储配置间接提升性能 通过条带化等技术提升磁盘I/O性能
配置复杂性 配置简单,Linux自带LVM工具即可完成配置,支持动态调整存储结构 硬件RAID依赖专用控制器,配置需要BIOS或厂商工具支持;软件RAID通过工具如mdadm配置,操作相对复杂
运维复杂性 提供了较为便捷的管理工具(如lvextend和快照),但快照空间管理需要额外关注 监控和故障修复需要专业工具和知识,特别是硬件RAID可能涉及控制器管理

总结:

  • LVM与RAID的方向不同,最大的使用其实就是对磁盘的扩容非常便捷。可以将RAID与LVM组合使用,不仅仅提供了数据冗余备份和磁盘的性能,同时也可以随时进行扩容使用空间。

7-1.LVM名词

普通硬盘挂载:

  1. 购买一个新的硬盘,装到机器上能被识别。
  2. 进行分区。
  3. 对分区设置文件系统。
  4. 进行挂载到目录上使用。

LVM挂载:

  1. 磁盘格式化,格式化为pv(磁盘的容量被分为n个pe),pe默认的单位为4mb,等于1024个block。
  2. pv加入卷组vg(动态伸缩的大硬盘)。
  3. 创建逻辑卷lv(等于创建分区)。
  4. 格式化文件系统。
  5. 挂载使用。
名称 说明
PP(Physical Parttion) 物理分区,LVM建立在物理分区之上,也就是物理设备块,硬盘。
PV(Physical Volume) 物理卷,处于LVM最底层,一般一个PV对应一个PP。
PE(physical Extends) 物理区域,PV中可以用于分配的最小存储单元,同一个VG中所有的PV的PE大小相同,如1M、2M。
VG(Volume Group) 卷组,建立在PV之上,可以划分多个PV。
LE(Logical Extends) 逻辑扩展单元,组成LV的基本单元,一个LE对应一个PE。
LV(Logical Volume) 逻辑卷,建立在VG之上,是一个可以动态改变大小的分区。

image-20220303185641573


7-2.LVM原理

优点:

  1. 文件系统可以夸多个磁盘(按照逻辑卷进行设置格式化文件系统,而逻辑卷在逻辑卷组中,逻辑卷组包含了每一块磁盘),大小不会受到磁盘的限制(可伸缩)。
  2. 可以在系统运行下,动态扩展文件系统的大小。
  3. 可以增加新的磁盘到lvm的储存池中。

操作流程:

  1. 添加物理磁盘。
  2. 命令创建pv。
  3. 创建卷组vg。
  4. 创建逻辑卷lv。
  5. 格式化lv文件系统。
  6. 挂载使用。
物理分区阶段:将物理磁盘fdisk格式化修改System ID为LVM标记(8e)
PV阶段:通过pvcreate、pvdisplay将Linux分区处理为物理卷PV
VG阶段:接下来通过vgcreate、vgdisplay将创建好的物理卷PV处理为卷组VG
LV阶段:通过lvcreate将卷组分成若干个逻辑卷LV
开始使用:通过mkfs对LV格式化,最后挂载LV使用

解释:

  1. 物理卷 :pv
    • 物理卷是提供真正容量,存放的数据设备,就是硬盘(可以是整块硬盘,也可以是硬盘的分区)。
  2. 卷组 : vg
    • 它是由一个或多个物理卷组成的(相当于将多个物理卷整个成为一个大硬盘),一个lvm可以有多个卷组的存在(比如:卷组1(50G) 卷组2(50G))。
  3. 逻辑卷: lv
    • 是从卷组中切出的一块区域(可以理解为磁盘的分区),它是用户使用的逻辑设备,逻辑卷创建后可以进行伸缩(扩展或者减少)。
  4. 物理区域:pe
    • 每一个物理卷被划分为成为pe的基本单元,具有唯一编号的PE是能被LVM寻址的最小单元。PE的大小可指定,默认为4 MB。 PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。 4MB=4096kb=4096kb/4kb=1024个block
    • 相当于,默认磁盘的最小单位是扇区 512字节 linux系统的最小读取单位是block 4kb lvm的最小的单位是 4mb

  5. 物理区域 pe 说明:
    1. 硬盘读取数据最小单位1个扇区512字节。
    2. 操作读取数据最小单位1个数据块=8*512字节=4096字节=4KB。
    3. lvm寻址最小单位1个PE=4MB。

lvm 扩容原理:

LVM是通过交换PE的方式,达到弹性变更文件系统大小的 减少剔除原本LV中的PE,就可以减少LV的容量 增加把其他PE添加到LV,就可以扩容LV容量 一般默认PE大小是4M,LVM最多有65534个PE,所以LVM最大的VG是256G单位 PE是LVM最小的存存储单位,类似文件系统的block单位,因此PE大小影响VG容量 LV如同/dev/sd[a-z]的分区概念

image-20191208165901997

7-3.LVM命令

操作 pv命令(物理卷) vg命令(卷组) lv命令(逻辑卷)
列出display pvs vgs lvs
扩容extend vgextend lvextend
缩容reduct(会造数据丢失) vgreduce Lvreduce
删除remove pvremove vgremove lvremove
改变容量resize vgresize

7-3-1.pv-物理卷管理命令

命令 功能
pvcreate 创建物理卷
pvscan 查看物理卷信息
pvdisplay 查看各个物理卷的详细参数
pvremove 删除物理卷

7-3-2.卷组管理命令

命令 功能
vgcreate 创建卷组
vgscan 查看卷组信息
vgdisplay 查看卷组的详细参数
vgreduce 缩小卷组,把物理卷从卷组中删除
vgextend 扩展卷组,把某个物理卷添加到卷组中
vgremove 删除卷组

7-3-3.逻辑卷管理命令

命令 功能
lvcreate 创建逻辑卷
lvscan 查看逻辑卷信息
lvdisplay 查看逻辑卷的具体参数
lvextend 增大逻辑卷大小
lvreduce 减小逻辑卷大小
lvremove 删除逻辑卷

7-4.操作

7-4-1.物理卷操作

1.查看物理卷 pvs
    命令:
        pvs
    作用:
        查看当前机器的全部的物理卷
    使用:
        [root@template ~]# pvs
        PV         VG     Fmt  Attr PSize   PFree
        /dev/sda2  centos lvm2 a--  <19.00g    0 
        
        解释:
            PV:物理卷
            VG:卷组的是
            Fmt:使用的格式
            Attr:a-- 代表物理卷可用
            PSize:物理卷的总大小
            PFree:剩余的空间
 
 2.安装使用命令
      yum install -y lvm2
     # 安装后才能使用lvm命令 pvcreate 与 pvdisplay
     

3.创建物理卷 pvcreate
    命令:
        pvcreate
    作用:
        创建物理卷
    使用:
        pvcreate /dev/设备路径(磁盘的路径)
        pvcreate /dev/sdb1 # 创建设备块物理卷


4.查看物理卷详情 pvscan 与 pvdisplay
    命令:
        pvscan(查看信息) pvdisplay(查看响应参数)
    作用:
        查看物理卷详细的信息
    使用:
        pvscan # 查看全部的
        pvscan /dev/sdb1 # 只查看当前设备块的
        
5.删除物理卷 pvremove 
    命令:
        pvremove
    作用:
        删除物理卷
    使用:
        pvremove /dev/sdb1 # 删除sdb1设备块物理卷

image-20250204160639102


7-4-2.卷组操作

# 先创建物理卷后,才能进行操作卷组

1.查看卷组 vgs
    命令:
        vgs
    作用:
        查看当前机器的全部的卷组
    使用:
        [root@template ~]# vgs
        VG     #PV #LV #SN Attr   VSize   VFree
        centos   1   2   0 wz--n- <19.00g    0 
        解释:
            VG:卷组的是名称
            #PV:代表有一个物理卷
            #LV:包含两个逻辑卷
            #SN:快照数量
            Attr:wz--n- 卷组属性
                w:可写(writable)
                z:零(zero):在创建逻辑卷时,会将新分配的物理空间初始化为零。
                --:其他属性为默认值。
                n:非集群(non-clustered)
                -:无其他特殊属性。
            VSize:卷组的总大小
            VFree:卷组的剩余
 
 2.安装使用命令
      yum install -y lvm2
     

3.创建卷组 vgcreate
    命令:
        vgcreate
    作用:
        创建卷组
    使用:
        vgcreate 卷组的名称  /dev/设备路径(已经是物理卷磁盘的路径)
        vgcreate abc /dev/sdb1 /dev/sdb2 # 创建设备块卷组


4.查看卷组详情 vgscan 与 vgdisplay
    命令:
        vgscan(找到当前设备的卷组) vgdisplay(查看响应参数)
    作用:
        查看卷组详情
    使用:
        vgscan # 找到有没有卷组
        [root@template ~]# vgscan
        Reading volume groups from cache.
        Found volume group "centos" using metadata type lvm2  # 找到当前的centos卷组

        vgdisplay  # 查看详细参数
        [root@template ~]# vgdisplay
        --- Volume group ---
        VG Name               centos
        System ID             
        Format                lvm2
        Metadata Areas        1
        Metadata Sequence No  3
        VG Access             read/write
        VG Status             resizable
        MAX LV                0
        Cur LV                2
        Open LV               2
        Max PV                0
        Cur PV                1
        Act PV                1
        VG Size               <19.00 GiB
        PE Size               4.00 MiB
        Total PE              4863
        Alloc PE / Size       4863 / <19.00 GiB
        Free  PE / Size       0 / 0   
        VG UUID               9dqqaP-E2FL-lEQX-9Pyv-eJpE-iiUu-kLzBB0

        
5.删除卷组 vgremove 
    命令:
        vgremove
    作用:
        删除卷组
    使用:
        vgremove 卷组名称 # 删除卷组

6.操作卷组 vgreduce  vgextend
    命令:
        vgreduce  vgextend
    作用:
        在现有的卷组中进行操作 vgreduce(从卷组中剔除物理卷)  vgextend(从卷组中添加物理卷)
    使用:
        vgextend [选项] 卷组名称 物理卷设备 # 将这个设备添加到卷组中
        vgreduce [选项] 卷组名 物理卷设备 # 将这个设备移除卷组

image-20250204163104588


7-4-3.逻辑卷操作

# 逻辑卷的操作与卷组操作相同,前提是卷组存在。


# 先创建物理卷后,才能进行操作卷组

1.查看逻辑卷 lvs
    命令:
        lvs
    作用:
        查看逻辑卷
    使用:
        [root@template ~]# lvs
        LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
        root centos -wi-ao---- <17.00g                                                    
        swap centos -wi-ao----   2.00g   
        解释:
            LV:逻辑卷名称
            VG:来自于哪个卷组
            Attr:逻辑卷的属性-wi-ao----
                -:无特殊类型(普通逻辑卷)。
                w:可写(writable)。
                i:继承(inherited)。
                -:无快照(no snapshot)。
                a:激活(active)。
                o:打开(open,即有挂载点或正在使用)。
                ----:其他属性为默认值。
            LSize:大小
            Pool:用于精简配置的存储池(如果适用)。
            Origin:快照的源逻辑卷
            Data% :精简配置逻辑卷中元数据的使用百分比(如果适用)。
            Meta%:精简配置逻辑卷中元数据的使用百分比(如果适用)。
            Move:迁移操作的状态(如果适用)。
            Log:快照的日志卷(如果适用)。
            Cpy%Sync:镜像逻辑卷的同步百分比(如果适用)。
            Convert:转换操作的状态(如果适用)。
             

 2.安装使用命令
      yum install -y lvm2


3.创建逻辑卷 lvcreate
    命令:
        lvcreate
    参数:
        -L 指定逻辑卷的大小,单位为“kKmMgGtT”字节 # 具体的大小10G 200MB ... 
        -l 指定逻辑卷的大小(pe个数)# 卷组的pe数的百分比 假设pe数据5118 使用40% = (5118*40%)
        -n 后面跟逻辑卷名 
        -s 创建快照
    作用:
        创建逻辑卷
    使用:
        lvcreate -n 创建逻辑卷名称 -l 使用多少数量 或者 -L 直接指明大小  来自于那个卷组 
        lvcreate -n 0224lv1 -l 40%VG vg-0224 # 创建逻辑卷 40%VG指定当前的40%大小


4.查看逻辑卷信息 lvscan 与 lvdisplay
    命令:
        lvscan(找到当前设备的卷组) lvdisplay(查看响应参数)
    作用:
        查看逻辑卷信息
    使用:
        lvscan # 找到逻辑卷
        [root@template ~]# lvscan
        ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
        ACTIVE            '/dev/centos/root' [<17.00 GiB] inherit

        lvdisplay # 逻辑卷的详情
        [root@template ~]# lvdisplay 
        --- Logical volume ---
        LV Path                /dev/centos/swap
        LV Name                swap
        VG Name                centos
        LV UUID                VvS0Zh-wmxP-pAos-O3Bw-Px5O-ZpXr-RnxcuE
        LV Write Access        read/write
        LV Creation host, time localhost, 2024-10-19 15:14:49 -0400
        LV Status              available
        # open                 2
        LV Size                2.00 GiB
        Current LE             512
        Segments               1
        Allocation             inherit
        Read ahead sectors     auto
        - currently set to     8192
        Block device           253:1

        
5.删除逻辑卷 lvremove 
    命令:
        lvremove
    作用:
        删除逻辑卷
    使用:
        lvremove 删除逻辑卷路径 # 删除逻辑卷

6.操作逻辑卷 lvreduce  lvextend
    命令:
        lvreduce  lvextend
    作用:
        在现有的逻辑卷中进行操作 lvreduce(减少大小)  lvextend(增加大小)
    使用:
        lvextend -L +10G 逻辑卷的路径 # 增加逻辑卷的大小
        lvreduce -L -5G 逻辑卷的路径 # 减少逻辑卷的大小

image-20250204165530245


7-5.LVM清空操作

1.先删除逻辑卷 lvs
2.在清除卷组 vgs
3.清除物理卷 pvs

7-6.创建完整流程

1.创建物理卷
    pvcreate /dev/sdb
    pvcreate /dev/sdc
    pvcreate /dev/sdd

2.创建卷组
    vgcreate v1234 /dev/sdb /dev/sdc /dev/sdd

3.创建逻辑卷 # 依照v123卷组创建两个
    lvcreate -n l1 -L 2G v1234 
    lvcreate -n l2 -L 2G v1234

4.设置文件系统
    mkfs.xfs  /dev/v1234/l1
    mkfs.ext4  /dev/v1234/l2

5.在进行挂载目录即可(临时或者永久)

image-20250204233103670


7-6-1.逻辑卷扩容

逻辑卷扩容使用命令 lvextend
     lvextend -L +2G /dev/v1234/l2  # 增加2G 容量

image-20250204233440421


7-6-2.扩展文件系统

# 作用:
    使用 lvextend 命令扩容逻辑卷后,还需要根据逻辑卷上的文件系统类型,使用相应的命令来扩展文件系统,才能使新增的空间可用。
    
1.ext4文件系统,使用resize2fs命令进行调整
    resize2fs /dev/v1234/l2 # 扩容完毕后,如果是ext4文件系统,就进行当前命令执行

2.xfs文件系统,使用xfs_growfs命令进行调整
    xfs_growfs /dev/v1234/l2 #  扩容完毕后,如果是xfs文件系统,就进行当前命令执行

8.补充

8-1.命令

1.df命令
    作用:
        查看磁盘挂载情况,使用率
    使用:
        df  参数
    参数:
        -h 以可读 k kb mb gb方式显示磁盘使用的情况

2.lsblk 
    作用:
        列出机器上的块设备
    使用:
        lsblk 参数 块设备路径
    参数:
        -f 列表块设置同时列出块设备的文件系统
        -a 显示全部的块设备 # 默认不适用参数显示的就是全部


3.fdiks
    作用:
        给磁盘进行分区设置(添加,修改,删除),当前命令时交互命令
    使用:
        fdisk 参数 (磁盘)设备路径
    参数:
        -l 列出指定设备的分区表信息并退出交互,显示类型/uuid/其他的具体信息

    
 
3.blkid
    作用:
        命令:可以查看块设备(包括交换分区)的文件系统类型、LABEL、UUID、挂载目录等信息
    使用:
        blkid
    
    
    
4.xfs_info
    作用:
        查看硬盘的信息,查看磁盘分配了多少block与inode
    使用:
        xfs_info 磁盘路径
    
  
5.xfs_growfs
      作用:
          动态的添加分区的容量,不影响硬盘程序的运行,需要告诉文件系统也跟着调整(lvm逻辑卷时使用的,如果逻辑卷分配新的容量需要这个命令告知文件系统也要跟着增加)
          只针对xfs文件系统
      使用:
          xfs_growfs 逻辑卷的设备路径(逻辑卷增加那个使用那个)
          
          
          
6.resize2fs
     作用:
          动态的添加分区的容量,不影响硬盘程序的运行,需要告诉文件系统也跟着调整(lvm逻辑卷时使用的,如果逻辑卷分配新的容量需要这个命令告知文件系统也要跟着增加)
          只针ext4文件系统
    使用:
          resize2fs 逻辑卷的设备路径(逻辑卷增加那个使用那个)
          
          

7.partx命令
        作用:
            列出分区表信息,列出硬盘信息 # 磁盘必须分区
        参数:
            -v 详情模式
            --show 列出分区
            -a 内核加载分区
        
       
8.dumpe2fs
    作用:
        命令用于打印“ext2/ext3”文件系统的超级块和块组信息
    与xfs_info方法类似,只不过查看的文件系统不同

8-3.特殊设备

1./dev/null
    代表的空设备文件,所有往这里写的内容都会丢失,俗称“黑洞”,比较常见的用法就是将无用的日志写入这个文件中。
    ping yuchaoit.cn > /dev/null &
    
2./dev/zero
    0设备,可以无限的提供空字符(0x00 ascii代码nul),通常来生成一个特定大小的文件
    # 就是可以向文件中塞入特殊字符,塞到指定大小位置
    input file of output file
    比如:
        dd if=/dev/zero of=test.log bs=1M count=50
        输出到test.log 每个文件1M 输出50个 就是50M  就会生成50M的文件
    
    比如:
        dd if=/dev/zero of=/mnt/text.log bs=100M count=5
        通过dd命令 由/dev/zero输出 写入到/mnt/text.log 写入100M*5共500M,就会生成一个500M的文件
        

3./dev/random与/dev/urandom
    /dev/rendom与/dev/urandom是linux系统中提供的随机伪设备,这个两个设备任务,提供不为空的随机字符数据流,很多解密程序与安全应用程序(SSH keys,SSL keys)需要它们提供随机数据流
    例如:
        tr -dc 'A-Za-z0-9' </dev/urandom | head -c 16 # 生成随机密码
        

8-4.内存交互空间(swap)- 物理分区

1.进行分区 # 正常分区即可
    fdisk /dev/sdb

2.分区完成后,需要输入指令t,修改分区类型输入82
    分区类型代码为82明确地告诉操作系统,该分区是用于swap的。如果分区类型不是82,操作系统可能会将其误认为是普通的数据分区,而不是swap分区。

3.更新分区表,让系统重新读取一下分区表的工具。
    partprobe /dev/sdb

4.构建swap格式
    mkswap -f /dev/sdb

5.加载查看
    swapon /dev/sdb # 加载
    free -h  # 查看

6.通过命令查看都有哪些是swap
    swapon -s

7.使用swapoff命令可以关闭swap
    swapoff /dev/sdb

image-20250206110246649


8-4.内存交互空间(swap)- 文件构建

1.执行命令,生成一个文件。查看
    dd if=/dev/zero of=/tmp/swap bs=1M count=128

2.设置格式
    mkswap /tmp/swap

3.加载查看
    swapon /tmp/swap # 加载
    free -h  # 查看

4.关闭
    swapoff /tmp/swap

![/upload/image-20250206110811224.png)