本文修復load/unload cycle count部分參考了文章《Ubuntu中Load/Unload Cycle Count問題及解決》。
本文監控load/unload cycle count部分是自個寫的。
寫本文的目的是記錄自己如何解決該問題,為以後可能出現的重裝Ubuntu提供一個指引,備忘而已。
Ubuntu版本:10.04 lucid lynx
- 查看硬盤設備的路徑。替換後面3個disk腳本中的設備路徑。比如有兩個硬盤的話,使用"/dev/sda /dev/sdb"替換"/dev/sda"。
- sudo fdisk -l
- 新建文件/etc/pm/config.d/disk,並賦予可執行權限。文件內容如下:
- # Configure disk power management settings to ensure both
- # long disk life and good power management.
- #
- # Space delimited list of disk devices this affects.
- #
- DEVICES_DISK_PM_NAMES="/dev/sda"
- #
- #
- # Power management modes
- #
- # Powersave mode off
- # Set APM as 255
- ## Set spin-down for 30 minutes
- #
- DEVICES_DISK_PM_POWERSAVE_OFF="hdparm -q -B 255"
- #
- # Powersave mode on
- ## Enable APM to conservative 192 and set spin-down for 21 minutes
- #
- DEVICES_DISK_PM_POWERSAVE_ON="hdparm -q -B 254"
- 新建文件/etc/pm/power.d/disk,並賦予可執行權限。文件內容如下:
- #!/bin/bash
- #在power.d中加入Hook腳本,作用是在使用電池和AC電源的時候可以自動切換省電模式
- ./usr/lib/pm-utils/functions
- ./etc/pm/config.d/disk
- if test -z "${DEVICES_DISK_PM_NAMES}"; then
- exit 1
- fi
- case "$1" in
- true)
- echo "**enabled pm for harddisk"
- for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
- ${DEVICES_DISK_PM_POWERSAVE_ON} ${DISK_NAME}
- done ;;
- false)
- echo "**disabled pm for harddisk"
- for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
- ${DEVICES_DISK_PM_POWERSAVE_OFF} ${DISK_NAME}
- done ;;
- esac
- 新建文件/etc/pm/sleep.d/disk,並賦予可執行權限。文件內容如下:
- #!/bin/bash
- #在sleep.d中加入腳本,目的是在休眠/待機之後喚醒的時候重新設定hdparm的參數
- ./usr/lib/pm-utils/functions
- ./etc/pm/config.d/disk
- if test -z ${DEVICES_DISK_PM_NAMES}; then
- exit 1
- fi
- case "$1" in
- thaw|resume)
- /usr/bin/on_ac_power;
- if [ "$?" -eq 0 ]; then
- echo "**disabled PM for harddisk"
- for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
- ${DEVICES_DISK_PM_POWERSAVE_OFF} ${DISK_NAME}
- done
- elif [ "$?" -eq 1 ]; then
- echo "**enabled PM for harddisk"
- for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
- ${DEVICES_DISK_PM_POWERSAVE_ON} ${DISK_NAME}
- done
- fi
- ;;
- esac
- 確保laptop-mode是禁用的(默認就是禁用的)。查看文件/etc/default/acpi-support,看文件中是否有這一行:
- ENABLE_LAPTOP_MODE=true
如果有這一行,表明laptop-mode是啟用的,那麼一定要設置為false!
那麼如何監控load/unload cycle count的數值呢?
- 安裝smartmontools。
- sudo apt-get install smartmontools
- 在家目錄下新建文件AskPassProg.sh,並賦予可執行權限。文件內容如下:
- #!/bin/bash
- # this file serves as sudo ask program, you must not delete this file.
- # if user 'bruce' 's password is changed, modify this file please.
- # 請修改字符串為你用戶的登錄密碼!
- echo "11111111"
- 在家目錄下新建文件monlcc.sh,並賦予可執行權限。文件內容如下:
- #!/bin/sh
- export SUDO_ASKPASS=~/AskPassProg.sh
- while true;
- do
- cur_date=`date`;
- lcc=`sudo -A smartctl -a /dev/sda | grep 193`;
- echo $cur_date : $lcc;
- echo $cur_date : $lcc >> monlcc.log;
- sleep 300;
- done;
- export SUDO_ASKPASS=""
直接執行monlcc.sh,就會在家目錄下生成一個文件monlcc.log,可以實時看到load/unload cycle count數值了。現在不用擔心ubuntu傷害硬盤了吧!
為了隨機啟動該腳本,你可以在啟動應用程序(系統->首選項->啟動應用程序)中添加相關配置。
命令輸入框顯示不全(易用性不夠啊同學!),全部命令如下:
- gnome-terminal --geometry +0+30 -e ~/monlcc.sh