创立于 2008 年 · 数字版 · 2026年6月15日

SMB IT Journal

面向小型企业的信息技术资源

中文
存储

驱动器表象

在当今计算领域,较为常见、却又较为微妙的基础概念之一便是驱动器表象,换言之,即某种看起来像硬盘的事物。这听起来或许简单,大体上也确实如此,但它可能颇为微妙。

首先,什么是硬盘。这本应很简单。我们通常指的是传统的旋转磁盘温彻斯特(Winchester)设备,这类设备数十年来一直以标准的三点五英寸以及二点五英寸规格制造。它们内含旋转的盘片、可前后移动的磁头,并使用诸如 ATA 或 SCSI 之类的接口进行连接。我们大多数人都能用手拿起一块硬盘,并确信自己拿着的是一块硬盘。这就是我们所说的驱动器的物理形态。

然而,对计算机而言,它看不到驱动器的外壳,也看不到接口。计算机必须透过其电子元件,以数字方式“看见”驱动器。这与人类看待物理驱动器的方式截然不同。对计算机而言,硬盘在最基本的物理层面上表现为一个 ATA、SCSI 或 Fibre Channel 设备,而在更高层面上通常被抽象为一个块设备。这就是我们所称的逻辑表象,而非物理表象。就本文目的而言,我们将把所有这些驱动器接口都视为块设备。它们确有差异,但只是微小差异,对本文讨论无关紧要。重要的是,存在一种被计算机视为硬盘的标准接口或一组密切相关的接口。

此处理解逻辑驱动器表象的另一种方式是:任何在计算机看来像硬盘的事物,都是计算机可以用文件系统进行格式化的对象。文件系统本身并不是驱动器,而是需要一个驱动器来放置其上。

此处最重要的概念便是接口这一概念。对计算机而言,真正被视为硬盘的,是“任何实现了硬盘接口的事物”。这既是一个简单的概念,也是一个强大的概念。

正是由于使用了标准接口,我们才能够取来闪存,将其连接到一个磁盘控制器上,使其通过标准协议进行呈现(如今 ATA 与 SCSI 的 SATA 和 SAS 实现对此都很常见),从而创造出在计算机看来与传统温彻斯特驱动器外观和行为完全一致、却在物理上与之毫无共同之处的 SSD。它们或许采用、或许并不采用人们熟悉的物理规格,但它们肯定不含盘片和磁头。审视传统硬盘与现代 SSD 的工作原理,我们不会猜到它们竟有共同的用途。

这一概念适用于许多设备。显然,SD 卡和 USB 记忆棒也以同样方式工作。但重要的是,硬盘之上的分区也正是如此工作的。分区系统一方面利用驱动器表象接口来得以应用于某个设备,另一方面又向任何想要使用它的对象(通常是文件系统)呈现一个驱动器表象接口。这种两侧都使用驱动器表象接口的理念非常重要。通过这样做,我们得到了一套用于构建复杂存储系统的统一而通用的构建块体系!

我们在许多场合都能见到这种“驱动器进、驱动器出”的概念。其中最为人熟知的大概便是 RAID。RAID 系统取来一组硬盘,应用若干算法之一使这些驱动器协同工作,然后将它们作为单一驱动器表象呈现给“栈”中更上一层的系统。正是这种封装赋予了 RAID 强大的能力:栈中更高层的系统在审视一个 RAID 阵列时,看到的字面上就是一块硬盘。它们看不到这组驱动器,也不知道 RAID 之下是什么。它们只看到 RAID 系统所呈现的结果驱动器。

由于 RAID 系统取来任意数量的驱动器并将其呈现为一块标准驱动器,我们在理论上就拥有了想叠多少层 RAID 就叠多少层的能力。当然,过度大量地这样做将极不切实际。但正是通过这一概念,嵌套式 RAID 阵列才成为可能。例如,假设我们有许多物理硬盘,将其两两配对,每一对组成一个 RAID 1 阵列。这些得到的阵列各自被呈现为一块单一驱动器。这些得到的逻辑驱动器又可以组合成另一个 RAID 阵列,例如 RAID 0。这样做正是 RAID 10 的构建方式。更进一步,我们还可以取若干 RAID 10 阵列,将它们全部呈现给另一个 RAID 系统并再次将其组成 RAID 0,从而得到 RAID 100,如此可无限类推。

同样地,逻辑卷层也使用与 RAID 相同的封装方式来施展其魔法。逻辑卷管理器,例如 Linux 上的 LVM 和 Windows 上的 Dynamic Disks,位于逻辑磁盘之上,提供了一个层,你可以在其中执行诸如灵活扩展设备或启用快照之类的强大管理,然后向栈中的下一层呈现逻辑磁盘(即驱动器表象接口)。

由于驱动器表象具有统一的性质,存储栈可以以任意顺序排列。逻辑卷管理器可以位于 RAID 之上,RAID 也可以位于逻辑卷管理器之上,当然你还可以跳过其中之一,或两者都跳过!

驱动器表象(即逻辑硬盘)这一概念以其简洁性而显得强大,使我们拥有了按需定制存储系统的巨大潜力。

当然,逻辑驱动器概念还有其他用途。其中最受欢迎、却最不被理解的便是 SAN。SAN 不过是这样一种设备:它取来一块或多块物理磁盘,并通过网络将其呈现为逻辑驱动器(SAN 这种逻辑驱动器的呈现被称为 LUN)。这就是 SAN 的全部含义,确确实实如此。大多数 SAN 在向网络呈现最终的 LUN(即磁盘表象)之前,都会纳入一个 RAID 层,并很可能纳入一个逻辑卷管理器层,但这并不是成为 SAN 的必要条件。

当然,这也就意味着,多个 SAN LUN 可以合并到单个 RAID 中,或通过一个逻辑卷层加以控制。当然,这也意味着,一个 SAN LUN、一块物理硬盘、一个 RAID 阵列、一个逻辑卷、一个分区……都可以用文件系统进行格式化,因为它们都是实现同一结果的不同手段。它们的行为完全一致。它们都共享驱动器表象接口。

为了举一个真实世界的例子,说明你常常会如何看到所有这些部件汇聚在一起,我们将考察你在企业领域会遇到的最常见的“存储栈”之一。当然,构建存储栈的方式有很多,因此如果你的存储栈有所不同,也不必感到意外。栈的最底层几乎总是物理硬盘,其中可能包括固态硬盘。这些硬盘在物理上位于一个 SAN 内部。在离开 SAN 之前,该栈很可能包括驱动器的实际存储层,然后是将这些驱动器合并为单一实体的 RAID 层。接着是一个逻辑卷层,以实现诸如扩展和快照之类的功能。然后是 SAN 与服务器之间的物理分界,它以 LUN 的形式呈现。随后,在分界点的服务器/操作系统一侧,会对该 LUN 应用一个逻辑卷管理器。再然后,在该 LUN 之上是一个文件系统,这便是我们的最后一步,因为文件系统不再继续呈现驱动器表象接口,而是呈现文件接口。

理解驱动器表象(即逻辑驱动器),以及这些表象如何使各组件彼此对接以构建复杂的存储子系统,是理解 IT 的一块关键构建基石,并广泛适用于大量的 IT 活动。

标签abstraction hard drive interface logical volume manager lvm nas partition san volume

广告

SMB IT Journal — the IT resource for small business