【OS】Linux下 /dev 常見特殊裝置介紹與應用[loop]

lhrbest發表於2017-07-27

【OS】Linux下 /dev 常見特殊裝置介紹與應用[loop]



在這裡詳細介紹一下loop裝置。在進行某些測試的時候,往往需要新建一些磁碟分割槽或者裝置等,此時對硬碟進行重新劃分往往不太方便這種情況下,可以通過loop偽裝置來實現迴圈掛載,從而達到目的。在使用之前,迴圈裝置必須與現存檔案系統上的檔案相關聯。這種關聯將提供給使用者一個應用程式介面,介面將允許檔案視為塊特殊檔案(參見裝置檔案系統)使用。因此,如果檔案中包含一個完整的檔案系統,那麼這個檔案就能如同磁碟裝置一般被掛載。這種裝置檔案經常被用於光碟或是磁碟映象。通過迴圈掛載來掛載包含檔案系統的檔案,便使處在這個檔案系統中的檔案得以被訪問。這些檔案將出現在掛載點目錄。

Linux中,裝置名按照相應裝置驅動程式的符號表項進行命名。這些裝置被叫做“loop”裝置,裝置節點通常命名為/dev/loop0、/dev/loop1之類。

預設情況下Linux支援的loop裝置是8個。如果需要超過8個的loop裝置,那麼可能會遇到類似的錯誤“no such device”或“could not find any free loop device”,這是因為超過了可用loop設定裝置的最大限制,此時可以通過修改/etc/modprobe.conf配置檔案,增加如下引數的方式進行擴充套件:

options loop max_loop=20  #此次增加到20

儲存退出即可,如果要馬上生效的話,那麼可以通過modprobe -v loop命令立即載入該模組。

還有一種擴充套件loop裝置數量辦法是,用mknod命令建立loop塊裝置:

mknod -m 0660 /dev/loopX b 7 X

其中的X代表第Xloop裝置。示例如下:

[root@rhel6lhr dev]# ll loop*

brw-rw---- 1 root disk 7, 0 Jul 27 09:39 loop0

brw-rw---- 1 root disk 7, 1 Jul 27 09:39 loop1

brw-rw---- 1 root disk 7, 2 Jul 27 09:39 loop2

brw-rw---- 1 root disk 7, 3 Jul 27 09:39 loop3

brw-rw---- 1 root disk 7, 4 Jul 27 09:39 loop4

brw-rw---- 1 root disk 7, 5 Jul 27 09:39 loop5

brw-rw---- 1 root disk 7, 6 Jul 27 09:39 loop6

brw-rw---- 1 root disk 7, 7 Jul 27 09:39 loop7

[root@rhel6lhr dev]# mknod -m 0660 /dev/loop8 b 7 8  

[root@rhel6lhr dev]# ll loop*

brw-rw---- 1 root disk 7,  0 Jul 27 09:39 loop0

brw-rw---- 1 root disk 7,  1 Jul 27 09:39 loop1

brw-rw---- 1 root disk 7,  2 Jul 27 09:39 loop2

brw-rw---- 1 root disk 7,  3 Jul 27 09:39 loop3

brw-rw---- 1 root disk 7,  4 Jul 27 09:39 loop4

brw-rw---- 1 root disk 7,  5 Jul 27 09:39 loop5

brw-rw---- 1 root disk 7,  6 Jul 27 09:39 loop6

brw-rw---- 1 root disk 7,  7 Jul 27 09:39 loop7

brw-rw---- 1 root root 7,  8 Jul 27 19:36 loop8

[root@rhel6lhr dev]# chown root:disk /dev/loop8

[root@rhel6lhr dev]# chown root:disk /dev/loop20

[root@rhel6lhr dev]# ll loop*

brw-rw---- 1 root disk 7,  0 Jul 27 09:39 loop0

brw-rw---- 1 root disk 7,  1 Jul 27 09:39 loop1

brw-rw---- 1 root disk 7,  2 Jul 27 09:39 loop2

