Hard Disk

The Table

Disk Smart Number Name Value APM Value
2019-06-05 22:25
bt 193 Load_Cycle_Count 90893 APM=130
cloud 193 Load_Cycle_Count 16200 APM=130
backup 193 Load_Cycle_Count 8320 APM=128
Disk Smart Number Name Value APM Value Total Avarage
2019-06-06 06:55
bt 193 Load_Cycle_Count 90966 APM=130 73/8.5h 8/h
cloud 193 Load_Cycle_Count 16274 APM=130 74/8.5h 8/h
backup 193 Load_Cycle_Count 8393 APM=128 73/8.5h 8/h
2019-06-06 19:56
bt 193 Load_Cycle_Count 91071 APM=170 105/11h 9/h
cloud 193 Load_Cycle_Count 16355 APM=170 81/11h 7/h
backup 193 Load_Cycle_Count 8503 APM=170 110/11h 10/h
2019-06-07 06:00
bt 193 Load_Cycle_Count 91127 APM=254 56/10h 5/h
cloud 193 Load_Cycle_Count 16362 APM=200 7/10h 1/h
backup 193 Load_Cycle_Count 8507 APM=200 5/10h 0.5/h

fstab文件详解

当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# <file system>                             <mount point>   <type>      <options>           <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=e27e3a7d-1155-4d53-8a8b-1a9e4425221b / ext4 errors=remount-ro 0 1
LABEL=/ / ext4 defaults 1 1
/dev/sda6 none swap defaults 0 0
# Removable media
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,ro 0 0
# NTFS Windows 7 partition
/dev/sda1 /mnt/Windows ntfs-3g quiet,defaults,locale=en_US.utf8,umask=0,noexec 0 0
# Partition shared by Windows and Linux
/dev/sda7 /mnt/shared vfat umask=000 0 0
# mounting tmpfs
tmpfs /mnt/tmpfschk tmpfs size=100m 0 0
# mounting NFS
pingu:/store /store nfs rw 0 0
  • dump:该选项被”dump”命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0。如果最后一个字段没有设置,系统将认为其值为0。
  • pass:该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统”/“对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0
  • Common options to all filesystems
    As the filesystems in /etc/fstab will eventually be mounted using mount(8) it is not surprising that the options field simply contains a comma-separated list of options which will be passed directly to mount when it tries to mount the filesystem.
    The options common to all filesystems are:
  • auto / noauto:With the auto option, the device will be mounted automatically at bootup or when the mount -a command is issued. auto is the default option. If you do not want the device to be mounted automatically, use the noauto option in /etc/fstab. With noauto, the device can be only mounted explicitly.
  • dev / nodev: Interpret/do not interpret block special devices on the filesystem.
  • exec / noexecexec lets you execute binaries that are on that partition, whereas noexec does not let you do that. noexec might be useful for a partition that contains no binaries, like /var, or contains binaries you do not want to execute on your system, or that cannot even be executed on your system, as might be the case of a Windows partition.
  • rw / ro: Mount the filesystem in either read write or read only mode. Explictly defining a file system as rw can alleviate some problems in file systems that default to read only, as can be the case with floppies or NTFS partitions.
  • sync / async: How the input and output to the filesystem should be done. sync means it is done synchronously. If you look at the example fstab, you will notice that this is the option used with the floppy. In plain English, this means that when you, for example, copy a file to the floppy, the changes are physically written to the floppy at the same time you issue the copy command.
  • suid / nosuid: Permit/Block the operation of suid, and sgid bits.
  • user / users / nouser: user permits any user to mount the filesystem. This automatically implies noexec, nosuid, nodev unless overridden. If nouser is specified, only root can mount the filesystem. If users is specified, every user in group users will be able to unmount the volume.
  • defaults: Use default settings.Default settings are defined per file system at the file system level. For ext3 file systems these can be set with the tune2fs command. The normal default for Ext3 file systems is equivalent to rw,suid,dev,exec,auto,nouser,async(no acl support). Modern Red Hat based systems set acl support as default on the root file system but not on user created Ext3 file systems. Some file systems such as XFS enable acls by default. Default file system mount attributes can be overridden in /etc/fstab.
  • owner (Linux-specific): Permit the owner of device to mount.
  • atime / noatime / relatime / strictatime (Linux-specific): The Unix stat structure records when files are last accessed (atime), modified (mtime), and changed (ctime). One result is that atime is written every time a file is read, which has been heavily criticized for causing performance degradation and increased wear. However, atime is used by some applications and desired by some users, and thus is configurable as atime (update on access), noatime (do not update), or (in Linux) relatime (update atime if older than mtime). Through Linux 2.6.29, atime was the default; as of 2.6.30 (9 June 2009), relatime is the default.[1]
  • Filesystem specific options
    There are many options for the specific filesystems supported by mount. Listed below are some of the more commonly used. The full list may be found in the documentation for mount. Note that these are for Linux; traditional UNIX-like systems have generally provided similar functionality but with slightly different syntax.
  • ext2
    check={none, normal, strict}Sets the fsck checking level.debugPrint debugging info on each remount .sb=nn is the block which should be used as the superblock for the fs.
  • fat
    check={r[elaxed], n[ormal], s[trict]}Not the same as ext2, but rather deals with allowed filenames. See mount(8).conv={b[inary], t[ext], a[uto]}Performs DOS <—> UNIX text file conversions automatically. See mount(8).
  • fat, ntfs
    windows_namesLinux filesystems have a larger set of allowed characters in filenames. windows_names restricts the set of allowed characters for the volume to only those acceptable by Windows. Note: though FAT/NTFS are the most common use case, this feature is not specifically restricted to those filesystem types.uid=n, gid=nSets the user identifier, uid, and group identifier, gid, for all files on the filesystem.umask=nnn, dmask=nnn, fmask=nnnSets the user file creation mode mask, umask, the same for directories only, dmask and for files only, fmask.More detailed information about the fstab file can be found in the man page about Linux fstab ; for other systems see below.
  • nfs, ;addr=ipwhere ‘ip’ means IP address

