udev如何除錯,如何看udev的輸出日誌?udev除錯的坑?
一、 問題:udev如何除錯,如何看udev的輸出日誌?udev除錯的坑?
二、結論:
環境centos6
啟動:start_udev 除錯日誌,設定udev.conf 為udev_log="debug" ,日誌輸出在/var/log/message
(1)注意2點:rule啟動有順序的,假設你增加iscsi link,那你的必須要先載入網路,70網路之後,你再執行你新增iscsi link的指令碼,否則rule指令碼無效
(2)假如你現在給裝置新增一個link name,當你編寫好rule指令碼後,呼叫呼叫start_dev,你會發現,在/var/log/message 看不到指令碼執行的日誌。原因是如果已經有link name,udev是會忽略的。這樣如果指令碼編寫有問題,對除錯是不利的,所以需要重啟,可以看到完整的udev指令碼執行日誌輸出。
三、具體例子分析過程
用 UDEV 固定 iSCSI 裝置名稱
用 open-iscsi 連上 Target 之後,iSCSI 裝置的名稱在系統裡總是變來變去,無法固定,這給應用帶來了諸多不便。為了固定系統中 iSCSI 裝置的名稱,可以考慮使用Linux 2.6 核心引入的 UDEV 機制。
[root@rac1 rules.d]# cat 95-openiscsi.rules
KERNEL=="sd*", ENV{ID_PATH}=="ip-*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev2.sh %E{ID_PATH}", SYMLINK+="iscsi/%c/part%n"
[root@rac1 rules.d]# cat /etc/udev/scripts/iscsidev2.sh
#!/bin/sh
# File: /etc/udev/scripts/iscsidev.sh
TARGET_NAME=`/bin/echo $1 | /bin/awk -F"-iscsi-" '{print $2}' | /bin/awk -F"-lun-" '{print $1"/lun"$2}'`
/bin/echo ${TARGET_NAME}
規則中以"%"開始的是 UDEV 中的引數,如下:
[table]
|%E{key}|一個環境變數的值,即透過 [color=red]udevadm[/color] 命令查詢出的裝置屬性
|%c|PROGRAM 返回的結果
|%n|裝置的核心號碼,例如:sda3 的核心號碼是 3
重啟就會看到詳細日誌輸出(設定log為debug),以下是正確新增link的日誌:
[root@rac1 ~]# tail -5000 /var/log/messages |grep "/etc/udev/scripts/iscsidev2"
Mar 31 11:04:27 rac1 udevd-work[1656]: PROGRAM '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0' /etc/udev/rules.d/95-openiscsi.rules:2
Mar 31 11:04:27 rac1 udevd-work[1656]: '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0' started
Mar 31 11:04:27 rac1 udevd-work[1645]: '/etc/udev/scripts/iscsidev2.sh' (stdout) 'iqn.2006-01.com.openfiler:racdb.crs1/lun0'
Mar 31 11:04:27 rac1 udevd-work[1645]: '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0' returned with exitcode 0
Mar 31 11:04:27 rac1 udevd-work[1656]: '/etc/udev/scripts/iscsidev2.sh' (stdout) 'iqn.2006-01.com.openfiler:racdb.data1/lun0'
Mar 31 11:04:27 rac1 udevd-work[1656]: '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0' returned with exitcode 0
[root@rac1 ~]# ls /dev/iscsi/
iqn.2006-01.com.openfiler:racdb.crs1 iqn.2006-01.com.openfiler:racdb.data1 iqn.2006-01.com.openfiler:racdb.data2 iqn.2006-01.com.openfiler:racdb.fra1
(1)以上是我花了4個小時除錯出來的結果。假設你把95-openiscsi.rules重新命名成55-openiscsi.rules,然後你會發現,你是怎麼得不到上面link 結果的。
iqn.2006-01.com.openfiler:racdb.crs1 。
原因是:因為建立iscsi需要網路的支援,所以應該在70-persistent-net.rules之後執行。
(2)假設你要執行的指令碼沒有執行許可權,會發生什麼?很明顯udev不能呼叫,日誌就應該列印出錯誤訊息。那這裡有一個坑,如果你重新使用命令start_udev,message日誌
裡面是沒有錯誤訊息的。必須要重啟。
原因是:udev 會忽略已經建立的link,這個時候就不好除錯了,需要重啟,才能看到錯誤日誌 returned with exitcode 2
(3)start_udev,這個命令是重新載入一遍裝置命名,有一個坑就是上面的,如果已經有了的裝置命名,它是不會去重新載入,也不會在message列印日誌。當發生錯誤的時候,
我們都不知道錯誤在哪裡。這個是我認為除錯的一個坑。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30393770/viewspace-2765904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- udev詳解dev
- 使用udev(轉)dev
- Gentoo udev 指南dev
- rhel7 udevdev
- UDEV替代ASMLIBdevASM
- [轉帖]掌握udevdev
- Gentoo udev 指南(轉)dev
- 在 Linux 中如何編寫基本的 udev 規則Linuxdev
- 日誌與除錯除錯
- 使用udev管理asmdisk常用的命令devASM
- Linux上建立udevLinuxdev
- 利用UDEV管理配置ASMDISKdevASM
- 如何檢視Oracle RAC的asm磁碟的udev對應關係OracleASMdev
- 華為 MATE7 除錯 LOCAT 日誌不輸出問題除錯
- Android除錯----日誌Android除錯
- linux下udev和mdev的使用Linuxdev
- linux上udev的配置(轉載)Linuxdev
- UDEV管理RAC共享儲存dev
- linux udev Rules files 理解Linuxdev
- linux_openfiler_udev配置Linuxdev
- udev-FAQ 中文翻譯dev
- centos 6.7 (UDEV,、etc/hosts)安裝 RAC 11.2.0.4 報錯處理CentOSdev
- UDEV掛載EMC多路徑盤dev
- udev+multipath配合繫結磁碟dev
- udev控制磁碟引導順序dev
- udev 裸裝置 安裝racdev
- Linux UDEV使用一例Linuxdev
- OEL5.7 UDEV繫結磁碟dev
- UDEV簡介及配置過程dev
- 使用UDEV繫結裝置名dev
- 將程式碼中的除錯資訊輸出到日誌檔案中除錯
- node inspect chrome日誌除錯Chrome除錯
- 如何除錯程式的 Release 版本除錯
- Linux 7.x 中 UDEV 生效的方法Linuxdev
- UDEV替代ASMLIB遇到的可以忽略的問題devASM
- 使用udev擴充套件ASM磁碟組dev套件ASM
- linux udev裸裝置繫結Linuxdev
- linux下udev重新繫結磁碟Linuxdev