brw-rw---- 1 root disk 7,  3 Jul 27 09:39 loop3

brw-rw---- 1 root disk 7,  4 Jul 27 09:39 loop4

brw-rw---- 1 root disk 7,  5 Jul 27 09:39 loop5

brw-rw---- 1 root disk 7,  6 Jul 27 09:39 loop6

brw-rw---- 1 root disk 7,  7 Jul 27 09:39 loop7

brw-rw---- 1 root disk 7,  8 Jul 27 19:36 loop8

使用命令losetup -a可以查詢目前被使用的loop裝置:

[root@rhel6lhr dev]# losetup -a

/dev/loop0: [0005]:6631 (/dev/sr0)

/dev/loop1: [fd01]:131081 (/u05/oracle/asmdisk/disk1)

/dev/loop2: [fd01]:131080 (/u05/oracle/asmdisk/disk2)

/dev/loop3: [fd01]:131082 (/u05/oracle/asmdisk/disk3)

/dev/loop4: [fd01]:131083 (/u05/oracle/asmdisk/disk4)

使用loop裝置可以建立ASM磁碟,通過Faking的方式不需要額外新增磁碟,可以在現有檔案系統上分配一些空間用於ASM磁碟,過程如下所示:

mkdir  -p  /oracle/asmdisk

dd if=/dev/zero of=/oracle/asmdisk/disk1 bs=1024k count=1000

dd if=/dev/zero of=/oracle/asmdisk/disk2 bs=1024k count=1000

 

/sbin/losetup /dev/loop1 /oracle/asmdisk/disk1

/sbin/losetup /dev/loop2 /oracle/asmdisk/disk2

 

raw /dev/raw/raw1 /dev/loop1

raw /dev/raw/raw2 /dev/loop2

 

chmod 660 /dev/raw/raw1

chmod 660 /dev/raw/raw2

chown oracle:dba /dev/raw/raw1

chown oracle:dba /dev/raw/raw2

將以下內容新增到檔案/etc/rc.local檔案中

/sbin/losetup /dev/loop1 /oracle/asmdisk/disk1

/sbin/losetup /dev/loop2 /oracle/asmdisk/disk2

 

raw /dev/raw/raw1 /dev/loop1

raw /dev/raw/raw2 /dev/loop2

 

chmod 660 /dev/raw/raw1

chmod 660 /dev/raw/raw2

chown oracle:dba /dev/raw/raw1

chown oracle:dba /dev/raw/raw2

這樣就可以使用ASM磁碟了。

& 說明:

有關如何建立ASM磁碟的更多內容請參考:http://blog.itpub.net/26736162/viewspace-1401193/

 








linux是檔案型系統,所有硬體如軟體都會在對於的目錄下面有相應的檔案表示。對於dev這個目錄,我們知道它下面的檔案,表示的是linux的裝置。在windows系統中,裝置大家很好理解,象硬碟,磁碟指的是實實在在硬體。而在檔案系統的linux下面,都有對於檔案與這些裝置關聯的。訪問它們就可以放到實際硬體,想想還是linux靈活了。變成檔案,操作該多簡單了。不用呼叫以前com,prt等介面了。直接讀檔案,寫檔案就可以向裝置傳送讀或者寫操作了。 按照讀寫儲存資料方式,我們可以把裝置分為以下幾種:字元型裝置,塊裝置,偽裝置。


一、裝置分類

字元型裝置

字元裝置是指每次與系統傳輸1個字元的裝置。這些裝置節點通常為傳真、虛擬終端和串列埠調變解調器、鍵盤之類裝置提供流通訊服務,它通常不支援隨機存取資料。 字元裝置在實現時,大多不使用快取器。系統直接從裝置讀取/寫入每一個字元。例如,鍵盤這種裝置提供的就是一個資料流,當你敲入“cnblogs”這個字串時,鍵盤驅動程式會按照和輸入完全相同的順序返回這個由七個字元組成的資料流。它們是順序的,先返回c,最後是s。

塊裝置

