Linux(十)——磁盘管理与文件系统

前言

本文详细介绍了Linux系统中磁盘管理与文件系统的相关知识,包括硬盘存储原理、分区管理、文件系统类型、常用命令操作等内容。通过学习,读者将掌握Linux环境下磁盘分区、格式化、挂载等核心技能,并理解不同文件系统的特点及应用场景。


一、硬盘存储基础

1.1 硬盘存储容量计算

硬盘存储容量可通过以下公式计算:
硬盘存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

  • 柱面大小示例
    1柱面 = 512字节 × 扇区数/磁头数 × 磁道 = 512 × 63 × 255 ≈ 7.84MB

1.2 磁盘结构

1.2.1 硬盘的物理结构

  • 盘片:硬盘有多个盘片,每盘片2面
  • 磁头:每面一个磁头

1.2.2 硬盘的数据结构

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位
  • 磁道:同一盘片不同半径的同心圆
  • 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
    在这里插入图片描述

二、Linux磁盘分区表示

2.1 设备文件命名规则

Linux中将硬盘、分区等设备表示为文件,命名格式为/dev/sdXN/dev/hdXN,具体规则如下:

部分说明
sd表示SCSI设备
hd表示IDE设备
X(字母)硬盘顺序号,从a开始(如sda表示第一块硬盘)
N(数字)分区顺序号,主分区为1-4,逻辑分区从5开始(如sdb5表示第二块硬盘的第一个逻辑分区)

2.2 MBR磁盘分区

2.2.1 MBR结构

主启动记录(MBR)位于硬盘第一个物理扇区,共512字节,结构如下:

部分字节范围说明
主引导记录前446字节包含引导程序
分区表447-510字节记录分区信息,共4个条目
结束标志511-512字节固定为0x55AA

2.2.2 MBR分区限制

  • 支持最大卷为2.2TB。
  • 每个磁盘最多支持:
    • 4个主分区,或
    • 3个主分区 + 1个扩展分区(扩展分区内可划分多个逻辑分区)。

2.3 Linux文件系统类型

2.3.1 常见文件系统类型

文件系统特点适用场景
XFS高性能日志文件系统,支持大文件(上百万TB),宕机后可快速恢复数据大文件存储、高吞吐场景
SWAP交换文件系统,用于虚拟内存,缓解物理内存不足(建议大小为物理内存的1.5-2倍)内存扩展
EXT4第4代扩展文件系统,默认日志功能,性能稳定(CentOS 7之前默认)通用文件存储
NTFS微软专有文件系统,Linux默认只读,需借助NTFS-3G实现写入Windows兼容需求
2.3.1.1 补充
  • Linux 系统还广泛支持其他各种类型的文件系统,如 JFS、FAT16、FAT32、NTFS 等。JFS 文件系统多用于商业版本的 UNIX 操作系统中,具有出色的性能表现。
  • 由于 NTFS 是微软公司的专有文件系统,Linux 系统默认只支持从 NTFS 分区读取文件,如果需要向 NTFS 分区中写入文件数据,需要结合其他辅助软件(如 NTFS-3G)
  • 例如,对于拥有 512MB物理内存的主机,其交换分区的大小建议设置为 1024MB。如果服务器的物理内存足够大(如 8GB 以上),也可以不设置交换分区。交换分区不用于直接存储用户的文件和目录等数据。

三、磁盘分区管理

3.1 查看磁盘信息

3.1.1 fdisk -l命令

显示硬盘整体情况和分区表,输出字段说明:

