linux硬盘挂载

Scroll Down

1.查看磁盘

查看磁盘分区

fdisk -l
[root@VM-0-11-centos ~]# fdisk -l

Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   104857566    52427759+  83  Linux

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes

[root@VM-0-11-centos ~]# 

其中,/dev/vda是系统盘,/dev/vdb是未挂载的磁盘。

查看磁盘空间

df -h
[root@VM-0-11-centos ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        908M     0  908M   0% /dev
tmpfs           919M   24K  919M   1% /dev/shm
tmpfs           919M  456K  919M   1% /run
tmpfs           919M     0  919M   0% /sys/fs/cgroup
/dev/vda1        50G  2.9G   45G   7% /
tmpfs           184M     0  184M   0% /run/user/0
[root@VM-0-11-centos ~]# 

目前只有系统盘,未挂载的盘不会在这显示。

  • /dev/vda1是系统盘的逻辑分区。
  • tmpfs为基于内存的虚拟文件系统。
  • devtmpfs为文件系统创建设备节点,功能是在linux kernel启动早起建立一个初步的/dev,让一般启动程序不用等待udev,缩短GNU/Linux的开机时间。

2.分区

磁盘可以分区,也可以不分区直接格式化后挂载。

fdisk /dev/vdb

image.png

输入n,创建新分区。
image.png

输入p,创建主分区。
image.png

输入1,创建1个分区,后面使用默认值,分配所有扇区。
image.png

输入w,将分区表写入磁盘。
image.png

查看分区,分区成功,新分区为/dec/vdb1。
image.png

格式化

查看已加载驱动程序的,支持的文件系统。
它并非展示所有支持的文件系统,如果某种支持的文件系统从未被使用,可能就不会展示在该文件中,如果磁盘格式化为该格式并挂载,该格式就会显示在此文件中。

cat /proc/filesystems

将/dev/vdb1分区格式化为ext3格式。

  • ext3是一个日志文件系统,是很多Linux发行版的默认文件系统。
  • 最新的ext4是Linux kernel 2.6.28起支持。
  • CentOS7.0开始默认文件系统是xfs。
mkfs -t ext3 /dev/vdb1

image.png

挂载

将/dev/vdb1挂载到/opt/data目录下,挂载目录必须存在,不存在需要先创建目录。

mount /dev/vdb1 /opt/data

挂载成功。
image.png

写入/etc/fstab

将挂载信息写入/etc/fstab文件,否则重启后需重新挂载。
image.png

文件中一共有六列:

  1. 设备名/label/uuid,设备名称跟磁盘插槽相关,label为标签名,uuid是分区唯一标识。
  2. 挂载点。
  3. 文件系统。
  4. 文件系统参数,一般选择default。
    image.png
  5. 能否被dump命令使用,0代表不做dump备份,1为每天备份,2为不定日期备份。
  6. 是否检验扇区,开机时,系统默认使用fsck检查系统是否完整。0为不检查,1为优先检查,2为1检查完成后检查。

查看分区的uuid及类型

blkid

image.png

磁盘卸载

取消挂载

umount /dev/vdb1

image.png

删除分区

fdisk /dev/vdb

输入d,删除分区,输入w,写入磁盘
image.png
image.png

重置磁盘为原始状态

通过/dev/zero设备,将空字符(0x00)写入磁盘的数据块,只需写入前面一部分即可。

dd if=/dev/zero of=/dev/vdb bs=1M count=1024

image.png

磁盘测速

1.dd命令(基础测试)

适用场景:快速测试顺序读写速度(简单但不够精准)。

测试写入速度

dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct status=progress
  • bs=1G:单次写入 1GB 数据块。
  • count=1:写入 1 次(总 1GB)。
  • oflag=direct:绕过缓存,直接写入磁盘(避免缓存干扰结果)。

测试读取速度

dd if=./testfile of=/dev/null bs=1G count=1 iflag=direct status=progress
  • 完成后删除测试文件:rm -f ./testfile。

注意:
dd 测试的是大文件顺序读写,不反映随机 I/O 性能。
若未用 direct 标志,结果可能虚高(受缓存影响)。

2.使用 hdparm(测试读取速度)

适用场景:快速测试磁盘的缓存读取速度(适合机械硬盘/SSD)。

hdparm -Tt /dev/sdX
  • -T:测试缓存(内存)读取速度。
  • -t:测试磁盘实际读取速度。

3.使用 fio(专业级测试)

适用场景:精准测试顺序/随机读写、IOPS、延迟等(需安装)。

安装 fio

apt install fio

测试顺序读写

fio --name=seq_read --filename=./testfile --rw=read --direct=1 --bs=1M --size=1G
fio --name=seq_write --filename=./testfile --rw=write --direct=1 --bs=1M --size=1G

测试随机读写(4K 小文件)

fio --name=rand_read --filename=./testfile --rw=randread --ioengine=libaio --iodepth=64 --runtime=30 --bs=4k --size=1G
fio --name=rand_write --filename=./testfile --rw=randwrite --ioengine=libaio --iodepth=64 --runtime=30 --bs=4k --size=1G
  • –iodepth=64:模拟高并发 I/O(适合 SSD/NVMe)。
  • –bs=4k:测试小文件性能(关键指标:IOPS)。
  • 结果中关注 bw(带宽,MB/s)和 iops(每秒操作数)。

清理测试文件

rm -f ./testfile

问题

1.无法格式化扩展分区

报错:inode_size (128) * inodes_count (0) too big for a
filesystem with 0 blocks, specify higher inode_ratio (-i)
or lower inode count (-N).

image.png
错误原因:扩展分区无法直接格式化。
解决方法:在扩展分区的扇区上创建逻辑分区,格式化逻辑分区。

fdisk /dev/vdb

输入n,创建新分区,输入l,创建逻辑分区,输入w,写入磁盘。
image.png

格式化逻辑分区

mkfs -t ext4 /dev/vdb5

image.png
image.png

2.无法卸载分区

出现提示:umount: /opt/data: target is busy.
image.png
错误原因:分区被程序占用,无法umount。
解决方法:查出占用的程序,kill掉程序,再umount。

查询占用分区的进程的pid。

fuser -cu /dev/vdb2

image.png

查看具体进程信息

ps -ef |grep 12108
ps -ef |grep 22548

image.png
查询发现都是bash进程,是有shell窗口停留在分区所在目录,且未关闭。

确认没有影响,就可以杀死进程,可以使用fuser命令,也可以使用kill。

fuser -ck /dev/vdb2

kill -9 12108 22548

image.png

再次卸载分区,卸载成功!
image.png