一、磁盘管理

(一)磁盘简介

1.概念

  硬盘是一种大容量、永久性的外部存储设备,由一片或多片带有磁性的铝合金制盘片构成,核心组成包括盘片、马达驱动、缓存、控制电路和接口。

2.逻辑结构

磁道:由内到外的同心圆

扇区:半径组成的扇形磁道存储区

柱面:多个盘片的统一磁道

(二)虚拟机添加新硬盘

1.物理设备的命名规则

硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0 或 /dev/ht0 (IDE设备)

固态硬盘:nvmen 磁盘号 [p1-10]

2.添加新硬盘过程

关机

点击“编辑虚拟机设置”

点击“添加”

选择“硬盘”后下一步

选择磁盘类型:SATA(A)

创建新虚拟磁盘

容量为20GB,单个文件

默认命名,点击完成

(三)硬盘分区概述

1.MBR 分区

(1)概念

  主引导记录(MBR)是位于硬盘0磁道0柱面1扇区的关键数据块,其512字节的主引导扇区由三部分组成:446字节的引导程序(用于检查分区表并引导激活分区的操作系统)、64字节的硬盘分区表(DPT)以及2字节的结束标志“55AA”。MBR由分区程序(如Fdisk)生成,不依赖特定操作系统,且引导程序可修改,因此能够实现多系统共存。

(2)类型

主分区(primary partition):

  一块硬盘最多4个主分区,主分区不可以再进行二次分区

  主分区可以直接建立文件系统,存放数据

  可以用来引导、启动操作系统

扩展分区(extended partition)

  一块硬盘最多一个扩展分区,加主分区最多4个

  不能创建文件系统

  可以划分逻辑分区

逻辑分区(logical partition)

  可以创建文件系统,存放数据

  逻辑分区的数量没有限制。

支持的分区数量:4个主分区或者3个主分区1个扩展分区

MBR 最多只能有4个主分区:因为分区表占据64个字节,其中每个分区的信息占用16个字节,分区表里面可以记录四个分区信息描述。

2.GPT 分区

(1)产生原因

MBR 分区方案存在三个主要局限:一是分区表最高仅支持2.2TB的磁盘容量,无法识别大容量硬盘;二是缺乏备份机制,分区表一旦损坏或丢失,整个磁盘的数据将无法访问;三是主引导记录中仅有的446字节引导程序空间过小,无法存储复杂的启动管理功能。  

(2)概念

  GPT(全局唯一标识分区表)是一种比 MBR 更先进、灵活的磁盘分区模式。它采用逻辑区块地址(LBA)来管理分区信息,默认使用512B大小的 LBA 区块,共占用68个 LBA 区块——前34个用于记录分区信息,后34个作为自动备份,大大增强了数据安全性。GPT 不再区分主分区和扩展分区,默认最多支持128个分区,且突破了 MBR 的2.2TB容量限制,最大支持18EB 的磁盘容量。由于传统 BIOS 无法识别 GPT ,因此需要 UEFI(统一可扩展固件接口)来取代传统的 BIOS,UEFI 使用C语言编写,支持更多平台,也称为 UEFI BIOS。

3.lsblk 分区

(1)作用

  是 Linux 系统中用于列出所有可用的块设备信息的命令。它以树状结构显示磁盘、分区及其他块设备的详细信息,非常直观。可以查看系统中有哪些磁盘、磁盘分了哪些区、分区挂载在哪里。

(2)格式

  lsblk 参数 设备名

(3)参数

-d :仅列出硬盘本身信息,不显示分区信息

-f :列出磁盘的内的文件系统名称

-i : 使用ASCII码格式输出信息

-t :显示磁盘的详细信息

-p :显示设备完整名称

(4)示例

内容分析:

NAME :设备名称,默认省略前导/dev 目录名

MAJ:MIN :主要:次要 设备代码

RM :是否可以卸载

SIZE : 容量

RO :是否为 只读 

TYPE : 设备类别(磁盘、分区、光盘等)

MOUNTPOINT :挂载点

(四)硬盘分区

1.fdisk 管理分区

(1)作用

  fdisk 是 Linux 系统中传统的磁盘分区管理工具,默认将磁盘划分为 MBR(主引导记录)格式的分区。它以交互式菜单方式操作,通过输入设备名(如 fdisk /dev/sdb)进入管理界面后,可以使用功能键对磁盘进行分区操作。

指令 作用
a 调整磁盘的启动分区
d 删除磁盘分区
l 显示所有支持的分区类型
m 查看所有指令的帮助信息
q 不保存更改,退出 fdisk 命令
g 新建一个空的 GPT 分区表
p 显示当前磁盘的分区信息
t 更改分区类型
u 切换所显示的分区大小单位
n 创建新分区

w

把修改写入磁盘分区表,然后退出 fdisk 命令
o 新建一个空的 DOS 分区表
(2)示例

