运维中的操作系统概念


文档摘要

运维中的操作系统概念 运维中的操作系统概念 操作系统 引导过程 系统启动 第一阶段引导加载程序 第二阶段引导加载程序 内核 初始化 资源: 进程与进程管理 概念 资源: Linux信号 概念 资源: 线程与并发 概念 资源: 调度 概念 资源: 内存管理 概念 资源: 进程间通信 概念 资源: I/O管理 概念 资源: 虚拟化 概念 资源: 分布式文件系统 概念 资源: 云计算 概念 资源: 参考: 操作系统 但在定义操作系统是什么之前,让我们先来了解一下。操作系统(OS)是一组管理计算机硬件并为程序提供服务的软件。具体来说,它隐藏了硬件复杂性,管理计算资源,并提供隔离和保护。最重要的是,它可以直接访问底层硬件。操作系统的主组件包括文件系统、调度器和设备驱动程序。

运维中的操作系统概念

操作系统

但在定义操作系统是什么之前,让我们先来了解一下。操作系统(OS)是一组管理计算机硬件并为程序提供服务的软件。具体来说,它隐藏了硬件复杂性,管理计算资源,并提供隔离和保护。最重要的是,它可以直接访问底层硬件。操作系统的主组件包括文件系统、调度器和设备驱动程序。你可能已经使用过桌面操作系统(如 Windows、Mac、Linux)和嵌入式操作系统(如 Android、iOS)。

操作系统有三个关键要素:(1)抽象(进程、线程、文件、套接字、内存),(2)机制(创建、调度、打开、写入、分配),以及(3)策略(LRU、EDF)。

操作系统有两种设计原则:(1)通过实现灵活的机制来支持策略,将机制和策略分离;(2)优化常见情况:操作系统将在哪里使用?用户希望在该机器上执行什么?工作负载要求是什么?

当前常用的三种操作系统类型是:(1)单内核操作系统,整个操作系统都在内核空间中运行,并且独自处于主管模式;(2)模块化操作系统,在这种系统中,系统核心的一部分将位于称为模块的独立文件中,这些模块可以在运行时添加到系统中;(3)微内核操作系统,其中内核被分解成单独的进程,称为服务器。一些服务器在内核空间中运行,一些则在用户空间中运行。

资源:

引导过程

alt 文本

  • 当系统首次启动或重置时,处理器会执行一个已知位置的代码。在个人计算机(PC)中,这个位置是在基本输入输出系统(BIOS)中,存储在主板上的闪存中。嵌入式系统的中央处理单元(CPU)调用复位向量以从闪存/只读存储器(ROM)中的已知地址开始执行程序。无论哪种情况,结果都是一样的。由于PC提供了如此多的灵活性,BIOS必须确定哪些设备是引导候选者。

  • 当找到引导设备时,第一阶段引导加载程序将被加载到RAM并执行。这个引导加载程序小于512字节(一个扇区),其任务是加载第二阶段引导加载程序。

  • 当第二阶段引导加载程序被加载到RAM并执行时,通常会显示一个启动画面,并将Linux和可选的初始RAM磁盘(临时根文件系统)加载到内存中。当图像加载完毕后,第二阶段引导加载程序将控制权传递给内核映像,内核被解压缩并初始化。此时,第二阶段引导加载程序检查系统硬件,枚举附加的硬件设备,挂载根设备,然后加载必要的内核模块。完成后,第一个用户空间程序(init)启动,进行高层次的系统初始化。

