系统集成06-管理文件系统及存储

发布时间 2023-05-06 16:46:55作者: Qurare

系统集成06-管理文件系统及存储

1 阵列技术

RAID(Redundant Array of Independenct Disks)独立冗余磁盘阵列,简称磁盘阵列

  • 对数据进行条带化,实现对数据成块存储,减少寻道时间,提高读取数据
  • 通过对多块磁盘并行访问(同时读取),提高读取速度
  • 经过奇偶校验或镜像,实现冗余备份

RAID实现方式: 硬件RAID、软件RAID

RAID校验方式: P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn为数据块,P为校验,xor为异或运算)

RAID状态

image-20230505230942268

常用RAID级别

image-20230505231004159

RAID 0

RAID0在存储数据的时候,分别写入两块磁盘中。读写时通过并行读取,RAID0的速度是最快的

但是RAID0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失

image-20230505231129688

RAID 1

两组以上的N个磁盘相互作镜像,只要一个磁盘正常即可维持运作,可靠性最高.

但无论用多少磁盘做RAID1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别.

如果用两个不同大小的磁盘建RAID1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费.

image-20230505231140505

RAID 5

RAID 5至少需要三块硬盘,RAID5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上

当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据

image-20230505231339091

RAID 6

与RAID5相比,RAID6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性
同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。依照设计理论,RAID6必须具备四个以上的磁盘才能生效

image-20230505232619136

RAID 10

RAID10是先映射再分区数据,再将所有硬盘分为两组,视为是RAID0的最低组合,然后将这两组各自视为RAID1运作

当RAID10有一个硬盘受损,其余硬盘会继续运作

image-20230505232628568

几种RAID的对比

RAID 冗余磁盘数 空间利用率 可靠性 典型应用环境
0 0 100% 最低 迅速读写,安全性要求不高,如图形工作站等
1 n/2 50% 最高 随机数据写入,安全性要求高,如服务器、数据库存储领域
3 1 (n-1)/n 较低 连续数据传输,安全性要求高,如视频编辑、大型数据库等
5 1 (n-1)/n 较低 随机数据传输,安全性要求高,如邮件服务器,文件服务器等
6 2 (n-2)/n 较高 数据量大,安全性要求高,如银行、金融等领域
10 n/2 50% 较高 随机数据传输,安全性要求高,并发能力要求高,如邮件服务器、www服务器等

2 文件系统概念

Linux系统一般有四个主要部分:内核、shell、文件系统、应用程序。前三者一起构成了基本的操作系统结构,它使得用户可以使用这个操作系统并在系统中完成特定的任务

2.1 文件系统概述

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统

image-20230505233124731

文件系统类型及使用场景

image-20230505233215674

在Linux中检查指定分区的文件系统:

fsck /dev/sdb1

2.2 openEuler文件系统

openEuler内核源于Linux,Linux内核支持十多种不同类型的文件系统,比如Btrfs、JFS、ReiserFS、ext、ext2、ext3、ext4、ISO9660、XFS、Minix、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等,表格中列举常用几种并做说明

常用文件系统 说明
ext 专门为Linux设计的文件系统类型,目前最新版本ext4
xfs 一种高性能的日志文件系统,最早于1993年,由SiliconGraphics为他们的IRIX操作系统而开发,之后被移植到Linux内核上,特别擅长处理大文件,同时提供平滑的数据传输
vfat vfat是Linux对DOS,Windows系统下的FAT(包括fat16和Fat32)文件系统的一个统称
nfs 网络文件系统,用于在UNIX系统间通过网络进行文件共享
iso 9600 该文件系统中光盘所使用的标准文件系统,Linux对该文件系统也有很好的支持,不仅能读取光盘和光盘ISO映像文件,而且还支持在Linux环境中刻录光盘

openEluer默认文件系统为ext4

2.3 系统交换分区

Linux系统交换空间(swap)就是磁盘上的一块区域,可以是一个分区,也可以是一个文件,简单的说就是当物理内存资源紧张时,将内存中不常访问的资源保存到预先设定的硬盘上的交换空间,来释放该资源占用的内存,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中

列出当前swap分区

swapon –s

swap分区设置

Linux有两种形式的交换空间:交换分区和交换文件。交换分区就是一个独立的硬盘,没有文件或内容,即swap分区;交换文件是文件系统中的一个特殊文件,独立于系统和数据文件之外

  • 创建swap分区:fdisk创建分区,mkswap创建swap分区,swapon启用swap分区
  • 创建swap文件:创建文件,mkswap格式化文件,swapon启用swap文件

推荐swap大小配置

image-20230505233727033

3 磁盘存储挂载与使用

3.1 磁盘基础

磁盘分类:

  • 机械硬盘(HDD)
  • 固态硬盘(SSD)

机械硬盘原理

用户的数据都是存储在磁盘之上的。当需要读写数据的时候,马达会转动机械臂,主轴马达会转动磁盘,从而进行数据的读写

