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进行硬盘挂在时,有以下注意事项:

  1. 一个挂载点同一时间只能挂载一个设备,如果挂载了多个设备就只显示最后一个设备

  2. 一个硬盘设备可以挂载到多个挂载点上

  3. 挂载点通常是空的目录文件

  4. 挂载时,默认是以可读可写的方式挂载,如果想要以只读的方式挂载,加 -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 硬盘设备名称

posted on 2022-06-30 20:21  背对背依靠  阅读(922)  评论(0编辑  收藏  举报