本节书摘来异步社区《信息存储与管理(第二版):数字信息的存储、管理和保护》一书中的第2章,第2.3节,作者:【新加坡】G.Somasundaram ,【美】Alok Shrivastava,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.3 主机(计算)
信息存储与管理(第二版):数字信息的存储、管理和保护
用户通过应用程序来存取数据。运行这些应用程序的计算机被称作“主机”或“计算系统”。主机可以是物理机,也可以是虚拟机。计算虚拟化软件可以在一个物理计算架构上创建多个虚拟机。计算虚拟化和虚拟机将会在本章的后面进行探讨。物理主机的例子很多,比如桌面电脑、服务器、服务器集群、笔记本电脑以及移动设备。主机由CPU、内存、I/O设备,以及一系列执行运算操作的软件构成。软件包括操作系统、文件系统、逻辑卷管理器和设备驱动等。这些软件可以作为单独的实体安装,也可以作为操作系统的一部分安装。
CPU由四个部件组成:算术逻辑单元(Arithmetic Logic Unit,ALU),控制单元(Control Unit),寄存器(register)和一级缓存(L1 cache)。主机上的内存有两种,随机存取存储器(RAM)和只读存储器(ROM)。I/O设备负责主机的通信。I/O设备包括键盘、鼠标和显示器等。
软件运行在主机上,对数据的输入和输出进行处理。下面一节将会详细讲述主机系统中不可或缺的各种软件组件。
2.3.1 操作系统
在传统的计算环境中,操作系统控制着计算的所有方面。它负责应用和计算系统物理部件之间的协作。操作系统还提供了访问数据的应用。操作系统负责监测用户行为和环境,并作出反应。它还负责组织和控制硬件组件,管理硬件资源的分配,为其被管理的所有资源的访问和使用提供基本保护。操作系统可执行基本的存储管理任务,同时管理着底层组件(如文件系统、卷管理器和设备驱动)。
在虚拟计算环境中,虚拟层处于操作系统和硬件资源之间。操作系统的工作方式因引入的计算虚拟化的实现形式而不同。在常规的实现方式下,操作系统的工作方式类似访客,只进行与应用交互相关的活动。这时,硬件管理的功能由虚拟层负责。
内存的虚拟化
内存一直以来都是,以后也将是主机部件中成本较高的一个器件。它决定了一个主机可以运行的应用的大小和数量。内存的虚拟化允许多个应用和进程,在其内存需求之和大于可用内存的情况下,依然可以运行且互不影响。
内存的虚拟化是操作系统将主机内存虚拟化的一个功能。操作系统创建一个虚拟内存,其地址空间大于物理内存空间。虚拟内存由物理内存空间和一部分硬盘存储组成。操作系统中管理虚拟内存的工具叫做虚拟内存管理器(virtual memory manager,VMM)。VMM管理着虚拟内存和物理内存的映射关系,并在虚拟地址指向硬盘部分时,从硬盘获取数据。VMM使用的硬盘空间叫做交换空间(swap space),也称页文件(page file)或者交换文件(swap file)。它是硬盘上的一块空间,被操作系统当作物理内存对待。
在虚拟内存的实现中,系统的内存被分为连续的区块(block),这些块由固定大小的页组成。分页(paging)这个进程负责将不活动的页面移至交换文件中,在需要时将这些页面从交换文件取回到物理内存中。这样可以在多个应用之间充分利用有限的可用物理内存。操作系统将最少使用的页面从内存中移至交换文件中,以保证更活跃的进程有足够的物理内存空间。访问交换文件要比访问物理内存页慢,因为交换文件在硬盘上,而硬盘的速度慢于内存。
2.3.2 设备驱动
设备驱动(device driver)是一种专用软件,它用于实现操作系统与某种设备,如打印机、鼠标或硬盘的交互。设备驱动让操作系统识别、访问和控制设备。设备驱动依赖于硬件,不同操作系统的驱动也不同。
2.3.3 卷管理器
早期,硬盘驱动器(HDD)呈现给操作系统的是一组连续的物理块。整个硬盘驱动器都分配给文件系统或是其他数据体,由操作系统或应用程序使用。这样做的缺点是缺乏灵活性:当一个硬盘驱动器的空间使用完时,想要扩展文件系统的大小就很难。而当硬盘驱动器存储容量增加时,把整个硬盘驱动器分配给文件系统通常会导致存储空间不能充分利用。
逻辑卷管理器(Logical Volume Manager,LVM)的发展使得文件系统容量的动态扩展以及高效的存储管理成为可能。LVM是一个运行在物理机器上管理逻辑和物理存储设备的软件。LVM也是一个介于文件系统和物理磁盘之间的中间层。它可以把一个大容量物理磁盘划分为若干小的虚拟磁盘,也可以把几个小的物理磁盘组合成一个大的虚拟磁盘(这个过程叫做串联concatenation),提供给应用程序使用。
磁盘分区(disk partitioning)的引入就是为了改善硬盘驱动器的灵活性和使用率。在分区时,硬盘驱动器被划分为几个逻辑卷(logical volume,LV),如图2-1所示。例如,一个大的物理磁盘,可以根据文件系统和应用程序的数据管理要求,划分为若干小的逻辑卷。当硬盘在主机上进行初始分区时,是将一组连续的柱面分配给一个分区。主机的文件系统在访问分区时,完全不需要知道磁盘的物理结构和分区信息。
串联(concatenation)把若干小的物理磁盘组合起来,呈现给主机一个较大的逻辑盘(见图2-1)。
LVM提供了优化的存储访问,简化了存储资源的管理。它隐藏了物理磁盘的细节和数据在磁盘上的位置。管理员改变存储的分配时无需停止正在运行的应用。
LVM的基本部件是物理卷(physical volume)、卷组(volume group)和逻辑卷(logical volume)。在LVM术语中,每一个连接到主机系统的物理磁盘都是一个物理卷(PV)。LVM把由物理卷提供的物理存储空间转换为逻辑存储空间,供操作系统和应用程序使用。一个卷组由一个或多个物理卷组合而成。对一个物理卷进行初始化时,LVM会为其分配一个唯一的物理卷标识(PVID)。卷组中的物理卷可以动态添加或移除。一个物理卷只能属于一个卷组,它的全部空间都并入卷组,不能被其他卷组共享。在卷组创建时,每一个物理卷都被划分为若干个相同大小的数据块,这些数据块称为物理区域(physical extent)。
逻辑卷是在给定的卷组中创建的。一个逻辑卷可以被认为是一个虚拟磁盘分区,而卷组则可以被认为是一个磁盘。一个卷组可以划分为许多逻辑卷。逻辑卷的大小取决于其包含的物理区域的数目。
对操作系统来说,逻辑卷就像是一个物理设备。一个逻辑卷可以由不连续的物理分区组成,并可以跨越多个物理卷。在逻辑卷上创建文件系统后,就可以将逻辑卷分配给应用了。可以为逻辑卷配置镜像,以确保更好的数据可用性。
2.3.4 文件系统
文件是有关联关系的记录或数据的集合,它们作为一个有命名的整体存储。文件系统(file system)是大量文件的分层组织结构。文件系统使得对存放在磁盘、磁盘分区或逻辑卷内的数据文件的访问变得更加容易。文件系统包含相应的逻辑结构和软件例程,负责控制对文件的存取。有了文件系统,用户可以对文件进行创建、修改、删除和访问操作。对磁盘上文件的访问需要由文件拥有者授权才能进行,这通常也是由文件系统来控制的。
文件系统使用目录(directory)把数据组织成分层结构。目录就是保存指向文件的指针的地方。所有的文件系统都维护着一个到目录、子目录和文件的指针映射,这些内容也是文件系统的一部分。常见的文件系统有以下几种。
FAT32(File Allocation Table,文件分配表):适用于微软Windows。
NT文件系统(NTFS):适用于微软Windows。
UNIX文件系统(UFS):适用于UNIX。
扩展文件系统(EXT2/3):适用于UNIX。
除了文件和目录,文件系统还包括许多其他相关的记录,统称为元数据(metadata)。例如,UNIX系统的元数据包括超级块(superblock)、索引节点(Inode)、空闲的和正在使用的数据块列表等。一个文件系统的元数据必须保持一致,才能算得上是健康的文件系统。
超级块包含了文件系统的重要信息,比如文件系统的类型、创建和修改时间、大小和布局、可用的资源数量(如空闲块数量,索引节点数量等),以及指示文件系统挂载状态(mount status)的标记等。索引节点与文件和目录关联,包含文件长度、拥有者、访问权限、最后访问和修改时间、连接数量,以及数据存放的地址。
文件系统块(file system block)是最小的分配数据的单元。每一个文件系统块对应物理磁盘上一个连续的区域。在文件系统创建之初,文件系统块的大小就确定了。文件系统的大小是由文件系统块的大小以及所存储数据使用的总块数决定的。因为大部分文件都比单个预定义的文件系统块的大小要大,所以一个文件可以跨越多个块。随着新块的添加和删除,文件系统中的块将变得不再连续了(碎片化)。使用一段时间后,随着文件数量的增多,文件系统就变得更加碎片化了。
下面的列表说明了使用LVM将用户文件映射到磁盘存储子系统的过程(该过程可结合图2-2来理解):
1.用户和应用程序创建并管理文件;
2.这些文件存储在文件系统上;
3.文件系统映射到文件系统块上;
4.文件系统块映射到逻辑卷的逻辑区域(logical extent)上;
5.通过操作系统或是LVM再把逻辑区域映射到磁盘的物理区域(physical extent)上;
6.这些物理区域最终被映射到物理存储子系统的磁盘扇区上。
如果没有LVM,那么就不会有逻辑区域。没有LVM,文件系统块将被直接映射到磁盘扇区。
文件系统树(file system tree)以根目录(root directory)开始。根目录下有子目录。文件系统只有在挂载之后才能使用。
fsck是UNIX和Linux主机上用来检查文件系统一致性的系统工具。下面是一个处于不一致状态的文件系统示例:在文件系统的内容发生更改时,在将这些更改写入磁盘之前,整个计算机系统突然崩溃。在系统启动时(Boot),fsck命令会首先检查文件系统的一致性,以确保启动成功。如果该文件系统是一致的,fsck命令就会接着检查所有其他的文件系统。如果发现哪个文件系统不一致,它就不会被挂载。不一致的文件系统可被fsck命令自动修复,有时需要用户的交互、确认和纠正才能完成。对应于fsck,CHKDSK是一个可用于Dos、OS/2和微软Windows操作系统的命令。
文件系统可以是日志型的,也可以是无日志型的。无日志型的文件系统(nonjournaling file systems)可能会造成文件的丢失,这是因为更新数据和元数据时的写操作是分开的。当系统在写过程中崩溃时,会带来元数据和数据的丢失或损坏。当系统重启时,系统会尝试着通过检查和修复操作来更新元数据结构。在大型文件系统上,这个操作会消耗大量的时间。如果没有足够的重建信息,那么文件就会发生错位或丢失,从而导致文件系统的损坏。
日志型的文件系统(journaling file system)使用了一个独立的区域(称为log或journal),来存放日志信息。日志中包含了所有将要写的数据(物理日志,Physical Journal),或是只包含待更新的元数据(逻辑日志,Logical Journal)。在文件系统更新之前,更新信息先被写入日志区域。只有日志区域被更新后,在文件系统上的操作才能进行。如果文件系统在操作过程中崩溃,那么在日志区域中就有足够的恢复信息来重现日志过程,并完成修复操作。日志使得文件系统的检查特别快,因为它只关心文件系统中那些活动的和最近经常访问的部分。另外,由于待操作的信息都被保存了,文件丢失的可能性就降低了。
带日志的文件系统的一个缺点是要比一般文件系统慢一些。导致系统变慢的原因是因为每次文件系统变化时,都需要在日志区域进行额外的操作。然而,日志文件系统带来的文件系统检查时间的缩短和文件系统的完整性远弥补了其缺点。如今,几乎所有文件系统的实现都是带日志的。
专用的文件服务器可以用来在网络上管理和共享大量的文件。这些文件服务器支持很多文件系统,并且采用了操作系统相关的文件共享协议,例如NFS和CIFS。这些协议在第7章都有详细描述。
2.3.5 计算虚拟化
计算虚拟化是从操作系统中屏蔽或抽象物理硬件的技术,它使得在一台物理机器或者机器集群上可以同时运行多个操作系统。利用这一技术可以创建叫做虚拟机(virtual machine,VM)的可移植虚拟计算系统。虚拟机上运行着封装在一起的操作系统和应用实例,不同虚拟机内的操作系统和应用是隔离的。计算虚拟化是通过位于操作系统和硬件之间的虚拟层(virtualization layers)来实现的。虚拟层也被称为hypervisor,Hypervisor为所有的虚拟机提供所需的硬件资源(如CPU,内存和网络)。在一台物理服务器上,如果性能许可,可以创建大量的虚拟机。
虚拟机是一个逻辑实体,但是在操作系统看来,它却是一个有自己的CPU、内存、网络控制器和磁盘的物理主机。所有的虚拟机彼此孤立,共享底层的硬件资源。从hypervisor的角度来看,虚拟机不过是多种文件(包括VM配置文件和数据文件等)的集合。
物理服务器常常会面对资源冲突的问题,特别是在两个或多个应用对于资源的需求有冲突的时候。例如,不同应用可能需要同一注册表项有不同的值,或者需要同一DLL的不同版本。如果这其中有应用需要保证高可用性,那问题就更容易出现了。结果,服务器一次只能为一个应用提供资源(参见图2-3(a))。商业组织不得不为每个部署的应用购买新的物理机,这提高了成本,降低了灵活性。另一方面,许多应用并不能完全利用硬件资源。这样处理器的性能、内存和存储都处于没有充分利用的状态。计算虚拟化可以解决这些问题(参见图2-3(b)),从而用户可以在一台物理机器上可以运行多个操作系统和应用,大幅提高了服务器的利用率,促进了服务器的资源整合。
通过整合服务器,商业机构可以减少数据中心服务器的数量。这样省去了重新购置服务器的成本,同时降低了运营成本,节省了数据中心的地板空间和机架空间。创建虚拟机与配置新物理服务器相比所需时间更少,商业机构可以更快更容易地部署服务器(即虚拟机)。单个虚拟机的重启、升级或崩溃都不会影响到同一物理机器上的其他虚拟机。另外,虚拟机可以从一台物理机复制到另外一台机器上,在这个过程中应用不受影响。虚拟机的非中断性迁移(nondisruptive migration)对于不同物理机器之间的负载均衡,硬件维护和保证可用性等场合都是非常必要的。
桌面虚拟化
在传统的桌面模式中,操作系统、应用和用户配置文件是和特定的硬件绑定的。因此当客户端坏掉或丢失时,业务生产率会受到很大影响。桌面虚拟化打破了操作系统、应用、用户配置文件和设置对于硬件的依赖。IT人员可以更改、更新或者部署上述元素的任何一个而不会影响其他元素。桌面运行在数据中心的虚拟机上,用户可以通过多种客户端设备访问桌面,例如笔记本电脑、台式机和移动设备(也称为精简设备——thin devices)。应用的执行和数据存储都是在数据中心集中进行的,而非在客户端设备上。由于桌面运行在数据中心的虚拟机上,降低了数据泄漏和数据遭盗窃的风险。此外,备份可集中进行,合规也得到简化。虚拟桌面易于维护,因为安装补丁、配置新应用和操作系统、为用户部署资源或者删除用户都是集中进行的。