image-20230505233935119

机械硬盘数据读取、写入工作原理

  1. 机械臂转动到对应的磁道
  2. 主轴马达转动磁盘到对应扇区,将扇区转动到磁头下方,进行数据的读取

image-20230505234034110

数据读取: 当我们需要对数据进行读取的时候,马达会转动机械臂到对应的位置,然后由磁头感应对应位置的极性,比如感应到N级代表1,感应到S极代表0

数据写入: 当我们需要对数据进行写入的时候,磁头就会产生磁性,改变对应位置的极性。由此就可以完成数据的写入或改写

机械硬盘结构

image-20230505234108791

可以看到在磁盘上会被同心圆(这些同心圆又称为磁道)切出很多个小区块,在每个小区块里面又有很多的磁粒,磁粒是具有一定的极性的。比如磁性为N代表1,磁性为S代表0。我们将这些小区块统称为扇区。当我们拿到硬盘的时候,为了能够提高硬盘的利用率,通常需要对磁盘进行分区。在早期的时候每个扇区的大小通常是512Bytes,随着技术的发展,目前已经有了4KBytes的扇区设计。磁盘的通常有两面,每一面都可以进行数据的存储,所以每一块磁盘上会有两个磁头。一块机械硬盘可能是由多块磁盘组成,所以我们将在所有的盘片上同一磁道的组合称为柱面。

  • 硬盘存储容量=磁头数*磁道数(柱面数)*每磁道扇区数*每扇区的字节数
  • 硬盘最小存储单位:扇区
  • 每个扇区大小512Bytes,即0.5kb。
  • 操作系统文件存取的最小单位是块block:8个连续扇区组成
  • 1个块=8*0.5kb=4kb。

磁盘存储挂载与使用

磁盘类型

image-20230505234305704

磁盘接口类型

  • IDE(IntegratedDevice Electronics:电子集成驱动器): 最初硬盘的通用标准,任何电子集成驱动器都属于IDE,甚至包括SCSI
  • SATA(Serial-ATA:串行ATA): SATA的出现将ATA和IDE区分开来,而IDE则属于Parallel-ATA(并行ATA), 所以,一般来说,IDE称为并口,SATA称为串口。
  • SCSI(SmallComputer System Interface: 小型计算机系统专用接口): SCSI硬盘就是采用这种接口的硬盘。SAS(SerialAttachedSCSI)就是串口的SCSI接口。一般服务器硬盘采用这两类接口,其性能比上述两种硬盘要高,稳定性更强,支持热插拔,但是价格高,容量小,噪音大。
  • FC(FibreChannel): 使光纤通道能够直接作为硬盘连接接口,为高吞度吐量性能密集型系统的设计者开辟了一条提高I/O性能水平的途径。

Linux中如何查看磁盘信息

fdisk -l	#用于查看系统所有磁盘的信息,包括已挂载和未挂载磁盘
df –h	#命令查看系统挂载、磁盘空间大小和利用率

3.2 磁盘分区

磁盘分区可以将硬盘驱动器划分为多个逻辑存储单元,这些单元称为分区。通过将磁盘划分为多个分区,系统管理员可以使用不同的分区执行不同功能

磁盘分区命名规则

在Linux中,没有windows的盘符这个概念,通过设备名来访问设备,设备名存放在/dev目录中

命名规则如下:

image-20230505234752548

注:Linux中,SSD、SAS、SATA类型的硬盘,都用sd来标识,IDE硬盘属于IDE接口类型的硬盘,用hd来标识

fdisk分区工具使用

fdisk是传统的Linux硬盘分区工具,也是Linux系统中最常用的一种硬盘分区工具之一,但不支持大于2TB的分区

fdisk [选项] [参数]
  • -b <分区大小>:指定每个分区的大小;
  • -l:列出指定的外围设备的分区表状况;
  • -s <分区编号>:将指定的分区大小输出到标准输出上,单位为区块;
  • -u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;
  • -v:显示版本信息

创建分区流程

主分区:

image-20230505234935574

扩展分区:

image-20230505234947562

扩展分区创建完成后不能直接使用,必须要创建逻辑分区

磁盘分区方案-GPT

随着硬盘驱动器容量的不断增长,老旧的MBR分区方案的2TB磁盘和分区大小限制已不再是理论上的限制,而是在生产环境中越来越经常遇到的实际问题,因此,GPT正在取代传统的MBR方案进行磁盘分区

GPT没有主分区和逻辑分区之分,每个硬盘最多可以有128个分区,GPT为逻辑块地址分配64位,因此最大支持18EB的分区大小

parted分区工具使用

parted是另一款在linux下常用的分区软件,可支持创建2T以上磁盘分区,相对于fdisk,它的使用更加方便(提供交互式与非交互式),同时提供了动态调整分区大小的功能

