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
输入n,创建新分区。
输入p,创建主分区。
输入1,创建1个分区,后面使用默认值,分配所有扇区。
输入w,将分区表写入磁盘。
查看分区,分区成功,新分区为/dec/vdb1。
格式化
查看已加载驱动程序的,支持的文件系统。
它并非展示所有支持的文件系统,如果某种支持的文件系统从未被使用,可能就不会展示在该文件中,如果磁盘格式化为该格式并挂载,该格式就会显示在此文件中。
cat /proc/filesystems
将/dev/vdb1分区格式化为ext3格式。
- ext3是一个日志文件系统,是很多Linux发行版的默认文件系统。
- 最新的ext4是Linux kernel 2.6.28起支持。
- CentOS7.0开始默认文件系统是xfs。
mkfs -t ext3 /dev/vdb1
挂载
将/dev/vdb1挂载到/opt/data目录下,挂载目录必须存在,不存在需要先创建目录。
mount /dev/vdb1 /opt/data
挂载成功。
写入/etc/fstab
将挂载信息写入/etc/fstab文件,否则重启后需重新挂载。
文件中一共有六列:
- 设备名/label/uuid,设备名称跟磁盘插槽相关,label为标签名,uuid是分区唯一标识。
- 挂载点。
- 文件系统。
- 文件系统参数,一般选择default。
- 能否被dump命令使用,0代表不做dump备份,1为每天备份,2为不定日期备份。
- 是否检验扇区,开机时,系统默认使用fsck检查系统是否完整。0为不检查,1为优先检查,2为1检查完成后检查。
查看分区的uuid及类型
blkid
磁盘卸载
取消挂载
umount /dev/vdb1
删除分区
fdisk /dev/vdb
输入d,删除分区,输入w,写入磁盘
重置磁盘为原始状态
通过/dev/zero设备,将空字符(0x00)写入磁盘的数据块,只需写入前面一部分即可。
dd if=/dev/zero of=/dev/vdb bs=1M count=1024
磁盘测速
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).
错误原因:扩展分区无法直接格式化。
解决方法:在扩展分区的扇区上创建逻辑分区,格式化逻辑分区。
fdisk /dev/vdb
输入n,创建新分区,输入l,创建逻辑分区,输入w,写入磁盘。
格式化逻辑分区
mkfs -t ext4 /dev/vdb5
2.无法卸载分区
出现提示:umount: /opt/data: target is busy.
错误原因:分区被程序占用,无法umount。
解决方法:查出占用的程序,kill掉程序,再umount。
查询占用分区的进程的pid。
fuser -cu /dev/vdb2
查看具体进程信息
ps -ef |grep 12108
ps -ef |grep 22548
查询发现都是bash进程,是有shell窗口停留在分区所在目录,且未关闭。
确认没有影响,就可以杀死进程,可以使用fuser命令,也可以使用kill。
fuser -ck /dev/vdb2
或
kill -9 12108 22548
再次卸载分区,卸载成功!