系统启动

  • 系统启动阶段取决于Linux在什么硬件上启动。在一个嵌入式平台上,系统上电或重置时会使用引导环境。示例包括U-Boot、RedBoot和Lucent的MicroMonitor。嵌入式平台通常发货时带有引导监视器。这些程序驻留在目标硬件的闪存的特殊区域,并提供将Linux内核映像下载到闪存并随后执行的方法。除了具有存储和引导Linux映像的能力外,这些引导监视器还执行一定程度的系统测试和硬件初始化。在嵌入式目标中,这些引导监视器通常覆盖第一阶段和第二阶段的引导加载程序。

  • 在PC中,从地址0xFFFF0处的BIOS开始引导Linux。BIOS的第一步是加电自检(POST)。POST的任务是检查硬件。BIOS的第二步是对本地设备进行枚举和初始化。

  • 鉴于BIOS功能的不同用途,BIOS由两部分组成:POST代码和运行时服务。POST完成后,它将从内存中清除,但BIOS运行时服务仍保留并可供目标操作系统使用。

  • 要引导操作系统,BIOS运行时按互补金属氧化物半导体(CMOS)设置定义的优先顺序搜索活动和可引导设备。引导设备可以是软盘、CD-ROM、硬盘分区、网络设备,甚至是USB闪存盘。

  • 常见情况下,Linux是从硬盘引导的,其中主引导记录(MBR)包含主要引导加载程序。MBR是一个512字节的扇区,位于磁盘的第一个扇区(第0柱面的第0头第1个扇区)。MBR加载到RAM后,BIOS将其控制权交给MBR。

第一阶段引导加载程序

  • 位于MBR的主要引导加载程序是一个512字节的镜像,包含程序代码和一个小的分区表(见图2)。前446字节是主要引导加载程序,包含可执行代码和错误消息文本。接下来的64字节是分区表,每个分区记录16字节(共四个分区)。MBR以两个字节结尾,定义为魔数(0xAA55)。魔数作为MBR的验证检查。

  • 主引导加载程序的任务是找到并加载二级引导加载程序。为此,它通过查找分区表中的活动分区来完成。找到活动分区后,它会扫描表中剩余的分区,确保它们都是非活动的。一旦验证完成,就会从设备中读取活动分区的引导记录,并将其加载到RAM并执行。

第二阶段引导加载程序

  • 二级或第二阶段引导加载程序可以更恰当地称为内核加载器。在这个阶段的任务是加载Linux内核和可选的初始RAM磁盘。

  • 第一阶段和第二阶段引导加载程序结合起来被称为Linux加载器(LILO)或GRand Unified Bootloader(GRUB)在x86 PC环境中。因为LILO有一些缺点,这些缺点在GRUB中得到了纠正,所以让我们看看GRUB。(有关GRUB、LILO及相关主题的更多信息,请参阅本文后面的部分中的资源部分)

  • GRUB的一大优点是它包括对Linux文件系统的了解。不像LILO那样使用磁盘上的原始扇区,GRUB可以从ext2或ext3文件系统中加载Linux内核。它通过将两阶段引导加载程序转换为三阶段引导加载程序来实现这一点。第一阶段(MBR)引导一个理解特定文件系统的阶段1.5引导加载程序。例如,reiserfs_stage1_5(用于从Reiser日志文件系统加载)或e2fs_stage1_5(用于从ext2或ext3文件系统加载)。当阶段1.5引导加载程序加载并运行时,就可以加载阶段2引导加载程序。

  • 加载阶段2后,GRUB可以根据请求显示可用内核的列表(在/etc/grub.conf中定义,通过/etc/grub/menu.lst和/etc/grub.conf的软链接)。您可以选择一个内核甚至添加额外的内核参数。可选地,您可以使用命令行外壳获得对引导过程的更大手动控制。

  • 将第二阶段引导加载程序加载到内存后,将咨询文件系统,并加载默认的内核映像和初始RAM磁盘映像到内存中。准备好这些映像后,第二阶段引导加载程序调用内核映像。

内核

  • 当内核映像加载到内存并且从第二阶段引导加载程序得到控制后,内核阶段就开始了。内核映像并不是一个直接可执行的内核,而是一个压缩的内核映像。通常这是一个zImage(压缩映像,小于512KB)或bzImage(大压缩映像,大于512KB),以前用zlib压缩过的。在内核映像的头部有一个例行程序,它会做一些最小的硬件设置,然后解压缩内核映像中包含的内核,并将其放置在高内存中。如果存在初始RAM磁盘映像,此过程会将其移动到内存中并为其做标记以便稍后使用。然后调用内核,内核引导就开始了。

Init

  • 在内核启动和初始化后,内核启动第一个用户空间应用程序。这是第一个编译了标准C库的程序。在这一过程之前,没有标准C应用程序被执行。

  • 在桌面Linux系统中,第一个启动的应用程序通常是/sbin/init。但这不是必需的。很少有嵌入式系统需要init提供的广泛初始化(通过/etc/inittab配置)。在许多情况下,您可以调用一个简单的shell脚本来启动必要的嵌入式应用程序。