企业级硬盘、NAS级硬盘、监控级硬盘、普通级硬盘的区别

企业级硬盘

一些“懂得多”的人会纠结企业级、监控盘的问题。在这之前,我要先请纠结党们明白“你需要什么”、“这是什么”。
先来说为什么这些人想要企业级和监控盘——更高端、更可靠、保修期更长。

非要说企业级比消费级高端,这也就认了吧,但实际上企业级和消费级没有直接可比性的,因为功用和设计侧重点不同,一个不算恰当的举例就是坦克和小轿车的区别。
你拆开了说,企业级的盘片更好、磁头更好、马达更好,这有可能,毕竟这些部件也有等级,较高等级的用在企业级上完全合理。
但关键在于你买HDD是一个整体,而不是部分的盘片、磁头、马达。HDD的关键还在于主控和固件
为企业级使用的固件,策略上一定跟消费级的不同。不说企业级比消费级多的功能,企业级HDD的UBER最低10E15,消费级通常都是10E14。
在盘片和磁头没有天差地别的情况下,一个数量级的提升,必然是靠主控和固件做到的。为了保证读写数据正确,企业级可以用更多时间完成一个操作,同时向主控反馈更多操作信息。这些是消费级所不具备的,也是不必要具备的,因为消费级的适用面不需要这些强化措施。

可靠也跟更高端有点关联,但更多人看到的是UBER更高,MTBF更久,AFR更低,并且支持7x24通电。很多人会想“既然7x24通电的MTBF和AFR都这么低,那么我一般日常用应该更低才对”。
但这个想法是错误的,因为用法不一样。企业级盘在数据中心的服务器中使用,确实是7x24不断电的,这也意味着没有磁头升降操作,没有马达启动停止操作,更加不会有突然意外断电,而这些情况都是家用环境用经常遇到的。
也就是说,用消费级的用法使用企业级盘,最后的效果也跟消费级盘没有区别。更何况AFR的计算标准跟我们事后统计的返修率并不一样,而且返修率与盘会不会坏并没有必然联系,仅凭几个数字就断言更可靠这本身就不可靠。

保修期更长其实是企业级最实在的优势,但是这也是有陷阱的。一个是企业级也分级,不同级别的企业级保修期也有不同,还有渠道的不同。
就拿希捷的Constellation系列来说,企业级,有三条支系列,2.5寸的Constellation、3.5寸的Constellation ES和3.5寸的Constellation CS。
前两者官网标5年保修期,Constellation CS是3年。但你在京东等B2C上买,它们的售后信息里面都是3年保修期,剩下的2年就要你自己负责了。
还有最关键的一点就是,企业级HDD并不一定对最终零售消费者提供直接售后服务,代理商也不接受。也就是说你在淘宝买了一块希捷的企业级,过2年卖家关张找不到人了,那这个盘就是无保修的,除非到时候希捷捡到节操了。
希捷比较确定是没有这方面保修。西数前不久开通了全线产品对零售消费者的直接RMA服务,当然我手里没有在保修内的WD盘,所以没法实验,但这对于消费者来说肯定是个好消息。日立和东芝那边的情况不明。所以,如果是图保修而选择5年保的企业级,那么一定要确认好售后渠道。另外,西数黑盘一样是5年保修,价格也没比企业级便宜多少,只图保修没有其他要求也可以选择黑盘。

监控盘

