目录

前言

一、磁盘基础知识

1.1 磁盘容量计算

1.2磁盘分区

1.3主启动记录(MBR) 磁盘分区

1.4 磁盘定位方式

1.5 Linux 文件系统类型

二、命令

2.1 fdisk -l 查看硬盘的整体情况和分区情况

2.2 .交互模式中的常用指令

三、建立磁盘分区

3.1 先在虚拟机中添加一个磁盘

3.2 单磁盘分区

3.3 多磁盘分区

3.4 lsblk 以树形查看磁盘分区

3.5 创建系统文件(格式化)

3.6 挂载

3.7 mount命令

3.8 mkswap命令

四、LVM-磁盘配额整理

4.1 LVM的概念

4.2 LVM 的管理命令

4.3 设置磁盘配额

五、RAID分级

什么是RAID

RAID的特点

创建软RAID磁盘阵列步骤:

六、小结

1. 磁盘基础  

2. 文件系统性格

3. 分区与格式化  

4. LVM 弹性层  

5. 磁盘配额  

6. RAID 阵列


前言

作为一名 Linux 系统管理员,磁盘管理是日常工作中绕不开的一环。无论是安装新硬盘、扩容系统,还是排查磁盘问题,都需要对磁盘分区、文件系统、挂载等操作了如指掌。本文将以 CentOS 7 为例,从零开始带你一步步掌握 Linux 磁盘管理的核心技能。

一、磁盘基础知识

1.1 磁盘容量计算

传统机械硬盘的存储容量计算公式如下:

硬盘存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

  • 磁头数:最多为 8 个二进制位,即 256 个磁头。

  • 每道扇区数:最多为 6 个二进制位,即 64 个扇区。

  • 每扇区字节数:通常为 512 字节。

举例:

1 柱面 = 512 字节/扇区 × 63 扇区/磁道 × 255 磁道 = 7.84 MB

1.2磁盘分区

Linux中将硬盘、分区等设备均表示为文件
/dev/ sdb5
sd表示SCSI设备    
hd表示IDE设备
硬盘的顺序号,以字母a、b、....表示
分区的顺序号,以数字1、2、...示。

1.3主启动记录(MBR) 磁盘分区

MBR是主引导记录,位于硬盘第- -个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表。MBR总共512字节, 前446字节是主引
导记录,分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节
主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩"展分区里面分多
个逻辑分区)。

1.4 磁盘定位方式

磁盘通过 柱面(Cylinder)/磁头(Head)/扇区(Sector) 三个参数即可唯一定位磁盘上的任意区域,简称 CHS 定位法。

1.5 Linux 文件系统类型

文件系统特点与用途
XFS高性能日志文件系统,擅长处理大文件,支持海量存储(PB级),宕机后可快速恢复。CentOS 7 默认文件系统。
EXT4第四代扩展文件系统,Linux 传统文件系统,稳定可靠,支持日志功能,CentOS 6 默认文件系统。
SWAP交换文件系统,用于虚拟内存,缓解物理内存不足。建议大小为物理内存的 1.5~2 倍。
NTFSWindows 专有文件系统,Linux 默认只读,可通过 ntfs-3g 实现读写支持。
FAT32兼容性好,U 盘常用,但不支持单文件大于 4GB。

二、命令

2.1 fdisk -l 查看硬盘的整体情况和分区情况
字段名含义说明常见取值示例
Device分区的设备文件名称/dev/sda1、/dev/sdb5
Boot是否为引导分区。带 * 标识即表示该分区为引导分区*(引导分区)
Start分区在硬盘中的起始位置(柱面数或扇区号)2048、256
End分区在硬盘中的结束位置(柱面数或扇区号)209715199、102400
Blocks分区大小,以 1024 字节 Block 为单位104857600(约 100 GB)
Id分区对应的系统 ID 号(十六进制)83(Linux XFS/EXT4)
 
System分区类型的文字描述Linux
 
2.2 .交互模式中的常用指令
指令全称/作用功能说明
aactive切换分区的 可引导标记(bootable flag)
bbsd编辑 BSD 磁盘标签(BSD disklabel)
ccompatible打开/关闭 DOS 兼容标志(dos compatibility flag)
ddelete删除一个分区
llist列出所有 已知分区类型(如 82=Linux swap,83=Linux)
mmenu显示 帮助菜单(当前表格)
nnew新建一个分区
ooverwrite创建新的 空 DOS 分区表(清空现有分区)
pprint显示当前分区表
qquit不保存修改,直接退出 fdisk
ssun创建新的 空 Sun 磁盘标签(Sun disklabel)
ttype更改分区系统 ID(即分区类型)
uunits切换 显示单位(柱面/扇区)
vverify验证分区表的正确性
wwrite保存修改并退出 fdisk
xextra进入 专家级额外功能(初学者慎用)