塊裝置是指與系統間用塊的方式移動資料的裝置。這些裝置節點通常代表可定址裝置,如硬碟、CD-ROM和記憶體區域。

塊裝置通常支援隨機存取和定址,並使用快取器。作業系統為輸入輸出分配了快取以儲存一塊資料。當程式向裝置傳送了讀取或者寫入資料的請求時,系統把資料中的每一個字元儲存在適當的快取中。當快取被填滿時,會採取適當的操作(把資料傳走),而後系統清空快取。它與字元裝置不同之處就是,是否支援隨機儲存。字元型是流形式,逐一儲存。

偽裝置

在類Unix作業系統中,裝置節點並不一定要對應物理裝置。沒有這種對應關係的裝置是偽裝置。作業系統運用了它們提供的多種功能。部份經常使用到的偽裝置包括: null,zero,full,loop,random,urandom

二、特殊裝置及使用

這裡說到特殊裝置除了硬碟主機板等,只是它在linux shell命令裡面,有特殊的作用,因此把它們單獨拿出來。這些裝置分別是:

/dev/stdin
/dev/stdout
/dev/stderr
/dev/null
/dev/zero
/dev/full
/dev/random,urandom
/dev/fd
/dev/tcp|upd
/dev/loop

1、標準輸出輸入裝置

還記得上次說的,linux重定向嗎?可以看下:linux shell資料重定向(輸入重定向與輸出重定向)詳細分析 。它們就是與幾個特殊檔案描述符對應,fd0,fd1,fd2 (stdin,stdout,stderr)

如:

[chengmo@centos5 shell]$ cat>teststdin</dev/stdin
test
#ctrl+D
#cat從/dev/stdin獲得資料,然後將標準輸出,輸入的到teststdin檔案
[chengmo@centos5 shell]$ cat teststdin
test
  
[chengmo@centos5 shell]$ cat>teststdin
test
#ctrl+D
#不指定輸入,預設輸入裝置就是/dev/stdinn


/dev/stdin指的就是鍵盤裝置

[chengmo@centos5 shell]$ cat test.sh >/dev/stdout |grep 'echo'
echo "very good!";
echo "good!";
echo "pass!";
echo "no pass!"
#/dev/stdout指向就是標準輸出,因此重定向給它的資料,最終傳送到螢幕上(fd1)
      
[chengmo@centos5 shell]$ cat test.sh  |grep 'echo'           
echo "very good!";
echo "good!";
echo "pass!";
echo "no pass!";
  
      
[chengmo@centos5 shell]$ cat test.sh >/dev/stderr |grep 'echo'  
#!/bin/sh
  
scores=40;
if [[ $scores -gt 90 ]]; then
    echo "very good!";
elif [[ $scores -gt 80 ]]; then
    echo "good!";
elif [[ $scores -gt 60 ]]; then
    echo "pass!";
else
    echo "no pass!";
fi;
#/dev/stderr 指是錯誤輸出,預設也是輸出到螢幕上面,但是它的內容不能通過管道傳遞給grep,管道只能傳遞標準輸出


/dev/null裝置

是個黑洞裝置,它丟棄一切寫入其中資料,空裝置通常被用於丟棄不需要的輸出流。記得當年用windows時候,有個類似的裝置:NUL ,跟這個功能一樣。任何寫入該裝置資料都會被丟棄掉。從這個裡面讀取資料返回是空。將一些不用內容經常傳送給這個裝置,丟棄不需要的資料。

如:

[chengmo@centos5 shell]$ cat /dev/null
[chengmo@centos5 shell]$ cat test.sh >/dev/null
#讀該裝置為空,寫入該裝置資料都丟棄了



/dev/zero裝置

在類UNIX 作業系統中, /dev/zero 是一個特殊的檔案,當你讀它的時候,它會提供無限的空字元(NULL, ASCII NUL, 0x00)。其中的一個典型用法是用它提供的字元流來覆蓋資訊,另一個常見用法是產生一個特定大小的空白檔案。

如:

