Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

lvremove 造成的當機問題?
post by tommy @ 02 四月, 2013 16:58

由於方便管理, 基本上安裝 Linux 時, 應該都會用 LVM 來管理, 當然我也不例外. 不過... 這一年多來, 我碰到了不少次在每天備分時當機的問題 (備份沒全部完成, 機器仍有回應, 不過 load average 會高達數百到數千, 打個指令也不知道要多久才能回應... 通常碰到就只能重開機), 由於頻率不算太多 (三台機器, 每天備份, 可能兩個月碰到一次吧), 所以一直沒去找原因.

不過, 這星期居然三台機器都發生相同的情形, 所以... 就在備份的 script 上頭加上一些 log, 發現, 似乎都是停在 lvremove 這個指令上, 然後.... load 就一直往上跑.

試著找了一下, 好像是這一篇提到的問題, 似乎是 udev 造成的.... 要把 udev 升級到 180 就可以.

不過.... Debian 裡頭, 看起來目前只有到 175 的版本, 原本想自己抓 source 回來改... 不過... 變動不小, 似乎不是一件小事.

接著又看到這一篇, 裡頭有人提了兩個解決方法. 第二個方法似乎要用 thinpool 的方式重建 LV, 有點麻煩. 所以就試著第一種方式, 在執行 lvremove 之前, 先執行 dmsetup remove, 目前看起來似乎正常了.

裡頭也提供了一個測試的方法 (我改了一下):

#!/bin/sh
 
for i in {1..200000}; do
echo "count: $i"
echo "lvcreate"
lvcreate -L 5G -s -n snap1 /dev/vg/usr
echo "dmsetup"
dmsetup remove vg-snap1
dmsetup remove vg-snap1-cow
echo "lvremove"
lvremove -f /dev/vg/snap1
done

如果不執行那兩行 dmsetup 的指令, 這個 script 在我的機器上, 有跑不到五次就造成當機, 也有跑上幾千次後才造成當機. 不過, 只要加上那兩行指令後, 就可以整個迴圈跑完都不會當 (應該不會這麼剛好, 只是機率問題吧).

希望這個方法真的可以解決我這個怪問題. 

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
迴響

  

Bad Behavior 已經阻擋了 68 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS