磁盘管理与文件系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、磁盘的结构
  • 二、磁盘管理
  • 三、文件系统
  • 四、磁盘分区的相关概念
  • 总结

前言

提示:这里可以添加本文要记录的大概内容:

磁盘管理是操作系统对存储设备进行分区、格式化、挂载及维护的过程,涉及物理磁盘的逻辑组织与数据存取。核心目标包括空间分配优化、数据安全性和性能提升。文件系统权限模型(如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 系统中,常用命令如 fdiskpartedlsblk 等管理磁盘分区。

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

总结

提示:这里对文章进行总结:
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值