[chengmo@centos5 shell]$ dd if=/dev/zero of=testzero count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0107194 seconds, 97.8 MB/s
#建立一個大小為1M檔案,該檔案一個塊是1024位元組,一共是1024塊(剛好1M),用/dev/zero檔案內容填充它。輸出建立到:testzero檔案
  
  
[chengmo@centos5 shell]$dd if=/dev/zero of=/dev/磁碟分割槽
#這個命令一定不要隨便用,有點象windows裡面的粉碎檔案工具。不過它是用\0x00填充整個分割槽。這樣做資料是不可以恢復的了。
  
[chengmo@centos5 shell]$cat /dev/zero>testinputzero
#這個命令也不能隨便使用咯,/dev/zero裝置一個特效是,如果你讀取的話,是一個死迴圈會輸出無窮的\x00,這樣你將建立一個用\x00填充的檔案。如果你沒有限制該使用者磁碟配額。它將耗盡整個磁碟空間。


在linux資源配額限制裡面,如果沒有現在普通使用者的磁碟空間利用,或記憶體使用。一個普通使用者就可以通過上面方法一會就塞滿整個磁碟。也可以通過while(true) {fork……}類程式,啟動無限執行緒,耗盡整個系統記憶體。


/dev/full裝置

類Unix系統中,/dev/full(常滿裝置)是一個特殊裝置檔案,總是在向其寫入時返回裝置無剩餘空間(錯誤碼為ENOSPC),讀取時則與/dev/zero相似,返回無限的空字元(NULL, ASCII NUL, 0x00)。這個裝置通常被用來測試程式在遇到磁碟無剩餘空間錯誤時的行為。

如:

[chengmo@centos5 shell]$ echo 'chengmo' >/dev/full
-bash: echo: write error: 裝置上沒有空間
[chengmo@centos5 shell]$ echo $?
1
#命令執行返回錯誤


/dev/random[urandom]

在類UNIX作業系統中,/dev/random是一個特殊的裝置檔案,可以用作隨機數發生器或偽隨機數發生器。它允許程式訪問來自裝置驅動程式或其它來源的背景噪聲。常用作隨機數發生器。具體參考:linux shell實現隨機數多種方法(date,random,uuid)


/dev/fd

記錄使用者開啟的檔案描述符

[chengmo@centos5 shell]$ ls /dev/fd/
0 1 2 3

詳細參考:

linux shell資料重定向(輸入重定向與輸出重定向)詳細分析 檔案描述符介紹。


/dev/tcp[udp]/host/port

讀取該類形式裝置,將會建立一個連線host主機port埠的tcp[upd]連線。開啟一個socket通訊介面。

詳細使用可以參考:

linux shell 指令碼實現tcp/upd協議通訊(重定向應用)


/dev/loop

在類UNIX作業系統中,Loop裝置 可以把loop 檔案,作為塊裝置掛載使用。

如:

[chengmo@centos5 shell]$mount -o loop example.img /home/chengmo/img

#將img映象檔案掛載到/home/chengmo/img目錄下面,有了這個裝置,我們不需要通過虛擬光碟機就可以讀虛擬磁碟格式的檔案。

說了很多linux 特殊裝置,其它象cpu,記憶體,磁碟,網路,鍵盤,終端裝置。跟我們windows裡面常見差不多。有什麼問題,歡迎交流!



       
在日常的後臺測試中,經常會在一些諸如dd等操作中用到一些系統的裝置型別,如/dev/zero、/dev/null等,接下來我們就將對這些裝置型別的具體含義以及其適用場景進行一個簡單的介紹,以便於大家在今後的測試工作中可以更好的對其進行了解和使用。


1、/dev/null(可以理解為系統的垃圾桶)

把 /dev/null 看作"黑洞", 它非常等價於一個只寫檔案, 所有寫入它的內容都會永遠丟失。而嘗試從它那兒讀取內容則什麼也讀不到。然而, /dev/null 對命令列和指令碼都非常的有用。

用法1:禁止標準輸出

cat $filename > /dev/null

解析:檔案內容丟失,而不會輸出到標準輸出。


