Solaris硬碟分割槽簡介(轉)

ba發表於2007-08-12
Solaris硬碟分割槽簡介(轉)[@more@]【導讀】如何在Solaris下對硬碟進行分割槽,請看下面這篇文章……



Solaris下,一個磁碟包含8個分割槽,標記為0-7。此資訊可以透過format命令,然後選擇一個硬碟來看到,例如,在我自己的系統中(Solaris 9,Ultra 60),顯示出來的資訊如下:

# 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>

不要看到內容這麼多,就被嚇住了,其實,format命令之後0. c0t0d0 /pci@1f,4000/scsi@3/sd@0,0所顯示出來的含義很簡單,0. c0t0d0就代表這臺Ultra 60裡面只裝了一個硬碟(至於c0t0d0的具體含義,稍後會介紹),代表的是這個硬碟的大小和柱面資訊,/pci@1f,4000/scsi@3/sd@0,0所代表的,就是這個硬碟的實際實體地址。這些資訊看起來很複雜,其實一般都只需要看看format命令抓出來的硬碟數量,是不是我們裝在系統上的數量,例如你裝了兩個硬碟,但是這裡只有一個硬碟的資訊,就需要認真面對了。

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

這裡所列出來的,是可以使用的命令,比如我在最下面format>,就是用了p這個命令(慢點,上面沒有p這個命令啊?其實,這裡p就是partition的簡寫),然後,列出了以下內容:

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下,一個磁碟包含8個分割槽,標記為0-7。後面的仍然是一些可以用到的命令,這些命令的具體含義,大家可以看命令後面的英文介紹,至於怎麼使用,以後再說。下面我們將進入今天的重點:

向一塊硬碟寫入資料之前,首先需要將其分割槽和格式化,這個過程一般可以分為3個

步驟:

1. 物理格式化,也就是通常所說的低階格式化(Low-Level Formatting,LLF);

2. 分割槽;

3. 邏輯格式化,也就是通常所說的高階格式化(High-Level Formatting,HLF)

低階格式化的時候,硬碟被分成若干個磁軌,這些磁軌又被分成若干個扇區,每個扇區填充了隨機資料。幾乎所有的硬碟在出廠前都已經被低階格式化過,所以,使用者只要對硬碟進行下面兩個步驟(分割槽和邏輯格式化)就可以了。 分割槽的動作將硬碟分成幾個部分,成為分割槽或者是分片(注意:前面的“分割槽”是動詞,後面的是名詞)。每個分割槽/分片由若干個柱面組成。絕大多數情況下,Solaris中的一個分割槽一一對應一個檔案系統。一個分割槽不能包含多個檔案系統;同樣,一個檔案系統也不能跨越多個分割槽。Solaris中,對硬碟進行分割槽,就是使用我們開始的時候使用過的format命令。

當Solaris進行高階格式化的時候,將每個分割槽分成許多柱面組,每個柱面組包括了幾個連續的柱面。檔案系統在這些柱面組中建立檔案和目錄,並儘量將同一個檔案的資料儲存在同一個柱面組中。這樣的機制能夠保證磁頭讀取資料的時候移動最少,從而加快資料的讀取速度。Solaris中使用newfs命令來實現高階格式化,預設的檔案系統是UNIX檔案系統(UFS:Unix File System),它使用下列型別的塊:

1. 引導塊:儲存系統啟動時所需的資訊

2. 超級塊:儲存檔案系統資訊

3. 索引節點(i節點):儲存檔案系統中的單個檔案資訊

4. 儲存塊/資料塊:儲存檔案資料

下面來詳細介紹一下這幾種型別的塊。

引導塊:

引導塊儲存系統啟動時所需的資訊。引導塊總是位於硬碟的第一個柱面組,佔用分割槽的前8KB。

超級塊:

超級塊儲存檔案系統資訊,它包含了下列資訊:

1. 檔案系統中總塊數(檔案系統大小)

2. 檔案系統中資料塊的數目

3. 索引節點的數目

4. 柱面組的數目

5. 塊的大小

6. 磁碟碎片的大小

7. 空閒塊的個數

8. 空閒的索引節點的個數

超級塊對檔案系統極其重要,所以Solairs系統採用多個備份來確保它的安全。偶爾,當沒有正常關閉系統或硬碟出現故障的時候,會造成預設超級塊不能正確讀取或者是和其備份的超級塊不一致。這時,就需要進行修復工作。通常在重新啟動系統的時候,系統會呼叫fsck命令來自動完成。當fsck發現預設的超級塊已經損壞而且無法自動修復的時候,會提示使用者手動進行修復。



手動進行修復的時候,可以根據以下幾個步驟進行:

1. 以單使用者的身份進入系統,例如在PROM的模式下(即ok狀態下)用命令boot -s可進入單使用者模式,或者在系統中sync;sync;sync;init 0也可進入單使用者模式(至於什麼是單使用者模式,以後會詳細介紹)