对 /dev/sda 硬盘进行分区,方式:P+P+P+E(l+l+l),容量自定

会显示以下内容:

(3)注意

  若无法查看,则表示分区信息还未写入内核(常见情况),输入==partprobe==命令进行手动将分区信息同步到内核,再不行就重启

2.gdisk管理分区

(1)作用

  gdisk(GPT fdisk)是 Linux 系统中用于管理 GPT(GUID 分区表) 分区的交互式命令行工具。可以把它理解为 GPT 版本的 fdisk。即在大于 2.2TB 的磁盘上创建、删除、管理 GPT 分区。

(2)示例

对 /dev/sdc 进行gdisk分区,3个分区,容量自定

(3)注意

  在实际工作中,对硬盘进行分区时应保留一定的自由空间,以备将来分区空间不足时能够临时扩容。使用 gdisk 命令操作的是 GPT 分区格式,而如果对 MBR 分区格式的硬盘尝试添加分区,将导致所有数据全部丢失。切记:一块硬盘上不能混用 fdisk 和 gdisk,否则会破坏分区表,造成数据丢失。

(五)格式化

1.概念

(1)格式化目的

分区(裁剪):将一块原始硬盘(大白纸)划分成不同的区域,以便分类管理和使用。

格式化(画格):在划分好的区域上建立文件系统,如同在纸上画好格子,为操作系统如何组织和管理文件制定规则。

写入数据(书写):最后才能在格式化好的分区中实际存储文件和数据。

核心概念: 格式化即建立文件系统,它是操作系统在存储设备上组织和定位文件的方法与数据结构。

(2)文件系统组成

组成:super block(超级块)、inode (索引块)、block(数据块)

super block:又称为“硬盘地图”,记录文件系统的整体信息,如:inode/block 块的总量、使用量、空闲块量、文件系统格式等相关信息

inode:记录文件的属性,一个文件占用一个 inode 块,并且记录次文件的数据所在的 block 块的号码,默认为128B大小,存储:文件访问权限、文件所有者与所属组、文件大小、创建时间或修改内容时间、最有一次访问时间、特殊权限、真实数据地址

block块:记录实际文件的内容,在 EXT2 文件系统中分为 1KB、2KB、4KB 容量,文件太大时,会占用多个数据块

(3)查看文件系统格式

方法:输入 mkfs 在键入 tab (点击2次)进行命令补全,可显示支持的文件系统格式

2.格式化命令

  mkfs.xfs -参数  硬盘分区名

  mkfs.ext4 -参数 硬盘分区名

3.参数

-f:强制格式化,已存在文件系统时需要使用

c:建立文件系统前先检查坏块。

-V:输出建立文件系统的详细信息

4.示例

删除之前的虚拟硬盘文件,添加新硬盘,分区后格式化:

格式化 /dev/sda2 ,并使用 inte 的 cpu 多线程技术进行多数据流读写系统:

制作大文件 /filedev,容量2G,格式化为 xfs 文件系统:

5.blkid 命令

(1)作用

  blkid 是 Linux 系统中用于查看块设备的属性信息的命令,主要显示设备的 UUID(通用唯一识别码)、文件系统类型 和 卷标。

(2)UUID

  全局单一标识符(Universally Unique Identifier),Linux 系统会给所有设备分配一个唯一的 UUID 值,以方便挂载

(3)格式

  blkid 设备名

(4)示例

(六)挂载

1.概念

mount point:挂载点,是一个目录,该目录是进入磁盘分区(文件系统)的入口

挂载:将一个分区或者设备挂载至挂载点目录,建立连接,通过挂载点目录进入分区空间

2.mount 命令

(1)格式

  mount  [-t  文件系统类型]  设备名   挂载点目录

(2)参数

  -a:依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来

  -t:指定文件系统类型

  -o 特殊设备选项:挂载设备时使用逗号分割输入额外参数

(3)示例

新建挂载目录,挂载 /dev/sda1:

使用 UUID 值挂载 /dev/sda:

挂载光盘:

查看挂载信息:

(4)注意

唯一性:一个文件系统只能被挂载到一个挂载点(目录),不能重复挂载到不同位置。

不重叠:同一个目录不能作为多个文件系统的挂载点。

目录清空:挂载点目录应为空目录,否则原目录下的数据将被隐藏(直至文件系统卸载后才能重新访问)。

3.umount 命令

(1)作用

  将之前挂载(mount)到某个目录的设备或分区卸载,使其脱离系统访问。

(2)格式

  umount 参数 设备名称[挂载点]

(3)参数

  -f :强制卸载

(4)示例

(5)注意

  若正使用文件系统,则应使用cd命令离开该目录后再卸载:

4.开机挂载

