在linux下成功使用西部数据高级格式化的硬盘
2012-09-24 00:44 游乐场123 阅读(920) 评论(0) 编辑 收藏 举报最近购入两个1T的ears 西部数据绿盘。这两个绿盘使用高级格式化,即硬盘扇区大小4096个字节。普通的硬盘扇区大小是512个字节。理论上采用4k字节扇区的硬盘性能会更好,但从google搜索来看,很多人反映西部数据的绿盘存在速度慢、系统卡的问题。
安装了系统后,不论在windows7 还是 linux 系统确实很卡,每隔一会就卡一下,硬盘红灯一直亮着,系统没反应,直到读完数据。同时用smartctl查看硬盘的load cycle count 值增长很快,才一两个星期就到1万5左右了。而从google搜索来看,西数公开的数据表明硬盘寿命期限内能承受的 load cycle count 的值为30万左右,超过这个值硬盘就很容易损坏,变得不稳定。
出现问题的原因主要有两个:
一、分区时没有按4k字节对齐。由于硬盘内部实际每次读取是读写4k字节的物理扇区,但是该硬盘却欺骗操作系统,报告给操作系统的物理扇区大小为512字节。换句话说虽然采用高级格式化硬盘,却自动模拟成为非高级格式化硬盘来兼容当前的各种软件。如果分区时没有按4k字节对齐,每次读写4k字节的数据时,硬盘内部实际上需要读写至少两个4k字节的物理扇区,比4k字节对齐的情况至少慢了一半。从而导致访问速度很低。实际上linux是支持4k字节的物理扇区的,但是该款硬盘没有报告真实的物理扇区大小给操作系统,这应该算是这款硬盘最大的问题,可以算作一个bug吧。
二、绿盘具有节能功能,空闲时自动将转速降低,并将磁头移动到启停区域,防止磁头划伤盘片。
绿盘设置的空闲时间为8秒,也就是空闲8秒钟就会将硬盘速度降低,磁头重置到硬盘的起始启停区域。从而导致系统读取数据时,磁头要加速,并从启停区域移到数据区域,从而导致系统一卡一卡的。尤其是linux系统的日志文件系统,以及日志程序每隔一段时间就要写一次硬盘,从而导致系统很卡,一顿一顿的。同时磁头反复伸出从而导致硬盘的load cycle count 计数不断增加,导致硬盘在预计两年左右的时间就很快报废。
解决问题的方法:1。分区时按4k字节对齐,要求每个分区的开始扇区从是8的倍数的扇区开始,这样就能保持4k字节对齐。 以 /dev/sdc 为例。
分区时 采用 fdisk -H 224 -S 56 -u /dev/sdc
/dev/sdc1 * 64 1953525167 976762552 8e Linux LVM.
建议第一个分区从64开始。
2.建立文件系统时 指定扇区大小为4k。
比如对/dev/sda1 建立ext4文件系统 : mkfs.ext4 -b 4096 -O has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize -I 512 /dev/sda1
建立xfs 文件系统: mkfs.xfs -i size=512 -s size=4096 /dev/sda1
具体的其他文件系统的参数请用man 手册查看。
3.调节硬盘空闲时间 为1分钟以上。
到西数公司主页上下载 wdidle.exe这个工具。该工具只能在纯dos环境下运行。如果你没有纯dos环境的话,利用grub很容易进入纯dos环境。首先要syslinux 的memdisk这个文件。一般发行版都安装又syslinux,如果没有可以到其主页(http://syslinux.zytor.com)下载memdisk这个文件。同时到网络上下载一个dos系统的软盘镜像文件。我下载的是 MSDOS71B.IMG 这个文件,该文件可以用google搜索就能找到。 挂载 MSDOS71B.IMG镜像:
mkdir /mnt/tmp
mount -o loop MSDOS71B.IMG /mnt/tmp
然后将从西数公司下载的wdidle.exe程序复制到镜像文件里:
cp wdile.exe /mnt/tmp
umount /mnt/tmp
将镜像文件 MSDOS71B.IMG memdisk这两个文件放到 /boot/dos目录下(没有就创建)
,然后修改/boot/grub/menu.lst文件,添加
title freedos
kernel (hd0,2)/boot/dos/memdisk
initrd (hd0,2)/boot/dos/MSDOS71B.IMG
这里(hd0,2)是我的启动文件所在的分区(我没有单独分boot分区),要根据你硬盘实际分区情况确定。
开机时选择freedos就可以进入纯dos系统了。
在dos环境里运行
wdidle.exe 就可以查看硬盘当前默认设置的空闲值。
wdidle.exe /s xxxx 命令可以将空闲值设置为xxxx秒。我的硬盘目前设置成2分钟。
不要用 wdidle.exe /D 命令 禁止 硬盘的自动节能功能。否则硬盘的load cycle count 值差不多每秒钟涨一次,你的硬盘很快完蛋。
重启进入linux 后,可以用smartctl --all /dev/sda 命令查看硬盘 /dev/sda的load cycle count 技术及温度值。目前
我的硬盘一切工作正常,系统不再卡,速度也不错,load cycle count的值每天才增加几个,很正常。
以上是我的亲身体会,供大家参考。不确保安全性和正确性。请谨慎使用,后果自负。