Solaris下,一個(gè)磁盤(pán)包含8個(gè)
分區,標記為0-7。此信息可以通過(guò)format命令,然后選擇一個(gè)硬盤(pán)來(lái)看到,例如,在我自己的系統中(Solaris 9,Ultra 60),顯示出來(lái)的信息如下:
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@1f,4000/scsi@3/sd@0,0
Specify disk (enter its number): 0
selecting c0t0d0
[disk formatted]
Warning: Current Disk has mounted partitions.
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
! - execute , then return
quit
format> p
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
! - execute , then return
quit
partition>
不要看到內容這么多,就被嚇住了,其實(shí),format命令之后0. c0t0d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>/pci@1f,4000/scsi@3/sd@0,0所顯示出來(lái)的含義很簡(jiǎn)單,0. c0t0d0就代表這臺Ultra 60里面只裝了一個(gè)硬盤(pán)(至于c0t0d0的具體含義,稍后會(huì )介紹),<SUN18G cyl 7506 alt 2 hd 19 sec 248>代表的是這個(gè)硬盤(pán)的大小和柱面信息,/pci@1f,4000/scsi@3/sd@0,0所代表的,就是這個(gè)硬盤(pán)的實(shí)際物理地址。這些信息看起來(lái)很復雜,其實(shí)一般都只需要看看format命令抓出來(lái)的硬盤(pán)數量,是不是我們裝在系統上的數量,例如你裝了兩個(gè)硬盤(pán),但是這里只有一個(gè)硬盤(pán)的信息,就需要認真面對了。
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
! - execute , then return
quit
format> p
這里所列出來(lái)的,是可以使用的命令,比如我在最下面format>,就是用了p這個(gè)命令(慢點(diǎn),上面沒(méi)有p這個(gè)命令???其實(shí),這里p就是partition的簡(jiǎn)寫(xiě)),然后,列出了以下內容:
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
! - execute , then return
quit
partition>
OK,到這里,我們的目的也達到了,這些信息應該很清楚的證明了:Solaris下,一個(gè)磁盤(pán)包含8個(gè)
分區,標記為0-7。后面的仍然是一些可以用到的命令,這些命令的具體含義,大家可以看命令后面的英文介紹,至于怎么使用,以后再說(shuō)。下面我們將進(jìn)入今天的重點(diǎn):
向一塊硬盤(pán)寫(xiě)入數據之前,首先需要將其
分區和格式化,這個(gè)過(guò)程一般可以分為3個(gè)
步驟:
1. 物理格式化,也就是通常所說(shuō)的低級格式化(Low-Level Formatting,LLF);
2.
分區;
3. 邏輯格式化,也就是通常所說(shuō)的高級格式化(High-Level Formatting,HLF)
低級格式化的時(shí)候,硬盤(pán)被分成若干個(gè)磁道,這些磁道又被分成若干個(gè)扇區,每個(gè)扇區填充了隨機數據。幾乎所有的硬盤(pán)在出廠(chǎng)前都已經(jīng)被低級格式化過(guò),所以,
用戶(hù)只要對硬盤(pán)進(jìn)行下面兩個(gè)步驟(
分區和邏輯格式化)就可以了。
分區的動(dòng)作將硬盤(pán)分成幾個(gè)部分,成為
分區或者是分片(注意:前面的“
分區”是動(dòng)詞,后面的是名詞)。每個(gè)
分區/分片由若干個(gè)柱面組成。絕大多數情況下,Solaris中的一個(gè)
分區一一對應一個(gè)文件系統。一個(gè)
分區不能包含多個(gè)文件系統;同樣,一個(gè)文件系統也不能跨越多個(gè)
分區。Solaris中,對硬盤(pán)進(jìn)行
分區,就是使用我們開(kāi)始的時(shí)候使用過(guò)的format命令。
當Solaris進(jìn)行高級格式化的時(shí)候,將每個(gè)
分區分成許多柱面組,每個(gè)柱面組包括了幾個(gè)連續的柱面。文件系統在這些柱面組中建立文件和目錄,并盡量將同一個(gè)文件的數據保存在同一個(gè)柱面組中。這樣的機制能夠保證磁頭讀取數據的時(shí)候移動(dòng)最少,從而加快數據的讀取速度。Solaris中使用newfs命令來(lái)實(shí)現高級格式化,默認的文件系統是UNIX文件系統(UFS:Unix File System),它使用下列類(lèi)型的塊:
1. 引導塊:存儲系統啟動(dòng)時(shí)所需的信息
2. 超級塊:存儲文件系統信息
3. 索引節點(diǎn)(i節點(diǎn)):存儲文件系統中的單個(gè)文件信息
4. 存儲塊/數據塊:存儲文件數據
下面來(lái)詳細介紹一下這幾種類(lèi)型的塊。
引導塊:
引導塊存儲系統啟動(dòng)時(shí)所需的信息。引導塊總是位于硬盤(pán)的第一個(gè)柱面組,占用
分區的前8KB。
超級塊:
超級塊存儲文件系統信息,它包含了下列信息:
1. 文件系統中總塊數(文件系統大?。?
2. 文件系統中數據塊的數目
3. 索引節點(diǎn)的數目
4. 柱面組的數目
5. 塊的大小
6. 磁盤(pán)碎片的大小
7. 空閑塊的個(gè)數
8. 空閑的索引節點(diǎn)的個(gè)數
超級塊對文件系統極其重要,所以Solairs系統采用多個(gè)備份來(lái)確保它的安全。偶爾,當沒(méi)有正常關(guān)閉系統或硬盤(pán)出現故障的時(shí)候,會(huì )造成默認超級塊不能正確讀取或者是和其備份的超級塊不一致。這時(shí),就需要進(jìn)行修復工作。通常在重新啟動(dòng)系統的時(shí)候,系統會(huì )調用fsck命令來(lái)自動(dòng)完成。當fsck發(fā)現默認的超級塊已經(jīng)損壞而且無(wú)法自動(dòng)修復的時(shí)候,會(huì )提示
用戶(hù)手動(dòng)進(jìn)行修復。
手動(dòng)進(jìn)行修復的時(shí)候,可以根據以下幾個(gè)步驟進(jìn)行:
1. 以單
用戶(hù)的身份進(jìn)入系統,例如在PROM的模式下(即ok狀態(tài)下)用命令boot -s可進(jìn)入單
用戶(hù)模式,或者在系統中sync;sync;sync;init 0也可進(jìn)入單
用戶(hù)模式(至于什么是單
用戶(hù)模式,以后會(huì )詳細介紹)
2. 如果損壞的文件已經(jīng)安裝到文件樹(shù)中,可以進(jìn)入另一個(gè)目錄,然后將損壞的文件系統卸載,例如:
#cd /
#umount /var
3. 使用newfs -N命令顯示超級塊的值,此命令會(huì )列出備用的超級塊在文件系統中的
位置:
# newfs -N /dev/dsk/c0t0d0s1
/dev/rdsk/c0t0d0s1: 961248 sectors in 204 cylinders of 19 tracks, 248 sectors
469.4MB in 13 cyl groups (16 c/g, 36.81MB/g, 17664 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 75680, 151328, 226976, 302624, 378272, 453920, 529568, 605216, 680864, 756512, 832160, 907808,
4. 從newfs -N命令列出的備用超級塊中選擇一個(gè)作為fsck命令的一個(gè)選項進(jìn)行修復:
#fsck -F ufs -o b=453920 /dev/rdsk/c0t0d0s1
索引節點(diǎn)
索引節點(diǎn)包含了一個(gè)文件除去文件名以外的所有信息。一個(gè)索引節點(diǎn)占用128字節的磁盤(pán)空間,它包含了下列信息:
1. 文件類(lèi)型:普通文件、目錄、塊設備文件、字符設備文件、鏈接等
2. 文件權限:讀、寫(xiě)、執行權限的組合
3. 文件的硬鏈接數
4. 文件所有者的
用戶(hù)ID
5. 文件所屬的組ID
6. 文件大?。ㄗ止潝担?
7. 一個(gè)包含15個(gè)磁盤(pán)塊地址的數組
8. 文件最近的訪(fǎng)問(wèn)日期和時(shí)間
9. 文件最后一次修改的日期和時(shí)間
10. 文件創(chuàng )建的日期和時(shí)間
硬盤(pán)上的每個(gè)文件,都有一個(gè)描述它的信息的索引節點(diǎn)。文件系統創(chuàng )建的時(shí)候,一定數目的索引節點(diǎn)在硬盤(pán)柱面組中被同時(shí)創(chuàng )建。有時(shí)候,這些索引節點(diǎn)或許會(huì )不夠用,例如當一個(gè)程序產(chǎn)生大量小文件的時(shí)候,此時(shí)文件系統就需要增加索引節點(diǎn)。
同樣,如果我們事先知道此文件系統只用來(lái)存放少數大文件,我們就可以通過(guò)減少索引節點(diǎn)的數目來(lái)達到節省磁盤(pán)空間的目的——畢竟每個(gè)索引節點(diǎn)占用128字節。創(chuàng )建文件系統的時(shí)候,可以使用newfs命令的-i選項來(lái)增加或者減少索引節點(diǎn)的數目。
/usr/ucb目錄下的df命令可以查看文件系統中所引節點(diǎn)的狀況。例如:
# usr/ucb/df -i
Filesystem iused ifree %iused Mounted on
/dev/dsk/c0t0d0s0 131672 1929384 6% /
注意:文件系統一旦創(chuàng )建,就無(wú)法改變它的索引節點(diǎn)數目,因此,當索引節點(diǎn)不夠用的時(shí)候,首先應當備份此文件系統數據,然后創(chuàng )建一個(gè)包含更多索引節點(diǎn)的新的文件系統,然后將備份的數據恢復到新的文件系統就可以了。
存儲塊/數據塊
存儲塊,也叫做數據塊,它占用了文件系統的其他所有空間。這些塊包含了存放在磁盤(pán)上的數據文件。每個(gè)存儲塊的大小在創(chuàng )建文件系統的時(shí)候被確定。對一個(gè)普通文件來(lái)說(shuō),存儲塊存放了文件的內容,對一個(gè)目錄來(lái)說(shuō),存儲塊中存放了此目錄中所有文件的索引節點(diǎn)號和文件名的信息。
磁盤(pán)命名
這里主要是詳細解釋我們最開(kāi)始使用format命令的時(shí)候,看到的c0t0d0這個(gè)表示的詳細含義。在Solaris系統中用設備名來(lái)代表磁盤(pán)。磁盤(pán)設備名是類(lèi)似cXtXdX格式的一系列字母和數字,比如我們看到的c0t0d0。設備名中的字母(c, t,d)都是一樣的,但X代表的數字表示特定的磁盤(pán)或者系統。例如c0t0d0表示0號控制器,0號磁盤(pán),0號LUN,這通常指代系統中的第一個(gè)硬盤(pán),往往也是系統的啟動(dòng)磁盤(pán)(boot disk)。
Sun使用下列命名方式定義邏輯設備名:
/dev/dsk/cXtXdXsX
c:邏輯控制器號(邏輯控制器)
t:物理總線(xiàn)目標號
d:磁盤(pán)或邏輯單元號(LUN)
s:
分區號
cX : X指磁盤(pán)控制器。當SUN系統搜集安裝在系統中的磁盤(pán)控制器信息時(shí),它給每個(gè)磁盤(pán)控制器一個(gè)數值,數值取決于系統監測控制器的先后順序。第一個(gè)被檢測到的控制器分配的數值是0,第二個(gè)控制器是1,依次類(lèi)推。對IDE系統來(lái)說(shuō),第一個(gè)IDE通道為0,第二個(gè)(如果存在的話(huà))通道為1。
tX : X指磁盤(pán)的目標號。這個(gè)數字有時(shí)候被稱(chēng)為SCSI標識符,磁盤(pán)控制器上的每一個(gè)磁盤(pán)都有一個(gè)唯一的目標號??刂破魍ㄟ^(guò)這個(gè)目標號可以對每個(gè)磁盤(pán)獨立尋址。對IDE磁盤(pán)而言,主盤(pán)的目標號是0,從盤(pán)的目標號是1。
dX : X指磁盤(pán)的邏輯單元號(LUN)。在有些磁盤(pán)陣列中,LUN被用來(lái)區分系統中的各個(gè)磁盤(pán)。一個(gè)陣列可以用一個(gè)目標號來(lái)表示一組磁盤(pán),然后用LUN來(lái)表示這個(gè)磁盤(pán)組中的單個(gè)磁盤(pán)。這種方式被廣泛應用于SCSI磁盤(pán)陣列和光盤(pán)轉換設備中。對單個(gè)磁盤(pán)或IDE磁盤(pán),這個(gè)數字總是設定為0。
sX : X指磁盤(pán)上的
分區號。它和磁盤(pán)的
分區對應。就如我們前面所說(shuō)的“Solaris下,一個(gè)磁盤(pán)包含8個(gè)
分區,標記為0-7”,因為這里X的數值只能是0——7。
以上的內容,就可以詳細說(shuō)明出c0t0d0s0的含義了。