該文檔主要是介紹/dev/zero和/dev/null。
1. /dev/zero
正如我們所知道的,這是0的“發源地”。在HP-UX 10.30以後,就可以使用該文件了。對於HP 11.00和更早的操作系統,這個文件不是默認就有的,需要手工創建:
#mknod /dev/zero c 3 4 /dev/zero
大部分時候,/dev/zero作如下作用:
a. 清空文件
#cp /dev/zero bigfile
b. 作dd的時候用
#time dd if=/dev/zero of=6g bs=1024k count=$((6*1024))
通過使用/dev/zero,我們能得到如下的好處:
a. 目標文件全都是0,那麼在發生crash之類的時候,我們就很容易來檢查文件是否發生了變化。例如如果沒有任何錯誤,那麼"#xd 6g"這個命令就會簡單得返回三行。
b. 因為/dev/zero是一個內核設備文件,那麼從/dev/zero讀取,不會產生任何的物理I/O,這在做performance troubleshooting的時候就非常重要了。
2. /dev/null
/dev/null是UNIX系統中很神奇的一個功能,他是任何數據的墳墓,任何寫入其中的數據都將被忽略掉。這在做I/O測試的時候非常重要。
我們常常要用到如下的測試:
a. #fbackup -f - -i /usr | cat - >/dev/null
測試fbackup的讀取是否正常。
b. #(tar cf /dev/null /usr &);sar -d 1 5
測試tar的performance
c. #(time dd if=bigfile of=/dev/null bs=1024k&);sar -d 1 10
測試讀的performance,而沒有牽涉到任何的物理寫的動作。
/dev/null也給程序開發帶來很多好處,一些不需要的信息,都被丟棄到/dev/null。因此,如果/dev/null文件被刪除了,或者是/dev/null文件的權限改變了,那麼一些工具將不能正常的工作。
3. sparse文件
sparse文件充滿了“空洞”,它僅僅占用很少的存儲空間。例如,它用8K來代表6GB的sparse文件。
#echo | dd of=6g bs=1024k oseek=$((6*1024))
#ll 6g
-rw-rw-rw- 1 root sys 6442450945 May 31 15:13 6g
#du -ks 6g
8 6g
這個文件在你要測試是否有大文件限制的時候,非常有用,它給你節省了很多I/O和時間。
另外,在進行大數據量備份的時候,你可以用這個文件來測試一段,然後估計大約要花多少時間:
#time fbackup -f - -i 6g | cat - >/dev/null