2. 如果損壞的檔案已經安裝到檔案樹中,可以進入另一個目錄,然後將損壞的檔案系統解除安裝,例如:

#cd /

#umount /var

3. 使用newfs -N命令顯示超級塊的值,此命令會列出備用的超級塊在檔案系統中的

位置:

# 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命令列出的備用超級塊中選擇一個作為fsck命令的一個選項進行修復:

#fsck -F ufs -o b=453920 /dev/rdsk/c0t0d0s1

索引節點

索引節點包含了一個檔案除去檔名以外的所有資訊。一個索引節點佔用128位元組的磁碟空間,它包含了下列資訊:

1. 檔案型別:普通檔案、目錄、塊裝置檔案、字元裝置檔案、連結等

2. 檔案許可權:讀、寫、執行許可權的組合

3. 檔案的硬連結數

4. 檔案所有者的使用者ID

5. 檔案所屬的組ID

6. 檔案大小(位元組數)

7. 一個包含15個磁碟塊地址的陣列

8. 檔案最近的訪問日期和時間

9. 檔案最後一次修改的日期和時間

10. 檔案建立的日期和時間

硬碟上的每個檔案,都有一個描述它的資訊的索引節點。檔案系統建立的時候,一定數目的索引節點在硬碟柱面組中被同時建立。有時候,這些索引節點或許會不夠用,例如當一個程式產生大量小檔案的時候,此時檔案系統就需要增加索引節點。

同樣,如果我們事先知道此檔案系統只用來存放少數大檔案,我們就可以透過減少索引節點的數目來達到節省磁碟空間的目的——畢竟每個索引節點佔用128位元組。建立檔案系統的時候,可以使用newfs命令的-i選項來增加或者減少索引節點的數目。

/usr/ucb目錄下的df命令可以檢視檔案系統中所引節點的狀況。例如:

# usr/ucb/df -i

Filesystem iused ifree %iused Mounted on

/dev/dsk/c0t0d0s0 131672 1929384 6% /

注意:檔案系統一旦建立,就無法改變它的索引節點數目,因此,當索引節點不夠用的時候,首先應當備份此檔案系統資料,然後建立一個包含更多索引節點的新的檔案系統,然後將備份的資料恢復到新的檔案系統就可以了。

儲存塊/資料塊

儲存塊,也叫做資料塊,它佔用了檔案系統的其他所有空間。這些塊包含了存放在磁碟上的資料檔案。每個儲存塊的大小在建立檔案系統的時候被確定。對一個普通檔案來說,儲存塊存放了檔案的內容,對一個目錄來說,儲存塊中存放了此目錄中所有檔案的索引節點號和檔名的資訊。

磁碟命名

這裡主要是詳細解釋我們最開始使用format命令的時候,看到的c0t0d0這個表示的詳細含義。在Solaris系統中用裝置名來代表磁碟。磁碟裝置名是類似cXtXdX格式的一系列字母和數字,比如我們看到的c0t0d0。裝置名中的字母(c, t,d)都是一樣的,但X代表的數字表示特定的磁碟或者系統。例如c0t0d0表示0號控制器,0號磁碟,0號LUN,這通常指代系統中的第一個硬碟,往往也是系統的啟動磁碟(boot disk)。

Sun使用下列命名方式定義邏輯裝置名:

/dev/[r]dsk/cXtXdXsX

c:邏輯控制器號(邏輯控制器)

t:物理匯流排目標號

d:磁碟或邏輯單元號(LUN)

s:分割槽號

cX : X指磁碟控制器。當SUN系統蒐集安裝在系統中的磁碟控制器資訊時,它給每個磁碟控制器一個數值,數值取決於系統監測控制器的先後順序。第一個被檢測到的控制器分配的數值是0,第二個控制器是1,依次類推。對IDE系統來說,第一個IDE通道為0,第二個(如果存在的話)通道為1。

tX : X指磁碟的目標號。這個數字有時候被稱為SCSI識別符號,磁碟控制器上的每一個磁碟都有一個唯一的目標號。控制器透過這個目標號可以對每個磁碟獨立定址。對IDE磁碟而言,主盤的目標號是0,從盤的目標號是1。

dX : X指磁碟的邏輯單元號(LUN)。在有些磁碟陣列中,LUN被用來區分系統中的各個磁碟。一個陣列可以用一個目標號來表示一組磁碟,然後用LUN來表示這個磁碟組中的單個磁碟。這種方式被廣泛應用於SCSI磁碟陣列和光碟轉換裝置中。對單個磁碟或IDE磁碟,這個數字總是設定為0。

sX : X指磁碟上的分割槽號。它和磁碟的分割槽對應。就如我們前面所說的“Solaris下,一個磁碟包含8個分割槽,標記為0-7”,因為這裡X的數值只能是0——7。

以上的內容,就可以詳細說明出c0t0d0s0的含義了。

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

相關文章