Archive for the 'Linux' Category



linux下硬盘的spindown脚本

系统怪起来就很怪,继续是家里那部做文件服务器的机器问题,继续是raid问题,之前做raid的那两个绿盘是支持用hdparm来实现硬盘休眠的,即是spindown吧,但系统有debian5升级到debian6和前阵子raid1阵列出现折腾后,昨天才发觉这两个绿盘不能休眠了.
之前的hdparm -S 120 /dev/sdb命令是有效的,但现在居然不行了,是两个绿盘都不行了.

最后在网上找了段脚本放在cron里每隔15分钟执行,实现阵列的两个WD绿盘硬盘休眠, 还是需要hdparm来配合使用:

#!/bin/bash
if [ ! -f /dev/shm/1 ]
then
touch /dev/shm/1 /dev/shm/2
echo "$(date '+%F %T') Tempfile does not exist, creating" >> /var/log/hd_spindown.log
fi
mv /dev/shm/1 /dev/shm/2
sleep 12
cat /proc/diskstats > /dev/shm/1

HDB="sdb"
HDC="sdc"
export HD="sdb\|sdc"

if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" = "" ]
then
if [ "$(/sbin/hdparm -C /dev/$HDB | grep "drive state" | cut -d: -f2 | awk '{ print $1}')" = "standby" ] && [ "$(/sbin/hdparm -C /dev/$HDC | grep "drive state" | cut -d: -f2 | awk '{ print $1}')" = "standby" ]
then
echo "$(date '+%F %T') $HD already spun down" >> /var/log/hd_spindown.log
else
/sbin/hdparm -y /dev/$HDB &
/sbin/hdparm -y /dev/$HDC
echo "$(date '+%F %T') Spindown $HD" >> /var/log/hd_spindown.log
fi
else
echo "$(date '+%F %T') $HD is in use" >> /var/log/hd_spindown.log
fi

路过的需要使用的话可以点击这里下载: yingpan2.sh
这是监视两个硬盘的,可以改成检测单个硬盘的.

Tag:

linux软raid1出现auto-read-only问题其中一处理方法

继续是linux下软raid的问题处理,昨天平安夜又给软radi折腾着,其实这几天都在处理着这些问题,应该是西数绿盘的问题吧,哎,反正就是烦啦.

出现的故障是重启后出现md0掉失,进系统后执行
mdadm -A /dev/md0 /dev/sdb /dev/sdc
后,在输入cat /proc/mdstat出现
md0 : active(auto-read-only) raid1 sdb1[0] sdc1[1]
976762432 blocks [2/2] [UU]

上网查找后,尝试执行 mdadm –readwrite /dev/md0
这样就ok了,发觉自己对linux软raid操作越来越娴熟,哎…
绿盘我分两次买的,第一个是WD10EARS,第二个是WD10EADX,现在查来查去,都应该是第一个买回来的绿盘有问题,哎……

Tag:

另一部机做备份,系统debian6

今天在拿多一部旧机做备份机,系统仍然是debian linux, 由于debian6对intel网卡有支持问题,所以只有装了debian5后,然后根据之前遇到【debian的e100/d101m_ucode.bin错误处理方法】处理后在升级到debian6去.

在这里还是记录下debian5升级到debian6的方法吧:
1.首先确认已经给机器配置好了机器名,即检查/etc/hostname文件,如果为空或者不存在:
echo “myhost” > /etc/hostname
hostname -F /etc/hostname

2.然后更改/etc/apt/sources.list文件为下边内容:
deb http://ftp.debian.org/debian/ squeeze main
deb-src http://ftp.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

3.升级apt工具
apt-get install apt dpkg aptitude

4.升级所有软件包
apt-get dist-upgrade

不过可惜这部所谓的备份机只得150G硬盘,只能备份少量重要数据.

Tag:

今天继续linux下软raid出事

本来昨天debian linux下的软raid好好的,但昨晚临睡前,看见某篇文章debian5升级debian6, 于是今天早上手痒,想把部文件服务器的debian5升级,于是按照网上的方法升级,过程一切顺顺利利,当升级后重启机器,软raid又出事啦,不能运行了,那时我觉得眼前一黑,几乎想晕过去了,因为昨晚剪切了win7部机里的好多电影过去,当然算不重要啦。
启动不了,于是进系统后看看什么事,原来在debian5的系统硬盘id由hdc变成sda, 我靠,现在另外两个绿盘ID变成sdb和sdc ,我靠死你!
于是继续
mdadm -S /dev/md0
然后
mdadm -C /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1
看见md0启动,然后mount /dev/md0 /mnt/mydata1
又出现昨天的错误,没抄下来,所以没办法记录在这里,然后试试:fsck /dev/md0,还是错误,晕,这次可能又死定了。
总之不能mount, 输入mdadm -D /dev/md0 , 出现resync pending, 无法同步,哎.
继续爬外国的英文资料,看见有人说试试输入,
echo idle > /sys/block/md0/md/sync_action
这应该是强行同步吧.
然后输入命令查看: cat /proc/mdstat
开始同步,又要大概6小时左近,哎,外出先.
今晚回来,看见同步完毕,继续尝试: mount /dev/md0 /mnt/mydata1 , 继续出错,于是尝试: fsck -y /dev/md0 , 哇,终于开始扫描运行了,然后就是等了.

