- 論壇徽章:
- 0
|
轉(zhuǎn)載
a、lun的概念
lun的全稱是logical unit number,也就是邏輯單元號(hào)。我們知道scsi總線上可掛接的設(shè)備數(shù)量是有限的,一般為6個(gè)或者15個(gè),我們可以用target ID(也有稱為scsi id的)來描述這些設(shè)備,設(shè)備只要一加入系統(tǒng),就有一個(gè)代號(hào),我們?cè)趨^(qū)別設(shè)備的時(shí)候,只要說幾號(hào)幾號(hào)就ok了。
而實(shí)際上我們需要用來描述的對(duì)象,是遠(yuǎn)遠(yuǎn)超過該數(shù)字的,于是我們引進(jìn)了lun的概念,也就是說lun id的作用就是擴(kuò)充了target id。每個(gè)target下都可以有多個(gè)lun device,我們通常簡(jiǎn)稱lun device為lun,這樣就可以說每個(gè)設(shè)備的描述就有原來的target x變成target x lun y了,那么顯而易見的,我們描述設(shè)備的能力增強(qiáng)了.就好比,以前你給別人郵寄東西,寫地址的時(shí)候,可以寫:
xx市人民大街54號(hào) xxx(收)
但是自從高樓大廈越來越多,你不得不這么寫:
xx市人民大街54號(hào)xx大廈518室 xxx (收)
所以我們可以總結(jié)一下,lun就是我們?yōu)榱耸褂煤兔枋龈嘣O(shè)備及對(duì)象而引進(jìn)的一個(gè)方法而已,一點(diǎn)也沒什么特別的地方.
b、lun是什么東西?
lun id不等于某個(gè)設(shè)備,只是個(gè)號(hào)碼而已,不代表任何實(shí)體屬性,在我們的實(shí)際環(huán)境里,我們碰到的lun可能是磁盤空間,可能是磁帶機(jī),或者是media changer等等.
lun的神秘之處(相對(duì)于一些新手來說)在于,它很多時(shí)候不是什么可見的實(shí)體,而是一些虛擬的對(duì)象。比如一個(gè)陣列柜,主機(jī)那邊看作是一個(gè)target device,那為了某些特殊需要,我們要將磁盤陣列柜的磁盤空間劃分成若干個(gè)小的單元給主機(jī)來用,于是就產(chǎn)生了一些什么邏輯驅(qū)動(dòng)器的說法,也就是比target device級(jí)別更低的邏輯對(duì)象,我們習(xí)慣于把這些更小的磁盤資源稱之為lun0,lun1,lun2....什么的。而操作系統(tǒng)的機(jī)制使然,操作系統(tǒng)識(shí)別的最小存儲(chǔ)對(duì)象級(jí)別就是lun device,這是一個(gè)邏輯對(duì)象,所以很多時(shí)候被稱之為logical device。
有人說,我的windows里,就認(rèn)到一個(gè)磁盤呀,沒看到什么lun的說法,是不是lun=physical disk呢?回答是否定的,只要你注意,磁盤的屬性里就可以看到有一個(gè)lun的值,只是因?yàn)槟愕膁isk沒有被劃分為多個(gè)存儲(chǔ)資源對(duì)象,而將整個(gè)磁盤當(dāng)作一個(gè)lun來用,lun id默認(rèn)為零,如此而已。
我們?cè)?jīng)碰到過這樣的問題,比如有人問,我們有一個(gè)磁盤陣列,連到了兩個(gè)主機(jī)上,我們劃分了一個(gè)lun給兩個(gè)主機(jī)認(rèn)到,然后我們想,先在操作系統(tǒng)將磁盤分為兩個(gè)區(qū),讓兩個(gè)主機(jī)分別使用兩個(gè)分區(qū),然后再出現(xiàn)某一臺(tái)主機(jī)宕機(jī)之后,使用集群軟件將該分區(qū)切換到另外一個(gè)主機(jī)上去,這樣可行嗎?答案也是否定的,集群軟件操作的磁盤單元是lun,而不是分區(qū),所以該操作是不可行的。當(dāng)然,在一些環(huán)境,一般也是一些要求比較低的環(huán)境,可以在多個(gè)主機(jī)上掛載不同的磁盤分區(qū),但是這種情況下,實(shí)際上是沒有涉及到磁盤的切換的,所以在一些高要求的環(huán)境里,這種情況根本就不允許存在。
還要說明的地方是,在有些廠商和有些產(chǎn)品的概念里,lun id被綁定到了具體的device上,比如ibm的一些帶庫(kù),整個(gè)帶庫(kù)只有一個(gè)target id,然后changer,tape drive被分別分配為lun0,lun1,lun2.....,但是我們要注意到,這只是產(chǎn)品做了特別設(shè)計(jì),也是少數(shù)情況。
c、存儲(chǔ)和主機(jī)的電氣獨(dú)立時(shí)代的lun的概念
還有很多新手總是把陣列里面的磁盤和主機(jī)的內(nèi)部磁盤的一些概念搞混淆了。
在磁盤陣列和磁帶庫(kù)大行其道的時(shí)代,存儲(chǔ)越來越智能化,越來越像一個(gè)獨(dú)立的機(jī)器,實(shí)際上存儲(chǔ)和主機(jī)的電氣獨(dú)立本來就是一個(gè)必然趨勢(shì),俗話說得好,兒大要分家嘛。在存儲(chǔ)越來越重要的時(shí)代,存儲(chǔ)要自立門戶是必然的事。
如果我們把存儲(chǔ)當(dāng)作一個(gè)獨(dú)立的主機(jī)來看,理解起來就很簡(jiǎn)單了。我們說到lun的概念的時(shí)候,我們就要將分為兩個(gè)層面。一個(gè)層面就是在陣列這個(gè)機(jī)器的os識(shí)別到的范圍,一個(gè)層面就是服務(wù)器的os識(shí)別到的范圍。這兩個(gè)層面是相對(duì)獨(dú)立的,因?yàn)槿绻覀儼汛鎯?chǔ)當(dāng)作一個(gè)主機(jī)來看,那么它自然有自己的device,target,lun之說,而服務(wù)器也有自己的device,target,lun之說;另外一方面,這兩個(gè)層面又是相互關(guān)聯(lián)的,一個(gè)陣列的控制系統(tǒng),大多都有虛擬化的功能,陣列想讓主機(jī)看到什么樣的東西,主機(jī)才能看到相應(yīng)的東西。當(dāng)然,服務(wù)器識(shí)別到的最小的存儲(chǔ)資源,就是lun級(jí)別的。那么主機(jī)的HBA卡看到的存儲(chǔ)上的存儲(chǔ)資源就靠主要兩個(gè)東西來定位,一個(gè)就是存儲(chǔ)系統(tǒng)的控制器(target),一個(gè)就是lun id,這個(gè)lun是由存儲(chǔ)的控制系統(tǒng)給定的,是存儲(chǔ)系統(tǒng)的某部分存儲(chǔ)資源。
d、lun masking,lun mapping
我們有了獨(dú)立的磁盤陣列用了之后,服務(wù)器只要看到存儲(chǔ)的控制系統(tǒng),就有可能使用磁盤陣列的磁盤資源,但是磁盤陣列不可能只為某一個(gè)服務(wù)器來使用,所以他必須管制主機(jī)使用某部分磁盤資源。這個(gè)管制分為兩個(gè)部分:一部分就是lun mapping,類似于綠色通道,就是保證服務(wù)器能看到某部分存儲(chǔ)資源,一部分就是lun masking,類似于警戒線,就是保證服務(wù)器只可訪問給它分配的存儲(chǔ)資源,而沒分配給服務(wù)器的資源,就不要染指了。
實(shí)現(xiàn)lun masking和lun mapping有三種方法:一個(gè)是基于存儲(chǔ)控制系統(tǒng)來設(shè)置,一個(gè)是基于存儲(chǔ)交換系統(tǒng)來設(shè)置,一個(gè)是基于服務(wù)器os來設(shè)置。
基于存儲(chǔ)控制系統(tǒng)得設(shè)置,是比較常見的設(shè)置,比如很多磁盤陣列的控制系統(tǒng),本身就能設(shè)置lun被某服務(wù)器看到。比如FastT的partition功能。
基于存儲(chǔ)交換系統(tǒng)的設(shè)置,也是一種常用的方法,比如常說的zoning。
基于服務(wù)器os的設(shè)置,比較少采用,一般采用安裝某些操作系統(tǒng)上安裝某些軟件來實(shí)現(xiàn),因?yàn)檫@個(gè)方法全靠服務(wù)器自覺,所以比較少用,呵呵。
e、lun的multi-path
現(xiàn)在,存儲(chǔ)網(wǎng)絡(luò)越來越發(fā)達(dá)了,一個(gè)lun有多條通路可以訪問也不是新鮮事了。
服務(wù)器使用多個(gè)HBA連接到存儲(chǔ)網(wǎng)絡(luò),存儲(chǔ)網(wǎng)絡(luò)又可能是由多個(gè)交換設(shè)備組成,而存儲(chǔ)系統(tǒng)又可能有多個(gè)控制器和鏈路,lun到服務(wù)器的存儲(chǔ)網(wǎng)絡(luò)鏈路又可能存在著多條不同的邏輯鏈路。那么,必然的,同一個(gè)physical lun在服務(wù)器上必然被識(shí)別為多個(gè)設(shè)備。因?yàn)閛s區(qū)別設(shè)備無非用的是總線,target id,lun id來,只要號(hào)碼不同,就認(rèn)為是不同的設(shè)備。
由于上面的情況,多路徑管理軟件應(yīng)運(yùn)而生了,比如emc的powerpath,這個(gè)軟件的作用就是讓操作系統(tǒng)知道那些操作系統(tǒng)識(shí)別到lun實(shí)際上是一個(gè)真正的physical lun,具體的做法,就是生成一個(gè)特別的設(shè)備文件,操作系統(tǒng)操作這個(gè)特殊的設(shè)備文件。而我們知道,設(shè)備文件+driver+firmware的一個(gè)作用,就是告訴操作系統(tǒng)該怎么使用這個(gè)設(shè)備。那么就是說,多路徑管理軟件從driver和設(shè)備文件著手,告訴了操作系統(tǒng)怎么來處理這些身份復(fù)雜的lun。
/dsk 是塊設(shè)備,/rdsk是裸設(shè)備。
用newfs在/rdsk上創(chuàng)建了文件系統(tǒng),便有了塊設(shè)備。
應(yīng)用程序可以繞過操作系統(tǒng),直接訪問裸設(shè)備,不經(jīng)過文件系統(tǒng)的緩沖。
而塊設(shè)備本身是操作系統(tǒng)文件系統(tǒng)的一部分。
是/dsk是磁盤設(shè)備在操作系統(tǒng)中映射。
所以newfs肯定用裸設(shè)備,mount肯定用塊設(shè)備,以此類推
rdsk與dsk的區(qū)別
我覺得你這么理解可能到最后根本不明白,然后糊涂了事。
你應(yīng)該知道,操作系統(tǒng)的主要功能就是控制硬件?刂朴布姆椒ň褪菫橛布④浖䴓(biāo)準(zhǔn)。那么這個(gè)標(biāo)準(zhǔn)實(shí)際上就是軟,硬件之間的接口。把計(jì)算機(jī)從硬件之間的電路聯(lián)系向軟件與硬件間的邏輯聯(lián)系建立起來的方法。
比如,你有1個(gè)文件想寫進(jìn)硬盤。那么,首先是應(yīng)用程序通知操作系統(tǒng),現(xiàn)在要寫文件到磁盤。這是一個(gè)任務(wù),此時(shí)的硬盤并沒有開始工作,而是在操作系統(tǒng)的控制隊(duì)列中排隊(duì)。操作系統(tǒng)開始要執(zhí)行這個(gè)任務(wù)的時(shí)候,是向/dev/dsk中的設(shè)備去寫,也就是向以字節(jié)為單位的塊中去寫,寫入的是邏輯設(shè)備。然后,再通過操作系統(tǒng),把/dev/dsk中的以字節(jié)為單位的邏輯數(shù)據(jù),轉(zhuǎn)成/dev/rdsk中以扇區(qū)為單位的物理設(shè)備中,到達(dá)/dev/rdsk的時(shí)候,文件就被真實(shí)的寫進(jìn)磁盤了。這個(gè)過程當(dāng)然是非常短暫的,很多情況下是不會(huì)被人類察覺的速度。所以,我們就很難看到這些動(dòng)作,而使這些動(dòng)作變的難以理解了。
總之,我們平時(shí)理解邏輯是虛的,物理是實(shí)際存在的。但是在計(jì)算機(jī)中,邏輯的數(shù)據(jù)和設(shè)備是真實(shí)存在的,但是看不見,摸不到,比空氣還要虛幻而已。而物理設(shè)備通常是可以看得到,摸的到的設(shè)備。操作系統(tǒng)就是容納和管理邏輯數(shù)據(jù)而用的。在物理設(shè)備和邏輯設(shè)備之間進(jìn)行不停的轉(zhuǎn)換。
關(guān)于這個(gè)任務(wù),有些地方可能寫的不是很對(duì),但是大致的意思應(yīng)該如此。
/dev/dsk和/dev/rdsk
/dev/dsk和/dev/rdsk的區(qū)別。
特殊設(shè)備文件都被存放在/dev目錄中,或是/dev/dsk和/dev/rdsk。
在這些目錄底下包含了軟盤和硬盤的unix設(shè)備文件名。
比如:
/fd* 代表軟盤設(shè)備
/tty* 代表串口設(shè)備
/lp* 代表并口設(shè)備
運(yùn)行l(wèi)s -l,如果在顯示文件系統(tǒng)權(quán)限之前的第一列中可以看到一個(gè)b的標(biāo)志,他代表的是一個(gè)塊設(shè)備文件。
如果在顯示文件系統(tǒng)權(quán)限之前的第一列中可以看到一個(gè)c的標(biāo)志,他代表的是字符特殊設(shè)備包括串口、并口、磁盤設(shè)備、磁帶設(shè)備。
現(xiàn)在咱們就來確認(rèn)“裸”這個(gè)概念。
大多數(shù)塊設(shè)備也有一個(gè)字符設(shè)備接口,這些字符設(shè)備接口又叫“裸”(Raw)接口。
“裸”(Raw)設(shè)備是字符設(shè)備;也就是一個(gè)已經(jīng)存在的塊設(shè)備的字符接口。
運(yùn)行l(wèi)s -l,你就能識(shí)別裸設(shè)備接口,在文件或目錄的前面可以看到r的前綴(列如:/dev/rdsk/f03ht)。
裸設(shè)備的訪問權(quán)限的第一列也有一個(gè)c的標(biāo)志。
裸設(shè)備接口允許有效的傳輸大于1KB的數(shù)據(jù),所以大多用在存儲(chǔ)數(shù)據(jù)庫(kù)的文件
/dev/dsk /dev/rdsk 區(qū)別 從網(wǎng)上摘了兩段話:
1,
http://www.unix.com/filesystems-disks-and-memory/6224-difference-dsk-rdsk.html
When a process sends requests to a rdsk type special file, it is talking directly to the driver. A read or a write goes directly to or from device. Reads and writes must be aligned on DEV_BSIZE boundaries or the results are undefined.
When a process sends requests to a dsk type special file, it is talking to high level os routines. A read or write goes to or from the buffer cache. If needed, the os will read new data into the buffer cache. There are no alignment restrictions. You can read or write any collection of bytes anywhere on the device. The os will send aligned requests to the driver, but this is hidden from the process. I/O requests that arise from accesses to a dsk type special file enter the driver via its strategy entry point, not the read and write entry points. The driver may resequence the requests to optimize overall performance.
2,
http://www.idevelopment.info/data/Unix/Solaris/SOLARIS_UnderstandingDiskDeviceFiles.shtml
Overview
Under Solaris, one of the most involved UNIX devices to understand is the disk device file. Here are several key points that may help:
In many cases, a disk device file (i.e. /dev/dsk/c0t2d0s7) refers to a particular partition (aka "slice") of a disk, and not the entire physical device. There are several device files which refer to the entire physical device, but are rarely used.
For every disk device, there are usually two device files - the block device and the character ("raw") device. In general:
block devices are generally stored under /dev/dsk and used for filesystem type access (e.g mount)
character devices are generally stored under /dev/rdsk used for everything else (e.g. fsck, newfs, etc..)
Discs are generally attached to a controller (or a bus) which can handle multiple devices. IDE and SCSI are both common attach methods. This tends to make disk device filename more complex than other types of devices.
/etc/vfstab
To see the difference between the block device and character device for a device, consider the following. The /etc/vfstab contains entries for a single filesystem on a Solaris server:
/dev/dsk/c0t2d0s7 /dev/rdsk/c0t2d0s7 /opt ufs 3 yes -
The first 2 fields in the above entry, list the same disk device as both a block device ("dsk") and character device ("rdsk"). The block device is used by mount when mounting the filesystem while the character device is used by fsck when checking the filesystem and newfs when creating the filesystem.. Both fields must be present in /etc/vfstab.
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/52888/showart_1902280.html |
|