资源:

进程和进程管理

概念

  • 当一个程序加载到内存中并成为一个进程时,它可以分为四个部分:堆栈、堆、文本和数据。

  • 根目录和chroot

    • 在类似Unix的操作系统中,根目录(/)是顶级目录。根文件系统位于根目录所在的同一磁盘分区上。所有其他文件系统都挂载在这个根文件系统之上。所有的文件系统条目都从这个根开始分支出来。这就是系统的实际根。

    • 但每个进程都有自己的根目录概念。默认情况下,它是实际的系统根,但我们可以通过使用chroot()系统调用来改变这一点。我们可以有一个不同的根,这样我们就可以创建一个单独的环境来运行,使运行和调试进程变得更加容易。或者,这也可能是为了使用旧版依赖和库。

    • chroot更改当前运行进程及其子进程的根目录视图。

    • 可能看起来通过使用chroot()分离进程可以确保安全性,限制进程不能访问其环境之外的内容。但实际上,这并不完全正确。chroot()只是修改进程及其子进程的路径名查找,为任何以斜杠开头的名字添加新的根路径。当前目录不会被修改,相对路径可以引用新根之外的任何位置。

    • 因此,chroot()不提供一个安全的沙箱来测试软件。

  • cgroups - 隔离和管理资源

    • 控制组(cgroups)是Linux内核的一个特性,它限制、隔离和测量一组进程的资源使用情况。可以设置内存、CPU、网络和IO的资源配额。这些功能在Linux 2.6.24版本中成为内核的一部分。

    • 虽然Linux在处理和共享进程之间可用的资源方面非常出色,但有时我们希望更好地控制资源。我们希望通过cgroups为一组进程分配或保证一定数量的资源。这将隔离应用程序/组的资源。

    • 假设我们有一个应用程序,我们想隔离其资源使用情况。我们称其为A1。我们将其余系统称为S。我们将创建一个控制组,并在其中设置资源限制:比如3GB的内存限制和70%的CPU。然后我们可以将必要的应用程序的进程ID添加到该组中,应用程序资源使用现在受到限制。虽然应用程序在正常情况下可能会超过这些限制,但在系统面临资源竞争时,它会被限制回预设的限制。当我们处理在同一台机器上运行的多个虚拟机时,这更有意义——为虚拟机创建一个cgroup,并在资源竞争发生时将它们分别限制到设定的限制。

      • 定义问题的解决方案
      • 创建一个cgroup来处理分配
      • 将应用程序添加到该组。
      • 监控该组(这作为cgroups的一部分发生,我们不需要显式处理)
  • Linux命名空间

    • Linux进程形成一个单一的层次结构,所有进程都以init为根。通常,树中的特权进程可以跟踪或终止其他进程。Linux命名空间使我们能够拥有许多进程层次结构,每个层次结构有自己的“子树”,这样在一个子树中的进程就不能访问或甚至知道另一个子树中的进程。

    • 命名空间将全局资源封装起来,使得在该命名空间中的进程看起来像是拥有自己独立实例的所述资源。让我们以PID命名空间为例。没有命名空间的情况下,所有进程都是从PID 1(init)开始的。如果我们创建一个PID命名空间并在其中运行一个进程,那么该进程将成为该命名空间中的PID 1。在这种情况下,我们封装了一个全局系统资源(进程ID)。创建命名空间的进程仍然保留在父命名空间中,但它使它的子进程成为新的进程树的根。

    • 但这仅仅意味着新命名空间中的进程不能看到父进程,而父进程命名空间可以看到子命名空间。并且新命名空间中的进程现在有两个PID:一个用于新命名空间,一个用于全局命名空间。

  • 命名空间类型

  • Linux提供了以下命名空间:

    • cgroup:隔离cgroup根目录(CLONE_NEWCGROUP)

    • IPC:隔离System V IPC、POSIX消息队列(CLONE_NEWIPC)

    • 网络:隔离网络设备、端口等(CLONE_NEWNET)

    • 挂载:隔离挂载点(CLONE_NEWNS)

    • PID:隔离进程ID(CLONE_NEWPID)

    • 用户:隔离用户和组ID(CLONE_NEWUSER)

    • UTS:隔离主机名和NIS域名(CLONE_NEWUTS)