大概大半小时左近吧,看见硬盘灯停下来,继续尝试: mount /dev/md0 /mnt/mydata1, 哎,终于ok了,惊魂结束了,人整个舒服晒,我想如果这次不行,我就不用软raid, 用回两个盘备份了.

其实昨天也是出现过resync pending, 就是没看见上述的方法,或许有可能救回软raid, 这两三天的操作经验真TMD难能可贵了,学朋友说,我升级了,真是心血少点都不行,现在剩下的日子就是看看软raid稳不稳定了,还有就是绿盘软raid啊,据说WD官方说绿盘不适合做raid, 还有就是linux下支持不好,希望不是吧,不过可能应该是那个4k对齐的问题吧.

继续linux下绿盘软raid的白老鼠日子…

上边的方法未必适合路过的各位,都是死马当活马医,大家在绝望时就尝试一下啦.

其实我这次升级,就是为了用python2.6, 因为之前的debian都是2.5版的,据说python2.6的多线程改进了好多,所以多手了,哈哈,果然因小失大.

Tag:

liunx软raid终于给我玩塌了

今天终于部liunx软raid终于给我玩塌了,全部数据救不回来,惨到死,有我的以前日记数据在,和数码相片的存档,好在那些相片我本机也留了一份数据,日记数据也在我另一个硬盘上有留底,不过以前写的程序代码和大量的电影数据全部没了,也包括linode这网站空间上的备份数据,总之好多东西啦,还有以前的4G垃圾网站数据库也没有了,哎…

原因是前几天打开部linux软raid文件服务器copy数据进去,期间不断报ata3 error, 于是remove那个硬盘,应该是sda, 然后重新格式化,然后准备加回去,谁知道居然报以下的错误:
mdadm not large enough to join array

晕,于是新建一个新的强烈,强制一个硬盘建成,即: mdadm -C /dev/md1 -l1 -n1 -f /dev/sda1
然后由md0复制数据过去,然后停掉md0, 把那个剩余的sdb1加到 /dev/md1去,然后执行:mdadm –grow /dev/md1 –raid-devices=2 , 这样就可以了.

但在同步过程中,由于已经是深夜了,于是输入关机指令,准备明天再搞,谁知道第二天开机,找不到md0 , 我靠, 显示的英文信息,大致意思是掉失super block .
期间执行
mke2fs -n /dev/md0
找出块是327680, 然后执行e2fsck -b 327680 /dev/md0
都不行了,后来错误执行mke2fs -j /dev/sda1, 其中一个硬盘,原来这是重新格式化命令,哎,苍天啊,哎。
剩下就是连另一个硬盘都格式化,重建md0了,我的230多G数据啊,突然觉得前半生都给格式化一样,突然有种想跳楼的感觉,好在现在还有数码照片备份和找回以前日记的数据库,感觉才好点了.

还有的就是这两个做软raid1的硬盘是不同型号的绿盘。
还有的就是绿盘的分区方法应该是:
fdisk -H 224 -S 56 -u /dev/sda
由64开始,不要由56开始,
显示出来像下边似的.
/dev/sda1 * 64 1953525167 976762552

还有就是绿盘格式化方法是: mkfs.ext3 -b 4096 /dev/sda1

以后就是这几天很烦的事情了,看来我要找多一部机来备份重要数据,然后软raid1也留一份,电影数据就放软raid1算了.

不是这次搞塌,好大的原因是我操作失误造成,再加上两个绿盘一个是4k分区,另一个乱分,以后要记住这个惨痛教训.

在软raid重建时,一定不要关机,就算正常关机也有可能出问题,一定要停止重建后,才能关机,停止重建命令是:
mdadm /dev/md0 –fail /dev/sda1
mdadm /dev/md0 –remove /dev/sda1

下次开机才重新加上重建,这样应该安全很多了.

Tag:

linode的debian终端下运行python程序出现UnicodeEncodeError错误

刚刚在linode的debian终端下运行python程序, 采集某商品网站,python程序默认是gbk编码的!
即程序的第一行是#coding=gbk , 结果一直出现:
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
等错误!

于是先看看linode下的debian 5的编码是什么,结果输入locale , 居然没这命令,要安装
apt-get update
apt-get locale

安装后继续输入:
dpkg-reconfigure locales

选择:
en_US.ISO-8859-15
en_US.UTF-8
zh_CN.GB2312
zh_CN.GB18030
zh_CN.GBK
zh_CN.UTF-8
默认选择zh_CN.GBK

然后断开终端再重新连接,运行程序,ok, 解决问题!

linode下的debian真精简,什么都要自己设置,少点基础都不行啊!

Tag: