Linux基於裸裝置建庫

xiexingzhi發表於2012-09-02
一、分割槽

分割槽的步驟不說了,把硬碟分為如下幾個區:

[root@suk1 ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 4294 MB, 4294967296 bytes

255 heads, 63 sectors/track, 522 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 44 353398+ 83 Linux

/dev/sdb2 45 69 200812+ 83 Linux

/dev/sdb3 70 88 152617+ 83 Linux

/dev/sdb4 89 522 3486105 5 Extended

/dev/sdb5 89 101 104391 83 Linux

/dev/sdb6 102 114 104391 83 Linux

/dev/sdb7 115 117 24066 83 Linux

/dev/sdb8 118 120 24066 83 Linux

/dev/sdb9 121 127 56196 83 Linux

/dev/sdb10 128 134 56196 83 Linux

2、繫結裸裝置

繫結裸裝置有兩種方式

1)用命令繫結

[root@suk1 raw]# raw /dev/raw/raw1 /dev/sdb1

/dev/raw/raw1: bound to major 8, minor 17

[root@suk1 raw]# raw /dev/raw/raw2 /dev/sdb2

/dev/raw/raw2: bound to major 8, minor 18

[root@suk1 raw]# raw /dev/raw/raw3 /dev/sdb3

/dev/raw/raw3: bound to major 8, minor 19

[root@suk1 raw]# raw /dev/raw/raw5 /dev/sdb5

/dev/raw/raw5: bound to major 8, minor 21

[root@suk1 raw]# raw /dev/raw/raw6 /dev/sdb6

/dev/raw/raw6: bound to major 8, minor 22

[root@suk1 raw]# raw /dev/raw/raw7 /dev/sdb7

/dev/raw/raw7: bound to major 8, minor 23

[root@suk1 raw]# raw /dev/raw/raw8 /dev/sdb8

/dev/raw/raw8: bound to major 8, minor 24

[root@suk1 raw]# raw /dev/raw/raw9 /dev/sdb9

/dev/raw/raw9: bound to major 8, minor 25

[root@suk1 raw]# raw /dev/raw/raw10 /dev/sdb10

/dev/raw/raw10: bound to major 8, minor 26

[root@suk1 raw]# raw -qa

/dev/raw/raw1: bound to major 8, minor 17

/dev/raw/raw2: bound to major 8, minor 18

/dev/raw/raw3: bound to major 8, minor 19

/dev/raw/raw5: bound to major 8, minor 21

/dev/raw/raw6: bound to major 8, minor 22

/dev/raw/raw7: bound to major 8, minor 23

/dev/raw/raw8: bound to major 8, minor 24

/dev/raw/raw9: bound to major 8, minor 25

/dev/raw/raw10: bound to major 8, minor 26

注意:

/dev/sdb4是擴充套件分割槽,不要把裸裝置繫結到那個分割槽上。

這種方式繫結的裸裝置在OS重啟後會失效,為了你重啟後仍然生效,你可以修改/etc/rc.local檔案,將如下內容加入到/etc/rc.local檔案中:

raw /dev/raw/raw1 /dev/sdb1

raw /dev/raw/raw2 /dev/sdb2

raw /dev/raw/raw3 /dev/sdb3

raw /dev/raw/raw5 /dev/sdb5

raw /dev/raw/raw6 /dev/sdb6

raw /dev/raw/raw7 /dev/sdb7

raw /dev/raw/raw8 /dev/sdb8

raw /dev/raw/raw9 /dev/sdb9

raw /dev/raw/raw10 /dev/sdb10

這種方式實際上就是在開機的時候執行/etc/rc.local檔案裡的raw命令進行繫結的。

2)用服務的方式繫結

修改/etc/sysconfig/rawdevices檔案如下,以開機時自動載入裸裝置

/dev/raw/raw1 /dev/sdb1

/dev/raw/raw2 /dev/sdb2

/dev/raw/raw3 /dev/sdb3

/dev/raw/raw5 /dev/sdb5

/dev/raw/raw6 /dev/sdb6

/dev/raw/raw7 /dev/sdb7

/dev/raw/raw8 /dev/sdb8

/dev/raw/raw9 /dev/sdb9

/dev/raw/raw10 /dev/sdb10

然後啟動服務:

[root@suk1 raw]# service rawdevices start

[root@suk1 raw]# service rawdevices start

Assigning devices:

/dev/raw/raw1 --&gt /dev/sdb1

/dev/raw/raw1: bound to major 8, minor 17

/dev/raw/raw2 --&gt /dev/sdb2

/dev/raw/raw2: bound to major 8, minor 18

/dev/raw/raw3 --&gt /dev/sdb3

/dev/raw/raw3: bound to major 8, minor 19

/dev/raw/raw5 --&gt /dev/sdb5

/dev/raw/raw5: bound to major 8, minor 21

/dev/raw/raw6 --&gt /dev/sdb6

/dev/raw/raw6: bound to major 8, minor 22

/dev/raw/raw7 --&gt /dev/sdb7

/dev/raw/raw7: bound to major 8, minor 23

/dev/raw/raw8 --&gt /dev/sdb8

/dev/raw/raw8: bound to major 8, minor 24

/dev/raw/raw9 --&gt /dev/sdb9

/dev/raw/raw9: bound to major 8, minor 25

/dev/raw/raw10 --&gt /dev/sdb10