资源:

Linux信号

概念

  • 在Linux中,每个信号都有一个以SIG开头的名称。例如:

    • 当用户按下Ctrl+C时生成的SIGINT信号。这是从终端终止程序的方式。
    • 当由alarm函数设置的计时器到期时生成的SIGALRM。
    • 当进程调用abort函数时生成的SIGABRT信号。
      等等。
  • 当信号发生时,进程必须告诉内核如何处理它。信号可以通过三种方式处理:

    • 可以忽略信号。这意味着当信号发生时不做任何事情。大多数信号都可以被忽略,但由硬件异常(如除以零)生成的信号如果被忽略可能会导致奇怪的后果。此外,一些信号如SIGKILL和SIGSTOP不能被忽略。

    • 可以捕获信号。当选择此选项时,进程会向内核注册一个函数。当该信号发生时,内核会调用这个函数。如果信号对于进程来说是非致命的,则在此函数中,进程可以适当地处理信号,否则可以选择优雅地终止。

    • 让默认行为应用。每个信号都有一个默认行为。这可能是进程终止、忽略等。

  • 正如我们已经指出的,两个信号SIGKILL和SIGSTOP不能被忽略。这是因为这两个信号提供了一种方法,让root用户或内核可以在任何情况下杀死或停止任何进程。这些信号的默认行为是终止进程。既不能捕获也不能忽略这些信号。

  • 程序启动时会发生什么?

    • 这一切都取决于调用exec的进程。当进程启动时,所有信号的状态要么是忽略,要么是默认。除非调用exec的进程忽略信号,否则后者更有可能发生。
  • exec函数的特性之一是将任何信号的动作设置为默认动作。换句话说,如果父进程有一个在信号发生时调用的信号捕捉函数,那么当那个父进程exec一个新子进程时,这个函数在新进程中就没有意义了,因此新进程的相同信号的动作被设置为默认。

  • 另外,因为我们通常有在后台运行的进程,所以shell只是将退出信号的处理设置为忽略,因为我们不想让后台进程因用户按下Ctrl+C键而被终止,因为这违背了让进程在后台运行的目的。

资源:

线程和并发

概念

  • 定义:线程也称为轻量级进程,是基本的CPU利用率;它包括线程ID、程序计数器、寄存器集和堆栈。线程是进程内的一个实体,可以被调度执行。

  • 多线程的好处

    • 并行化:在多处理器架构中,不同的线程可以在同一时间执行不同的指令,从而实现并行化,加快进程的执行速度。

    • 专业化:通过将不同任务分配给不同的线程,我们可以管理线程,例如,我们可以给予更重要的任务更高的优先级。此外,在多处理器架构中,专业化会导致更热的缓存,从而提高性能。

    • 效率更高:与多进程程序相比,多线程程序

翻译后的文件内容

Linux 调度

内存管理

概念

  • 进程地址空间是进程在代码中引用的一组逻辑地址。例如,当使用 32 位寻址时,地址范围可以从 0 到 0x7fffffff;即,2³¹ 个可能的数字,总理论大小为 2 GB。

  • 操作系统在程序分配内存时负责将逻辑地址映射到物理地址。在内存分配之前和之后,程序中使用了三种类型的地址:

    • 符号地址:源代码中使用的地址。变量名、常量和指令标签是符号地址空间的基本元素。

    • 相对地址:编译时,编译器将符号地址转换为相对地址。

    • 物理地址:加载器在程序加载到主存储器时生成这些地址。

  • 在编译时和加载时的地址绑定方案中,虚拟地址和物理地址是相同的。在执行时的地址绑定方案中,虚拟地址和物理地址不同。

  • 程序生成的所有逻辑地址集合称为逻辑地址空间。这些逻辑地址对应的物理地址集合称为物理地址空间。

资源

进程间通信