三、建立磁盘分区

3.1 先在虚拟机中添加一个磁盘

3.2 单磁盘分区

[root@benet21 ~]# fdisk /dev/sdb
Command (m for help): n	//开始创建第 1 个分区
Partition type:
p	primary (0 primary, 0 extended, 4 free) 
e	extended
Select (default p): p		//选择创建的为主分区
Partition number (1-4, default 1): 1	//设置第 键接受默认一个主分区的编号为 
1 First sector (2048-209715199, default 2048):	//直接按Enter值
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +20G
Partition 1 of type Linux and of size 20 GiB is se     //创建分区大小
Command (m for help):w  //保存退出

3.3 多磁盘分区

[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xa0405c74 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+7G
分区 2 已设置为 Linux 类型,大小设为 7 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (25167872-41943039,默认为 25167872):
将使用默认值 25167872
Last 扇区, +扇区 or +size{K,M,G} (25167872-41943039,默认为 41943039):+5G
分区 3 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
已选择分区 4
起始 扇区 (35653632-41943039,默认为 35653632):
将使用默认值 35653632
Last 扇区, +扇区 or +size{K,M,G} (35653632-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 3 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

3.4 lsblk 以树形查看磁盘分区

[root@benet21 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
└─sda2   8:2    0 99.5G  0 part /
sdb      8:16   0   20G  0 disk 
└─sdb1   8:17   0   20G  0 part /mnt
sr0     11:0    1 1024M  0 rom 

常用参数:

-a    显示所有设备
-b    以bytes方式显示设备大小
-d    不显示 slaves 或 holders
-D    print discard capabilities
-e    排除设备
-f    显示文件系统信息
-h    显示帮助信息
-i    use ascii characters only
-m    显示权限信息
-l    使用列表格式显示
-n    不显示标题
-o    输出列
-P    使用key=”value”格式显示
-r    使用原始格式显示
-t    显示拓扑结构信息

3.5 创建系统文件(格式化)

[root@localhost ~]# mkfs.xfs /dev/sdc1
mkfs.xfs: /dev/sdc1 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@localhost ~]#  mkdir yjs0805

3.6 挂载

[root@localhost ~]# mkdir /opt/yjs0805
[root@localhost ~]# mount /dev/sdc1 /opt/yjs0805/
[root@localhost ~]# blkid
/dev/sda1: UUID="4abf12f3-b567-477f-84b4-a7b15725cf51" TYPE="xfs" 
/dev/sda2: UUID="3NNged-lJp8-EIxA-jZs2-BQh6-26WO-RGoK0x" TYPE="LVM2_member" 
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="b3359323-a9ce-4a44-9496-020ff66b9ef0" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="9c058e93-c291-4cd0-ab12-ab06df3c5f6c" TYPE="swap" 
/dev/sdc1: UUID="33c8a871-ccc3-49cb-8404-69f932a006c2" TYPE="xfs" 

3.7 mount命令


挂载文件系统、ISO镜像到指定文件夹
mount  [ -t 类型 ]  存储设备  挂载点目录
mount  -o loop  ISO镜像文件  挂载点目录

3.8 mkswap命令

创建交换文件系统

mkswap /dev/sdb5   格式化分区
swapon /dev/sdb5      开启 
swapoff /dev/sdb5     关闭
swapon    -s  检测

四、LVM-磁盘配额整理

4.1 LVM的概念

PV(Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(Physical Extent,PE),从而构成物理卷(例:/dev/sdb1 /dev/sdc1)。

PE的值可以是4、8、16、32、64。PE越小硬盘利于率高,但是每个VG块的最大数65534,所以PE大小决定了VG卷组大小

VG(Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷

LV(Logical Volume,逻辑卷

逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。使用mkfs等工具在逻辑卷上创建文件系统

4.2 LVM 的管理命令

功能说明物理卷(PV)管理命令卷组(VG)管理命令逻辑卷(LV)管理命令
扫描(Scan)pvscanvgscanlvscan
创建(Create)pvcreatevgcreatelvcreate
显示(Display)pvdisplayvgdisplaylvdisplay
移除(Remove)pvremovevgremovelvremove
扩展(Extend)—vgextendlvextend
缩减(Reduce)—vgreducelvreduce

需求:需要创建两个60G物理卷  并且设置逻辑卷20G挂载到 ky19

LVM操作主要命令步骤
1.关闭主机,添加两块新硬盘,重启主机
或echo "- - - " > /sys/class/scsi_host/host0/scan 扫描

2.先使用fdisk工具讲磁盘设备/dev/sdb、/dev/sdc划分主分区sdb1、sdc1,并且把分区类型的ID标记号改为“8e”
fdisk /dev/sdb
fdisk /dev/sdc

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux LVM”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

3.创建物理卷
pvcreate /dev/sdb1 /dev/sdc1 

4.创建卷组,卷组名为vgname1
vgcreate vgname1 /dev/sdb1 /dev/sdc1

5.创建逻辑卷,逻辑卷名为lvname1,容量为20GB,生产的文件路劲为/dev/vgname1/lvname1
lvcreate -L 20G -n lvname1 vgname1

6.对逻辑卷进行格式化,创建XFS文件系统,并且挂载到/opt目录下
mkfs -t xfs /dev/vgname1/lvname1
mount /dev/vgname1/lvname1 /opt目录下
df -Th

7. 再扩容

vgextend vgname1 /dev/sdc2
lvextend -L +10G /dev/vgname1/lvname1
xfs_growfs /dev/vgname1/lvname1          //刷新xfs文件系统容量
resize2fs   /dev/vgname1/lvname1         //刷新ext4类型文件系统容量

创建 LVM 流程: 
pvcreate 创建 pv -> vgcreate 创建卷组 -> lvcreate 创建逻辑卷 -> mkfs.xfs lv 格式化-> mount 挂载

删除 LVM 流程:
umount 卸载 -> lvremove lv 移出卷组中所有逻辑卷-> vgremove vg 移出卷组-> pvremove 移出 pv

4.3 设置磁盘配额

当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续。在Centos系统中,不同的文件系统使用不同磁盘配额配置管理工具。

CentOS7中设置磁盘配额步骤
1、检查是否已安装xfsprogs和xfs_ quota软件包

rpm -q xfsprogs quota
yum install -y xfsprogs quota

2、以支持配额功能的方式挂载文件系统

umount / dev/ vgname1 / lvnamel
mount -o usrquota, grpquota /dev/vgname1/lvname1 /opt
#添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持

或者

vim /etc/ fstab
/dev/vgname1/lvname1     /opt   xfs   defaults, usrquota, grpquota   00
umount /dev/vgname1/ lvname1
mount -a  #-a选项,将/etc/ fstab的所有内容重新加载

3、编辑用户和组账号的配额设置

useradd lisi
passwd lisi
xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 lisi' /opt/

ext4
quota
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c: 表示直接调用管理命令。
-u: 指定用户账号对象
-g: 指定组账号对象
bsoft: 设置磁盘容量的软限制数值(默认单位为KB)。
bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
isoft:设置磁盘文件数的软限制数值。
ihard:设置磁盘文件数的硬限制数值。

#仅限制磁盘容量
xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M lisi' /opt/
#仅限制文件数
xfs quota -x -c 'limit -u isoft=4 ihard=5 lisi' /opt/
#查看zhangsan磁盘:容量限制
xfs_ quota -C 'quota -uv lisi' /opt/
#查看zhangsan文件数限制
xfs quota -c 'quota -i -uv lisi' /opt/

五、RAID分级

什么是RAID

RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)
就是把多块硬盘按特定方式组合起来,当成一块逻辑盘使用,从而提高速度、增加容量或提供容错能力。

RAID级别最少硬盘数量磁盘利用率校验机制容错能力(允许同时损坏的盘数)写性能特点
RAID 0N ≥ 2100 %无0 盘线性提升,约为单盘的 N 倍
RAID 12(偶数)50 %无1 盘需同时写入两份数据,写性能≈单盘
RAID 5≥ 3(N-1)/N有(单校验)1 盘需计算并写入校验,写性能中等
RAID 6≥ 4(N-2)/N有(双校验)2 盘需双重校验计算,写性能略低于 RAID 5
RAID 10≥ 4(偶数)50 %无每个镜像组各损 1 盘,最多可损 N/2 盘多盘并行写入,写性能≈ N/2 盘并发

RAID的特点

RAID 级别最少磁盘数数据分布方式冗余/容错性能特点典型场景
RAID 02 块条带分布无读写最快;无容错临时缓存、非关键数据
RAID 12 块镜像复制有(坏 1 盘仍可用)读快、写一般操作系统盘、小容量关键数据
RAID 53 块条带 + 奇偶校验有(坏 1 盘仍可用)读高、写中等;空间利用率较好多读少写、通用服务器
RAID 104 块(偶数)先 RAID 0 条带,再 RAID 1 镜像有(每组坏 1 盘仍可用)读写皆优;成本高数据库、高并发业务
RAID 1+04 块(偶数)先做镜像(RAID 1),再做条带(RAID 0)有(同一镜像对中可各坏 1 盘)读写性能与 RAID 10 相近;容错与成本亦相近与 RAID 10 场景相同,二者常混称

创建软RAID磁盘阵列步骤:

1、检查是否已安装mdadm软件包

rpm -q mdadm
yum install -y mdadm

2、使用fdisk.工具将新磁盘设备/dev/sdb、 /dev/sdc、 /dev/sdd、 /dev/sde划分出主分区sdb1、sdc1、 sdd1、 sde1, 并且
把分区类型的ID标记号改为"fd”

fdisk /dev/ sdb
fdisk /dev/ sdc 

3、创建RAID设备
#创建RAID5

mdadm -C -V /dev/md0 [-a yes] -15 -n3 /dev/sd[bcd]1 -x1 /dev/sde1

-C:表示新建;
-v:显示创建过程中的详细信息。
/dev/md0: 创建RAID5的名称。
-ayes:--auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
-1: 指定RAID 的级别,15表示创建RAID5。.
-n:指定使用几块硬盘创建RAID, n3表示使用3块硬盘创建RAID。
/dev/sd [bcd]1: 指定使用这3块磁盘分区去创建RAID。
-x:指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用
/dev/sde1: 指定用作于备用的磁盘
#创建RAID10 ( 先做镜象,再做条带)


#创建RAID10 (先做镜象,再做条带)

mdadm -Cv /dev/md0 -11 -n2 /dev/sd[bc]1
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[de]1
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0/dev/md1

#查看RAID磁盘详细信息

cat /proc/mdstat          #还能查看创建RAID的进度  或者
mdadm -D /dev/md0

#用watch命令来每隔-一段时间刷新/proc/mdstat的输 出

watch -n 10 'cat /proc/mdstat'

#检查磁盘是否EL做RAID.

mdadm -E /dev/sd[b-e] 1 

4、创建并挂载文件系统

mkfs -t xfs /dev/imd0
mkdir /myraid
mount /dev/md0 /myraid/
df -Th
cp /etc/fstab /etc/fstab.bak
vim /etc/fstab
/dev/md0             /myraid     xfs   defaults     0 0

5、实现故障恢复

mdadm /dev/md0 -f /dev/sdb1   #模拟/dev/sdb1故障
mdadm -D /dev/md0   #查看发现sde1已顶替sdb1


6、 创建/etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止

echo ' DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf

mdadm命令其它常用选项
-r: 移除设备
-a: 添加设备
-S: 停止RAID
-A: 启动RAID

mdadm /dev/md0 -f /dev/ sdb1
mdadm /dev/md0 -r /dev/ sdb1
mdadm /dev/md0 -a /dev/ sde1

umount /dev/md0
mdadm -S /dev/md0
mdadm -As /dev/md0

六、小结

1. 磁盘基础  

先算容量:柱面×磁头×扇区×512 B;MBR 只能认 2 TB 且 4 主分区,GPT 则大到 9 ZB、128 分区,并把分区表首尾双存,坏一份也能恢复。Linux 把磁盘当文件,sd 表 SCSI,hd 表 IDE,数字 1-4 主分区、5 起逻辑分区。

2. 文件系统性格

 XFS 擅长大文件与高速恢复,EXT4 均衡稳健,SWAP 充当内存替身,NTFS 需 ntfs-3g 才能写。

3. 分区与格式化  

fdisk 交互指令 n 新建、p 查看、t 改类型、w 保存;lsblk 树形展示;mkfs.xfs 格式化;mount 临时挂,/etc/fstab 开机自挂;mkswap/swapon 建立交换区。

4. LVM 弹性层  

分区→PV→VG→LV:卷组随时加盘,逻辑卷在线伸缩;vgextend 拉宽池子,lvextend 加长卷,xfs_growfs 让文件系统立即感知新空间。

5. 磁盘配额  

用 xfs_quota 给用户或组设软硬限制:容量 80 M 警告、100 M 封顶,文件数同理,防止一人占满整盘。

6. RAID 阵列

 0 条带极速无冗余,1 镜像安全但容量减半,5 奇偶校验省盘,6 双校验容双盘,10 先镜后条兼顾速度与容错;mdadm 一条命令创建、模拟故障、热插拔替换,秒级恢复业务。

Logo

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

更多推荐