2011-11-01 57 views
0

我們試圖使用oprofile來跟蹤服務器羣集上的性能問題。但是,所討論的服務器具有隻讀文件系統,其中/ var/tmp是唯一的可寫目錄。可以使oprofile使用/root/.oprofile以外的目錄嗎?

OProfile希望在運行時創建兩個目錄:/root/.oprofile/var/lib/oprofile,但它不能,因爲文件系統是隻讀的。我可以使用--session-dir命令行選項使其將日誌寫入其他地址,而不是/var/lib,但我找不到任何此類選項使其使用除/root/.oprofile之外的其他目錄。

文件系統是隻讀的,因爲它位於不可寫介質上,而不是因爲權限 - 即,即使超級用戶也不能寫入這些目錄。我們可以爲文件系統創建一個新的ROM映像(顯然,我們是如何安裝oprofile的),但運行時程序無法寫入/ root,無論它是否是超級用戶。

我試圖創造一個指向/root/.oprofile ROM中的符號鏈接 - >/var/tmp中/ oprofile中,但顯然oprofile中沒有看到這個符號鏈接的目錄,然後運行時出現故障:

[email protected]:~$ sudo opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo 
mkdir: cannot create directory `/root/.oprofile': File exists 
Couldn't mkdir -p /root/.oprofile 

我們必須在這個特定的系統上運行我們的分析器,因爲如果我們在開發服務器上構建和運行應用程序,我們試圖調查的性能問題並不會顯示。我們不能只在程序員的工作站上運行我們的測試並在那裏分析應用程序,因爲問題不會發生在那裏。

有沒有某種方法來配置oprofile,使其不使用/root

+0

對符號鏈接不接受的行爲:你可能會報告上游行爲 - 顯然他們在那裏使用了錯誤的'stat' /'lstat'。這可能是因爲不允許符號鏈接而產生的安全考慮,但我現在很難想出一個(現在運行'oprofile''實際上需要你處於GOD模式) – sehe

回答

0

事實證明,這個目錄是硬編碼到opcontrol bash腳本:

# location for daemon setup information 
    SETUP_DIR="/root/.oprofile" 
    SETUP_FILE="$SETUP_DIR/daemonrc" 

編輯這些行似乎得到它的工作,或多或少。

0

我想這應該是作爲壓倒一切的HOME環境變量簡單:

HOME=/tmp/fakehome sudo -E opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo 

如果不奏效,你可以看看

  • 的unionfs
  • AUFS

創建一個可寫覆蓋。你甚至可以在/ root上掛載tmpfs,或者像這樣簡單的東西。

相關問題