用法2:禁止標準錯誤    

rm $badname 2> /dev/null 
解析:這樣錯誤資訊 [標準錯誤] 就被直接丟進垃圾桶了。


用法3:禁止標準輸出和標準錯誤的輸出    

cat $filename 2> /dev/null > /dev/null 
解析: 如果"$filename"不存在,將不會有任何錯誤資訊提示;
            如果"$filename"存在,檔案的內容不會列印到標準輸出;
因此Therefore, 上面的程式碼根本不會輸出任何資訊,當只想測試命令的退出碼而不想有任何輸出時非常有用。


用法4:自動清空某些檔案內容

cat /dev/null > /var/log/wtmp
解析:自動清空日誌檔案的內容 (特別適合處理這些由商業Web站點傳送的討厭的"cookies")


--------------------------------------------------------------------------------

例:隱藏cookie而不再使用

if [ -f ~/.netscape/cookies ]  # 如果存在則刪除.
then
    rm -f ~/.netscape/cookies
fi
ln -s /dev/null  ~/.netscape/cookies # 現在所有的cookies都會丟入黑洞而不會儲存在磁碟上了。

備註:

/dev/null ------它是空裝置,也稱為位桶(bit bucket)。任何寫入它的輸出都會被拋棄。如果不想讓訊息以標準輸出顯示或寫入檔案,那麼可以將訊息重定向到位桶。


2、/dev/zero(空檔案)

      像 /dev/null 一樣,/dev/zero也是一個偽檔案,但它實際上產生連續不斷的null的流(二進位制的零流,而不是ASCII型的)。寫入它的輸出會丟失不見,而從/dev/zero讀出一連串的null 也比較困難,雖然這也能通過od或一個十六進位制編輯器來做到。/dev/zero主要的用處是用來建立一個指定長度用於初始化的空檔案,就像臨時交換檔案。

例:dd一個20G大小的空間,不寫入任何內容。

dd if=/dev/zero of=test.img bs=1G count=20

備註:

/dev/zero------該裝置無窮盡地提供0,可以使用任何你需要的數目——裝置提供的要多的多。他可以用於向裝置或檔案寫入字串0。


3、/dev/random以及/dev/urandom(linux系統中的隨機數生成裝置)


Linux中的隨機數可以從兩個特殊的檔案中產生,一個是/dev/urandom.另外一個是/dev/random。

他們產生隨機數的原理是利用 當前系統的熵池來計算出固定一定數量的隨機位元,然後將這些位元作為位元組流返回。熵池就是當前系統的環境噪音,熵指的是一個系統的混亂程度,系統噪音可以 通過很多引數來評估,如記憶體的使用,檔案的使用量,不同型別的程式數量等等。如果當前環境噪音變化的不是很劇烈或者當前環境噪音很小,比如剛開機的時候, 而當前需要大量的隨機位元,這時產生的隨機數的隨機效果就不是很好了。

這就是為什麼會有/dev/urandom和/dev/random這兩種不同的檔案,後者在不能產生新的隨機數時會阻塞程式,而前者不會 (ublock),當然產生的隨機數效果就不太好了,這對加密解密這樣的應用來說就不是一種很好的選擇。/dev/random會阻塞當前的程式,直到根 據熵池產生新的隨機位元組之後才返回,所以使用/dev/random比使用/dev/urandom產生大量隨機數的速度要慢。

舉例:

[lxf@sg01 dd]$ dd if=/dev/random of=random.dat bs=1024b count=1 

       0+1 records in  

       0+1 records out  

      128 bytes (128 B) copied, 0.000169 seconds, 757 kB/s

[lxf@sg01 dd]$ dd if=/dev/urandom of=random.dat bs=1024b count=1  

      1+0 records in  

      1+0 records out  

      524288 bytes (524 kB) copied, 0.091297 seconds, 5.7 MB/s 

解析:

從上面的測試中,可以看到使用/dev/random產生隨機數的速度很慢,而且產生的量很有限,當然,/dev/urandom的隨機效果則好很多。





 