字段说明
Device分区设备文件名(如/dev/sda1
Boot引导分区标记(*表示是)
Start/End分区的起始/结束柱面位置
Blocks分区大小(块为单位,默认1KB)
Id系统ID号(如83为Linux分区,8e表示LVM 逻辑卷)
System分区类型

交互模式中的常用指令
fdisk指令说明:

命令功能描述
a切换可引导标记(设置/取消分区启动标志)
b编辑BSD磁盘标签
c切换DOS兼容性标记
d删除指定分区
l 列出已知分区类型(如82为Linux swap,83为Linux分区)
m显示帮助菜单
n创建新分区
o创建新的空白DOS分区表
p打印当前分区表信息
q退出程序且不保存修改
s创建新的空白Sun磁盘标签
t改变一个分区的系统号码
u切换显示/输入单位(如柱面/扇区)
v验证分区表完整性
w保存修改并退出程序
x高级功能(仅限专家使用)

3.1.2 lsblk命令

以树形结构查看磁盘分区,常用参数:

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

示例:

[root@simon ~]# 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    4G  0 part [SWAP]
└─sda3   8:3    0 95.5G  0 part /
sr0     11:0    1  4.4G  0 rom  /mnt

在这里插入图片描述

3.2 创建系统文件(格式化)mkfs

mkfs命令有两种使用格式:

mkfs -t xfs /dev/sdb1    # 格式化为XFS
mkfs.xfs /dev/sdb1

也可以将磁盘分区格式化为FAT32类型

mkfs -t vfat -F 32 /dev/sdb6  # 格式化为FAT32
mkfs.vfat -F 32 /dev/sdb6

3.3 创建交换文件系统mkswap

mkswap /dev/sdb5      # 创建交换分区
swapon /dev/sdb5      # 开启 
swapoff /dev/sdb5     # 关闭
swapon -s          # 检测

3.4 blkid查看磁盘的UUID

blkid  //查看磁盘分区的UUID

在这里插入图片描述
查看磁盘分区的uuid之后可以进行永久挂载。


四、文件系统操作

4.1 挂载与卸载

mount命令可以挂载文件系统、ISO镜像到指定文件夹

mount  [ -t 类型 ]  存储设备  挂载点目录
mount  -o loop  ISO镜像文件  挂载点目录
mount /dev/sdb1 /mnt      # 挂载到/mnt

umount命令卸载已挂载的文件系统

umount  存储设备位置
umount  挂载点目录
umount /mnt               # 卸载

4.2 查看磁盘使用情况df

df  [选项]  [文件]
参数功能描述
-s仅显示每个Names参数占用的数据块总数(不递归子目录)
-a递归显示目录及子目录中所有文件占用的数据块数
-k以1024字节(1KB)为单位输出磁盘空间使用情况
-x跳过统计挂载的其他文件系统目录
-l统计所有文件大小(硬链接文件重复计算)
-i 显示inode信息而非块使用量
-h以易读格式显示(如KB/MB/GB)
-P使用POSIX兼容的输出格式
-T显示文件系统类型
[root@simon ~]# df -hT

在这里插入图片描述

4.3 开机自动挂载配置

/etc/fstab文件中,每一行记录对应一个分区或设备的挂载配置信息,这些信息从左到右包括六个字段(使用空格或制表符分隔),各部分的含义如下所述。
UUID=7cbacfa5-7877-4b6f-8f5b-a1dd1b598035 / xfs defaults 0 0
各字段含义:

字段说明
1设备名或UUID(可通过blkid查看)
2挂载点目录
3文件系统类型(如xfs、swap)
4挂载参数(如defaultsronoexec
5是否需dump备份(0忽略,1需要)
6启动时磁盘检查顺序(0不检查,1根分区优先检查,2其他分区其次检查)

通过在/etc/fstab 文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。


五、案例

给虚拟机添加一块20G的新磁盘,对这块磁盘进行多分区操作,目标:主分区分sdb1(5g)、sdb2(5g)、sdb3(5g),拓展分区sdb4(5g),然后将sdb2更改为swap分区,实现永久挂载。具体操作如下:

5.1 先给虚拟机分配20g磁盘

在这里插入图片描述

5.2 重启或者执行以下指令加载新建的硬盘

不重启加载新建的硬盘
磁盘添加完成,进入系统,使用下面命令扫描SCSI总线
加载磁盘
echo "- - -" > /sys/class/scsi_host/host0/scan
                                    host1
									host2
fdisk -l # 列出系统中所有磁盘及其分区的详细信息

在这里插入图片描述

5.3 使用fdisk命令开始分区

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

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

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

命令(输入 m 获取帮助):n  # 增加一个新的分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p   # p表示主分区
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G    # 设置分区大小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):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-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    # e表示拓展分区
已选择分区 4
起始 扇区 (31459328-41943039,默认为 31459328):
将使用默认值 31459328
Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):+5G
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w
正在同步磁盘。


在这里插入图片描述
在这里插入图片描述

5.4 文件系统格式化

mkfs.xfs /dev/sdb1

在这里插入图片描述

5.5 使用mount命令进行挂载

[root@simon opt]# mkdir yjs0805
[root@simon opt]# mount /dev/sdb1 /opt/yjs0805/
#新创建的盘以及格式化后进行挂载   这是临时挂载

在这里插入图片描述

5.6 查看磁盘使用情况

[root@simon opt]# df -hT

在这里插入图片描述

5.7 企业需求永久挂载,防止重启后设别识别不到

[root@simon opt]# blkid

在这里插入图片描述

[root@simon opt]# vim /etc/fstab

在这里插入图片描述
更改/etc/fstab可以执行mount -a验证是否有错误

[root@simon opt]# mount -a

5.8创建swap分区

将上面的/dev/sdb2更改为swap分区,swap分区的ID为82

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

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


命令(输入 m 获取帮助):t    # 改变一个分区的系统号码
分区号 (1-4,默认 4):2
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x19c2ae1b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    20973567     5242880   82  Linux swap / Solaris
/dev/sdb3        20973568    31459327     5242880   83  Linux
/dev/sdb4        31459328    41943039     5241856    5  Extended

在这里插入图片描述

使用swapon命令开启swap分区,可以使用swapon -s检测状态。

[root@simon opt]# mkswap /dev/sdb2
正在设置交换空间版本 1,大小 = 5242876 KiB
无标签,UUID=c6573a02-96d1-4b9d-96c7-755aa9959c12
[root@simon opt]# swapon /dev/sdb2
[root@simon opt]# swapon -s
文件名				类型		大小	已用	权限
/dev/sda2                              	partition	4194300	0	-2
/dev/sdb2                              	partition	5242876	0	-3

在这里插入图片描述
swap 不需要像普通文件系统那样使用 mount 命令挂载。swap 分区的管理是通过专门的命令完成的,例如 swapon 和 swapoff,但可以将其添加到 /etc/fstab 文件以实现开机自动启用


六、GPT分区

6.1 GPT简单介绍

  1. 分区支持

    • MBR 最多仅支持 4 个主分区,而 GPT 则支持多达 128 个主分区(具体数量可能因操作系统而异)。
  2. 硬盘容量

    • GPT 突破了 MBR 的 2TB 容量限制,理论上可支持高达 9.4ZB(相当于上亿 TB)的超大容量硬盘。
  3. 数据冗余与可靠性

    • GPT 采用双备份机制,在硬盘起始和结束位置均存储分区表副本,显著提升数据损坏时的恢复概率。
    • MBR 仅存储单一份区表,一旦损坏将面临数据丢失风险。
  4. GPT 核心优势

    • 完美支持 2TB 以上大容量硬盘
    • 具备更出色的容错和数据恢复能力
    • 提供更灵活的分区方案

6.2 GPT和MBR 的区别

特性GPTMBR
最大分区数128 个4 个(主分区或 3 个主分区 + 1 个扩展分区)
支持硬盘容量最大支持 9.4ZB(非常大)最大支持 2TB
分区表存储位置在硬盘的开始和结束都有副本只有一个分区表副本
操作系统支持新的操作系统(如 Windows 10、Linux)支持 GPT兼容老操作系统,如 Windows XP
启动模式支持 UEFI 引导只能支持 BIOS 引导

6.3 GPT 常见的用途

  • 大容量硬盘需求:对于超过 2TB 的硬盘,必须采用 GPT 分区方案。
  • 现代系统兼容性:当前主流操作系统(如 Windows 10 和 Linux)默认支持 GPT 分区格式。
  • 启动方式要求:UEFI 启动模式必须搭配 GPT 分区,而传统的 MBR 仅兼容 BIOS 启动模式。

综上所述,GPT 作为现代硬盘分区标准,具有分区数量多、存储容量大、可靠性高等优势,特别适合大容量存储设备和新型计算机系统。

6.4 gdisk命令交互模式中的指令

命令功能描述
b将GPT数据备份到一个文件
c更改分区名称
d删除一个分区
i显示分区详细信息
l列出已知分区类型(如8200为Linux swap,8300为Linux filesystem,8e00为Linux LVM)
n增加一个新的分区
o创建一个新的空白的GPT分区表
p显示当前磁盘的分区表
q退出gdisk程序且不保存任何修改
r恢复和转换选项(专家模式)
s排序分区
t改变分区的类型
v验证磁盘分区表
w将分区表写入磁盘并退出(保存修改)
x额外功能(专家模式)
?显示帮助信息

6.5 案例

给虚拟机添加一块20G的新磁盘,对这块磁盘创建GPT分区。

1、为虚拟机分配20g磁盘
和第五章步骤相同,请移步上文
2、使用gdisk命令进行分区
gdisk命令和fdisk命令很相似,**注意点:**分区类型(默认8300为Linux文件系统)

[root@simon ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8300
Changed type of partition to 'Linux filesystem'

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

在这里插入图片描述

3、格式化与挂载

mkfs.xfs /dev/sdb1
mount /dev/sdb1 /opt/yjs0805
df -Th

在这里插入图片描述
在这里插入图片描述


总结

本文系统介绍了Linux磁盘管理与文件系统的核心知识,包括:

  1. 硬盘存储原理:容量计算与区域定位方法。
  2. 分区管理:MBR/GPT分区表、工具命令(fdisk/gdisk)。
  3. 文件系统:常见类型(XFS、EXT4、SWAP)及格式化操作。
  4. 挂载配置:手动挂载与/etc/fstab自动挂载。
  5. 实用命令lsblkdfblkid等工具的使用。

通过实践这些内容,读者将能够熟练管理Linux系统中的磁盘与文件系统,满足日常运维和开发的存储需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值