linux测试磁盘性能,dd创建大文件用以填充或者测试文件系统

本文深入解析Linux下的dd命令,介绍其参数如bs、count、if、of、conv的作用,特别是fdatasync在文件拷贝及性能测试中的重要性。通过对比不同参数组合,展示如何准确测量磁盘读写速度。

作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换.
首先,介绍一下dd 命令的各个参数:
dd bs=1M count=16384 if=/dev/zero of=/dev/data1/ddtest conv=fdatasync

在这里插入图片描述

bs:块大小,每次读多少
count:读多少次.
这里1M读16384次就是读16G内容
if:从哪里读取
两个特殊设备:/dev/zero 、/dev/null
/dev/zero:吐零,该设备无穷尽地提供0,(不产生读磁盘IO)
/dev/null: 数据黑洞;类似于回收站
of:写到哪里
conv的几种取值区别:

dd bs=1M count=128 if=/dev/zero of=test
没有加任何参数,dd默认的方式不包括“同步(sync)”命令。也就是说,dd命令完成前并没有让系统真正把文件写到磁盘上。所以以上命令只是单纯地把这128MB的数据读到内存缓冲当中(写缓存[write cache])。所以你得到的将是一个超级快的速度。因为其实dd给你的只是读取速度,直到dd完成后系统才开始真正往磁盘上写数据,但这个速度你是看不到了。所以如果这个速度很快

dd bs=1M count=128 if=/dev/zero of=test; sync
和上面的完全一样。分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。

dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,所以这时候你得到的是读取这128M数据到内存并写入到磁盘上所需的时间,这样算出来的时间才是比较符合实际的。

dd bs=1M count=128 if=/dev/zero of=test oflag=dsync
加入这个参数后,dd在执行时每次都会进行同步写入操作。也就是说,这条命令每次读取1M后就要先把这1M写入磁盘,然后再读取下面这1M,一共重复128次。这可能是最慢的一种方式了,因为基本上没有用到写缓存(write cache)。

### 查找文件系统的空闲空间 在 Linux 系统中,可以通过 `df` 命令查看文件系统的空闲空间。该命令会显示挂载点的总容量、已使用空间以及剩余可用空间。例如,执行以下命令可以查看当前系统中所有文件系统的空闲情况: ```bash df -h ``` 此命令以人类可读的方式展示磁盘使用情况,其中 `Avail` 列表示每个挂载点的可用空间[^4]。 若需要更精确的信息,可以结合文件系统的超级块(superblock)进行分析。超级块存储了文件系统的元数据信息,包括总块数、已用块数和空闲块数等关键参数。这些信息由操作系统在文件系统挂载时从磁盘加载到内存中,从而实现对文件系统的管理[^3]。 --- ### 填充空闲空间为零 填充文件系统中的空闲空间为零通常是为了清除未使用的磁盘区域,防止数据恢复工具通过残留数据还原敏感信息。常见的方法是创建一个临时大文件,并将其写满零值,随后删除该文件。 #### 使用 `dd` 命令填充空闲空间 以下是使用 `dd` 命令创建一个填满空闲空间的文件,并将其内容设置为全零的操作示例: ```bash dd if=/dev/zero of=/path/to/fillfile bs=1M rm /path/to/fillfile ``` - `if=/dev/zero` 表示输入源为一个虚拟设备,其输出始终为零; - `of=/path/to/fillfile` 指定输出文件路径,该文件将占用文件系统的空闲空间; - `bs=1M` 设置每次读取和写入的块大小为 1MB,提高操作效率。 一旦文件被创建并占满所有可用空间,删除该文件即可释放这些空间,同时确保此前未使用的空闲区域已被零覆盖[^2]。 #### 使用 `fallocate` 命令快速分配空间 对于支持稀疏文件的文件系统,可以使用 `fallocate` 命令来快速分配大量空间: ```bash fallocate -l $(df /path/to/mountpoint | awk 'NR==2 {print $4}')K /path/to/fillfile ``` 该命令根据指定挂载点的空闲空间大小动态生成一个对应大小的文件。随后同样通过 `rm` 删除该文件完成清零操作[^4]。 --- ### 注意事项 - **谨慎操作**:填充空闲空间可能导致文件系统暂时无法写入新数据,影响系统稳定性或运行中的服务。 - **文件系统类型**:不同类型的文件系统(如 ext4、XFS)可能对大文件操作有不同行为,应确认目标文件系统是否支持此类操作。 - **加密环境**:在某些加密存储环境中(如 LUKS),填充空闲空间为零可能无法有效防止数据恢复,因为加密层可能会掩盖真实数据分布。 - **SSD 特性**:对于 SSD 存储设备,频繁的大规模写入操作可能影响设备寿命,并且由于 TRIM 命令的存在,实际填充效果可能受限。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值