/dev/loop與裝置檔案系統


摘要:在進行測試的時候,我們往往需要新建一些磁碟分割槽或者裝置等,此時對硬碟進行重新劃分往往不太方面。這種情況下,我們可以通過偽裝置來實現迴圈掛載,從而達到目的。本文主要為你講解什麼是迴圈掛載,什麼是虛擬裝置,裝置和檔案系統有什麼關係。


1.迴圈掛載


類Unix系統中,/dev/loop(或稱vnd (vnode disk)、lofi(迴圈檔案介面))是一種偽裝置,這種裝置使得檔案可以如同塊裝置一般被訪問。

在使用之前,迴圈裝置必須與現存檔案系統上的檔案相關聯。這種關聯將提供給使用者一個應用程式介面,介面將允許檔案視為塊特殊檔案(參見裝置檔案系統)使用。因此,如果檔案中包含一個完整的檔案系統,那麼這個檔案就能如同磁碟裝置一般被掛載

這種裝置檔案經常被用於光碟或是磁碟映象。通過迴圈掛載來掛載包含檔案系統的檔案,便使處在這個檔案系統中的檔案得以被訪問。這些檔案將出現在掛載點目錄。


2.可用性


在各種作業系統中迴圈裝置的命名存在著一些混亂。各種類Unix作業系統中,功能性的迴圈裝置被以不同的名字命名。

在Linux中,裝置名按照相應裝置驅動程式的符號表項進行命名。這些裝置被叫做”loop“裝置,裝置節點通常命名為/dev/loop0/dev/loop1之類。 靜態裝置目錄可以用makedev指令碼建立,或者動態地由裝置檔案系統(udev)設施建立。 迴圈裝置的管理介面是 losetup,這是util-linux軟體包的一部分。

有時,迴圈裝置被錯誤地認為是迴環裝置,但是這個術語在Linux核心中是為網路裝置保留的(參見迴環裝置)。迴圈裝置的概念和迴環裝置不同,雖然在名字上有相似的地方。

NetBSDOpenBSD等BSD所派生的系統中,迴圈裝置被稱為“虛擬節點裝置”或“vnd”,並且裝置被置於 /dev/vnd0/dev/rvnd0 或/dev/svnd0等處。在檔案系統中,使用vnconfig程式來進行配置。

FreeBSD在發行版5之前和其他BSD系統一樣遵守約定,之後迴圈裝置便被納入記憶磁碟裝置("md")。目前使用mdconfig[1]程式進行配置。

Solaris/OpenSolaris中,迴圈裝置被稱為 "迴環檔案介面" 或 lofi,[2] 位於 /dev/lofi/1等處。SunOS 擁有 lofiadm 配置程式。"lofi"驅動程式支援只讀壓縮和可讀寫的加密。 自從1988年夏季開始更有SunOS/Solaris平臺的第三方驅動 "fbk"[3] (檔案模擬塊裝置,英文:File emulates Blockdevice)

Mac OS X實現了一個本地的映象掛載機制並作為其隨機訪問磁碟裝置的抽象。這些裝置如同普通裝置一樣出現在 /dev 中,讀寫操作被送往一個使用者模式的輔助程式,並由輔助程式負責讀取和寫入的操作。在使用者介面中當開啟磁碟映象的時候自動被啟用。這可以處理多種格式的碟片、CD-ROM 或 DVD 映象。

Microsoft Windows作業系統上並不能原生支援迴圈掛載(直到Windows 7,這個功能才被原生實現,並通過工具diskpart進行工作)。 [4] 然而,這項能力經常通過第三方程式得以實現,例如Daemon Tools 和 Alcohol 120% VMware的免費工具以及LTR Data (ImDisk)都可以實現類似的功能


3.例項


在目錄上掛載包含檔案系統的檔案一般需要兩步:


  1. 用一個迴圈裝置節點連線檔案。
  2. 在目錄上掛載該迴圈裝置


