- 論壇徽章:
- 1
|
作者:whan 出處:Unix愛好者家園unix-cd.com
1. 硬盤管理概述
UnixWare7.1.x對硬盤的管理分為兩個步驟,或者說是兩個層次。一個就是用眾所周知的fdisk命令劃分的硬盤分區(qū),應(yīng)該說大部分操作系統(tǒng)都使用這一工具進(jìn)行硬盤的分區(qū)劃分和管理,為了與另一個管理方式“slice”相區(qū)別,我們用英文表示為”partition”,此硬盤分區(qū)不能在UnixWare7.1.x操作系統(tǒng)下直接進(jìn)行操作,只能通過UnixWare7.1.x所特有的slice進(jìn)行映射或者重新劃分后才能夠進(jìn)行操作;另一個就是”slice”,它是UnixWare7.1.x所特有的管理硬盤的工具,并且UnixWare只有通過slice對硬盤進(jìn)行訪問。
1.1 Partition具有如下特點(diǎn):
1.一個開始Sector;
2. 該分區(qū)的長度,用Sector計算的;
3. 該分區(qū)操作系統(tǒng)的類型,如UNIX, DOS, 或者 Extended DOS等等;
4. 如果是可引導(dǎo)分區(qū)必須具有Active標(biāo)志;
5. 每個硬盤最多可以劃分4個Partition;
6. 如果硬盤要被UnixWare操作系統(tǒng)使用則必須至少有一個分區(qū)(Partition);
7. UnixWare7.1.x操作系統(tǒng)利用命令fdisk進(jìn)行劃分。
1.2 Slice特點(diǎn)如下:
1.一個開始的Sector。
2. 該Slice的長度,用Sector計算。
3. Slice的類型,例如root, user, swap, stand等等。
4. 訪問限制(valid and mountable/unmountable)。
5. UnixWare7.1.x操作系統(tǒng)只有通過Slice才能夠訪問和管理硬盤,而不能夠通過其他方式對硬盤進(jìn)行管理和訪問。
6. 每個物理硬盤原則上最多是有256個Slice,實(shí)際上使用的只有188個,而這188個slice在系統(tǒng)中的體現(xiàn)要靠節(jié)點(diǎn)設(shè)備文件表現(xiàn)出來,如/dev/rdsk/c0b0t0d0s0,就是當(dāng)前狀態(tài)為ACTIVE的整個unix分區(qū)(P),下面將更詳細(xì)的討論。
7. 在一個物理硬盤上的當(dāng)前活動的UNIX分區(qū)可以可以通過slice進(jìn)行管理,而slice也只能對當(dāng)前活動的UNIX分區(qū)進(jìn)行更進(jìn)一步的劃分分區(qū)和管理。
8. 一個slice可以用做一個文件系統(tǒng),可以被用做swap空間,可以作為生設(shè)備使用,也可以被其他應(yīng)用程序使用,例如被數(shù)據(jù)庫管理和使用。
1.3 Slice、分區(qū)(P)和節(jié)點(diǎn)設(shè)備文件的關(guān)系:
1、學(xué)習(xí)環(huán)境
首先讓我們來看一個環(huán)境,主機(jī)的硬盤總?cè)萘渴?173.4 MB,分了兩個分區(qū)(P),第一個分區(qū)容量為1851.2MB,是當(dāng)前的活動的UNIX系統(tǒng)分區(qū),安裝了SCO OpenServer 5.0.5;第二個分區(qū)容量為4322.2MB,是非活動UNIX系統(tǒng)分區(qū),安裝了UnixWare7.1.1操作系統(tǒng),而當(dāng)前正在運(yùn)行的系統(tǒng)是第二分區(qū)的UnixWare,對操作系統(tǒng)本身來講,第二個分區(qū)是當(dāng)前UNIX系統(tǒng)分區(qū)(P)。具體分區(qū)情況如下所示:
Total disk size is 787 cylinders (6173.4 MB)
Cylinders Approx
Partition Status Type Start End Length % MB
===== ====== =========== ===== === ====== === ======
1 Active UNIX System 0 235 236 30 1851.2
2 UNIX System 236 786 551 70 4322.2
表1-1
該主機(jī)通過一個SCSI Ultra160卡外掛了一個磁盤陣列柜,陣列柜有三個70G的SCSI硬盤,做了RAID 5,陣列柜的兩個外接SCSI通道的ID都設(shè)為5,陣列柜做了RAID 5后,在邏輯盤空間劃分了三個分區(qū),這三個對應(yīng)的邏輯號分別為0、1、2,這樣通過主機(jī)的操作系統(tǒng)就能夠看到三個硬盤的標(biāo)識,通過系統(tǒng)命令”sdiconfig –l”可以看到如下信息:(我們在每一行的前面加了行號,這是為了我們方便的加以解釋和說明)
1 # sdiconfig -l
2 0:0,7,0: HBA : (ide,1) Generic ESDI/IDE/ATA
3 0,0,0: DISK : Generic IDE/ESDI 1.00
4 1:0,7,0: HBA : (ide,2) Generic ESDI/IDE/ATA
5 0,0,0: CDROM : ATAPI CD-ROM DRIVE-32XT2DP
6 2:0,7,0: HBA : (adst70,2) Adaptec Ultra160
7 0,5,0: DISK : NetStor DA8160 0001
8 0,5,1: DISK : NetStor DA8160 0001
9 0,5,2: DISK : NetStor DA8160 0001
表1-2
第1行是系統(tǒng)命令,這是在root用戶下執(zhí)行的,通過前面的”#”提示符可以看出來。
第2、4兩行是IDE通道的信息,它們分別接著本地IDE硬盤(即第3行所示信息)和IDE光驅(qū)(即第5行所示信息)。
第6行是我們主機(jī)上的SCSI卡的信息,也就是接磁盤陣列柜的SCSI通道的信息,第7、8、9三行是磁盤陣列柜的三個分區(qū)的信息,這里的分區(qū)不同于我們對物理硬盤分區(qū)(Partition)的概念,它們類似于一個物理硬盤,操作系統(tǒng)在處理過程中也是安裝一個物理硬盤來進(jìn)行的。
2、UnixWare7.1.x硬盤的標(biāo)識
在任何一個Unix操作系統(tǒng)中,每一個硬件設(shè)備都對應(yīng)著一個設(shè)備文件名,通過文件來對設(shè)備進(jìn)行管理和操作,當(dāng)然,UnixWare7.1.x也不例外,它對于SCSI和非SCSI硬盤的管理也是通過設(shè)備文件來進(jìn)行的,有如下兩種形式:
/dev/[r]dsk/cCbBtTdDsS
/dev/[r]dsk/cCbBtTdDpP
各個部分的解釋如下:
1)[r]dsk
/rdsk目錄下是原始設(shè)備(字符設(shè)備);/dsk目錄下是塊設(shè)備。
2)cC
C是系統(tǒng)中的主機(jī)通道適配器或者是IDE控制器的序列號,C的范圍是0到31。
在UnixWare7.1.x中,不同于SCO OpenServer 5.0.x中不同的適配器或IDE控制器的序列號是沒有關(guān)系的,不是順序增加的,例如有兩個IDE控制器和兩個SCSI控制器,在OpenServer中,第一個IDE控制器的C是0,第二個IDE控制器的C是1,第一個SCSI控制器的C是0,第二個控制器的C是1;而在UnixWare中,第一個IDE控制器的C是0,第二個IDE控制器的C是1,第一個SCSI控制器的C是2,第二個控制器的C是3,當(dāng)然也可以第一個SCSI控制器的C是0,第二個控制器的C是1,第一個IDE控制器的C是2,第二個IDE控制器的C是3,就是說UnixWare中,不會區(qū)分控制器的類型而進(jìn)行排序,它對所有的控制器(不論什么類型,IDE、SCSI或者其他)進(jìn)行排序。
3)bB
B是HBA總線編號,范圍是0到7(依賴于增加的適配器),對于IDE硬盤來講它總是0。
4)tT
T是SCSI目標(biāo)控制器標(biāo)號(ID),這個ID的范圍從0到31。第一個IDE硬盤是0,第二個是1。
5)dD
D是硬盤設(shè)備的邏輯單元號(即LUN),范圍從0到31,D對IDE硬盤來講都是0。
6)sS
S是硬盤的Slice號,范圍從0到b7(十六進(jìn)制),十進(jìn)制是0到183。
7)pP
P是fdisk(1M)硬盤分區(qū)號,范圍是從0到4,在硬盤分區(qū)表中,p0代表整個硬盤,而p1到p4分別表示用fdisk命令顯示的硬盤的分區(qū)1到分區(qū)4。
3、分析
我們來看一下目錄/dev/rdsk/下有那些內(nèi)容:
# pwd
/dev/rdsk
# lf
c0b0t0d0p0 c2b0t5d0s1 c2b0t5d1s7 c2b0t5d2sd f05q f15d16
c0b0t0d0p1 c2b0t5d0s2 c2b0t5d1s8 c2b0t5d2se f05qt f15d16t
c0b0t0d0p2 c2b0t5d0s3 c2b0t5d1s9 c2b0t5d2sf f0d8d f15d4
c0b0t0d0p3 c2b0t5d0s4 c2b0t5d1sa f0 f0d8dt f15d4t
c0b0t0d0p4 c2b0t5d0s5 c2b0t5d1sb f03c f0d8t f15d8
c0b0t0d0s0 c2b0t5d0s6 c2b0t5d1sc f03ct f0d9d f15d8t
c0b0t0d0s1 c2b0t5d0s7 c2b0t5d1sd f03d f0d9dt f15d8u
c0b0t0d0s2 c2b0t5d0s8 c2b0t5d1se f03dt f0d9t f15d9
c0b0t0d0s3 c2b0t5d0s9 c2b0t5d1sf f03e f0q15d f15d9t
c0b0t0d0s4 c2b0t5d0sa c2b0t5d2p0 f03et f0q15dt f15h
c0b0t0d0s5 c2b0t5d0sb c2b0t5d2p1 f03h f0q18d f15ht
c0b0t0d0s6 c2b0t5d0sc c2b0t5d2p2 f03ht f0q18dt f15q
c0b0t0d0s7 c2b0t5d0sd c2b0t5d2p3 f03m f0q9dt f15qt
c0b0t0d0s8 c2b0t5d0se c2b0t5d2p4 f03mt f0t f1d8d
c0b0t0d0s9 c2b0t5d0sf c2b0t5d2s0 f03n f1 f1d8dt
c0b0t0d0sa c2b0t5d1p0 c2b0t5d2s1 f03nt f13c f1d8t
c0b0t0d0sb c2b0t5d1p1 c2b0t5d2s2 f05d16 f13ct f1d9d
c0b0t0d0sc c2b0t5d1p2 c2b0t5d2s3 f05d16t f13d f1d9dt
c0b0t0d0sd c2b0t5d1p3 c2b0t5d2s4 f05d4 f13dt f1d9t
c0b0t0d0se c2b0t5d1p4 c2b0t5d2s5 f05d4t f13e f1q15d
c0b0t0d0sf c2b0t5d1s0 c2b0t5d2s6 f05d8 f13et f1q15dt
c2b0t5d0p0 c2b0t5d1s1 c2b0t5d2s7 f05d8t f13h f1q18dt
c2b0t5d0p1 c2b0t5d1s2 c2b0t5d2s8 f05d8u f13ht f1q9dt
c2b0t5d0p2 c2b0t5d1s3 c2b0t5d2s9 f05d9 f13m f1t
c2b0t5d0p3 c2b0t5d1s4 c2b0t5d2sa f05d9t f13mt
c2b0t5d0p4 c2b0t5d1s5 c2b0t5d2sb f05h f13n
c2b0t5d0s0 c2b0t5d1s6 c2b0t5d2sc f05ht f13nt
表1-3
在表1-3中具有/dev/[r]dsk/cCbBtTdDsS或者/dev/[r]dsk/cCbBtTdDpP格式的設(shè)備文件名稱都代表了系統(tǒng)中的硬盤,可以歸納如下4行。
1 c0b0t0d0p[0-4],c0b0t0d0s[0-f]
2 c2b0t5d0p[0-4],c2b0t5d0s[0-f]
3 c2b0t5d1p[0-4],c2b0t5d1s[0-f]
4 c2b0t5d2p[0-4],c2b0t5d2s[0-f]
表1-4
注意:以上4行中[0-X],不是代表0到X中的任何一個,而是一個實(shí)際的范圍,例如c0b0t0d0p[0-4]代表c0b0t0d0p0、c0b0t0d0p1、c0b0t0d0p2、c0b0t0d0p3。
表1-4中的每一行都代表著一個硬盤,實(shí)際情況是第1行代表本地IDE硬盤,即表1-2中第3行所示之硬盤;第2行代表磁盤陣列柜的邏輯分區(qū)1,設(shè)置此分區(qū)的LUN號為0,即表1-2中第7行對應(yīng)磁盤陣列的邏輯分區(qū)1;第3、4兩行代表磁盤陣列的邏輯分區(qū)2和3,LUN號分別為1和2。
我們結(jié)合上面的說明對表1-2重新進(jìn)行分析:
上圖中標(biāo)出了表1-2每一個字符代表的意思,從表1-2可以看出三個控制器(第2、4、6行)是按照順序進(jìn)行編號0、1、2,不分控制器的類型,第2、4行代表的是IDE類型,第6行代表的是SCSI類型;每一個控制器都有自己的B、T、D號,巧合的是本系統(tǒng)中的三個控制器的T(target)都是7,這樣通過該控制器相連接的設(shè)備的T就不能是7;同時我們看到,磁盤陣列上設(shè)置的通道ID在UnixWare7.1.x操作系統(tǒng)中是T,而磁盤陣列柜的邏輯盤中的分區(qū)對應(yīng)的ID號(LUN),對應(yīng)著系統(tǒng)中的D,況且這樣的分區(qū)是作為一個完整的硬盤來進(jìn)行處理的。
我們再回過頭來看看表1-4,發(fā)現(xiàn)每一個硬盤對應(yīng)的系統(tǒng)自動創(chuàng)建的設(shè)備文件都是一樣的cXbXtXDxp[0-4]和cXbXtXdXs[0-f]共21個設(shè)備文件。這些設(shè)備文件是系統(tǒng)啟動時由VTOC(Volume Table of Contents)驅(qū)動程序自動為硬盤創(chuàng)建的,這些設(shè)備文件是Slice的體現(xiàn)。下面我們具體的來看一下Slice與設(shè)備文件的對應(yīng)情況。
1)cXbXtXdXs0是Slice0,對應(yīng)整個活動的UNIX系統(tǒng)分區(qū);
2)cXbXtXdXs1是slice1,是slice0所代表的當(dāng)前活動的UNIX系統(tǒng)分區(qū)的第一個slice(類似于子分區(qū),它可以用做swap分區(qū)、root分區(qū)或者boot分區(qū)等等);
3)cXbXtXdXs2是slice2,對應(yīng)當(dāng)前活動的UNIX系統(tǒng)分區(qū)的第二個子分區(qū)(請?jiān)试S我如此稱呼它),依次類推,直到cXbXtXdXsb7(slice183),它對應(yīng)的是當(dāng)前活動的UNIX系統(tǒng)分區(qū)的第183(b7是十六進(jìn)制,換算到十進(jìn)制是183)個子分區(qū),也就是說,當(dāng)前活動的UNIX系統(tǒng)分區(qū)最多具有184個slice,同時也說明了slice管理機(jī)制只能對當(dāng)前活動的UNIX系統(tǒng)分區(qū)通過slice0到slice183來進(jìn)行子分區(qū)的劃分和管理;
4)cXbXtXdXp0對應(yīng)slice184,代表整個硬盤;
5)cXbXtXdXp1到cXbXtXdXp4對應(yīng)slice185到slice188,代表了硬盤的fdisk分區(qū)1到分區(qū)4。
4. 總結(jié)
綜合以上1、2、3的內(nèi)容可以看出slice、Partition和文件名稱的關(guān)系如圖1-1所示,對圖中的內(nèi)容說明如下:
1)用fdisk命令可以將一個硬盤劃分為最多4個分區(qū),當(dāng)然也可以是一個分區(qū)。
2)UnixWare7.1.x操作系統(tǒng)在啟動是由VTOC驅(qū)動程序自動為每個硬盤創(chuàng)建了設(shè)備文件名/dev/[r]dsk/cXbxtXdXp0-4和/dev/[r]dsk/cXbxtXdXs0-f共21個slice,他們的對應(yīng)情況如圖1-1所示。
3)從s0到sb7對Partition分區(qū)進(jìn)一步分區(qū)只對active的Partition有效。
4)對于系統(tǒng)通過VTOC驅(qū)動程序自動創(chuàng)建的21個設(shè)備文件在硬盤還沒有做fdisk分區(qū)的時候是沒有什么作用的,如硬盤還沒有用fdisk分區(qū),則只能通過/dev/[r]dsk/cXbxtXdXp0和/dev/[r]dsk/cXbxtXdXs0這2個文件中對該硬盤進(jìn)行操作,在對硬盤進(jìn)行了fdisk分區(qū)以后,s1-15文件仍然無法使用,只有通過命令disksetup –I /dev/[r]dsk/cXbxtXdXs0對活動分區(qū)創(chuàng)建了slice子分區(qū)以后才能夠正常使用,而pX則對應(yīng)著具體的fdisk分區(qū)。
5)如果硬盤的fdisk分區(qū)只有2個,p1和p2對應(yīng)著分區(qū)1和分區(qū)2,而p3和p4其實(shí)沒有任何作用了,應(yīng)為它們沒有對應(yīng)的fdisk分區(qū)。
6)系統(tǒng)自動創(chuàng)建的s1-sf共15個slice有對應(yīng)的文件,如果通過命令prtvtoc和edvtoc去增加slice時,系統(tǒng)會在啟動時為增加的slice創(chuàng)建設(shè)備文件,它們從s11開始,最多到sb7。
2. 硬盤的管理操作及相關(guān)命令
2.1 命令diskadd
增加硬盤的命令diskadd的格式如下:
diskadd [-F dm_type] [disk_number]
1. 命令diskadd在增加硬盤的過程中是交互式的提示信息。
2. -F dm_type
這個參數(shù)是diskadd命令在執(zhí)行添加命令時的交互式的管理界面,缺省是通過文件/dev/default/dskmgmt來獲得此界面,當(dāng)沒有指定時本界面缺省界面,建議使用參數(shù)-F s5dm。如果你想有所改變可以通過更改此文件來達(dá)到修改的目的。
3. disk_number
這個參數(shù)指明了增加到系統(tǒng)中的硬盤設(shè)備。如果該參數(shù)設(shè)置為1則缺省增加系統(tǒng)的第二塊硬盤。對于額外的硬盤使用cCbBtTdD此格式的硬盤設(shè)備文件格式。
我們建議本參數(shù)使用cCbBtTdD此種格式,這樣比較明確是哪一個硬盤,有時候不好確定第二塊硬盤是哪一個,容易混淆。同時注意此設(shè)備文件的名稱不包含路徑名,并且是cCbBtTdD而不是cCbBtTdDs0或cCbBtTdDp0,一定注意。例如我們增加學(xué)習(xí)環(huán)境中的磁盤陣列柜的第一個邏輯分區(qū)/dev/rdsk/c2b0t5d0[p0,s0],我們用命令diskadd –F s5dm c2b0t5d0或者diskadd c2b0t5d0。
4. diskadd命令成功后將與硬盤slice有關(guān)的信息寫入到文件/etc/vfstab中。該文件是文本文件可以用vi或者cat命令等查看。
2.2 命令prtvtoc和edvtoc
2.2.1 prtvtoc
該命令是一個磁盤VTOC信息的顯示工具,該命令的命令模式如下:
prtvtoc [-ap] [-f vtoc-file] raw-device
1. -f vtoc-file
該參數(shù)就是指定將raw-device設(shè)備的硬盤VTOC信息寫入到文件vtoc-file中,該文件可隨意指定。當(dāng)然該參數(shù)可以省略,此時將硬盤VTOC信息輸出到標(biāo)準(zhǔn)輸出。
我們只對-f參數(shù)進(jìn)行討論,其它兩個參數(shù)請用man prtvtoc查看。
2. raw-device
該參數(shù)就是/dev/rdsk/目錄下的設(shè)備文件,不能是/dev/dsk/目錄下的設(shè)備文件。文件格式是cXbXtXdXs0或者cXbXtXdXp0。
3. 舉個例子
在我們的測試環(huán)境中執(zhí)行,至少要保證目錄/dev/rdsk/有相應(yīng)的設(shè)備文件。
prtvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0
意思是將本地硬盤的VTOC信息輸出到文件/tmp/aaa中,其中aaa就是硬盤/dev/rdsk/c0b0t0d0s0的VTOC文件。
2.2.2 edvtoc
該命令是硬盤VTOC信息的編輯工具,因?yàn)槊總硬盤在UnixWare7操作系統(tǒng)中都是VTOC驅(qū)動程序通過VTOC表進(jìn)行管理的,所以說edvtoc也是UnixWare7修改硬盤分區(qū)的工具。
命令格式如下:
edvtoc -f vtoc-file raw-device
edvtoc -p raw-device
edvtoc -s "stamp" raw-device
我們在這里只討論格式edvtoc -f vtoc-file raw-device:
1. -f vtoc-file
該參數(shù)用vtoc-file文件更新硬盤的VTOC信息。
2. raw-device
該參數(shù)是硬盤的設(shè)備文件,是/dev/rdsk/目錄下的設(shè)備文件,不能是/dev/dsk/目錄下的設(shè)備文件。文件格式是cXbXtXdXs0或者cXbXtXdXp0。
3. 舉個例子
edvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0
用/tmp/aaa這個硬盤VTOC信息文件更新硬盤/dev/rdsk/c0b0t0d0s0的信息文件。在更新以后,重新啟動系統(tǒng)太能夠起作用。
2.2.3 VTOC文件
VTOC的全稱Volume Table of Contents,目錄卷表。
VTOC管理著fdisk分區(qū)表和slice的分區(qū)表。
我們在這里不對VTOC進(jìn)行深入的討論,只是對它的實(shí)際應(yīng)用進(jìn)行一些分析。關(guān)于VTOC的更多內(nèi)容請?jiān)赨nixWare7系統(tǒng)中用man vtoc命令查看。
1. 首先讓我們來看一個實(shí)際的vtoc文件,這是我們的學(xué)習(xí)環(huán)境本地硬盤的VTOC文件。
Total disk size is 787 cylinders (6173.4 MB)
Cylinders Approx
Partition Status Type Start End Length % MB
==== ====== =========== ===== === ====== === ======
1 Active UNIX System 0 235 236 30 1851.2
2 UNIX System 236 786 551 70 4322.2
1 # prtvtoc -f /tmp/aaa /dev/rdsk/c0b0t0d0s0
2 # cat /tmp/aaa
3 #SLICE TAG FLAGS START SIZE
4 0 0x5 0x201 3791340 8851815 ->代表整個硬盤
5 1 0x2 0x200 4112640 8401995 ->Root文件系統(tǒng)
6 2 0x3 0x201 3855600 257040 ->Swap文件系統(tǒng)
7 3 0x0 0x0 0 0
8 4 0x0 0x0 0 0
9 5 0x0 0x0 0 0
10 6 0x0 0x0 0 0
11 7 0x1 0x201 3791340 34 ->boot 區(qū)
12 8 0xd 0x201 3791374 16031 ->Alternate sector/track
13 9 0x0 0x0 0 0
14 10 0x9 0x200 3807405 48195 ->Stand區(qū)
15 11 0x0 0x0 0 0
16 12 0x0 0x0 0 0
17 13 0x0 0x0 0 0
18 14 0x0 0x0 0 0
19 15 0xf 0x201 12514635 16065->卷管理私有區(qū)
20 #
21 # df -k
22 filesystem kbytes used avail capacity mounted on
23 /dev/root 4200997 3469859 731138 83% /
24 /dev/stand 24097 5592 18505 24% /stand
25 /proc 0 0 0 0% /proc
26 /dev/fd 0 0 0 0% /dev/fd
27 /processorfs 0 0 0 0% /system/processor
28 /tmp 10240 32 10208 1% /tmp
29 /var/tmp 40960 0 40960 0% /var/tmp
30 /dev/_tcp 0 0 0 0% /dev/_tcp
2. 我們來看一下環(huán)境,第一個分區(qū)安裝了SCO OpenServer 5.0.5,第二個分區(qū)安裝了SCO UnixWare7.1.1,而此時我們是在UnixWare7.1.1系統(tǒng)下,也就是說,我們當(dāng)前的活動的UNIX系統(tǒng)分區(qū)與系統(tǒng)fdisk命令顯示的不同,顯示的內(nèi)容只能夠說明當(dāng)機(jī)器開始引導(dǎo)是先從第一個分區(qū)的Openserver 5.0.5進(jìn)行引導(dǎo),到了boot提示,轉(zhuǎn)而啟動Unixware系統(tǒng),實(shí)際上當(dāng)前活動的系統(tǒng)是第二個分區(qū)。因此我們使用命令prtvtoc時輸出的是第二個分區(qū)的信息。
3.對上面的vtoc文件各列的含義進(jìn)行說明:
1)SLICE列就是系統(tǒng)中自動定義的16個slice,編號從0到15,此編號最大到183,16幾其以后的編號只能由我們手動編輯VTOC文件,并通過命令edvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0進(jìn)行更新。
2)TAG
/* Slice tags */
#define V_BOOT 0x01 /* Boot slice */
#define V_ROOT 0x02 /* Root filesystem */
#define V_SWAP 0x03 /* Swap filesystem */
#define V_USR 0x04 /* User filesystem */
#define V_BACKUP 0x05 /* full disk */
#define V_ALTS 0x06 /* alternate sector space */
#define V_OTHER 0x07 /* non-unix space */
#define V_ALTTRK 0x08 /* alternate track space */
#define V_STAND 0x09 /* Stand slice */
#define V_VAR 0x0a /* Var slice */
#define V_HOME 0x0b /* Home slice */
#define V_DUMP 0x0c /* dump slice */
#define V_ALTSCTR 0x0d /* Alternate sector/track */
#define V_MANAGED1 0x0e /* Volume management public slice */
#define V_MANAGED2 0x0f /* Volume management private slice */
3)FLAGS
/* Slice permission flags */
#define V_UNMNT 0x01 /* Unmountable partition */
#define V_RONLY 0x10 /* Read only */
#define V_VALID 0x200 /* Partition is valid to use */
另:0x201是原始設(shè)備,0x200是文件系統(tǒng)。
4)START
這是slice的開始sector號,該編號是以整個硬盤為起點(diǎn)。一個sector是512字節(jié)。
5)SIZE
該slice的以sector計算的長度。
4. 對VTOC文件/tmp/aaa進(jìn)行討論
1)如果我們將slice1、2、7、8、15的長度相加和slice0的長度進(jìn)行比較看一下結(jié)果:
8401995(1) + 257040(2) + 34(7) + 16031(8) + 48195(10) + 16065(15) = 8739360
而slice0的長度是8851815(0),與此結(jié)果比較相近。當(dāng)然還有一部分空間沒有使用。
2)我們看一下各個slice的開始sector:
通過slice0可以看出,該fdisk分區(qū)是從sector 3791340到3791340 + 8851815 = 12643155。
Slice7的分區(qū)是從3791340到3791374,依次類推,如圖2-1所示。我們看到各個slice的開始sector和結(jié)束sector是首位相連的,從圖中知道,該硬盤中還有一部分沒有使用。我們可以手動增加slice,并用edvtoc命令。詳細(xì)應(yīng)用下面介紹。
5. 用edvtoc命令增加slice
系統(tǒng)自動增加了s0到sf共16個 slice,如果我們繼續(xù)增加只能通過編輯vtoc文件。
1)prtvtoc –f /tmp/vtoc /dev/c0b0t0d0s0
這樣獲得當(dāng)前硬盤的VTOC信息文件。
2)然后在文件的末尾增加如下16、17兩行:
15 0xf 0x201 12514635 16065
16 0x4 0x200 12530700 300
17 0x4 0x200 12531000 400
有一個原則,最后一個slice的結(jié)束sector不能超出整個fdisk分區(qū)的范圍,如果超出,將產(chǎn)生不可預(yù)料的嚴(yán)重錯誤,甚至有導(dǎo)致整個系統(tǒng)癱瘓的可能。
3)edvtoc –f /tmp/aaa /dev/c0b0t0d0s0
通過修改后的vtoc文件/tmp/aaa更新硬盤的VTOC信息。
4)然后重新啟動系統(tǒng),系統(tǒng)將自動給新增加的兩個slice創(chuàng)建兩個設(shè)備文件/dev/[r]dsk/c0b0t0d0s11和/dev/[r]dsk/c0b0t0d0s12。這樣我們就可以通過這兩個設(shè)備文件對slice進(jìn)行操作了。
2.3 增加硬盤
將硬盤正確的連接到主機(jī)系統(tǒng)上,并且連接硬盤的適配器(或者通道或者卡)的驅(qū)動程序已經(jīng)正確安裝,則操作系統(tǒng)在啟動的時候能夠正確的檢測到硬盤,并由VTOC驅(qū)動程序創(chuàng)建了21個與slice對應(yīng)的設(shè)備文件/dev/[r]dsk/cXbXtXdXp0-4和/dev/[r]dsk/cXbXtXdXs0-f,只有發(fā)現(xiàn)系統(tǒng)正確的檢測到了硬盤時我們才能夠通過命令diskadd增加硬盤,否則無法進(jìn)行。舉個例子,在我們的學(xué)習(xí)環(huán)境中,磁盤陣列柜是通過SCSI Ultra29160卡連接到主機(jī)上的,如果在UnixWare7.1.x操作系統(tǒng)中沒有正確的安裝此SCSI卡的驅(qū)動程序,將無法進(jìn)行增加硬盤,因?yàn)橄到y(tǒng)根本無法在啟動時自動檢測到該磁盤陣列柜并為其創(chuàng)建設(shè)備文件,所以不可能正確的執(zhí)行命令diskadd。
2.3.1 第一個例子
增加磁盤陣列柜第一個邏輯分區(qū)/dev/[r]dsk/c2b0t5d0,這個例子詳細(xì)列出整個過程,目的是讓大家有一個較為詳細(xì)的了解。
1 # diskadd c2b0t5d0
2 UX:diskadd: INFO: You have invoked the System V disk management (s5dm) diskadd .
3 The purpose of this utility is to set up additional disk drives.
4 This utility can destroy the existing data on the disk.
5 Do you wish to continue?
6 (Type y for yes or n for no followed by ENTER):
注釋:
1)第1行是增加硬盤的命令,它是建立在系統(tǒng)啟動時檢測到該硬盤并正確的創(chuàng)立了/dev/[r]dsk/目錄下的設(shè)備文件的基礎(chǔ)之上的。
2)第2行的提示可以看出,當(dāng)我們省略了參數(shù)-F時,缺省調(diào)用s5dm交互界面。
3)第4行有一個該操作可能破壞硬盤上存在數(shù)據(jù)的提示。
4)第5、6兩行詢問你是否繼續(xù),如果可以回答y,如果不想繼續(xù)則回答n。
7 y
8 The recommended default partitioning for your disk is:
0. a 100% "UNIX System" partition.
9 To select this, please type "y". To partition your disk
10 differently, type "n" and the "fdisk" program will let you
11 select other partitions. y
12 Surface analysis of your disk is recommended
13 but not required.
注釋:
1)第7行就是我們的回答”y”,是由我們手動輸入的。
2)第8到11行提示我們是用缺省的將該邏輯分區(qū)100%的劃分為UNIX分區(qū)還是手動用fdisk自己進(jìn)行分區(qū),我們在11行回答的是”y”。
14 Do you wish to skip surface analysis? (y/n) y
15 You will now be queried on the setup of your disk.After you
16 have determined which slices will be created, you will be
17 queried to designate the sizes of the various slices.
18 How many slices/filesystems do you want created on the disk (1 - 13)? 2
注釋:創(chuàng)建兩個slices。
19 Please enter the absolute pathname (e.g., /home3) for
20 slice/filesystem 1 (1 - 32 chars)? /home/s1
注釋:輸入文件系統(tǒng)的掛接點(diǎn)目錄/home/s1。
21 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),
22 type 'na' if no filesystem is needed, or press
23 to use the default (vxfs):
注釋:使用缺省的文件系統(tǒng)類型vxfs,如果使用其它的文件系統(tǒng)可以手動輸入后確認(rèn)。
24 Specify the block size from the the following list
25 (1024, 2048, 4096, 8192), or press to use the first one:
注釋:指定slice的塊(block)大小,此處缺省。
26 Should /home/s1 be automatically mounted during a reboot?
27 Type "no" to override auto-mount or press to enable the option: no
注釋:詢問是否在系統(tǒng)啟動時自動mount該文件系統(tǒng)。
28 Please enter the absolute pathname (e.g., /home3) for
29 slice/filesystem 2 (1 - 32 chars)? /home/s2
30 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),
31 type 'na' if no filesystem is needed, or press
32 to use the default (vxfs):
33 Specify the block size from the the following list
34 (1024, 2048, 4096, 8192), or press to use the first one:
35 Should /home/s2 be automatically mounted during a reboot?
36 Type "no" to override auto-mount or press to enable the option: no
注釋:28-36行定義第二個slice,步驟和內(nèi)容和第一個slice相同。
37 You will now specify the size in cylinders of each slice.
38 (One cylinder is approximately 2 megabytes of disk space.)
39 There are now 17542 cylinders available on your disk.
40 The filesystem type you have chosen is limited to 541064 cylinders.
41 How many cylinders would you like for /home/s1 (0 - 17542)?
42 Press for 0 cylinders: 1000
43 There are now 16542 cylinders available on your disk.
44 The filesystem type you have chosen is limited to 541064 cylinders.
45 How many cylinders would you like for /home/s2 (0 - 16542)?
46 Press for 0 cylinders: 1000
47 Notice: The selections you have made will leave 15542 cylinders unused.
48 You have specified the following disk configuration:
49 A /home/s1 filesystem with 1000 cylinders (1938.0 MB)
50 A /home/s2 filesystem with 1000 cylinders (1938.0 MB)
51 Is this allocation acceptable to you (y/n)? y
52 UX:sh (sh): ERROR: disk3: Not found
53 UX:sh (sh): ERROR: disk5: Not found
54 UX:sh (sh): ERROR: disk6: Not found
注釋:第37行到54行對上面定義的兩個slice分配空間,以cylinder為單位進(jìn)行,在第38行有提示說一個cylinder大約接近2MB的空間,在41行提示整個邏輯分區(qū)的空間是17542個cylinder。第49、50行說明了上面我們分配的兩個slice的大小,并在51行詢問是否接受以上定義,我們回答”y”。
55 Filesystems will now be created on the needed slices
56 Creating the /home/s1 filesystem on /dev/rdsk/c2b0t5d0s1
57 Allocated approximately 496093 inodes for this file system. Specify a
58 new value or press to use the default:
59 Creating the /home/s2 filesystem on /dev/rdsk/c2b0t5d0s2
60 Allocated approximately 496093 inodes for this file system. Specify a
61 new value or press to use the default:
62 UX:diskadd: INFO: Diskadd for Disk Drive 2 DONE at Tue Feb 24 13:44:02 CST 2004
63 #
注釋:第55到62行創(chuàng)建slice成功,并有說明s1是/dev/rdsk/c2b0t5d0s1,s2是/dev/rdsk/c2b0t5d0s2,這樣我們就完成了添加硬盤的工作,并在該邏輯分區(qū)上創(chuàng)建了兩個子分區(qū)。
下面我們用命令prtvtoc將該分區(qū)的vtoc表給輸出到文件/tmp/aaa,該文件內(nèi)包含了該分區(qū)的子分區(qū)(slice)的相關(guān)信息。
64 # prtvtoc -f /tmp/aaa /dev/rdsk/c2b0t5d0s0
注釋:
1)-f /tmp/aaa
使vtoc表輸出到文件/tmp/aaa,該文件可以隨意定義。
2)參數(shù)/dev/rdsk/c2b0t5d0s0
必須是目錄/dev/rdsk,該參數(shù)也可以是/dev/rdsk/c2b0t5d0p0。
65 # cat /tmp/aaa
66 #SLICE TAG FLAGS START SIZE
67 0 0x5 0x201 63 69628104
68 1 0x4 0x200 3969 3969000
69 2 0x4 0x200 3972969 3969000
70 3 0x0 0x0 0 0
71 4 0x0 0x0 0 0
72 5 0x0 0x0 0 0
73 6 0x0 0x0 0 0
74 7 0x1 0x201 63 34
75 8 0xd 0x201 97 3872
76 9 0x0 0x0 0 0
77 10 0x0 0x0 0 0
78 11 0x0 0x0 0 0
79 12 0x0 0x0 0 0
80 13 0x0 0x0 0 0
81 14 0x0 0x0 0 0
82 15 0x0 0x0 0 0
注釋:我們可以看到/dev/[r]dsk/c2b0t5d0s1和/dev/[r]dsk/c2b0t5d0s2對應(yīng)的兩個slice,第2和3行。也可以看到該活動UNIX系統(tǒng)分區(qū)的大小。關(guān)于該表的具體介紹請參考《prtvtoc命令介紹一節(jié)》。
83 # mount
84 /home/s1 on /dev/dsk/c2b0t5d0s1 read/write/log/setuid/mincache =closesync/noquot4
85 /home/s2 on /dev/dsk/c2b0t5d0s2 read/write/log/setuid/mincache =closesync/noquot4
86 #
a) Total disk size is 17543 cylinders (33998.1 MB)
Cylinders Approx
87 Partition Status Type Start End Length % MB
88 ====== ====== ======= ===== === ====== === ======
1 Active UNIX System 0 17542 17543 100 33998.1
89 SELECT ONE OF THE FOLLOWING:
0. Overwrite system master boot code
1. Create a partition
2. Change Active (Boot from) partition
3. Delete a partition
4. Exit (Update disk configuration and exit)
5. Cancel (Exit without updating disk configuration)
90 Enter Selection: 4
這樣,我們就成功的將磁盤陣列的第一個邏輯分區(qū)增加到系統(tǒng)中,并且給該分區(qū)增加了兩個slice子分區(qū)。
2.3.2 第二個例子
增加磁盤陣列柜第二個邏輯分區(qū)/dev/rdsk/c2b0t5d1。準(zhǔn)備將該邏輯分區(qū)分成2個fdisk分區(qū),并將該邏輯分區(qū)的活動fdiskUNIX系統(tǒng)分區(qū)(第一個fdisk分區(qū))再分成三個子分區(qū)(slice)。
1. 用diskadd –F s5dm c2b0t5d1命令。
2. 在第一個例子的第11行處輸入“n” ,進(jìn)入fdisk程序?qū)υ撨壿嫹謪^(qū)進(jìn)行分區(qū)。
3. 分成兩個fdisk分區(qū),整個過程如下所示:
# fdisk /dev/rdsk/c2b0t5d1s0
The recommended default partitioning for your disk is:
a 100% "UNIX System" partition.
To select this, please type "y". To partition your disk
differently, type "n" and the "fdisk" program will let you
select other partitions.y
Cylinders Approx
Partition Status Type Start End Length % MB
====== ====== ========== ===== === ====== === ======
1 Active UNIX System 0 15299 15300 45 15300.0
2 UNIX System 15300 33998 18699 55 18699.0
4. diskadd調(diào)用fdisk將硬盤分區(qū)完成以后調(diào)用disksetup –I /dev/rdsk/c2b0t5d1s0命令對該硬盤進(jìn)行子分區(qū)(slice)。這個過程與第一個例子類似,我們可以證明劃分子分區(qū)只是針對了active分區(qū),通過下面的操作可以看出來。
1 You will now specify the size in cylinders of each slice.
2 (One megabyte of disk space is approximately 1 cylinders.)
3 There are now 15299 cylinders available on your disk.
4 The filesystem type you have chosen is limited to 1048576 cylinders.
5 How many cylinders would you like for /home/s21 (0 - 15299)?
第5行中的0-15299說明該UNIX系統(tǒng)分區(qū)的空間是15300個cylinder長度,這與用fdisk命令所劃分的第1分區(qū)(當(dāng)前活動的UNIX系統(tǒng)分區(qū))的長度完全一樣。從而印證了我們關(guān)于slice只能對硬盤的當(dāng)前活動UNIX系統(tǒng)分區(qū)繼續(xù)進(jìn)行子分區(qū)的觀點(diǎn)。
2.2.3 第三個例子
這個例子就是一個系統(tǒng)主機(jī)的本地IDE硬盤的第二個分區(qū)的使用情況。
我們這個例子的環(huán)境是一個IDE硬盤被分成兩個fdisk分區(qū),其中分區(qū)1安裝了UnixWare7.1.x操作系統(tǒng),是當(dāng)前的活動的UNIX系統(tǒng)分區(qū),容量為3702.4MB,472個cylinder,第二個分區(qū)是UNIX系統(tǒng)分區(qū),容量為2470.9MB,315個cylinder。
我們無法象OpenServer一樣將第二個分區(qū)在進(jìn)行細(xì)分成很多子分區(qū),然后使用它們,只能利用mkfs命令將第二個fdisk分區(qū)作為一個整體進(jìn)行使用,不能夠在繼續(xù)劃分子分區(qū)。
Cylinders Approx
Partition Status Type Start End Length % MB
===== ====== =========== ===== === ====== === ======
1 Active UNIX System 0 471 472 60 3702.4
2 UNIX System 472 786 315 40 2470.9
1. mkfs –F vxfs /dev/rdsk/c0b0t0d0p2 5060475
1)-F vxfs是指明要創(chuàng)建的文件系統(tǒng)。
2)/dev/rdsk/c0b0t0d0p2是第二個分區(qū)對應(yīng)的設(shè)備文件。
3)5060475是以512字節(jié)進(jìn)行計算的sector數(shù)量。
4)這個命令的作用就是將第二個分區(qū)創(chuàng)建成一個vxfs類型的文件系統(tǒng)。
2. mount –F vxfs /dev/dsk/c0b0t0d0p2 /home/p2
這個命令將第二個分區(qū)mount到目錄/home/p2上,我們可以象一般的文件系統(tǒng)一樣進(jìn)行使用。
2.4 刪除硬盤
2.4.1 diskrm命令
diskrm [-F dm_type] [disk_number]
diskrm命令的參數(shù)與diskadd完全相同,代表的意思也完全一樣,它的作用就是將/etc/vfstab文件中的相應(yīng)記錄刪除。
2.4.2 一個例子
我們這個例子是刪除我們學(xué)習(xí)環(huán)境的磁盤陣列的第二個邏輯分區(qū)/dev/[r]dsk/c2b0t5d1。
我們先來看一下在沒有執(zhí)行命令diskrm前的/etc/vfstab的內(nèi)容,我們看到第14到16行都是磁盤陣列第二邏輯分區(qū)的子分區(qū)的信息。
1 # vi /etc/vfstab
2 /dev/root /dev/rroot / vxfs 1 no mincache=closesync SYS_RANGE_MAX
3 /dev/stand /dev/rstand /stand bfs 1 no - SYS_RANGE_MAX
4 /proc - /proc proc - no -
5 /processorfs - /system/processor profs - yes -
6 /dev/fd - /dev/fd fdfs - no -
7 /dev/dsk/f0t /dev/rdsk/f0t /install s5 - no -
8 /dev/dsk/f1t /dev/rdsk/f1t /install s5 - no -
9 /dev/dsk/f0 /dev/rdsk/f0 /install s5 - no -
10 /dev/dsk/f1 /dev/rdsk/f1 /install s5 - no -
11 /tmp - /tmp memfs - yes swapmax=10485760,rootmode=1777
12 /var/tmp - /var/tmp memfs - yes swapmax=41943040,rootmode=1777
13 /dev/_tcp - /dev/_tcp specfs - yes dev=tcp
14 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1 /home/s21 vxfs 1 no mincache=closesync SYS_RANGE_MAX
15 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2 /home/s22 vxfs 1 no mincache=closesync SYS_RANGE_MAX
16 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3 /home/s23 vxfs 1 no mincache=closesync SYS_RANGE_MAX
17 /dev/dsk/c2b0t5d2s1 /dev/rdsk/c2b0t5d2s1 /home/31 vxfs 1 no mincache=closesync SYS_RANGE_MAX
18 /dev/dsk/c2b0t5d2s2 /dev/rdsk/c2b0t5d2s2 /home/32 vxfs 1 no mincache=closesync SYS_RANGE_MAX
19 /dev/root /dev/rroot / vxfs 1 no mincache=closesync SYS_RANGE_MAX
20 /dev/stand /dev/rstand /stand bfs 1 no - SYS_RANGE_MAX
21 /proc - /proc proc - no -
22 /processorfs - /system/processor profs - yes -
23 /dev/fd - /dev/fd fdfs - no -
24 /dev/dsk/f0t /dev/rdsk/f0t /install s5 - no -
25 /dev/dsk/f1t /dev/rdsk/f1t /install s5 - no -
26 /dev/dsk/f0 /dev/rdsk/f0 /install s5 - no -
27 /dev/dsk/f1 /dev/rdsk/f1 /install s5 - no -
28 /tmp - /tmp memfs - yes swapmax=10485760,rootmode=1777
29 /var/tmp - /var/tmp memfs - yes swapmax=41943040,rootmode=1777
30 /dev/_tcp - /dev/_tcp specfs - yes dev=tcp
31 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1 /home/s21 vxfs 1 no mincache=closesync SYS_RANGE_MAX
32 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2 /home/s22 vxfs 1 no mincache=closesync SYS_RANGE_MAX
33 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3 /home/s23 vxfs 1 no mincache=closesync SYS_RANGE_MAX
34 /dev/dsk/c2b0t5d2s1 /dev/rdsk/c2b0t5d2s1 /home/31 vxfs 1 no mincache=closesync SYS_RANGE_MAX
35 /dev/dsk/c2b0t5d2s2 /dev/rdsk/c2b0t5d2s2 /home/32 vxfs 1 no mincache=closesync SYS_RANGE_MAX
36 @
37 "/etc/vfstab" 21 lines, 1483 characters
我們執(zhí)行命令diskrm c2b0t5d1后,在/etc/vfsvtab文件中看不到上面14到16行所顯示的內(nèi)容,說明刪除成功。在執(zhí)行該命令的過程中顯示內(nèi)容如下所示:
1 # diskrm c2b0t5d1
2 UX:diskrm: INFO: You have invoked the System V disk management (s5dm) diskrm ut.
3 The purpose of this utility is to remove entries from the /etc/vfstab file.
4 Do you wish to continue?
5 (Type y for yes or n for no followed by ENTER):
6 y
7 UX:diskrm: INFO:
8 Do you want to delete the following entry?
9 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1 /home/s21 vxfs 1 X
10 (Type y for yes or n for no and press ):
11 y
12 UX:diskrm: INFO:
13 Do you want to delete the following entry?
14 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2 /home/s22 vxfs 1 X
15 (Type y for yes or n for no and press ):
16 y
17 UX:diskrm: INFO:
18 Do you want to delete the following entry?
19 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3 /home/s23 vxfs 1 X
20 (Type y for yes or n for no and press ):
21 y
22 UX:diskrm: INFO: saving /etc/vfstab to /etc/Ovfstab
23 UX:diskrm: INFO: creating a new /etc/vfstab
24 UX:diskrm: INFO: Diskrm for disk c2b0t5d1 DONE at Thu Feb 26 14:07:46 CST 2004
25 #
附錄
參考資料:
1. www,chinaunix.net論壇上的相關(guān)文章。
2. UnixWare7.1.1和7.1.3上的聯(lián)機(jī)手冊,包括:prtvtoc、edvtoc、vtoc、fdisk、disksetup、diskadd、diskrm等
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u/31/showart_520614.html |
|