首先监控盘不是企业级,不是支持7x24的就是企业级,网络存储盘也是7x24。这些盘的大部分参数都跟桌面消费级一样,只是可以7x24通电。
甚至你可以认为这就是普通桌面消费级刷个固件就是监控盘,之前讲企业级的时候也有说过固件可以对不同需要而作专门的策略。
监控盘最特别的功能是什么,很多人都说的出来——ATA Streaming。
但这个功能的意思是什么呢?有人会说,丢弃一定数据保证持续读写连贯性。我告诉你,这是结果,而不是实质。ATA Streaming的实质是,当数据中带有Streaming指令,那么这个操作是限定一段时间内必须完成的。看到重点了没,

  • 带有Streaming指令,
  • 限时完成。

也就是说,并不是监控盘不纠错或者随便丢弃数据,首先要带有Streaming指令;带有Streaming指令的数据操作中发生错误也并非不纠错或直接丢弃,能在限时内完成纠错的纠,不能完成就放弃。
还有遇到更严重情况,不光是无法纠错,连读写操作都无法完成的,还要在HDD LBA预留位置上记录信息。
ATA Streaming的意义是在于保证流式读写的连续性,给每个数据操作安排好固定的时间,让整体不会因为某个操作的延迟而失效。
监控盘的真正用途就如其名那样,用来做监控的存储,这可不是一个监控摄像机对应一块监控盘,都是多路监控存在一块或者一组盘里。监控盘可以支持十几条数据流同时写入,
Streaming指令就是为了保证整体的可用,所以可以舍弃少数。日常桌面环境根本用不到这种功能。

NAS盘

至于最近炒起来的概念——网络存储盘,或者NAS盘,如果把上面的话看进去了,也就明白了,无非也就是又一个固件的事。

对”TLER(西部数据)/CCTL(东芝)/ERC(希捷)”这个功能,很多人理解也有误。
TLER/CCTL/ERC既不是RAID必备,也不能防止RAID出错。
这个功能的意义见我另一篇帖子——Intel告诉你企业级硬盘和消费(桌面)级硬盘的区别,四-1里面的介绍。
TLER/CCTL/ERC并不能避免硬盘读写时发生卡壳,只是可以防止阵列过长时间未响应,
有严重问题的盘一样会被踢掉。如果盘运行很顺畅,所有操作请求都能快速得到响应,自然不会出现卡壳的情况,这个功能也就用不上。
因此这些拿TLER/CCTL/ERC作为卖点的网络存储盘有没有用,见仁见智,我个人认为是没用。

再补充一点就是,原来TLER/CCTL/ERC这个功能是作为“添头”存在于桌面硬盘中的,比如老款西数绿盘和日立桌面盘,都可以用官方工具开启或者禁用。
但后来NAS盘独立出去以后,这项“福利”也就没了,想要的话就要多掏100块钱买新系列。
目前已知还明确支持TLER/CCTL/ERC的桌面硬盘只有东芝的DT01ACA200/300(仅2TB和3TB)这两款,神奇的是这块盘同样支持Streaming。

总结

对组阵列的盘霸来说,更应当注重的指标应该是更高一级的UBER水平,而这是桌面、NAS和监控盘都不具备的。这些UBER为10E14的盘,10TB级别是可靠的临界点。如果用4TB的盘组阵列,只要3-4块盘就轻易突破了这个上限。因此如果对数据可靠性要求更高的话,选用UBER至少是10E15的企业级才是更加稳妥选择。

到这里纠结买什么盘的就该告一段落了,我没办法给你推荐一个具体型号,因为没有一个完全靠谱的。按照我上面说的,选择合适自己的就行,重点是售后。

接下来盘到手了,可以开始用了,那么新一轮的纠结也就开始了。比如纠结碟数、产地、固件、金手指有痕迹、噪音、振动、C1、读写曲线不平、MHDD扫完有绿块……

我是不知道从什么时候开始,MHDD成为入手新硬盘之后需要跑的测试软件了,更有甚者MHDD跑的结果稍有不满意就人道毁灭硬盘要求保修。我不去评价这种人的行为,我只能说新盘就拿去跑MHDD是多此一举,真有早期故障不用MHDD也能发现,而且少有售后承认MHDD的结果。

至于其他的那些,硬盘厂商承诺的仅有产品标称的容量和所具有的特性,以及一段期间的保修期。没必要刻意去纠结碟数、产地、固件这些,除非卖家向你做了确实承诺,而实物与承诺不符。希捷酷鱼14代的2TB确实有2碟装和3碟装两个版本,而且一直都并存,官方的Datasheet里面,2TB就是3碟装,没有明确约定的情况下收到3碟装是完全正常的。

如果已经在用SSD做主盘了,作为从盘和存储盘的HDD性能有多高真的很重要吗?即使是作为系统盘用,2碟还是3碟的区别也没大到可以在日常应用中有明显感觉。

