除了硬盘,电脑中所有硬件都可以随意更换。
没有什么可以完全消除对磁盘的所有担忧。
没有一个文件系统或磁盘系统是完美的,但可以选择最适合的选项。
此书以FreeBSD9为基础。
必须对磁盘技术有所了解。
自己做硬件研究,或者向有经验的人求教。
建议在虚拟机中进行学习,研究文件系统具有独特的风险,一个命令就可以破坏操作系统。
文件系统通常与操作系统紧密连接,DOS就是Disk Operating System的缩写。
文件系统可能驻留在磁盘上,也可能以映像文件的形式存在,如ISO或虚拟机磁盘。
在计算机的石器时代,磁盘有明确的几何图形。
圆盘是圆的,会转,中间有个主轴(spindle)。
单个磁盘称为盘片,每个磁盘驱动器都包含一个或多个磁盘。
每个盘片都有同心的磁性材料环,称为轨道(tracks)。
由于硬盘驱动器内的所有单个磁盘都是相同的,因此轨道排列在一起。一堆轨道被称为圆柱体(cylinder)。
每个磁盘驱动器都有多个磁头(heads),当盘片在它们下方旋转时,这些磁头可以在轨道上读写数据。
每个圆柱体被划分为被称为扇区(sectors)的小逻辑单元。
每个扇区都有一个数字,扇区0位于磁盘的开头,保留给分区表。
虽然已经不再适用于任何物理对象,但厂商还是会使用扇区(sectors)、磁道(tracks)、磁头(heads)、柱面(cylinders)来描述磁盘的几何图形(geometry)。
硬件工程师在系统设计上设定了各种硬性限制。
原始IBM PC的640KB内存限制是许多笑话的笑柄,但总有一天他们会讲同样的关于4G i386内存限制的笑话。这些大型工业级SCSI磁盘最大容量为1GB(2^21个块),硬件的关键磁盘限制为504兆字节、8GB、2TB等等。
并非所有磁道的长度都相同,磁盘边缘的磁道大约是内圈磁道的两倍长。但文件系统要求每个磁道有相等数量的扇区。
1970年代制造商就调整了硬盘控制器以允许这种情况,并教会磁盘给出错误的答案。
闪存驱动器声称有柱面、磁道、扇区和轨道,但它们不是圆形的,也不会旋转。
硬件RAID设备将多个磁盘组合成一个磁盘。虚拟磁盘映像由分散在另一个文件系统中的扇区组成。
硬件制造商厌倦了教硬盘撒谎,操作系统制造商也厌倦了绕过这些谎言。所以所有SCSI硬盘和所有现代硬盘都使用逻辑块寻址(Logical Block Addressing——LBA)技术。
使用LBA,每个扇区都被分配一个数字,从0开始。
LBA无需担心硬盘上的柱面、扇区、盘片和磁头,可以访问任意扇区号。
计算机可以将磁盘上的扇区视为直线上的点,而不用考虑实际的物理布局。
LBA驱动器仍然会报告一种传统的集合形状,但是硬件和操作系统制造商都不会认为这种几何形状与现实有任何相似之处。
但许多文件系统仍然希望找到磁盘几何形状,LBA方便的扇区编号并不会让人摆脱这些文件系统的限制。
磁盘的一个关键因素是扇区的大小。
直到1990年代,扇区的大小从128字节到2k字节不等。
FreeBSD支持硬件支持的任何扇区大小。
21世纪初期,制造商决定采用512字节的扇区。今天的硬盘驱动器要大得多,文件也大。
在过去的几年里,4KB(4096字节)扇区取代了512字节扇区。
像XP那样的旧系统只能使用512字节的扇区,不接受4KB扇区。
重要的是,不同的4KB扇区硬盘以不同的方式存在。再返回磁盘信息时,有些号称是512字节扇区、有些号称同时具有512字节和4KB扇区。很少有磁盘返回它仅有4KB扇区。
更复杂的是一些固态磁盘(solid state drive——SSD)的扇区大到8KB或16KB,或者更多的扇区尺寸。
FreeBSD的两个主要文件系统都必须知道底层磁盘的扇区大小以及扇区在磁盘上的位置。
如果在磁盘上使用了错误的扇区大小,或者没有将文件系统分区与扇区边界对齐,性能就会受到影响。
并非所有以特定大小出售的磁盘都是相同大小的。
计算机行业无法就计量单位的含义达成一致,但制造商无论如何都要把事情解决掉。
一些计算纯粹主义者(computing purists declare)宣称,1TB的应该有1024GB,每GB应该有1024MB。
而硬盘制造商通常以1000的倍数而不是2的幂来衡量存储大小。因此1TB硬盘是1百万兆字节,而不是1048576M字节。
制造工艺和驱动器设计的差异意味着硬盘驱动器上的扇区数量不一定相同。
建议在硬盘驱动器的末尾至少留出几兆字节的空间,这为复制驱动器或恢复故障驱动器保留了空间。
硬盘的质量和年龄对于硬盘性能起到决定性作用。
万转驱动器比5千转驱动器快。
SATA-3驱动器比SATA-2快。
SSD优于机械硬盘。
新硬件胜于旧硬盘。
提高性能的最佳方法是更换更好、更新、更快的硬盘。
在机械硬盘上,扇区号较低的磁盘开头应该比结尾处的磁盘快。将交换空间放在更靠近磁盘开头的位置,可以提高性能。但某些分区,比如引导分区,必须放在磁盘的最开始处。
如果你有一个足够大的机械磁盘,甚至可以把磁盘的较慢部分留空。在磁盘上留出空白空间并不能提高硬盘的原始性能,但只使用硬盘中较快的部分可以使其在应用程序中表现更好。
SSD不同,它所有部分的速度都是一样的。但在固态磁盘上留出空白空间可以提高性能和寿命。此外,在SSD存储上的UFS文件系统上启用TRIM可以延长磁盘寿命。
磁盘的每秒可执行的输入/输出操作数(Input/Output operations per second——IOPS)有限,具体数量因磁盘而异,但在硬盘上约为100-200IOPS。SSD在某些负载下可以达到数万IOPS。当遇到IOPS限制但需要更高性能时,可以添加磁盘或更换更快的磁盘。