Linux 硬盘管理
Linux的核心思想是一切皆文件,所以硬盘也表现为文件。但是每个硬盘文件命名方式和磁盘的类型有关,硬盘文件在内核中自动生成识别,并存放在 /dev 这个文件目录下面。
-
SAS,SATA,SCSI,IDE,USB这种接口的硬盘,对应生成的文件名为:/dev/sdX
-
nvme协议硬盘对应生成的文件名为:/dev/nvme0nX
-
虚拟磁盘对应生成的文件名为:/dev/vdX 或 /dev/xvdX
一:硬盘发现
在Linux主机上新加一块硬盘后,一般情况下需要重启系统才会识别新加的硬盘,并且在/dev/下生成对应的文件名称。在
但是在某些情况下可能不方便重启系统,这个时候我们可以通过触发SCSI子系统进行一个新硬件扫描。这种方式就叫做“热插拔”方式
热插拔命令:
echo '- - -' > /sys/class/scsi_host/hostX/scan
说明:
hostX 是指定的SCSI控制器,其中 X 是一个数字。例如,第一个SCSI控制器是 host0。
scan 是一个特殊的文件,向它写入特定的值将触发SCSI子系统去扫描新的设备。
第一个-:通道。-代表所有通道。
第二个-:SCSI ID。-代表所有ID。
第三个-:LUN(逻辑单元号)。-代表所有LUN。

批量扫描脚本:
#!/bin/bash
for host in /sys/class/scsi_host/host*; do
echo '- - -' > "$host/scan"
done

二:硬盘分区
硬盘发现后就可以对硬盘设备进行分区操作了,分区有两种类型,MBR分区和GPT分区。分区的工具有很多,常用的分区工具有fdisk、gdisk和parted这三个工具;
-
fdisk:默认会将硬盘的分区类型格式化为MBR格式的分区类型
-
gdisk:默认会把硬盘的分区类型格式化为GPT类型。如果分区类型非gpt格式,会默认转换为gpt格式。
-
parted:功能更加强大,实时生效。可以管理gpt和mbr类型的分区表,其它的分区类型也可以管理,例如sun、bsd等
fdisk使用说明
使用fdisk创建分区
1、fdisk 硬盘命令
2、输入 n 表示创建新的分区

3、分区类型选择,一般用default推荐的就可以了
4、选择分区类型后就可以选择分区编号了,默认的就行了
5、选择起始位置,直接回车不输入表示从当前位置开始
6、选择分区的大小。例如这个分区大小是20G
7、分区完成后可以输入 p 指令进行查看
8、如果不想保存直接输入 q 指令就退出了,上面的操作都不会生效。如果没问题,输入 w 指令就可以保存推出了。
9、让内核识别新的分区而不重新启动系统,通过partprobe工具实现
10、到此位置分区操作已经完成
使用fdisk删除分区
1、通过fdisk 硬盘名称进入交互式界面
2、输入p指定查看当前的分区信息
3、输入d指令即可选择需要删除的分区
4、分区编号根据分区名称后面的数字来决定。例如我删除第二个分区
5、确认无误后输入w指令即可生效,如果误操作,输入q退出就行了。
gdisk使用说明
gdisk的使用和fdisk差不多,但是gdisk主要是用来处理GPT分区的。
说明:转换硬盘的分区类型会丢失整个硬盘上现存的所有数据,
parted使用说明
使用parted新建分区
1、通过parted 硬盘名称 进入交互式界面
2、选择分区类型
通过输入help mklabel即可查看可以选择的分区类型
3、选择分区类型
4、输入mkpart指令进行分区操作
mkpart 分区类型 文件系统类型 分区的开始位置 分区的结束位置
# -1:表示磁盘的最后

5、输入p 指令即可看当前的分区信息
6、输入 quit 即可退出交互式界面
使用parted删除分区
1、通过parted 硬盘名称 进入交互式界面
2、通过p指令可以查看当前的分区信息
3、通过rm 分区编号的方式即可删除对应分区
4、输入quit退出即可
查看分区类型
通过blkid可以查看分区类型
通过fdisk查看分区类型
通过gdisk查看分区类型
三:硬盘格式化
格式化硬盘就是给硬盘创建文件系统的过程。在Linux中,通常使用mkfs这个用户空间工具来给指定的硬盘或分区创建文件系统。
例如:将/dev/sdb1分区格式化为ext4文件系统
sudo mkfs.ext4 /dev/sdb1 或 sudo mkfs -t ext4 /dev/sdb1

mkfs的参数选项说明:
-
-t {ext2|ext3|ext4|xfs} 指定文件系统类型
-
-b {1024|2048|4096} 指定块 block 大小,默认4kb
-
-L ‘LABEL’ 设置卷标,便于在系统中识别。
-
-i # 指定一个inode节点的大小;默认256字节,即一个block可以存放16个inode
-
-N # 指定分区中创建多少个inode,默认inode空间占总空间的1%
四:硬盘挂载
在Linux中,硬盘挂载就是给硬盘指定一个入口(挂载点),通过这个入口可以在硬盘中读取或存放数据。
挂载硬盘使用mount工具实现,最简单的用法就是: mount 硬盘或分区名称 挂载点(一个目录)
例如:将/dev/sdb1挂载到/mnt/data
sudo mount /dev/sdb1 /mnt/data
# 挂载点不会自动创建,需要事先存在

上面进行挂载的时候,没有指定文件系统类型,系统会会自动进行检测,但是为了避免可能的错误和问题,在确定文件系统的情况下,使用-t参数指定文件系统类型可以确保系统以正确的方式挂载文件系统。
例如:
sudo mount -t ext4 /dev/sdb1 /mnt/data
使用mount进行硬盘挂在时,有以下注意事项:
-
一个挂载点同一时间只能挂载一个设备,如果挂载了多个设备就只显示最后一个设备
-
一个硬盘设备可以挂载到多个挂载点上
-
挂载点通常是空的目录文件
-
挂载时,默认是以可读可写的方式挂载,如果想要以只读的方式挂载,加 -r 参数就行
mount工具除了 -t 参数指定文件系统以外,还有些比较常用的参数。特别是 -o 参数,可以用来指定挂载选项。
mount的挂载选项说明:
-
ro 以只读方式挂载文件系统。
-
remount 重新挂载文件系统,相当于先umount再mount
-
defaults 使用默认的挂载选项,相当于rw, suid, dev, exec, auto, nouser, async
-
async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
-
sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下
-
noatime 指定文件系统不更新最后访问时间
-
_netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统,如果网络不可达不加该选项会导致系统无法启动。
持久化挂载
只是使用mount命令挂载了设备,系统重启后就失效了。如果想要系统重启后硬盘仍然处于挂载状态,可以通过在 /etc/fstab 这个文件中定义规则来实现。
文件格式:
# 使用`man 5 fstab `查看/etc/fstab配置文件格式
device mountpoint fs_type options 0 0
例如:将/dev/sdb1这个分区挂载到/data这个目录,并且使用默认的挂载选项,不进行本分和文件系统检查
sudo vim /etc/fatb
/dev/sdb1 /data ext4 defaults,noatime 0 0

说明:在 /etc/fstab 文件中添加或更改文件系统条目时,mount -a 命令很有用。不需要重新启动系统,只需要运行此命令,系统就会尝试挂载所有在 /etc/fstab 中列出的文件系统。
卸载硬盘
如果要卸载硬盘的挂载,通过umount命令即可。
umount 挂载点 或 umount 硬盘设备名称

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了