Linux入职基础-3.3_设备文件zero与null

设备文件zero与null

一、/dev/zero

在Linux系统中,/dev/zero 是一个特殊的设备文件,可以无显示的无限输入文件,当读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。这就代表zero可以作为一个无限写入硬盘的文件。关于设备文件基础知识,请见前面一篇文章《常用设备文件介绍》

常见有两种用法:

①用它提供的字符流来覆盖信息。

②用它产生一个特定大小的空白文件。

例如:BSD就是通过mmap把/dev/zero映射到虚地址空间实现共享内存的。可以使用mmap将/dev/zero映射到一个虚拟的内存空间,这个操作的效果等同于使用一段匿名的内存(没有和任何文件相关)。

示例:清空分区数据(请慎重使用!并且把重要数据备份到其它硬盘!)

# 请不要执行下列代码,除非你确信要清空分区上的全部数据!

dd if=/dev/zero of=/dev/<destinationpartition>

本机操作步骤如下(再次提醒:不要在企业生产环境的系统中进行以下操作练习!避免造成数据丢失!

##显示本机分区信息

[root@0xfffff~]# fdisk -l

Disk/dev/sda: 77.8 GB, 77860500992 bytes

255heads, 63 sectors/track, 9466 cylinders

Units= cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id  System

/dev/sda1   *          1          13      104391  83  Linux

/dev/sda2              14         650    5116702+  83  Linux

/dev/sda3             651        3200   20482875   83  Linux

/dev/sda4            3201        9729   52444192+   5  Extended

/dev/sda5            3201        5750   20482843+  83  Linux

/dev/sda6            5751        7025   10241406   83  Linux

/dev/sda7            7026        8300   10241406   83  Linux

/dev/sda8            8301        8555    2048256   82  Linux swap / Solaris

/dev/sda9            8556        8810    2048256   83  Linux

/dev/sda10           8811        8872      497983+  b  W95 FAT32

##查看分区挂载情况:

[root@0xfffff~]# df

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda2              4956316    558664  4141820  12% /

/dev/sda9              1984016     35988  1845616   2% /tmp

/dev/sda7              9920592    153820  9254704   2% /home

/dev/sda5             19840892   2156872 16659880  12% /usr

/dev/sda6              9920592    153940  9254584   2% /usr/local

/dev/sda3             19840924    229748 18587036   2% /var

/dev/sda1               101086     24746    71121  26% /boot

tmpfs                   967188         0   967188   0% /dev/shm

##分区/dev/sda10没有挂载上目录,新建目录挂载

[root@0xfffff~]# mkdir /tmp/vfat32

[root@0xfffff~]# mount /dev/sda10 /tmp/vfat32/

##查看分区内文件信息,目录中有很多文件,备份出到其他目录

[root@0xfffff~]# ll /tmp/vfat32/

total18880

-rw-r--r--1 root root    69815 Dec 20  2010 config-2.6.18-238.el5

drwxr-xr-x2 root root     1024 Nov 13 12:46 grub

-rw-------1 root root  2632985 Nov 12 23:39initrd-2.6.18-238.el5.img

-rw-r--r--1 root root  3056744 Nov 12 23:50initrd-2.6.18-238.el5kdump.img

drwx------2 root root    12288 Nov 13 07:33lost+found

-rw-r--r--1 root root   112421 Dec 20  2010 symvers-2.6.18-238.el5.gz

-rw-r--r--1 root root   979708 Dec 20  2010 System.map-2.6.18-238.el5

-rw-r--r--1 root root 10485760 Nov 19 20:49 testing.img

-rw-r--r--1 root root  1888084 Dec 20  2010 vmlinuz-2.6.18-238.el5

##备份好分区中数据后,进行以下操作(慎重!)

[root@0xfffff~]# dd  if=/dev/zero  of=/dev/sda10

##再次查看分区数据

[root@0xfffff~]# ll /tmp/vfat32/

total0

##结果分区数据全部清空!

示例:创建一个空白文件

创建一个名为'goodbar'大小为1 MiB的文件,以"0"填充:

dd if=/dev/zero  of=goodbar  count=1024  bs=1024

[root@0xfffff ~]# ddif=/dev/zero  of=goodbar  count=1024 bs=1024

1024+0 records in

1024+0 records out

1048576 bytes (1.0 MB) copied, 0.0150271seconds, 69.8 MB/s

[root@0xfffff ~]# llgoodbar

-rw-r--r-- 1 root root 1048576 Dec 13 21:20goodbar

[root@0xfffff ~]# filegoodbar

goodbar: data  #goodbar文件显示为数据文件

二、输入与输出流

Linux有几种输入输出流,它们分别与几个数字有如下的对应关系:

0-标准输入流(stdin)

1-标准输出流(stdout)

2-标准错误流(stderr)

> 代表重定向到哪里

示例

[root@0xfffff ~]# echo"test123.com" > ~/test123.txt

[root@0xfffff ~]# cat test123.txt

test123.com

默认的重定向动作是针对stdout(1)的,比如”ls -l > result”就等价于”ls -l 1 > result”。

示例

[root@0xfffff~]# echo "hao123.com " 1>~/hao123.txt

[root@0xfffff~]# cat hao123.txt

hao123.com

”2>&1″的意思就是将stderr重定向至stdout,并一起在屏幕上显示出来。

三、/dev/null

在Linux系统中代表空设备文件,可以理解为windows下的垃圾桶。所有写入它的内容都会永远丢失,而尝试从它那儿读取内容则什么也读不到。

示例

[root@0xfffff ~]# cat hao123.txt>/dev/null  # 文件内容不会输出到标准输出。

[root@0xfffff ~]#

[root@0xfffff ~]# cat ha123123.txt2>/dev/null #没有这文件,但是错误信息不会输出。 [root@0xfffff ~]#

四、测试服务器硬盘的读写性能

安装完linux系统,几个硬盘亦在RAID模式下,这时需要测试硬盘IO性能,那就可用/dev/zero和/dev/null及命令dd测试一下。一般这个测试记录是在服务器开始部署与后期性能优化方面重要的参考依据!并且会记录存档的。

示例

①测试纯写速度,通过dd命令将/dev/zero中的无限0x00写到文件中。

##在/var目录下创建一个test文件

[root@0xfffff ~]# cd /var

[root@0xfffff var]# touch test

[root@0xfffff var]#time dd if=/dev/zero of=/var/test bs=2k count=1000000

下图结果:写速每秒44.4M,2G用了46秒

②再来测试纯读速度,我们还是利用dd命令

[root@0xfffff var]# time dd if=/var/test of=/dev/null bs=2k count=1000000

下图结果:读速为每秒68MB2G用了30秒。

③再来测试读写速度,在/usr下创建一个test1文件,用dd命令往/usr/test1中写入/var/test中的数据。

下图结果:读写速度为每秒17.3MB,2G用了58.6秒

这个测试数据的信息量可逐步不断加大(依据服务器的用途),新服务器一般都会记录保存,便于在后期运维过程的比对。

典故:以前在职于XXX公司,来一批服务器(9台),同样的系统和安装方式(无人值守安装),硬件标配说明一样!我的前辈们发现其中两台的测试数据相差太多,把服务器换货后,测试正常!


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值