概念

  • IPC 是“进程间通信”的缩写。它表示一组系统调用,允许用户模式进程:

    • 通过信号量与其它进程同步。
    • 向其他进程发送消息或从它们接收消息。
    • 与其他进程共享内存区域。
  • 问题:进程间通信意味着什么?

    • 在 UNIX 系统(包括 Linux)中,用户模式进程同步自身并交换数据的机制称为“进程间通信 (IPC)”。
  • 问题:术语如:信号量、共享内存和消息队列如何与 IPC 相关?

    • 信号量、共享内存和消息队列与 IPC 有非常特殊的关系,因为信号量、共享内存和消息队列是“进程间通信资源”或“进程间通信设施”,它们代表 IPC 的方式与管道和 FIFO 不同。“进程间通信机制”。信号量、共享内存和消息队列是 System V(AT&T System V.2 版本的 UNIX)IPC 设施,它们是为利用 IPC 机制的能量和美丽而开发和插入适当库中的包装函数。
  • 通过存储在受锁保护的临时文件中来实现在进程间的数据共享。但这种机制从未实现,因为它证明代价高昂,因为它需要访问磁盘文件系统。出于这个原因,所有 UNIX 内核都包含一组系统调用,支持进程通信而不与文件系统交互。

  • 应用程序程序员有许多需求,需要不同的通信机制。一些基本的机制,特别是 GNU/Linux 提供的机制包括:

    • 管道和 FIFO:主要用于实现进程间的生产者/消费者交互。一些进程会向管道填充数据,而另一些则从中提取数据。

    • 信号量:这里我们指的是(不是应用于 Linux 内核线程的 POSIX 实时扩展信号量),而是适用于用户模式进程的 System V 信号量。用于锁定关键代码段。

    • 消息队列:设置一个消息队列是一种异步方式,在两个进程之间交换短块(称为消息)。

    • 共享内存:一种机制(具体是一种资源),当进程需要以高效的方式共享大量数据时使用。

  • 进程是一个正在执行的程序,并且每个进程都有自己的地址空间,该地址空间包括进程被允许访问的内存位置。进程有一个或多个执行线程,这些是可执行指令的序列:单线程进程只有一个线程,而多线程进程有多于一个线程。进程内的线程共享各种资源,特别是地址空间。因此,进程内的线程可以通过共享内存进行简单通信,尽管一些现代语言(例如 Go)鼓励更严格的策略,如使用线程安全通道。值得注意的是,默认情况下,不同的进程不共享内存。

  • 有多种方法可以启动进程然后进行通信,下面的例子中主要使用两种:

    • 使用终端启动一个进程,或许用另一个终端启动另一个进程。

    • 在一个进程(父进程)内调用系统函数 fork 来生成另一个进程(子进程)。

  • Linux 系统提供了两种独立的共享内存 API:传统的 System V API 和较新的 POSIX API。然而,这些 API 绝不应在一个应用程序中混合使用。POSIX 方法的一个缺点是功能仍在开发中并且依赖于已安装的内核版本,这影响了代码的可移植性。例如,默认情况下,POSIX API 将共享内存实现为内存映射文件:对于共享内存段,系统维护一个具有相应内容的后备文件。POSIX 下的共享内存可以在没有后备文件的情况下配置,但这可能会影响可移植性。我的示例使用了带有后备文件的 POSIX API,结合了内存访问(速度)和文件存储(持久性)的优点。

  • 共享内存示例有两个程序,分别命名为 memwriter 和 memreader,并使用信号量来协调它们对共享内存的访问。无论是在多处理还是多线程中,只要有写入者参与,共享内存就会出现基于内存的竞争条件风险;因此,使用信号量来协调(同步)对共享内存的访问。

资源

I/O 管理

