1. 程式人生 > >Oracle數據庫中Linux下多路徑使用及大容量硬盤掛載

Oracle數據庫中Linux下多路徑使用及大容量硬盤掛載

Linux下多路徑使用

一、應用環境及需求
  1. 操作系統為Red Hat 6.5 64位

  2. 掛載的存儲容量為2.5T

基於此應用環境,需要解決兩個問題:

  1. 為保證鏈路的穩定性及傳輸性能等,可以使用多路徑技術;

  2. 掛載的存儲硬盤超過了2T,MBR分區格式不能支持,需要使用到GPT分區格式


二、什麽是多路徑

摘自:http://rootking.blog.51cto.com/2619611/476212

普通的電腦主機都是一個硬盤掛接到一個總線上,這裏是一對一的關系。而到了有光纖組成的SAN環境,或者由iSCSI組成的IPSAN環境,由於主機和存儲通過了光纖交換機或者多塊網卡及IP來連接,這樣的話,就構成了多對多的關系。也就是說,主機到存儲可以有多條路徑可以選擇。主機到存儲之間的IO由多條路徑可以選擇。每個主機到所對應的存儲可以經過幾條不同的路徑,如果是同時使用的話,I/O流量如何分配?其中一條路徑壞掉了,如何處理?還有在操作系統的角度來看,每條路徑,操作系統會認為是一個實際存在的物理盤,但實際上只是通向同一個物理盤的不同路徑而已,這樣是在使用的時候,就給用戶帶來了困惑。多路徑軟件就是為了解決上面的問題應運而生的。

多路徑的主要功能就是和存儲設備一起配合實現如下功能:

1.故障的切換和恢復

2.IO流量的負載均衡

3.磁盤的虛擬化

由於多路徑軟件是需要和存儲在一起配合使用的,不同的廠商基於不同的操作系統,都提供了不同的版本。並且有的廠商,軟件和硬件也不是一起賣的,如果要使用多路徑軟件的話,可能還需要向廠商購買license才行。比如EMC公司基於linux下的多路徑軟件,就需要單獨的購買license。好在,RedHat和Suse的2.6的內核中都自帶了免費的多路徑軟件包,並且可以免費使用,同時也是一個比較通用的包,可以支持大多數存儲廠商的設備,即使是一些不是出名的廠商,通過對配置文件進行稍作修改,也是可以支持並運行的很好的。

比較直觀的感受是在Linux系統中執行fdisk -l命令,會出現類似/dev/sda1、/dev/sdb1、/dev/sdc1、/dev/sdd1的硬盤。因為總共有四種組合的路徑,Linux系統會將每跳鏈路都認為是掛載了一塊硬盤。

三、Linux下multipath介紹

Red Hat中,默認已經安裝了multipath:

[root@localhost ~]# rpm -qa|grep mapper
device-mapper-multipath-0.4.9-64.el6.x86_64
device-mapper-event-libs-1.02.77-9.el6.x86_64
device-mapper-multipath-libs-0.4.9-64.el6.x86_64
device-mapper-persistent-data-0.1.4-1.el6.x86_64
device-mapper-libs-1.02.77-9.el6.x86_64
device-mapper-event-1.02.77-9.el6.x86_64
device-mapper-1.02.77-9.el6.x86_64