parted [options] [device [command[options...]...]]
  • -h:显示帮助信息。
  • -i:交互模式。
  • -s:脚本模式。
  • -v:显示parted的版本信息。
  • device:磁盘设备名称,如/dev/sda。
  • command:parted指令,如果没有设置指令,则parted将会进入交互模式

3.3 格式化与挂载

格式化

格式化是指对磁盘或磁盘中的分区进行初始化的一种操作,将分区格式化成不同的文件系统,这种操作通常会导致现有的磁盘或分区中所有的文件被清除

image-20230505235230787

mkfs命令是makefilesystem的缩写,用来在特定的分区建立Linux文件系统

mkfs [-V] [-tfstype] [fs-options] filesys [blocks]
  • device:预备检查的硬盘分区,例如:/dev/sda1
  • -V:详细显示模式
  • -t:给定档案系统的型式,Linux的预设值为ext2
  • -c:在制做档案系统前,检查该partition是否有坏轨
  • -lbad_blocks_file:将有坏轨的block资料加到bad_blocks_file里面
  • block:给定block的大小

挂载

格式化完成以后要想使用磁盘,必须先建立一个联系,这个联系就是一个目录,
建立联系的过程我们叫做挂载

image-20230505235354863

/etc/fstab文件的作用:

用来存放文件系统的静态信息的文件,统启动的时候,会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录,这样我们只需要将磁盘的挂载信息写入这个文件中就不需要每次开机启动之后手动进行挂载了

参数说明:

image-20230505235437062

4 逻辑卷管理

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

  • 物理单元(PE):Physical Extents--具有唯一编号的PE是能被LVM寻址的最小单元,PE的大小可以指定,默认为4MB。PE的大小一旦确定将不能改变,同一个卷组中的所有的物理卷的PE的大小是一致的;
  • 逻辑单元(LE):LogicalExtents--是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小,在同一个卷组中,LE的大小和PE是相同的,通常一一对应;
  • 物理卷(PV):Physical Volume--底层真正提供容量,存放数据的设备,它可以是整个硬盘、硬盘上的分区等;
  • 卷组(VG):Volume Group--建立在物理卷之上,它由一个或多个物理卷组成,即把物理卷整合起来提供容量分配,一个LVM系统中可以只有一个卷组,也可以包含多个卷组;
  • 逻辑卷(LV):Logical Volume--逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间,它是最终用户使用的逻辑设备,逻辑卷创建之后,其大小可以伸缩

逻辑卷(lv)是将几个磁盘分区或者块设备(pv,pv可以位于不同的磁盘分区里,pv大小可以不一)组织起来形成一个大的扩展分区(vg卷组,一个vg至少要包含一个pv),该扩展分区不能直接用,需要将其划分成逻辑卷(lv)才能使用,lv可以格式化成不同的文件系统,挂载后直接使用

image-20230506082956055

逻辑卷的优点

image-20230506083032397

管理逻辑卷

  1. pvcreate命令用于创建物理卷,可以使用物理磁盘或者磁盘分区创建:

    pvcreate [选项] 设备文件名
    
    • -f:强制创建物理卷,不需要用户确认
    • -u:指定设备的UUID
    • -y:所有的问题都回答yes

    注:使用分区创建时,磁盘分区后的id为83,需要将id改为8e,才能创建物理卷,可用fdisk修改id

    查看物理卷信息

    pvs
    
  2. vgcreate命令用于创建LVM卷组:

    vgcreate [选项] 卷组名物理卷列表
    
    • -l:卷组上允许创建的最大逻辑卷数。
    • -p:卷组中允许添加的最大物理卷数。
    • -s:卷组上的物理卷的PE大小

    查看卷组信息:

    vgdispaly vg_name
    
  3. lvcreate命令用于创建LVM的逻辑卷,逻辑卷是创建在卷组之上的:

    lvcreate [选项] 逻辑卷名称
    
    • -L:指定逻辑卷的大小,单位为“k/K、m/ M、g/G、t/T”字节。
    • -l:指定逻辑卷的大小(LE数)

动态调整逻辑卷

lvresize指令用于调整逻辑卷空间大小,可以增大空间和缩小空间,实际上包含了lvextend和lvreduce的功能,因此扩容及缩容步骤相同

lvresize [选项] 逻辑卷名称
  • -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节。
  • -l:指定逻辑卷的大小(LE数

扩容逻辑卷步骤:

  1. 扩容前先查看确认是否有足够vg空间vgs
  2. 使用命令扩容: lvextend -L +SIZE lv_device
  3. 调整文件系统大小: resize2fs device lv_device

缩减逻辑卷步骤:

  1. 先确定缩减后的目标大小,并确保对应的目标逻辑卷大小中有足够的空间可容纳原有所有数据
  2. 卸载文件系统: umount, 并执行强制检测: e2fsck -f
  3. 缩减文件系统: resize2fs lv_device
  4. 缩减逻辑卷: lvreduce
  5. 重新挂载使用