概念

  • I/O 设备的管理是操作系统的重要部分——如此重要和多样,以至于整个 I/O 子系统专门用于其操作。(考虑现代计算机上的设备范围,从鼠标、键盘、磁盘驱动器、显示适配器、USB 设备、网络连接、音频 I/O、打印机、专为残疾人设计的特殊设备以及许多专用外围设备。)

  • 设备控制器

    • 设备驱动程序是可以插入操作系统以处理特定设备的软件模块。操作系统依靠设备驱动程序来处理所有 I/O 设备。

    • 设备控制器像设备和设备驱动程序之间的接口一样工作。I/O 单元(键盘、鼠标、打印机等)通常由机械组件和电子组件组成,其中电子组件称为设备控制器。

    • 每个设备都有一个设备控制器和一个设备驱动程序来与操作系统通信。设备控制器可能能够处理多个设备。作为接口,它的主要任务是将串行比特流转换为字节块,并根据需要执行错误校正。

    • 连接到计算机的任何设备都是通过插头和插座连接的,插座连接到设备控制器。以下是 CPU、内存、控制器和 I/O 设备的连接模型,CPU 和设备控制器都使用公共总线进行通信。

  • 同步与异步 I/O

    • 同步 I/O:在这种方案中,CPU 执行等待 I/O 完成。

    • 异步 I/O:I/O 与 CPU 执行并发进行。

  • 与 I/O 设备的通信

  • CPU 必须有一种方法来传递信息给和从 I/O 设备。有三种方法可用于与 CPU 和设备通信:

    • 特殊指令 I/O
    • 内存映射 I/O
    • 直接内存访问(DMA)

资源

虚拟化

概念

  • 虚拟化是运行在抽象层上的计算机系统的虚拟实例的过程。最常见的用途是指在同一台计算机上同时运行多个操作系统。对于在虚拟化机器顶部运行的应用程序来说,它可以看起来像是在一个自己专用的机器上运行,操作系统、库和其他程序是虚拟化系统的独特部分,与位于其下的主机操作系统无关。

  • 人们在计算中使用虚拟化的原因有很多。对于桌面用户,最常见的用途是能够在一台计算机上运行原本针对不同操作系统的应用程序,而无需更换计算机或重新启动到不同的系统。对于服务器管理员,虚拟化也提供了运行不同操作系统的可能性,但更重要的是,它提供了一种方法来分割大型系统,使服务器能够更有效地服务于多个具有不同需求的用户或应用程序。它还允许隔离,确保虚拟机内部运行的程序与同一主机上的其他虚拟机中发生的进程相隔离。

虚拟化

  • 虚拟化是如何工作的?

    • 称为 hypervisor 的软件将物理资源与虚拟环境分离——那些需要这些资源的东西。hypervisor 可以坐在操作系统之上(例如在笔记本电脑上),也可以直接安装在硬件上(例如在服务器上),这是大多数企业虚拟化的做法。hypervisor 将您的物理资源分割开来,以便虚拟环境可以使用它们。
    • 资源根据需要从物理环境分配到多个虚拟环境。用户与虚拟环境互动并在其中运行计算(通常称为客户机机器或虚拟机)。虚拟机作为一个单一的数据文件工作。就像任何数字文件一样,它可以被移动到另一台计算机上,在任何一台计算机上打开,并期望它正常工作。
    • 当虚拟环境正在运行时,如果用户或程序发出需要从物理环境中获取更多资源的指令,hypervisor 将请求转发到物理系统并缓存更改——所有这些都以接近原生速度发生(特别是在通过基于 KVM 的开源 hypervisor 发送请求时,KVM 是 Linux 内核的一部分,可以直接运行虚拟机)。
  • 什么是 hypervisor?

    • hypervisor 是创建和运行虚拟机的程序。hypervisor 传统上分为两类:一类是“裸金属”hypervisor,直接在系统的硬件上运行虚拟机,基本上充当操作系统。二类是“托管”hypervisor,表现得更像传统应用程序,可以像普通程序一样启动和停止。在现代系统中,这种区分较少,尤其是像 KVM 这样的系统。KVM 是 Linux 内核的一部分,可以直接运行虚拟机,尽管您仍然可以将运行 KVM 虚拟机的系统用作普通计算机本身。
  • 虚拟化类型:

    • 数据虚拟化:数据虚拟化工具位于多个数据源之前,并允许它们被视为单一来源,在正确的时间以所需的形式为任何应用程序或用户提供所需的数据。
    • 桌面虚拟化:桌面虚拟化允许中央管理员(或自动化管理工具)一次向数百台物理机器部署模拟桌面环境。
    • 服务器虚拟化:服务器是设计用来高效处理高量特定任务的计算机,因此其他计算机(如笔记本电脑和台式机)可以执行各种其他任务。虚拟化服务器可以让其执行更多的特定功能,并涉及将其分区,以便组件可以用于多个功能。
    • 操作系统虚拟化:操作系统虚拟化发生在内核级别——操作系统的核心任务管理器。这是一种在 Linux 和 Windows 环境之间并行运行的好方法。
    • 网络功能虚拟化:虚拟化网络减少了创建多个独立网络所需的物理组件数量,如交换机、路由器、服务器、电缆和集线器,尤其是在电信行业特别受欢迎。
  • 分布式文件系统要求:跨节点(进程、CPU、计算机、网络)共享文件需要或受益于某些系统属性。

  • 一些作为分布式文件系统要求或可能作为实用指标的属性包括:

    • 命名

    • 透明性(与命名紧密合作)

    • 并发性(包括同步)

    • 复制(缓存,带有一致性检查)

    • 平台独立性(异构性)

    • 故障恢复

    • 一致性

    • 安全性

