IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> |dev/sda & /dev/sdb & /dev/zero && dd命令 && fallocate -> 正文阅读

[系统运维]|dev/sda & /dev/sdb & /dev/zero && dd命令 && fallocate

/dev/fd0 第一个软驱

/dev/fd1 第二个软驱

/dev/sda 第一块硬盘, sda1, sda2是sda这块硬盘上的两个分区

/dev/sdb 第二块硬盘, 以此类推.

/dev/scd0 第一个SCSI CD-ROM, 可以用/dev/sr0.

/dev/zero文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。下面使用dd命令将从zero设备中创建一个10K大小(bs决定每次读写1024字节,count定义读写次数为10次),但内容全为0的文件。

dd if=/dev/zero of=file count=10 bs=1024

dd命令可用于复制和转换文件,复制分区(备份硬盘驱动器)以及创建映像文件。DD命令只能由root用户或有特权的用户运行。使用dd命令时,请记住在运行命令之前检查目标位置是否有足够的可用空间。

注意:使用dd命令时必须格外小心,因为您可以轻松清除分区和磁盘的数据!

// 将现有硬盘驱动器的映像并将其保存到另一个存储位置

dd?if=/dev/sda?of=~/sda_disk.img

//?从/dev/sda获取的映像文件,并将其恢复到/dev/sdb的位置。

dd?if=sda_disk.img of=/dev/sdb

//?将/dev/sda复制到/dev/sdb。选项conv = noerror,sync用于指定发生错误时我们不停止处理。

// sync参数指定将所有缺失的输入替换为空字节并正常处理。

dd?if=/dev/sda?of=/dev/sdb?conv=noerror,sync

使用dd实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢

在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘

则可以

dd if=/dev/zero of=test bs=1M count=0 seek=100000

此时创建的文件在文件系统中的显示大小为100000MB,但是并不实际占用block,因此创建速度与内存速度相当。seek的作用是跳过输出文件中指定大小的部分,这就达到了创建大文件,但是并不实际写入的目的。

当然,因为不实际写入硬盘,所以你在容量只有10G的硬盘上创建100G的此类文件都是可以的。

fallocate命令可能是Linux中可以用来创建文件的鲜为人知的命令之一。fallocate用于将块预分配给文件。对于支持fallocate系统调用的文件系统,这可以通过分配块并将其标记为未初始化来快速完成,因此不需要对数据块进行I / O操作。这是创建文件而不是用零填充的更快的方法。大文件几乎可以立即创建,而不必等待任何I / O操作完成。在以下文件系统上支持fallocate系统调用:btrfs,ext4,ocfs2和xfs文件系统(自内核版本v2.6.31起)。

常规语法:?fallocate [-n] [-o offset] -l length filename

length和offset参数后可以跟二进制(2 ^ N)后缀KiB,MiB,GiB,TiB,PiB和EiB(iB为可选,例如,K的含义与KiB的含义相同或后缀KB,MB,GB,PB和EB的十进制(10 ^ N)。

$ fallocate -l 1G test_file1.img
// 上面的命令创建了一个名为test_file1.img的文件,大小为1GB。该文件几乎是立即创建的(没有I / O延迟)

$ fallocate -l 10G test_file2.img
// 上面的命令创建了一个名为test_file2.img的文件,大小为10GB。与前面的示例一样,该文件几乎是立即创建的(没有I / O延迟)。

// 注:由fallocate命令返回的退出代码为0表示成功,1表示失败。

$ du -h allocatefile  
10G     allocatefile

truncate命令是缩小或者扩展文件至指定大小,它的语法如下:

truncate -s [file-size] [name of the file]

truncate 命令 创建的是一个稀疏文件而不是实际的文件 ,稀疏文件不会占用磁盘空间

$ truncate -s 10G truncatefile

$ du -h truncatefile 
0       truncatefile

注意:fallocate?命令只支持?btrfs、ext4、 ocfs2、xfs?这几种文件系统,而?truncate?命令支持所有的现代文件系统

yes?命令,它的作用是循环输出一行指定的字符串,直到进程结束,为了控制文件的大小并打破循环,我们借助?head?命令来实现,使用?yes?命令创建包含指定内容文件的语法如下

yes [string] | head -c [size of file] > [name of file]

string?是写入文件每一行的字符串

head -c [size of file]?是接收指定大小的字符串,单位是字节,后面也可以接?KKBMMBGGB等单位

下面的实例是往?yesfile?文件写入,每行的内容是:?this is a test content?, 一直到文件大小达到?10G

$ yes "this is a test content" | head -c 10G > yesfile

$ du -h yesfile  
10G     yesfile

yes?命令创建一个?10G?的文件比?dd?命令慢

创建一个 10G的文件, fallocate 和 truncate 命令只需要不到 0.1 秒的时间,但是 dd 命令需要 8.6 秒的时间,yes命令需要 13.2 秒,这中间相差了几百倍,为什么会有这么大的差别呢?

fallocate 将空间分配给文件,但是不会往文件中写入任何数据

truncate 创建的是稀疏文件,和 fallocate 一样,它也不会往文件中写入任何数据

dd 和 yes 都有写文件操作,而这需要大量的 IO 时间,所以同样创建 10G 的文件,它们比 fallocate 和 truncate 要慢很多

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:57:31  更:2022-04-09 18:59:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:41:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码