目录

前言

一、磁盘基础知识

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 倍。
NTFS Windows 专有文件系统,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 .交互模式中的常用指令
指令 全称/作用 功能说明
a active 切换分区的 可引导标记(bootable flag)
b bsd 编辑 BSD 磁盘标签(BSD disklabel)
c compatible 打开/关闭 DOS 兼容标志(dos compatibility flag)
d delete 删除一个分区
l list 列出所有 已知分区类型(如 82=Linux swap,83=Linux)
m menu 显示 帮助菜单(当前表格)
n new 新建一个分区
o overwrite 创建新的 空 DOS 分区表(清空现有分区)
p print 显示当前分区表
q quit 不保存修改,直接退出 fdisk
s sun 创建新的 空 Sun 磁盘标签(Sun disklabel)
t type 更改分区系统 ID(即分区类型)
u units 切换 显示单位(柱面/扇区)
v verify 验证分区表的正确性
w write 保存修改并退出 fdisk
x extra 进入 专家级额外功能(初学者慎用)

三、建立磁盘分区

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) pvscan vgscan lvscan
创建(Create) pvcreate vgcreate lvcreate
显示(Display) pvdisplay vgdisplay lvdisplay
移除(Remove) pvremove vgremove lvremove
扩展(Extend) vgextend lvextend
缩减(Reduce) vgreduce lvreduce

需求:需要创建两个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 0 N ≥ 2 100 % 0 盘 线性提升,约为单盘的 N 倍
RAID 1 2(偶数) 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 0 2 块 条带分布 读写最快;无容错 临时缓存、非关键数据
RAID 1 2 块 镜像复制 (坏 1 盘仍可用) 读快、写一般 操作系统盘、小容量关键数据
RAID 5 3 块 条带 + 奇偶校验 (坏 1 盘仍可用) 读高、写中等;空间利用率较好 多读少写、通用服务器
RAID 10 4 块(偶数) 先 RAID 0 条带,再 RAID 1 镜像 (每组坏 1 盘仍可用) 读写皆优;成本高 数据库、高并发业务
RAID 1+0 4 块(偶数) 先做镜像(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社区

更多推荐