這兩個操作既可以用兩條命令來完成,也可以通過加上特殊的掛載符號的掛載命令來完成。第一個操作可以通過如Linux平臺下的losetup[5]或者是SunOS上的lofiadm[6]命令完成。

例如,如果 example.img 是一個包含檔案系統的常規檔案,並且 /home/you/dir 是 Linux使用者的目錄,超級使用者(root)或許可以通過執行如下的命令來將檔案掛載在目錄上:

losetup /dev/loop0 example.img
mount /dev/loop0 /home/you/dir 

其中第二條命令將裝置掛載於目錄 /home/you/dir。執行上述語句的效果便是檔案被作為檔案系統掛載,檔案的內容出現在被掛載的目錄中(以被掛載的目錄作為根目錄)。

此外 mount 工具常常可以勝任整個掛載的程式:

mount -o loop example.img /home/you/dir 

之後裝置便能用下列命令實現解除安裝:

umount /home/you/dir # 或者通過諸如 mount | grep "/home/you/dir" 
# 或是 losetup -a | grep example.img 的查詢找到與檔案相關聯的loop裝置號碼
# 並執行下列命令:(代表裝置號) umount /dev/loop  

在較底層的應用程式介面中,檔案的關聯與解除關聯通過在迴圈裝置上的ioctl 系統呼叫來實現。


4.裝置檔案



類Unix作業系統中,裝置檔案系統允許軟體通過標準輸入輸出系統呼叫與驅動程式互動,從而簡化了許多工。

裝置檔案系統包括裝置檔案裝置節點裝置特定檔案,它們是驅動程式介面,而在檔案系統中,它們就像是普通檔案


5.裝置


5.1塊裝置


塊裝置是指與系統間用塊的方式移動資料的裝置。這些裝置節點通常代表可定址裝置,如硬碟CD-ROM記憶體區域。

塊裝置通常支援隨機存取和定址,並使用快取器。作業系統為輸入輸出分配了快取以儲存一塊資料。當程式向裝置傳送了讀取或者寫入資料的請求時,系統把資料中的每一個字元儲存在適當的快取中。當快取被填滿時,會採取適當的操作(把資料傳走),而後系統清空快取。


5.2字元裝置


字元裝置是指每次與系統傳輸1個字元的裝置。這些裝置節點通常為傳真虛擬終端和串列埠調變解調器之類裝置提供流通訊服務,它通常不支援隨機存取資料。

字元裝置在實現時,大多不使用快取器。系統直接從裝置讀取/寫入每一個字元。


5.3偽裝置


在類Unix作業系統中,裝置節點並不一定要對應物理裝置。沒有這種對應關係的裝置是偽裝置。作業系統運用了它們提供的多種功能。部份經常使用到的偽裝置包括:

/dev/null 接受和丟棄所有輸入;即不產生任何輸出。 /dev/full 永遠在被填滿狀態的裝置。 /dev/loop Loop裝置 /dev/zero 產生連續的NUL字元的串流(數值為0)。 /dev/random 產生一個虛假隨機的任意長度字元串流。(Blocking) /dev/urandom 產生一個虛假隨機的任意長度字元串流。(Non-Blocking)


6.兩個相關的linux命令


 6.1dd命令


 dd - convert and copy a file

 bs=BYTES
              read and write up to BYTES bytes at a time

if:inputfile

of:outputfile


6.2losetup命令


  losetup - set up and control loop devices

  Delete loop:
            losetup -d loopdev...
       Print name of first unused loop device:
            losetup -f







About Me

.............................................................................................................................................

● 本文整理自網路

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群:230161599     微信群:私聊

● 聯絡我請加QQ好友(646634621),註明新增緣由

● 於 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

.............................................................................................................................................

小麥苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。

   小麥苗的微信公眾號          小麥苗的QQ群             小麥苗的微店

.............................................................................................................................................

【OS】Linux下 /dev 常見特殊裝置介紹與應用[loop]
DBA筆試面試講解
歡迎與我聯絡



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2142668/,如需轉載,請註明出處,否則將追究法律責任。

相關文章