這種方式繫結的裸裝置在OS重啟後仍然生效。

3、修改裸裝置的屬主

修改裸裝置的屬主也有兩種方式:

1)命令修改

命令修改很簡單:

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw1

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw2

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw3

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw4

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw5

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw6

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw7

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw8

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw9

[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw10

由於/dev下的檔案都是動態建立的,所以在OS重啟後,屬主仍會變成root:disk,要解決這個問題,可以把上面的命令寫入到/etc/rc.local檔案中:

chown oracle:oinstall /dev/raw/raw1

chown oracle:oinstall /dev/raw/raw2

chown oracle:oinstall /dev/raw/raw3
chown oracle:oinstall /dev/raw/raw4

chown oracle:oinstall /dev/raw/raw5

chown oracle:oinstall /dev/raw/raw6

chown oracle:oinstall /dev/raw/raw7

chown oracle:oinstall /dev/raw/raw8

chown oracle:oinstall /dev/raw/raw9

chown oracle:oinstall /dev/raw/raw10

這樣每次開機後可以重新改變屬主。

2)修改/etc/udev/permissions.d/50-udev.permissions檔案

將/etc/udev/permissions.d/50-udev.permissions的113行

raw/*:root:disk:0660

修改為
raw/*:oracle:oinstall:0660

這個的意思是修改裸裝置的預設屬主為oracle:oinstall,預設的mode是0660。

重啟OS檢驗。

4、建立符號連結

這一步可以省略,但是為了更直觀些,建議建立軟連結

[oracle@suk1 ~]$ cd $ORACLE_BASE

[oracle@suk1 oracle]$ ls

oraInventory product

[oracle@suk1 oracle]$ mkdir -p oradata/test1

[oracle@suk1 oracle]$ cd oradata/test1

[oracle@suk1 oradata]$ ln -s /dev/raw/raw1 system01.dbf

[oracle@suk1 oradata]$ ln -s /dev/raw/raw2 undotbs01.dbf

[oracle@suk1 oradata]$ ln -s /dev/raw/raw3 sysaux01.dbf

[oracle@suk1 oradata]$ ln -s /dev/raw/raw5 users01.dbf

[oracle@suk1 oradata]$ ln -s /dev/raw/raw6 temp01.dbf

[oracle@suk1 oradata]$ ln -s /dev/raw/raw7 control01.ctl

[oracle@suk1 oradata]$ ln -s /dev/raw/raw8 control02.ctl

[oracle@suk1 oradata]$ ln -s /dev/raw/raw9 redo01.ora

[oracle@suk1 oradata]$ ln -s /dev/raw/raw10 redo02.ora

5、建立資料庫

啟動dbca,選擇建立資料庫

下一步,選擇建立customer 資料庫,

下一步,輸入SID,

下一步,在儲存選項頁,選擇裸裝置,

下一步,在選擇引數頁面,選擇字符集;初始化檔案選擇init檔案,同時在這個介面點選《所有初始化引數》,在彈出的介面修改控制檔案引數為:

/opt/oracle/oradata/test1/control01.ctl, /opt/oracle/oradata/test1/control02.ctl

下一步,在這一步,只保留兩個控制檔案、兩組聯機日誌,確認表空間對應的資料檔案的名稱為剛才建立的對應的符號連結;並確定建立的資料檔案、日誌檔案比對應的裸裝置小(為了簡單起見,統一設定為小1M)

下一步,開始建立資料庫。

不出意外,一段時間後,資料庫就可以安裝完成。

縱觀整個過程,基於裸裝置建立資料庫最重要的步驟是如何規劃裸裝置,如果裸裝置設定過大,浪費空間,如果過小,安裝就會失敗。


1.建立pv

pvcreate -M2 -metadatasize 100M /dev/sda
pvcreate -M2 -metadatasize 100M /dev/sdb1
pvcreate -M2 -metadatasize 100M /dev/sdb2
pvcreate -M2 -metadatasize 100M /dev/sdc

物理卷可以是整個硬碟(lun),也可以是硬碟上的一個分割槽

2.建立vg

vgcreate vg_db /dev/sda /dev/sdb1 /dev/sdb2 /dev/sdc -s128m


3.建立lv

lvcreate -L2048m -i4 -I64k vg_db -n lv_2g_001
lvcreate -L2048m -i4 -I64k vg_db -n lv_2g_002

4.繫結

raw /dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
raw /dev/raw/raw2 /dev/mapper/vg_db-lv_2g_002

使用raw命令繫結的裸裝置在重啟後會失效。所以需要修改/etc/sysconfig/rawdevices配置檔案,在檔案中加入如下內容(每個裸裝置一行):
/dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
/dev/raw/raw2 /dev/mapper/vg_db-lv_2g_002

執行 /etc/init.d/rawdevices restart 使配置檔案中的裸裝置生效
執行 /sbin/chkconfig rawdevices on 保證機器啟動的時候裸裝置能夠載入

5.授權

chown -R oracle.dba /dev/mapper

修改配置檔案/etc/udev/permissions.d/50-udev.permissions
註釋掉raw/*:root:disk:0660
新增新行raw/*:oracle:dba:0660

6.連結(可選)

ln -s /dev/raw/raw1 /oradata/ningoo/system01.dbf
ln -s /dev/raw/raw2 /oradata/ningoo/undo01.dbf

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

相關文章