(1)作用

  由于 mount 命令是手动挂载,系统重启后挂载关系就会失效,因此需要修改 /etc/fstab 配置文件,在其中写入挂载信息(如设备、挂载点、文件系统类型等),以实现开机自动挂载。

(2)配置文件分析

共六列,分别为:

  设备名称或其 UUID 值

  挂载点目录

  文件系统名称

  文件系统参数:default

  是否备份,0

fsck:开机是否用 fsck 进行扇区检查,但 xfs 文件系统不支持则为 0

(3)示例

将 /dev/sda1 挂载到 /msda1 中,并设置开机挂载,重启后检查:

(4)注意

  首先,根目录/是必须挂载的,且必须优先于其他所有挂载点;其次,其他挂载点必须为已存在的目录,且需遵循FHS(文件系统层次结构标准);最后,为确保系统稳定性,同一个挂载点不能重复挂载多个文件系统,同一个分区也不能同时挂载到多个挂载点。

5.特殊挂载

(1)挂载大文件

  当只有一个分区,剩余空间还很大,自由空间很小不能进行新的分区,则可以在当前分区制作一个大文件,再进行挂载,相当于一个新的分区来使用。

在根目录下新建1GB大文件,挂载并开机挂载使用:

(2)增加swap分区

  类似于 Windows 系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为 swap 毕竟是用硬盘资源虚拟的,所以速度上比真实物理内存要慢。

查看:

添加过程:新建分区 -> 格式化该分区 -> 启用新的 swap -> 查看系统信息 -> 挂载

/dev/sda 中划分5G空间为 swap 分区,并开机挂载使用:

使用大文件建立 swap:

(3)注意

 Swap(交换分区)在服务器中有时会被关闭(如数据库服务器),但通常当内存压力较大时会触发使用。其大小设置原则一般为:物理内存小于2GB时,swap设为内存的2倍;超过2GB的部分,swap 大小与物理内存相等。此外,可以使用 swapoff 命令停用部分或全部 swap 空间。

(七)查看磁盘空间使用量

1.df 命令

