一、硬體路徑(Hardware Path)是如何定義的
硬體路徑是指主機對其SPU與外設(I/O)進行管理的一種標識,是對設備匯流排結構與位址設置路徑結構的標識,以便於確定硬體與診斷故障。不同設備的硬體路徑不能相同,否則會造成中斷衝突。不同機型由於匯流排結構不同,同類設備的硬體路徑大相徑庭。一般原則是,每次匯流排轉換必須有一個反斜扛將上下級匯流排分隔開。
例 如:
8/16/5.6.0
8--- 第一級匯流排
16--- 第二級匯流排
5--- 第三級匯流排卡號
6--- 地 址
0--- 相應位址下第一個設備
二、HP-UX的硬碟資源的邏輯卷管理-LVM(LOGIC VOLUMN MANAGER)
HP-UX管理硬碟存儲資源是採用邏輯卷方式來進行管理的,要說清整個機制,先要介紹幾個概念:
物理卷Physical Volume,稱為PV:指物理上硬碟,一個硬碟就是一個PV
每个物理卷(PV)最大可以包含65,535个PE(缺省是 1016;可以使用 vgcreate -e设置).
邏輯卷組Volume Group,稱為VG:一個VG包含整數個PV,可理解為一個大硬碟。
每个卷组(VG)最大可以有255个逻辑卷(LV)(缺省就是 255; 可以使用 vgcreate –l设置).
每个卷组(VG)最大可以有255个物理卷(PV) (缺省是16;可以使用 vgcreate -p设置).
邏輯卷Logical Volume,稱為LV:相當於對大硬碟進行邏輯分區, 一個VG裡可有若干個LV。
檔案系統File System:在邏輯卷的基礎上,可建立檔案系統,然後MOUNT到一個目錄下,這樣就可以檔存取的方式來使用這塊硬碟了。
可以不建檔案系統,而直接把LV當作裸設備,以TRUNK方式來存取資料,許多資料庫都是用這種方式存取資料。
根據以上介紹,在HPUX下正確使用硬碟的順序及相應命令如下:
1. 先建物理卷:
# pvcreate –f /dev/rdsk/cCdDtT
這裡必須使用硬碟的字元設備檔
#pvcreate –B /dev/rdsk/cxdytz 表示初始化磁盤為引導磁盤
2. 再建邏輯卷組:
# mkdir /dev/vg0X X:0~f,邏輯卷組名
# mknod /dev/vg0X/group c 64 0xmn0000
創建名為group的設備文件
C 指定group為字符設備文件
64 group設備文件的主編號
0xmn0000 是設備文件的十六進制次編號,每個mn必須在所有卷組中是唯一的
# vgcreate vg0X /dev/dsk/cCdDtT /dev/dsk/cxdytz …
還可以通過#vgextend /dev/vg0X /dev/dsk/cxdytz
來向vg0X中添加PV
3. 然後劃分邏輯卷:
# lvcreate –L size –n lv_name /dev/vg0X
size:該邏輯卷大小(單位:M)
也可以使用: #lvcreate –l 4096 –n lv_name /dev/vg0X
來創建LV,單位為邏輯盤區個數,默認的每個邏輯盤區大小為4M,
這裡表示該LV的大小為4096*4=16384M
注意:
若采用條帶化存儲方式則采用以下LV創建方式:
#lvcreate –i 4 –I 64 –L 240 –n lv_name /dev/vg0X
-i 4 小寫的i表示要在四個磁盤上進行條帶化
-I 64 大寫的i,表示條帶大小為64KB
4. 在LV上建檔案系統:
# newfs –F file_system_type –o largefiles /dev/vg0X/lv_name
或是:mkfs -F hfs -o largefiles /dev/vg02/rlvol1
或者
newfs -F hfs -o largefiles /dev/vg02/rlvol1
file_system_type:檔案系統類型,包括hfs和vxfs,注意此時用該邏輯卷的字元設備檔。
若不指定-F參數,則應用/etc/default/fs中的默認值
–o largefiles 表示支持大文件系統,也可以不用該參數
可以使用fstyp命令来查看文件系统是不是已经支持大文件系统:
命令格式为:
#fstyp /dev/vgXX/lvolX
#fstyp -v /dev/vgXX/lvolX
其中,-v参数可以查看大文件属性的设置情况,其中“f_flag"”项的值是0或者16,如果是16的话,就说明是已经支持大文件系统了。
当一个文件系统已经有数据时,可以用fsadm命令更改largefiles属性,当需要首先将文件系统umount掉,然后进行,如果用户购买了并安装了onlineJFS,就不需要umount文件系统再执行fsadm命令了,可以在线使用fsadm更改大文件属性。
文件系统内有数据文件时:
fsadm -F hfs -o largefiles /dev/vg02/rlvol1 或是
Fsadm –F vxfs –o largefiles /dev/vg02/rlvol1
当然,你也可以将大文件系统转换为小文件系统,不过要注意的是这个大文件系统中不能有大于2GB的文件,否则无法转换成功。示例如下:
fsadm -F hfs -o nolargefiles /dev/vg02/rlvol1
5. 將此檔案系統Mount到一個目錄下:
# mkdir /directory
# mount /dev/vg0X/lvolY /directory
6. 添加邏輯卷
添加檔案系統卷。例如:在vg01上添加一個200M的檔案系統卷,卷名為data,mount到目錄/sample 上。
A、創建邏輯卷,在系統提示符下鍵入命令:
# lvcreate –L 200 –n data /dev/vg01
B、在邏輯卷data上創建檔案系統:
# newfs –F hfs /dev/vg01/rdata
注:如果是vxfs檔案系統,則用
# newfs –F vxfs /dev/vg01/rdata
C、創建目錄/sample,並將邏輯卷data mount 到/sample.
# mkdir sample”
# mount /dev/vg01/data /sample
D、用bdf命令,將會看到/dev/vg01/data mount 到/sample上。
7. 刪除邏輯卷
例如:刪除vg01 中名為data 的邏輯卷,所mount的文件系統為/sample。
1) 卸載所要刪除的邏輯卷:
A、首先用umount 命令將邏輯卷data 從/sample上卸載下來:
# umount /sample
B、若系統提示設備忙,不能卸載;則在根目錄系統提示符下,鍵入以下命令,進入單用戶:
# shutdown -y 0
在單使用者下,先將所有邏輯卷mount上,鍵入命令:
# mount -a
用bdf命令看該邏輯卷是否已經mount上,如果mount上,鍵入以下命令:
# umount /sample
2) 刪除邏輯卷/dev/vg01/data ,用命令:
# lvremove /dev/vg01/data 或是lvremove –f /dev/vg01/data ---强制刪除
8. 擴大檔案系統
1) 擴大檔案系統,首先要找到這個檔案系統所對應的邏輯卷,只有首先擴大邏輯卷,給檔案系統以擴大的空間,才能擴大檔案系統。
2) 為擴大邏輯卷,先進單使用者,在根目錄系統提示符下,鍵入命令:
# shutdown -y 0
3) 進入單用戶後,先將所有檔案系統mount上,鍵入命令:
# mount -a
4) 用bdf命令看該檔案系統是否已經mount上,如果mount上,用命令#umount檔案系統名umount該檔案系統。例如,想要擴大“/usr”到500M ,就鍵入命令:
# umount /usr
5) 用命令:
# lvextend -L 500 /dev/vg00/lvol4
這裡,假定/usr 對應/dev/vg00/lvol4
6) 用命令:
# extendfs /dev/vg00/lvol4 擴大檔案系統。
注:如果是vxfs檔案系統,則用
# extendfs -F vxfs /dev/vg00/lvol4
7) 用命令:
# mount /dev/vg00/lvol4 /usr
將檔案系統mount 到/usr
這樣,檔案系統“/usr”就被擴大了,
8) 用命令:
# init 3 進入原來多用戶運行級。
注意:若是在linux下則采用以下方式來擴充文件系統空間
#lvextend –L +2G /dev/vgexp/lv_exp 增加2G大小的空間
#umount /exp
#e2fsck –f /dev/vgexp/lv_exp
#resize2fs /dev/vgexp/lv_exp
9.減小lv
#fuser –cu /dev/vgexp/lvoexp 踢出正在使用該lv的用戶
#lvreduce –L 500 /dev/vgexp/lvoexp 將lv減小到500M
10.添加LV鏡像
#lvextend –m 1 /dev/vgexp/lvoexp
#lvextend –m 1 /dev/vgexp/lvoexp /dev/dsk/cxdytz 將鏡像强制保存到其他物理卷
11.刪除LV鏡像副本
#lvreduce –m 0 /dev/vgexp/lvoexp /dev/dsk/cxdytz
12.導出VG
1) #fuser –cu /dev/vgexp/lvoexp
2) #vgchange –a n vgexp
3) #vgexport –p –s –m /tmp/vgexp.map vgexp
-m 產生一個map文件(若在vgexport時沒有產生map,則在vgimport時lv的名字就會變成默認的lvo1…)
-s 向映射文件中添加VGID
13.導入VG
1) #mkdir /dev/vgexp
2) #mknod /dev/vgexp/group c 64 0xmn0000
3)#vgimport –s –m /tmp/vgexp.map vgexp
-s 不必在vgimport命令行中指定所有這些磁盤
4) #vgchange –a y vgexp
14.暫停卷組
#vgchange –Q mode vgexp
-Q mode mode可以是“rw”或是“w”
#vgchange –Q w –t 600 vgexp 暫停600秒對vgexp的寫操作
#vgchange –R vgexp 恢復vgexp的寫操作
15.rename vg
1) #vgchange –a n vgexp
2) #ls –l /dev/vgexp/group 確定vg的group文件的次編號如:0x010000 卷組為1,并記下
3) #vgexport –p –s –m /tmp/vgexp.map vgexp
4) #mkdir /dev/vgdive 為卷組的新名稱創建卷組目錄及group文件
5) #mknod /dev/vgdive/group c 64 0x010000 切記保持次編號一直
6) #vgimport –s –m /tmp/vgexp.map /dev/vgdive
7) #vgcfgbackup /dev/vgdive
8) #vgchange –a y /dev/vgdive
9) #rm /etc/lvmconf/vgexp.conf 刪除舊的vg配置信息
10) 修改fstab及來自于vgexport命令的現有映射文件
16. 刪除邏輯卷
#lvremove /dev/vglock/lv_informix
去激活卷組
#vgchange -a n /dev/vglock (如果不能夠去啟動,則可以用如下命令強行去
啟動,vgchange -c n /dev/vglock)
預刪除卷組
#vgexport -p -s -m /tmp/vglock.map /dev/vglock
刪除卷組
#vgremove /dev/vglock
17. 創建共享卷組
在一台已經創建卷組的機器上先去啟動
#vgchange -a n /dev/vglock
預刪除卷組
#vgexport -p -s -m /tmp/vglock.map /dev/vglock
將map檔傳送到另外一台機器
#rcp scp1:/tmp/vglock.map scp2:/tmp/vglock.map
在另外一台機器上導入卷組之前要先創建卷組名
#mkdir /dev/vglock
創建group節點文件
#mknod /dev/vglock/group c 64 0x010000 (該節點一定要和第一台機器一致)
導入卷組
#vgimport -s -m /tmp/vglock.map /dev/vglock
18.拆分VG
實例:vgdata包含:/dev/dsk/dsk0~/dev/dsk/dsk5
Lvol1,lvol2和lvol3位於pv /dev/dsk/dsk0和/dev/dsk/dsk1上,lvol4,lvol5,lvol6位於其他PV;要將/dev/dsk/dsk0和/dev/dsk/dsk1保留在vgdata,而其他則拆分并組成vgdive
1) #vgchange –a n vgdata
2) #vgexport –p –s –m /tmp/vgdata.map vgdata
3) #Vgchgid –f /dev/rdsk/dsk2 /dev/rdsk/dsk3 /dev/rdsk/dsk4 /dev/rdsk/dsk5
4) #mkdir /dev/vgdata
5) #mknod /dev/vgdata/group c 64 0xmn0000
6) #mkdir /dev/vgdive
7) #mknod /dev/vgdive/group c 64 0xab0000
8) #vgimport –s –m /dev/vgdata /dev/rdsk/dsk0 /dev/rdsk/dsk1
9) #vgimport –s –m /dev/vgdive /dev/rdsk/dsk2 /dev/rdsk/dsk3 /dev/rdsk/dsk4 /dev/rdsk/dsk5
10) #vgchange –a y –q n /dev/vgdata 激活VG并對VG做Quorum檢查
11) #vgchange –a y /dev/vgdive
12) #lvremove –f /dev/vgdata/lvol4 /dev/vgdata/lvol5 /dev/vgdata/lvol6 刪除重複LV
13) #lvremove –f /dev/vgdive/lvol1 /dev/vgdive/lvol2 /dev/vgdive/lvol3 刪除重複LV
14) #vgreduce –f vgdata 從卷組中刪除丟失的PV
15) #vgreduce –f vgdive 從卷組中刪除丟失的PV
16) #vgchange –a y –q y /dev/vgdata 對舊卷組啟用Quorum檢查
19.使用pvg对已存在的vg镜像
背景:
客户原有一台VA,有一个vg01,包括c4t0d1和c4t0d2
现在需要新加一台VA,建立c5t0d1和c5t0d2,需要将vg01上的LV镜像到新盘上。
方法:
为确保LV镜像跨VA,需要使用pvg
步骤:
1). vgextend vg01 /dev/dsk/c5t0d1 /dev/dsk/c5t0d2
2). vi /etc/lvmpvg
VG /dev/vg01
PVG pvg1
/dev/dsk/c4t0d1
/dev/dsk/c4t0d2
PVG pvg2
/dev/dsk/c5t0d1
/dev/dsk/c5t0d2
3). 对每一个LV都执行:
lvchange -s g /dev/vg01/lvol1
4). lvextend -m 1 /dev/vg01/lvol1 pvg2
20.補充:
1).初始化物理磁片:pvcreate -f /dev/rdsk/c1t1d0
命令説明:
NAME
pvcreate - initialize a disk or partition for use by LVM
SYNOPSIS
pvcreate [-d|--debug] [-f[f]|--force [--force]] [-y|--yes] [-h|--help] [-t|--test]
[-v|--verbose] [--labelsector] [-M|--metadatatypetype] [--metadatacopies#copies] [--meta-
datasizesize] [--restorefilefile] [--setphysicalvolumesizesize] [--version] [-Z|--zeroy/n]
PhysicalVolume [PhysicalVolume...]
eg: #pvcreate /dev/sdc4 /dev/sde
2).建立块专用或字符专用文件:mknod /dev/vgexp/group c 64 0x0001
説明:p--FIFO型
b---块文件
c---字符文件
SYNOPSIS
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
3).vgcreate /dev/vgexp /dev/dsk/c1t1d0
在linux中按以上執行
查看卷組啟動信息:vgdisplay /dev/vglock
激活卷組:vgchange -a -y /dev/vglock (用vgchange -c -y /dev/vglock來強制激活 )
去激活卷組:vgchange -a n /dev/vglock (用vgchange -c n /dev/vglock來強制去激活)
4).擴展邏輯卷:lvextend -l 50 /dev/vglock/lv_root (單位是頁,頁的大小再創建
卷組時已經確定,不可以再更改,一般缺省為4M,所以是200M。)
或者
lvextend -L 200 /dev/vglock/lv_informix (這是帶大寫的L參數,表示
是以M為單位來分配的大小的。)
擴展檔案系統:umount /informix
extendfs /dev/vglock/lv_root
(如果是vxfs檔案系統,則用
extendfs -F vxfs /dev/vg00/lvol4)
mount /dev/vglock/lv_root /informix
5).將該邏輯卷組導入導另外一套小型機上:
rcp HOST1:/tmp/lock.map HSOT2:/tmp/lock.map
在節點HSOT2中,創建鎖盤卷組目錄名(取和HOST1節點相同的目錄名)
命令:# mkdir /dev/vglock
在HOST2節點上,為鎖盤創建一控制檔案名group
命令:# mknod /dev/vglock/group c 64 0x0001
最後一個參數oxhh0000應保證在HOST2節點中是唯一的,可能的話,其參數設置和HOST1節點 相同。為保證唯一性,可以如下命令檢查已存在的卷組:
在HOST2節點上,將鎖盤配置從檔映射回系統
命令:# vgimport -s -m /tmp/lock.map /dev/vglock