1.添加6塊硬碟,每塊100g。無論是熱加還是冷加,無論是加硬碟,用san儲存劃lun,或者再加上多重路徑,都是可以這麼做的。
在作業系統層,能識別這樣的lun,下面的sdb就是一個剛劃分的300g的lun(也就是硬碟,或者裸塊裝置)。[root@pri ~]# cd /dev[root@pri dev]# ls -l | grep sdbrw-r----- 1 root disk 8, 0 Apr 11 12:21 sdabrw-r----- 1 root disk 8, 1 Apr 11 12:21 sda1brw-r----- 1 root disk 8, 2 Apr 11 12:21 sda2brw-r----- 1 root disk 8, 16 Apr 11 12:21 sdb
分區我們對硬碟進行分區,後續把分區分別作為asm磁碟。其實就一塊機械硬碟,根本沒必要分區再做asm。只有多塊硬碟的時候,可以用asm做鏡像與條帶化等。如果儲存已經做了raid,給我劃分的lun我也沒必要再做分區,直接可以加為asm了。當然,比如有/dev/sda,/dev/sdb兩塊機械硬碟,我可以分別劃分出/dev/sda1、/dev/sda2、/dev/sdb1、/dev/sdb2,然後摘取/dev/sda1與/dev/sdb1出來聯合做一個asm disk1.
[root@pri dev]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel. Changes will remain in memory only,until you decide to write them. After that, of course, the previouscontent won't be recoverable.The number of cylinders for this disk is set to 39162.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 1First cylinder (1-39162, default 1): 1Last cylinder or +size or +sizeM or +sizeK (1-39162, default 39162): 60Command (m for help): nCommand action e extended p primary partition (1-4)2Invalid partition number for type `2'Command action e extended p primary partition (1-4)pPartition number (1-4): 2First cylinder (61-39162, default 61): 61Last cylinder or +size or +sizeM or +sizeK (61-39162, default 39162): 120Command (m for help): nCommand action e extended p primary partition (1-4)3Invalid partition number for type `3'Command action e extended p primary partition (1-4)pPartition number (1-4): 3First cylinder (121-39162, default 121): 121Last cylinder or +size or +sizeM or +sizeK (121-39162, default 39162): 180Command (m for help): nCommand action e extended p primary partition (1-4)pSelected partition 4First cylinder (181-39162, default 181): 181Last cylinder or +size or +sizeM or +sizeK (181-39162, default 39162): 240Command (m for help): nYou must delete some partition and add an extended partition firstCommand (m for help): mCommand action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)Command (m for help): dPartition number (1-4): 4Command (m for help): nCommand action e extended p primary partition (1-4)eSelected partition 4First cylinder (181-39162, default 181):Using default value 181Last cylinder or +size or +sizeM or +sizeK (181-39162, default 39162): 240Command (m for help): nFirst cylinder (181-240, default 181):Using default value 181Last cylinder or +size or +sizeM or +sizeK (181-240, default 240): 210Command (m for help): nFirst cylinder (211-240, default 211):Using default value 211Last cylinder or +size or +sizeM or +sizeK (211-240, default 240):Using default value 240Command (m for help): mCommand action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@pri dev]# pwd/dev[root@pri dev]# ls | grep sdsdasda1sda2sdbsdb1sdb2sdb3sdb4sdb5sdb6
我們將sdb這塊裸裝置,分區稱sdb1-sdb6,但這些sdb1-6也並不含檔案系統,也就是說,還沒被檔案系統格式化。
從官方網站下載oracle程式包pri:orcl2 > uname -aLinux pri 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linuxhttp://www.oracle.com/technetwork/topics/linux/asmliboracleasmlib-2.0 - ASM庫oracleasm-support-2.0 - utilities needed to administer ASMLib 管理ASMlib所需的公用程式oracleasm - a kernel module for the Oracle ASM libraryASM庫的核心模組
下載了這5個,一定要注意,看上面5個rpm包,都寫著是64位的。
結果最後只能裝上這三個。
-rw-r--r-- 1 root root 25460 Apr 11 18:34 oracleasm-2.6.18-308.24.1.el5-2.0.5-1.el5.x86_64.rpm
-rw-r--r-- 1 root root 90225 Apr 11 18:36 oracleasm-support-2.1.8-1.el5.x86_64.rpm
-rw-r--r-- 1 root root 14176 Apr 11 18:36 oracleasmlib-2.0.4-1.el5.x86_64.rpm
對於dji單資料庫使用者來裝,就不用分grid使用者與oracle使用者了。據說不建asmadmin等等的組,那麼就可以用普通的oracle使用者也擁有asmdba許可權。添加每個節點的/etc/security/limits.conforacle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536oracle soft core unlimitedoracle soft core unlimited添加每個節點的/etc/pam.d/login檔案session required pam_limits.so對於Bourne、Bash或Korn shell,將以下內容加到每個節點的/etc/profile檔案中。if [ $USER = "oracle"] || [ $USER = "grid" ];then if [ $SHELL = "/bin/ksh" ];then ulimit -u 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022fi
配置ASMLib,不加-i就是顯示當前配置,然後執行oracleasm init就等同於之前-i的指令。/usr/sbin/oracleasm configure -i
配置之前:[root@pri asmlib]# /usr/sbin/oracleasm configureORACLEASM_ENABLED=falseORACLEASM_UID=ORACLEASM_GID=ORACLEASM_SCANBOOT=trueORACLEASM_SCANORDER=""ORACLEASM_SCANEXCLUDE=""ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
配置:[root@pri asmlib]# /usr/sbin/oracleasm configure -iConfiguring the Oracle ASM library driver.This will configure the on-boot properties of the Oracle ASM librarydriver. The following questions will determine whether the driver isloaded on boot and what permissions it will have. The current valueswill be shown in brackets ('[]'). Hitting <ENTER> without typing ananswer will keep that current value. Ctrl-C will abort.Default user to own the driver interface []: oracleDefault group to own the driver interface []: dbaStart Oracle ASM library driver on boot (y/n) [n]: yScan for Oracle ASM disks on boot (y/n) [y]: yWriting Oracle ASM library driver configuration: done
配置之後:[root@pri asmlib]# /usr/sbin/oracleasm configureORACLEASM_ENABLED=trueORACLEASM_UID=oracleORACLEASM_GID=dbaORACLEASM_SCANBOOT=trueORACLEASM_SCANORDER=""ORACLEASM_SCANEXCLUDE=""ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
為asm添加asm磁碟此時/dev/sdb1隻是作業系統認識的分區,我要將其設為讓ASM也認識。/usr/sbin/oracleasm createdisk data1 /dev/sdb1每個節點以root輸入,ASM磁碟對每個節點可用。/usr/sbin/oracleasm scandisks/usr/sbin/oracleasm listdisks(檢驗一下)
[root@pri asmlib]# /usr/sbin/oracleasm createdisk data1 /dev/sdb1Writing disk header: doneInstantiating disk: failedClearing disk header: done[root@pri asmlib]#[root@pri asmlib]# /usr/sbin/oracleasm createdisk data1 /dev/sdb2Writing disk header: doneInstantiating disk: failedClearing disk header: done[root@pri asmlib]# /usr/sbin/oracleasm createdisk data1 /dev/sdb3Writing disk header: doneInstantiating disk: failedClearing disk header: done[root@pri asmlib]# /usr/sbin/oracleasm createdisk data1 /dev/sdb4Writing disk header: failedUnable to label device "/dev/sdb4"[root@pri asmlib]# cd /dev[root@pri dev]# ls | grep sdsdasda1sda2sdbsdb1sdb2sdb3sdb4sdb5sdb6
不知道為什麼,我雖然有sdb4,但是這樣會失敗,是不是擴產分區就不能用來做asm盤的。
每個節點以root輸入,ASM磁碟對每個節點可用。[root@pri dev]# /usr/sbin/oracleasm scandisksReloading disk partitions: doneCleaning any stale ASM disks...Scanning system for ASM disks...
下面這個必須配置上,不然不能裝GI,這個要跟vip在同一個網段上,並且不能是本機ip,也不能使已經使用的。/etc/hosts 10.60.17.150 pri-scan如果出現[ins-40724] no locally defined network interface matches the scan subnet.報錯,重啟下主機就好。
後來又發現有報錯,在如下這個介面。好像要再再/etc/hosts中,弄一個pri-vip,隨便弄一個跟公網不同一個網段,但地址不一樣的ip才能通過。
[root@pri ~]# /usr/sbin/oracleasm createdisk data1 /dev/sdb1Writing disk header: doneInstantiating disk: failedClearing disk header: done
[root@pri ~]# vi /var/log/oracleasmCreating /dev/oracleasm mount point: /dev/oracleasmLoading module "oracleasm": failedUnable to load module "oracleasm"Cleaning any stale ASM disks...Loading module "oracleasm": failedUnable to load module "oracleasm"
最後發現,官網上給下載的是oracle linux的asm包。那redhat 的怎麼辦呢?原來redhat的光碟內建有iso檔案。[root@erpp1 Server]# ls | grep oracleasmoracleasm-2.6.18-274.el5-2.0.5-1.el5.x86_64.rpmoracleasm-2.6.18-274.el5debug-2.0.5-1.el5.x86_64.rpmoracleasm-2.6.18-274.el5xen-2.0.5-1.el5.x86_64.rpmoracleasm-support-2.1.7-1.el5.x86_64.rpm
我就是下載了如下兩個,rpm -ivh ,其餘兩個安裝不了。oracleasm-support-2.1.7-1.el5.x86_64.rpmoracleasm-2.6.18-274.el5-2.0.5-1.el5.x86_64.rpm
[root@pri mnt]# cd /mnt[root@pri mnt]# mkdir cdrom[root@pri mnt]# mount /dev/cdrom /mnt/cdrommount: block device /dev/cdrom is write-protected, mounting read-only
發現還是不行。將之前下載的64bit的oracleasmlib-2.0.4-1.el5.x86_64.rpm也上傳上去,安裝上。也不行。嘗試重啟一下。
[root@erpp1 ~]# /usr/sbin/oracleasm createdisk data1 /dev/sdc1Writing disk header: doneInstantiating disk: done
成功了。可能剛才直接重啟也可以,不用加一個rpm包,也可能要。反正重啟是必須的。
[root@erpp1 ~]# /usr/sbin/oracleasm createdisk data1 /dev/sdc1Writing disk header: doneInstantiating disk: done[root@erpp1 ~]# /usr/sbin/oracleasm createdisk data2 /dev/sdb1Writing disk header: doneInstantiating disk: done[root@erpp1 ~]# /usr/sbin/oracleasm createdisk data3 /dev/sdd1Writing disk header: doneInstantiating disk: done[root@erpp1 ~]# /usr/sbin/oracleasm createdisk data4 /dev/sde1Writing disk header: doneInstantiating disk: done[root@erpp1 ~]# /usr/sbin/oracleasm scandisksReloading disk partitions: doneCleaning any stale ASM disks...Scanning system for ASM disks...[root@erpp1 ~]#
[root@erpp1 ~]# /usr/sbin/oracleasm listdisks 或者service oracleasm listdisksDATA1DATA2DATA3DATA4
有了這4個ASM盤後,開始裝GI。
如果要刪除 ASM磁碟可通過以下命令:
[root@node1 ~]#/etc/init.d/oracleasm deletedisk ASMDISK5
[root@erpdb mapper]# /usr/sbin/oracleasm createdisk data1 /dev/mapper/mpath0p7
Writing disk header: done
Instantiating disk: done