(1)作用

  df`(disk free)命令用于列出文件系统的磁盘空间占用情况,它通过文件系统层面快速获取分区的总容量、已用空间和可用空间等信息。与 du 不同,df 能够统计到已被删除但仍在被进程占用的文件所占用的空间,因为这些文件在进程释放前并不会真正从文件系统中消失。因此,当所有程序都不再使用时,操作系统才会根据规则释放这些文件,而 df 在计算时会将这些空间一并计入,使其统计结果比 du 更加精确,更能反映分区真实的磁盘占用情况。

(2)格式

  df -参数 目录或文件名

(3)参数

   -a:列出所有的文件系统,包括系统特有的 /proc 等文件系统

-k:以KB的容量显示各文件系统

-m:以MB的容量显示各文件系统

-h:以人们较易阅读的 GB,MB,KB 等格式自行显示

-H:以 M=1000K 替代 M=1024K 的进位方式

-T:连同该分区的文件系统名称(例如ext3)也列出

-i:不用硬盘容量,而以 inode 的数量来显示

由于 df 主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在 Super block 内的信息,所以这个命令显示结果的速度非常快速。

示例:

2.du 命令

(1)作用

  du(disk usage)命令用于显示磁盘空间使用量,统计指定目录或文件所占用的磁盘空间大小,默认单位为 KB。它通过搜索文件系统,计算每个文件的大小并累加得出结果,但只能统计当前存在且未被删除的文件。当文件被系统真正删除后,du 与 df 的统计结果才会一致;而在文件已被删除但仍有进程占用时,du 不会统计这部分空间,而 df 会将其计入,因此两者结果可能出现差异。

(2)格式

  du -参数 文件或目录名

(3)参数

-a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;

-h : 以人们较易读的容量格式(G/M)显示;

-s : 列出总量,而不列出每个个别的目录占用了容量;

-S : 不包括子目录下的总计,与-s有点差别;

-k : 以KB列出容量显示;

-m : 以MB列出容量显示。

(八)RAID

1.概念

  随着CPU性能每年提升30%-50%而硬盘仅提升7%,硬盘在服务器中需要持续、频繁、大量的I/O操作,故障机率较大,因此需通过技术改造提升读写性能和可靠性。1988年,加利福尼亚大学伯克利分校首次提出并定义了RAID技术概念。RAID(独立磁盘冗余阵列)将多个硬盘设备组合成一个大容量、安全性更高的磁盘阵列,将数据切割成多个片段后分别存储到不同物理硬盘上,利用分散读写技术提升性能,同时通过备份多个副本到不同硬盘中实现备份冗余功能。

2.常见 RAID 组建方案

(1)RAID0

原理:把至少2块硬盘通过硬件或软件方式串联,组成一个大的卷组,并将数据依次写入到各个硬盘

优点:数据同步传输,读取/写入分开,性能大大提升

缺点:若任意一块硬盘故障会导致整个系统的数据损坏,无备份冗余能力错误修复能力

总结:使用率100%,至少2块磁盘才能使用,优点是快,提升磁盘的读写速度,缺点是不安全

(2)RAID1

产生原因:若生产环境对硬盘的读写速度没有较大要求,但希望增加数据安全性时可使用RAID

原理:把至少2块硬盘绑定起来,写入数据时将数据同时也写入另一或多块硬盘中,

本质:多个硬盘作为镜像备份

优点:数据备份冗余安全性大大提升

缺点:硬盘利用率下降

总结:是镜像,使用两块磁盘,一式两份的方式,支持容错,冗余,数据安全不丢失,缺点是速度不快,使用率50%,成本较大。

(3)RAID5

产生原因:兼顾“读写速度”、“数据安全”、“成本”的一种折中方式

原理:需至少三块硬盘,将数据分块存储到不同硬盘中,硬盘中必须存储其它一个硬盘的parity(奇偶校验信息)

优点:兼顾性能,通过“奇偶校验”替代“镜像备份”

缺点:硬盘数据安全性较低

总结:使用率(n-1)/n*容量,磁盘坏了会立即补上,数据会恢复

(4)RAID10(主流)

本质:RAID1+RAID0 的组合

原理:至少需要4块硬盘,先制作两两的 RAID1 阵列,以保证安全性,在两两制作 RAID0 ,以提高读写速度

优点:兼具速度和安全性

缺点:成本较高

3.mdadm 命令

(1)作用

  管理系统中的 RAID 磁盘阵列

(2)格式

  mdadm  [模式]  <RAID设备名>  -参数  [成员设备名称]

(3)参数

-a :检测设备名称

-n :指定硬盘数量

-l :指定RAID级别   

-C :创建RAID

-v :显示过程     

-f :模拟设备损坏

-r :移除设备     

-Q : 查看摘要

-D :查看详细信息   

-S :停止RAID磁盘阵列

(4)示例

关机后添加4块硬盘,创建 RAID10:

修复损坏的 RAID:

(5)取消 RAID

实际生产环境中,取消 RAID10 之前必须备份出其数据,否则已存在数据无法使用:

4.RAID 备份盘技术

(1)产生原因

  在 RAID10 中若 RAID1 中的某个硬盘损坏,在修复完毕前恰巧另一块 RAID1 的硬盘也损坏,则数据就彻底丢失。

(2)原理

  在 RAID 中添加一个大容量的备份盘来预防此类事故,某块硬盘故障,备份盘同步恢复,无须人工干预。

  分析 RAID10 需要4块硬盘,备份盘需要1块硬盘,共5块硬盘。

(3)创建RAID10+备份盘阵列系统

(九)管理逻辑卷

1.工作原理

(1)产生原因

  传统的硬盘分区或 RAID 部署方式在修改分区大小时非常困难,当用户需求变化时无法灵活调整。而 LVM(逻辑卷管理器)则允许用户对硬盘资源进行动态调整,实现了分区大小的弹性管理,极大地提升了存储空间的灵活性。

(2)逻辑卷介绍

  LVM(逻辑卷管理)是一种将若干个磁盘或磁盘分区组合成一个整块的卷组(即存储池)的技术。它通过屏蔽底层磁盘分区的差异,允许管理员在卷组上任意创建逻辑卷,并在其上建立文件系统。借助 LVM,管理员可以方便地动态调整存储卷组的大小,并能按照组的方式对磁盘存储进行命名、管理和分配,从而大幅提升存储资源的灵活性和可管理性。

假设有三块磁盘/dev/sdb、/dev/sdc和/dev/sdd用来划分逻辑卷,LVM模型如图所示:

(3)LVM 基本概念

PE(physical extent)物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小默认为4MB。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致

物理卷(physical volume):简称 PV,物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是 LVM 的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与 LVM 相关的管理参数

卷组(Volume Group):简称 VG,可以看成单独的逻辑磁盘,建立在 PV 之上,一个卷组中至少要包括一个 PV,在卷组建立之后可以动态的添加 PV 到卷组中。卷组的名称可以自定义

逻辑卷(logical volume):简称 LV,相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,可以属于同一个卷组,也可以属于不同的多个卷组

2.部署逻辑卷

(1)常用的部署命令
功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce
(2)示例

在虚拟机中添加3块新硬盘,2块硬盘创建物理卷及卷组,划分出150MB空间的逻辑卷并格式化挂载使用:

基于上例,VG1 卷组划分出200MB空间的逻辑卷并格式化挂载使用:

3.调整逻辑卷大小

(1)扩展卷组

将 /dev/sdc 扩容到VG1卷组中:

(2)逻辑卷的扩大与缩小

xfs 文件系统类型的 lvm 的扩容:

对 lv2 逻辑卷缩容到200MB:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