linux下fallocate快速创建大文件
以前创建文件我一般用dd来创建,例如创建一个512M的文件:
dd命令可以轻易实现创建指定大小的文件,如
dd if=/dev/zero of=test bs=1M count=1000
会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源)
但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢
在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘
则可以
dd if=/dev/zero of=test bs=1M count=0 seek=100000
此时创建的文件在文件系统中的显示大小为100000MB,但是并不实际占用block,因此创建速度与内存速度相当
seek的作用是跳过输出文件中指定大小的部分,这就达到了创建大文件,但是并不实际写入的目的
当然,因为不实际写入硬盘,所(www.111cn.net)以你在容量只有10G的硬盘上创建100G的此类文件都是可以的
记得以前做Windows开发的时候,有个API叫SetEndOfFile,可以用来将文件内部游标所在位置设为文件末尾,可以用来截取或者扩展文件,这个函数本质上相当于直接操作文件分区表的结构,用它来作文件扩展是不需要频繁的填充文件,linux下肯定也有对应的东西,即ftrunc/truncate这两个函数。
那么直接利用这个特性来创建大文件的工具就肯定有人做好了,经搜索找到了fallocate和truncate两个命令, 以及GNU dd的seek扩展:
代码如下 复制代码
# fallocate -l 10G bigfile
# truncate -s 10G bigfile
# dd of=bigfile bs=1 seek=10G count=0
文件系统对于这样创建的文件有特殊处理,叫稀疏文件,现在创建大文件光速了,再也不用纠结等半天了。
from:http://www.111cn.net/sys/linux/55537.htm
linux下fallocate快速创建大文件的更多相关文章
- Linux下迅速删除一个大文件夹
rsync -av --delete /tmp/null/ ./ 迅速删除大文件夹,如缓存 快速删除大目录(即大量文件)1.先建立一个空目录 mkdir /data/blank 2.用r ...
- linux(centos8):用fallocate快速生成大文件
一,fallocate的用途? 1,用途 我们有时需要用大文件来测试下载速度, 有时需要用大文件来覆盖磁盘空间, 如果在网上搜索,很多文章讲的是使用dd等工具, 事实上linux系统已经内置了生成大文 ...
- 【转】linux 下清空或删除大文件的一些方法
原文:https://linux.cn/article-8024-1.html 在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件 ...
- linux下使用vim创建编辑文件
vi/vim 使用实例 如果要想用vim/vi创建一个文件(使用命令): vim test.txt 不管文件存在与否 直接输入 vi 文件名 就能够进入 vi 的一般模式 按下 i 进入输入模式( ...
- windows下如何快速删除大文件
rmdir 磁盘:\文件夹的名字 /s /q; eg:rmdir E:\vue_workspace\KB\day08 /s/q /S 表示除目录本身外,还将删除指定目录下的所有子目录和文件. ...
- Linux下清空或删除大文件内容的2种方法
在Linux终端下处理文件时,有时候我们想要直接清空文件的内容时但又不用使用任何Linux命令行编辑器,去打开这些文件.那如何才能达到这个目的呢? 1.通过重定向到NULL来清空文件内容 清空或者让一 ...
- Linux 下清空或删除大文件内容的 5 种方法
在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件.那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空 ...
- Linux 删除文件未释放空间问题处理,下清空或删除大文件
linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么 ...
- 【转】Linux 中清空或删除大文件内容的五种方法(truncate 命令清空文件)
原文: http://www.jb51.net/article/100462.htm truncate -s 0 access.log -------------------------------- ...
随机推荐
- HDU 5493 Queue 【线段树】
<题目链接> 题目大意:给你n个人的身高和他前面或者后面身高大于他的人的个数,求一个字典序最小的满足此条件的序列,如果不存在输出“impossible”. 解题分析: 因为要保证字典序最小 ...
- checkbox jquery操作总结
$('input[name="myCheckbox"]').prop('checked','true'); // 全选 $('input[name="myCheckbox ...
- jquery实时获取时间
$(document).ready(function(){ function time(){ var date=new Date(); var h=date.getHours(); var m=dat ...
- 南阳171----聪明的kk
//简单的dp #include<cstdio> #define Max(a,b) ((a)>(b)?(a):(b)) ]; int main() { int i,j,n,m,x,t ...
- Wannafly Winter Camp 2019.Day 8 div1 I.岸边露伴的人生经验(FWT)
题目链接 \(Description\) 给定\(n\)个十维向量\(\overrightarrow{V_i}=x_1,x_2,...,x_{10}\).定义\(\overrightarrow{V}= ...
- 1014 Uniform Generator ACM
http://acm.hdu.edu.cn/showproblem.php?pid=1014 题目的英文实在是太多了 ,搞不懂. 最后才知道是用公式seed(x+1) = [seed(x) + STE ...
- No mapping found for HTTP request with URI [/webapp/] in DispatcherServlet with name 'SpringMVC'
可能有如下几个原因: 1.是否设置了web目录,在IDEA中,web目录是这样的 如果没有设置,按照下面的方法设置: 选中要设置的模块,点击file.project structure,设置web.x ...
- MySQL(九)
封装 观察前面的文件发现,除了sql语句及参数不同,其它语句都是一样的 创建MysqlHelper.py文件,定义类 #encoding=utf8 import MySQLdb class Mysql ...
- mysql命令(command)
连接mysql命令: -uuserName -pPassword 显示表的索引: SHOW INDDEX FROM table_name 查看mysql的超时时间:SHOW GLOBAL VARIAB ...
- Java 基础 在Java中需要使用内存的组件
Java程序启动后作为一个进程运行在操作系统中,那么这个进程有哪些部分需要分配内存? 1 Java堆 Java堆用于存储Java对象,堆的大小在JVM启动时向操作系统一次性申请完成,通过-Xmx和-X ...