linux mknod命令與磁盤對應一例

    在LINUX下安裝ORACLE RAC時,建ASM磁盤組時有時會碰到兩個節點上存儲映射過來的磁盤盤符不一致,有時是物理路徑一致,但聚合後路徑不一致,有時甚至物理路徑也不一致,此時就需將兩個節點上的磁盤盤符修改為一致。

    解決這個問題,首先要確認LUN ID與磁盤的對應關係,確認兩個節點磁盤的對應關係。找到存儲映射到主機的磁盤的LUN ID,並將兩台主機之間相同LUN ID的磁盤對應關係找到,通過LINUX的MKNOD命令進行修改設置,使其對應。

    mknod命令用於創建一個設備文件,即特殊文件。我們首先要明白什麼是設備文件,簡單的說操作系統與外部設備(磁盤驅動器,打印機,終端 等等)都是通過設備文件來進行通信 的,在Unix/Linux系統與外部設備通訊之前,這個設備必須首先要有一個設備文件,設備文件均放在/dev目錄下。一般情況下在安裝系統的時候系統自動創建了很多已檢測到的設備的設備文件,但有時候我們也需要自己手動創建,命令行生成設備文件的方式有 insf,mksf,mknod等等。

       mknod命令的標準形式為:       mknod DEVNAME {b | c}  MAJOR  MINOR

       參數解釋:

       DEVNAME是要創建的設備文件名,如果想將設備文件放在一個特定的文件夾下,就需要先用mkdir在dev目錄下新建一個目錄;

       b和c 分別表示塊設備和字符設備:

       b表示系統通過塊設備文件存取一個設備的時候,先從內存中的buffer中讀或寫數據,而不是直接傳送數據到物理磁盤,這種方式能有效的提高磁盤和CD-ROMS的I/O性能。磁盤和CD-ROMS即可以使用字符設備文件也可使用塊設備文件。

       c表示字符設備文件與設備傳送數據的時候是以字符的形式傳送,一次傳送一個字符,比如打印機、終端都是以字符的形式傳送數據;

       MAJOR和MINOR分別表示主設備號和次設備號。為了管理設備,系統為每個設備分配一個編號,一個設備號由主設備號和次設備號組成。主設備號標示某一種類的設備,次設備號用來區分同一類型的設備。linux操作系統中為設備文件編號分配了32位無符號整數,其中前12位是主設備號,後20位為次設備號,所以在向系統申請設備文件時主設備號不好超過4095,次設備號不好超過2^20 -1。

        配置示例:

發現存儲映射到主機的磁盤的LUN ID

根據一一對應的WWN值,將相應WWN對應兩個節點的盤符設置成一致: 11.11.10.56 #mknod  /dev/rdisk/data5disk c 13 0x000013 #mknod  /dev/rdisk/data6disk c 13 0x000014 #mknod  /dev/rdisk/data7disk c 13 0x000015 #mknod  /dev/rdisk/data8disk c 13 0x000016

11.11.10.57 #mknod  /dev/rdisk/data5disk c 13 0x000025 #mknod  /dev/rdisk/data6disk c 13 0x000026 #mknod  /dev/rdisk/data7disk c 13 0x000027 #mknod  /dev/rdisk/data8disk c 13 0x000028

設置兩個節點對應盤符路徑的權限: #chown oracle:oinstall /dev/rdisk/data5disk #chown oracle:oinstall /dev/rdisk/data6disk #chown oracle:oinstall /dev/rdisk/data7disk #chown oracle:oinstall /dev/rdisk/data8disk

以ORACLE用戶檢驗讀寫權限 $dd if=/dev/zero f=/dev/rdisk/data5disk count=10 count=1024

在其中一節點上為ASM磁盤組添加磁盤 export ORACLE_SID=+ASM2 sqlplus / as sysdba

alter diskgroup DATADG add disk '/dev/rdisk/data5disk'; alter diskgroup DATADG add disk '/dev/rdisk/data6disk'; alter diskgroup DATADG add disk '/dev/rdisk/data7disk'; alter diskgroup DATADG add disk '/dev/rdisk/data8disk';