资源

分布式文件系统

概念

  • 分布式文件系统是一种驻留在不同机器上的文件系统,但它提供了对远程磁盘上存储的数据的统一视图。

  • 分布式文件系统(DFS)——一种经典的分时模型的分布式实现,其中多个用户共享文件和存储资源。!DFS 管理分散的存储设备!总体存储空间由 DFS 管理,由不同的、远程位置的较小存储空间组成。!通常,构成存储空间的各个部分与文件集相对应。

    • DFS 管理分散的存储设备

    • 总体存储空间由异构的、远程位置的较小存储空间组成。

    • 通常,构成存储空间的各个部分与文件集相对应。

  • 分布式文件系统结构:

    • 服务–运行在一个或多个机器上的软件实体,提供某种类型的特定功能给预先未知的客户端。

    • 服务器–在单个机器上运行的服务软件。

    • 客户端–可以使用形成其客户端界面的操作集调用服务的过程。

    • 文件服务的客户端界面由一组基本的文件操作(创建、删除、读取、写入)组成。

    • 分布式文件系统的客户端界面应该是透明的,即区分不出本地文件和远程文件。

  • 分布式文件系统是一种客户端/服务器应用程序,允许客户端访问和处理存储在服务器上的数据,就好像这些数据在其自己的计算机上一样。当用户访问服务器上的文件时,服务器将文件的一份副本发送给用户,该副本在用户的计算机上被缓存,而在数据处理过程中返回到服务器。

资源

云计算

概念

  • 计算本身,要被认为是完全虚拟化的,必须允许计算机从分布式组件构建,如处理、存储、数据和软件资源。

  • 简而言之,云计算意味着通过互联网而不是计算机硬盘驱动器来存储和访问数据和程序。云只是互联网的一个隐喻。

  • 云计算不是关于你的硬盘驱动器。当你将数据存储在硬盘上或从硬盘运行程序时,这被称为本地存储和计算。你所需要的一切都在你身边,这意味着访问你的数据快速而容易,对一台计算机或局域网上的其他计算机也是如此。在硬盘上工作是计算机行业几十年来的工作方式;有些人认为它仍然比云计算更优越,我将在稍后解释原因。

  • 云计算是一种模型,用于启用普遍存在的、方便的、按需的网络访问,到共享池的可配置计算资源(如网络、服务器、存储、应用和服务)的共享池,这些资源可以迅速供应并释放,最小化管理努力或服务提供商的交互。

  • 云计算是一种模型,用于启用普遍存在的、方便的、按需的网络访问,到共享池的可配置计算资源(如网络、服务器、存储、应用和服务)的共享池,这些资源可以迅速供应并释放,最小化管理努力或服务提供商的交互。

  • 云计算有五个关键特征:

    • 需求自助服务:用户可以无需服务提供商交互即可通过云访问计算服务。计算服务应完全按需提供,以便用户具有控制力和灵活性,以满足其不断变化的需求。

    • 广泛的网络访问:云计算服务可通过用户首选工具(例如笔记本电脑、台式机、智能手机等)通过网络广泛访问。

    • 资源

  • 什么是云计算? - Salesforce

  • 什么是云计算? - Azure

参考资料:

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: Tikam02
来源:Tikam02
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: Tikam02 转发
评论区 (0)
U