然后就是让很多人十分头疼的“C1问题”。结论就是一个——这根本不是问题。如果C1是问题,那么这会导致返修率增高,而返修率增高受影响最大的是硬盘生产商,硬盘生产商不会做这种对自己和消费者都不利的策略。但C1确实很恼人,最好的解决方案还是自己放宽心,这是正常现象,安心接受就是,保修期内挂了就售后,过了保修期这也就是大限已到,别想太多。如果能从什么“偏方”物理上解决问题,比如AAM/APM开到最大或者刷固件禁用掉C1,那也是一种方法,可行性因人而异。整体来说,家用的硬盘,除去早期故障外,死于意外事故,比如摔坏、各种供电事故的,比自然死亡的要多得多。

接下来,正常使用中,HDD逐渐老化、出现坏道,这些也都是很正常的,完全没有必要发现有重映射事件就瞎咋呼。

总结一点就是,只要还能看到HDD给你发警告,那么这盘就还能用,不过就是根据警告的严重程度采取相应的措施。

彻底死了就什么警告都没有了。一般来说,我们使用SMART检测或者通过观感来发现问题,但就像之前说的,一些数值上的“异常”和“不适感”并不是真正的问题。一个是不了解某些数值的定义,比如SMART里面的重映射计数、通电时间和温度,这些值的定义在不同品牌,甚至不同型号上可能有差别。比如重映射的单位是扇区、块还是字节数,通电时间的单位是小时还是分/秒,温度是分三段分别表示当前温度、历史最高温和历史最低温。在你不了解具体的定义,仅从检测软件看到数字,往往会产生误解,

甚至检测软件本身就会误导你,比如有软件BUG,并不支持对新盘的检测等。而“不适感”更是很主观的,比如噪音增大、开程序变慢,不能否认可能是老化或者故障的前兆,但也不要无端地去“制造”问题,有怀疑,那么就要验证。

像CDI这样的泛用SMART检测软件只能给你一个大概,它对盘健康状况的评估是基于它的算法的,CDI说这块盘危险了并不能作准,而应以制造商提供的官方工具来判别,

比如希捷的SeaTools。用官方工具做检测,有问题会提供故障代码,然后可以凭这个代码到官网查询保修信息,并获得售后途径。也就是说,我们可以用CDI这样的通用软件去做定期或不定期的查看,做到早发现,但要确认一个问题就必须使用官方工具,一般售后只认自家厂提供的官网工具,只有超良心的售后才会支持第三方的结论。

当然,这是对保修期内的盘来说的,大部分的盘正常使用撑过保修期都不是大问题,而过了保修期以后可能很快就会出现问题,这时候就要自己解决了。我推荐有能力的玩家自己去解决问题,特别是像坏道这样的,因为在初期并不会导致整盘报废,经过合理处置,虽然不保证能修复,但依然可以继续使用。坏道的检测与修复才应该请出MHDD,毕竟这是最彻底的工具。不习惯黑底白字和命令行界面的,还可以用我推荐过的Hard Disk Sentinel进行修复,或者直接用它作为SMART监控器,常驻于后台。使用过程中出现问题很正常,关键在于如何妥当解决问题,并把损失降到最低。

我想大多数人不会丢弃硬盘,即使盘已经过时或者有其他原因不再使用,一些人选择保留当纪念品,还有人选择出二手。对于出二手这里还是要提醒一句,记得做彻底擦除。我们常用的HD Tune里面就有多种擦除方式,35遍的暴力擦除可以保证不是水表级单位都无法轻易恢复数据。

当然这只是最起码的数据安全意识,真存有无法形容般重要的数据,即使废弃也要做彻底销毁,是粉粹还是铝热剂烧化就看你能不能办到了。这一点,对在企业和政府机构的来说就更为重要。而且并不仅限于看得见的硬盘,一些大型印刷设备里面同样有硬盘或者其他存储器,在废弃之前一样要做好销毁工作。

参考

ext2/ext3/ext4

tune2fs检查分区所支持的功能

1
2
:~$ tune2fs -l /dev/sda? | grep "filesystem features"
Filesystem features: ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file

ext2->ext3

1
2
3
4
5
6
# 加入日志功能
:~$ tune2fs -j /dev/sda?
# 检查分区
:~$ e2fsck -f /dev/sda?
:~$ tune2fs -l /dev/sda? | grep "filesystem features"
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file

ext3->ext4

1
2
3
4
:~$ tune2fs -O huge_file,extent,64bit,flex_bg,dir_nlink,extra_isize /dev/sda?
:~$ e2fsck -f /dev/sda?
:~$ tune2fs -l /dev/sda? | grep "filesystem features"
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

close journal feature

1
2
3
:~$ tune2fs -O ^has_journal /dev/bt/bt
:~$ tune2fs -l /dev/sda? | grep "filesystem features"
Filesystem features: ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize