提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、磁盘的结构
- 二、磁盘管理
- 三、文件系统
- 四、磁盘分区的相关概念
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
磁盘管理是操作系统对存储设备进行分区、格式化、挂载及维护的过程,涉及物理磁盘的逻辑组织与数据存取。核心目标包括空间分配优化、数据安全性和性能提升。文件系统权限模型(如ACL、Linux的chmod
)控制用户访问。加密工具如BitLocker(Windows)、LUKS(Linux)可保护数据隐私。
提示:以下是本篇文章正文内容,下面案例可供参考
一、磁盘的结构
- 硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数
1柱面=512 * 扇区数/磁头数×磁道=512*63*255=7.84M
- 可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
二、磁盘管理
磁盘管理基础操作
磁盘管理是操作系统中的核心功能,用于管理硬盘分区、格式化、扩展卷等。Windows 和 Linux 系统提供了不同的工具和方法。
在 Windows 系统中,可以通过以下方式打开磁盘管理工具:
-
按下
Win + X
,选择“磁盘管理”。 -
在“运行”对话框中输入
diskmgmt.msc
并回车。
在 Linux 系统中,常用命令如 fdisk
、parted
、lsblk
等管理磁盘分区。
1.分区与格式化
分区是将物理磁盘划分为逻辑单元的过程。在 Windows 磁盘管理中,右键点击未分配空间,选择“新建简单卷”可创建分区。
格式化是为分区选择文件系统(如 NTFS、FAT32、exFAT)。右键点击分区,选择“格式化”,设置文件系统类型和分配单元大小。
Linux 下使用 mkfs
命令格式化分区:
sudo mkfs.ext4 /dev/sdX1
2.扩展与收缩卷
在 Windows 中,若磁盘有未分配空间,可右键点击需扩展的分区,选择“扩展卷”合并空间。收缩卷则是右键点击分区,选择“收缩卷”释放未使用空间。
Linux 使用 resize2fs
(ext 文件系统)或 xfs_growfs
(XFS 文件系统)调整分区大小:
sudo resize2fs /dev/sdX1
3.磁盘清理与优化
Windows 提供“磁盘清理”工具删除临时文件。在“此电脑”中右键点击磁盘,选择“属性” → “磁盘清理”。
使用“优化驱动器”工具(原磁盘碎片整理)可整理碎片:
-
打开“优化驱动器”,选择磁盘并点击“优化”。
Linux 系统通过 fstrim
(针对 SSD)或手动清理缓存文件维护性能:
sudo fstrim -av
4.磁盘检查与修复
Windows 使用 chkdsk
检查并修复磁盘错误:
chkdsk C: /f /r
Linux 使用 fsck
工具修复文件系统错误:
sudo fsck /dev/sdX1
5.动态磁盘与 RAID
Windows 支持将基本磁盘转换为动态磁盘以创建跨区卷、镜像卷等。右键点击磁盘,选择“转换为动态磁盘”。
Linux 通过 mdadm
管理软件 RAID:
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdX1 /dev/sdY1
6.挂载与卸载磁盘
Linux 中需手动挂载分区到目录:
sudo mount /dev/sdX1 /mnt/data
sudo umount /mnt/data
Windows 自动挂载分区,但可通过“更改驱动器号和路径”调整挂载点。
7.磁盘监控工具
Windows 使用“资源监视器”或第三方工具(如 CrystalDiskInfo)监控磁盘健康状态。
Linux 可通过 smartctl
(SMART 检测)或 iostat
监控磁盘性能:
sudo smartctl -a /dev/sdX
iostat -x 1
三、文件系统
1.文件系统的基本概念
文件系统是操作系统用于管理存储设备(如硬盘、SSD)上数据的一种机制,负责数据的组织、存储、检索和更新。其核心功能包括:
-
文件管理:创建、删除、读写文件,维护文件属性(如权限、时间戳)。
-
目录结构:通过树状或层级结构组织文件,便于用户导航。
-
存储空间分配:管理磁盘块的分配与回收,优化存储效率。
常见的文件系统类型包括:
-
FAT/FAT32:兼容性强,适用于移动设备。
-
NTFS:Windows 默认文件系统,支持大文件和加密。
-
ext4:Linux 主流文件系统,支持日志功能。
-
APFS:苹果生态系统专用,优化固态硬盘性能。
2.文件系统的核心组件
1. 元数据(Metadata)
记录文件属性(如大小、所有者、权限),以及数据块的位置信息。
例如:Unix 系统的 inode 结构。
2. 数据块管理
-
连续分配:文件占用连续的磁盘块,读写速度快,但易产生碎片。
-
链式分配:通过指针链接非连续的块,避免碎片,但随机访问效率低。
-
索引分配:使用索引块记录所有数据块位置,平衡速度与灵活性。
3. 目录实现
目录本质是特殊文件,存储文件名与对应 inode 或文件控制块(FCB)的映射关系。
3.文件系统的性能优化
1.日志功能(Journaling)
记录操作日志,确保系统崩溃后能快速恢复一致性。ext4 和 NTFS 均支持此功能。
2.缓存机制
通过内存缓存频繁访问的数据块,减少磁盘 I/O。Linux 使用 Page Cache,Windows 使用 System Cache。
3.碎片整理
定期重组分散的文件数据块,提升读取效率。NTFS 和 FAT32 需手动整理,ext4 通过预分配减少碎片。
4.文件系统的选择建议
-
Windows 环境:NTFS 适合本地磁盘,exFAT 适合跨平台移动存储。
-
Linux 环境:ext4 为通用选择,XFS 适合大文件处理。
-
Mac 环境:APFS 为默认选项,优化了固态硬盘性能。
5.常见问题与解决方案
1.文件系统损坏
使用工具修复:
- Windows:
chkdsk /f
- Linux:
fsck /dev/sdX
2.权限问题
通过 chmod
(Linux)或属性对话框(Windows)调整文件权限。
3.磁盘空间不足
清理临时文件或扩展分区,工具如 du
(Linux)或磁盘清理(Windows)。
代码示例:检查文件系统类型(Linux)
df -Th # 显示各挂载点的文件系统类型
lsblk -f # 查看块设备的文件系统详情
查看磁盘使用情况:df命令
df格式 [options]:df [选项] [文件]
主要参数
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、24MB、21GB。
-P:使用POSIX输出格式。
-T:显示文件系统类型。
四、磁盘分区相关概念
1.分区表
记录分区信息的一组数据结构包括分区起始位置,大小,文件系统类型。
2.分区表的类型
1.MBR(主引导记录)
传统的分区表格式,支持最多四个主分区或三个主分区和一个扩展分区,最大支持2TB的磁盘。
主启动记录(MBR) 磁盘分区:
MBR是主引导记录,位于硬盘第- -个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表。
MBR总共512字节, 前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节。
主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区)。
2.GPT(GUID分区表)
现代的分区表格式,支持更大的磁盘容量(可超过2TB)和更多的分区(最多128个),并提供冗余和数据完整性检查。
3.本地文件系统和集群文件系统
1.本地文件系统
指在单个计算机上使用的文件系统,负责管理该计算机的存储设备上的文件和目录。
windows: ntfs,fat32,fat16
linux: ext2~4,xfs
2.集群文件系统
设计用于多个计算机或节点共享同一存储资源的文件系统。它允许多个主机并发访问同一文件,常用于高可用性和高性能的计算环境中。常见的集群文件系统有GFS(Google File System)、HDFS(Hadoop Distributed File System)和Ceph等。
磁盘块是计算机存储系统中用于数据存储的基本单位。它通常是硬盘或其他存储介质上分配空间的最小单元。磁盘块的大小可以影响存储效率和性能,常见的块大小有512字节、1KB、2KB、4KB等。
超级磁盘块:
- 存储文件系统的元数据,如文件系统类型、总块数、可用块数、总文件数、可用 inode 数量、块大小等。
inode:是一种数据结构,主要用于记录文件和目录的元信息。
4.分区工具的使用
1.fdisk指令说明
Command (m for help): m
#输入m指令
a toggle a bootable flag
#设置可引导标记
b edit bsd disklabel
#修改bsd的磁盘标签
c toggle the dos compatibility flag
#设置DOS操作系统兼容标记
d delete a partition
#删除一个分区
l list known partition types
#显示已知的分区类型,其中82为 Linux swap分区,83为Linux分区
m print this menu
#显示帮助菜单
n add a new partition
#增加一个新的分区
o create a new empty DOS partition table
#创建一个新的空白的DOS分区表
p print the partition table
#显示磁盘当前的分区表
q quit without saving changes
#退出fdisk程序,不保存任何修改
s create a new empty Sun disklabel
#创建一个新的空白的Sun磁盘标签
t change a partition's system id
#改变一个分区的系统号码
u change display/entry units
#改变显示记录单位
v verify the partition table
#对磁盘分区表进行验证
w write table to disk and exit
#保存修改结果并退出fdisk程序
x extra functionality (experts only)
#特殊功能,不建议初学者使用
首先建立第一个主分区(/dev/sdb1),容量指定为 20GB,具体操作如下:
[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 //创建分区大小
2.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
语法格式:lsblk [参数]
常用参数:
-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.创建系统文件(格式化)
mkfs -t xfs /dev/sdb1 和 mkfs.xfs /dev/sdb1
4.其他格式化方式
mkfs -t vfat -F 32 /dev/sdb6和mkfs.vfat -F 32 /dev/sdb6
mkswap /dev/sdb5 创建
5.blkid 查看磁盘的UUID
blkid /dev/sdb1 //查看磁盘分区的UUID
[root@benet21 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="67b4f53b-614f-4165-9195-288c8277fb14" TYPE="xfs"
6.mkswap命令,创建交换文件系统
mkswap /dev/sdb5 格式化分区
swapon /dev/sdb5 开启
swapoff /dev/sdb5 关闭
swapon -s 检测
https://blog.csdn.net/tongyijia/article/details/50783083
7.parted
parted 是一个功能强大的命令行工具,用于创建、删除和管理磁盘分区,支持多种文件系统格式。
- print:打印当前分区表。
- mkpart:创建新分区。
- rm:删除分区。
- resizepart:调整分区大小。
- mklabel:创建新的分区表。
- quit:退出 parted。
1.第一步:查看系统当前的磁盘和分区
parted -l
2.第二步:选择你要分区的磁盘
parted /dev/nvme0n2
3.第三步:分区
创建gpt分区表
(parted) mklabel gpt
创建分区
(parted) mkpart primary 0% 100%
4.第四步:格式化
mkfs.xfs /dev/nvme0n2p1
5.第五步:挂载 临时挂载
mount /dev/nvme0n2p1 /mnt
挂载、卸载文件系统
mount命令
挂载文件系统、ISO镜像到指定文件夹
mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
umount命令
卸载已挂载的文件系统
umount 存储设备位置
umount 挂载点目录
开机自动挂载 vim /etc/fstab
/dev/nvme0n2p1 /mnt xfs defaults 0 0
总结
提示:这里对文章进行总结: