创建虚拟的磁盘文件

Linux中的dd命令可以用来生成虚拟块设备文件,可以用于创建空镜像文件,也可以用于创建物理磁盘的镜像

dd if=/dev/zero of=file.img bs=1M count=1024

输出结果

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.885124 s, 1.2 GB/s
[root@k8s-node2 tmp]# du -sh file.img 
1.0G	file.img

可以看到,该命令生成了1个G的镜像文件,我们可以使用mkfs命令来对该文件进行文件系统初始化

# mkfs.xfs file.img 
meta-data=file.img               isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

查看该镜像文件的属性

file file.img 
file.img: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)

挂载该镜像文件

# mkdir /test
# mount file.img  /test/
# mount |grep /test
/tmp/file.img on /test type xfs (rw,relatime,attr2,inode64,noquota)

可以看到,该镜像文件已经成功的挂载到/test上了,可以对该目录进行读写

以上生成的镜像文件是”实心的“,也就是说,该文件一出来就会占用实际的磁盘大小,难免有些许浪费,我们可以使用dd的一些参数来创建稀疏型的镜像文件,在总容量不变的情况下,减小镜像文件的大小。

在dd的命令行中,增加一个seek参数,将写入次数count设置为0,如此就可以生成一个稀疏型的镜像文件,该文件初始大小为0。

# dd if=/dev/zero of=file2.img bs=1M seek=1024 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000238717 s, 0.0 kB/s
# du -sh file2.img 
0	file2.img

该镜像文件同样可以创建文件系统以及挂载

# mkfs.xfs file2.img 
meta-data=file2.img              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@k8s-node2 tmp]# mkdir /test2
[root@k8s-node2 tmp]# mount file2.img /test2/
[root@k8s-node2 tmp]# mount |grep /test2
/tmp/file2.img on /test2 type xfs (rw,relatime,attr2,inode64,noquota)

对比两个磁盘镜像文件可知,通过创建稀疏型的磁盘文件可以有效降低镜像文件的大小

# du -sh file*
11M	    file2.img
1.0G	file.img

你可能感兴趣的:(kubernetes,运维,虚拟化)