其中(摘自:http://rootking.blog.51cto.com/2619611/476212):

  1. device-mapper-multipath:即multipath-tools。主要提供multipathd和multipath等工具和 multipath.conf等配置文件。這些工具通過device mapper的ioctr的接口創建和配置multipath設備(調用device-mapper的用戶空間庫,創建的多路徑設備會在/dev /mapper中)。

  2. device-mapper:主要包括兩大部分:內核部分和用戶部分。

    其中內核部分主要由device mapper核心(dm.ko)和一些target driver(md-multipath.ko)。核心完成設備的映射,而target根據映射關系和自身特點具體處理從mappered device 下來的i/o。同時,在核心部分,提供了一個接口,用戶通過ioctr可和內核部分通信,以指導內核驅動的行為,比如如何創建mappered device,這些divece的屬性等。linux device mapper的用戶空間部分主要包括device-mapper這個包。其中包括dmsetup工具和一些幫助創建和配置mappered device的庫。這些庫主要抽象,封裝了與ioctr通信的接口,以便方便創建和配置mappered device。multipath-tool的程序中就需要調用這些庫。

  3. dm-multipath.ko和dm.ko:dm.ko是device mapper驅動。它是實現multipath的基礎。dm-multipath其實是dm的一個target驅動。

  4. scsi_id: 包含在udev程序包中,可以在multipath.conf中配置該程序來獲取scsi設備的序號。通過序號,便可以判斷多個路徑對應了同一設備。這個是多路徑實現的關鍵。scsi_id是通過sg驅動,向設備發送EVPD page80或page83 的inquery命令來查詢scsi設備的標識。但一些設備並不支持EVPD 的inquery命令,所以他們無法被用來生成multipath設備。但可以改寫scsi_id,為不能提供scsi設備標識的設備虛擬一個標識符,並輸出到標準輸出。multipath程序在創建multipath設備時,會調用scsi_id,從其標準輸出中獲得該設備的scsi id。在改寫時,需要修改scsi_id程序的返回值為0。因為在multipath程序中,會檢查該直來確定scsi id是否已經成功得到。

四、配置multipath

基本配置腳本如下:

[root@localhost ~]# cat /etc/multipath.conf
defaults {
      polling_interval       30
      failback               immediate
      no_path_retry          queue
      rr_min_io              100
      path_checker           tur
      user_friendly_names    yes      }
      # SVC 
           device {
                 vendor                  "IBM"
                 product                 "2145"
                 path_grouping_policy    group_by_prio
                 prio_callout            "/sbin/mpath_prio_alua /dev/%n"
                                }

multipath基本操作命令

# /etc/init.d/multipathd start #開啟mulitipath服務 # multipath -F #刪除現有路徑 # multipath -v2 #格式化路徑 # multipath -ll #查看多路徑

如果配置正確的話就會在/dev/mapper/目錄下多出mpathbp1等之類的設備,用fdisk -l命令可以看到多路徑軟件創建的磁盤,如:/dev/mapper/mpathbp1

五、格式化硬盤

執行fdisk -l,可以看到存儲已經識別成功,並且多路徑配置也正確。信息如下:

[root@localhost ~]# fdisk -l......Disk /dev/mapper/mpathb: 2684.4 GB, 2684354560000 bytes
 heads, 63 sectors/track, 326354 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000
             Device Boot      Start         End      Blocks   Id  System/dev/mapper/mpathbp1               1      267350  2147483647+  ee  GPT......

通過上面的信息可以發現已經是GPT的分區格式了,接下來就是需要對硬盤進行格式化。如果不是,需要先執行如下步驟:

1. 新建分區

[root@localhost ~]# pvcreate /dev/mapper/mpathb[root@localhost ~]# parted /dev/mapper/mpathb
GNU Parted 2.1Using /dev/mapper/mpathbp1Welcome to GNU Parted! Type 'help' to view a list of commands.(parted) mklabel gpt                #設置分區類型為gpt(parted) mkpart extended 0% 100%    #擴展分區,並使用整個硬盤(parted) quit                       #退出                                               Information: You may need to update /etc/fstab.

2. 格式化&掛載硬盤

[root@localhost ~]# mkfs.ext4 /dev/mapper/mpathbp1[root@localhost ~]# mount /dev/mapper/mpathbp1 /test

掛載成功後,即可使用了。

3. 動掛載分區

當在系統裏創建了一個新的分區後,因為mount掛載在重啟系統後會失效,所以需要將分區信息寫到/etc/fstab文件中讓其永久掛載。

[root@localhost ~]# vi /etc/fstab/dev/mapper/mpathbp1    /test                ext4    defaults        1 2

保存退出,重啟後/dev/mapper/mpathbp1 就會自動掛載到/test 目錄下


Oracle數據庫中Linux下多路徑使用及大容量硬盤掛載