Linux存储管理基础

Posted 南岸青栀*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux存储管理基础相关的知识,希望对你有一定的参考价值。

Linux基础知识

自由软件、开源软件、免费软件

  • 自由软件:自由软件基金会提出通用公共许可证(GPL)。通过GPL允许用户自由下载、分发、修改和再分发源代码公开的自由软件,并可向使用者收取一定的服务费用,但不允许任何人将源代码与服务做任何形式的捆绑式销售。
  • 开源软件:在发行时提供源代码,并授权允许用户更改和发布,但与自由软件不同的是:开源软件允许源代码修改后可以作为闭源的商业软件发布和销售,而自由软件要求即使经过用户修改,源代码任然始终保持开源
  • 免费软件:不一定是自由软件或开源软件。不一定提供源代码,免费软件通常会有其他限制,例:增值服务。

Linux的内核版本

Linux的内核版本3个数字组成X.Y.Z

X:主版本号,通常在一端时间内比较稳定

Y:次版本号,偶数表示此内核版本的正式版本,可以公开发行,奇数表示此内核版本是测试版本,还不稳定

Z:表示修改次数。数值越大,版本相对完善。

Linux系统结构

内核(Kernel)

内核是整个操作系统的核心,管理着整个计算机系统的软硬件资源。内核控制整个计算机的运行,提供相应的硬件启动程序和网络接口程序,并管理所有应用程序的执行。内核所提供的的都是操作系统最基本的功能,如果内核发生错误,整个计算机系统就可能崩溃。

Linux内核的源代码主要采用C语言编写,只有与驱动程序相关的部分用汇编语言Assembly编写。Linux内核采用模块化结构,主要模块包括:

存储管理

CPU

进程管理

文件系统管理

设备管理

驱动

网络通信

系统的引导

系统调用

Shell

Shell用来解释程序充当用户和内核之间的桥梁

用户启动Linux并成功登陆后,系统就会自动启动shell。

Shell不仅是交互式命令解释程序,还是一种程序设计语言。在shell程序中,可以定义和使用变量,进行参数传递、流程控制和函数调用。(解释性脚本语言)

X window

X window是UNIX和Linux等的图形化用户界面标准。X window图形化用户界面在运行程序时如果出现故障,一般可以正常退出,不会影响其他字符界面下运行的程序。

Linux基本管理

CPU管理

Linux对CPU的管理主要体现在对CPU运行时间的合理分配管理(进程管理)

Linux是多用户多任务的操作系统,采用分时方式管理CPU的运行时间。Linux将CPU的运行时间划分为若干个很短的时间片,CPU依次轮流处理等待完成的任务。如果在分配的一个时间片内不能执行完成,就必须暂时中断,等待下一轮CPU对其进行处理。从用户的角度来看,CPU在同时为多个用户服务,同时处理多项任务。

CPU的管理还涉及CPU的运行时间在各用户或各任务之间的分配和调度,可以设定程序执行的顺序和优先级,并可在规定的时间和条件下执行指定的任务。Linux对CPU的管理具体体现:进程和作业的调度和管理。

存储管理

操作系统的存储管理主要是针对内存的管理。

Linux在内存管理方面采用虚拟存储技术,利用硬盘的空间来扩充内存空间,从而为程序的执行提供足够的空间。根据程序的局部性原理,任何一个程序执行时,只有那些确实被用到的程序段和数据才会被系统读取到内存中。当一个程序刚被加载执行时,Linux只为其分配虚拟内存空间,而只有运行到那些必须被用到的程序段和数据时才会为其分配物理内存空间。

Linux遵循页式存储管理机制虚拟内存和物理内存均以页为单位,页的大小固定不变。当需要把虚拟内存中的程序段和数据调入或调出物理内存时,均以页为单位进行。

虚拟内存中某一页与物理内存中的某一页的对照关系保存在页表中。

当物理内存已经全部被占据时:系统又需要将虚拟内存中的部分程序段或数据调入物理内存时,Linux采用LRU算法(Least Recently Used Algorithm,最近最少使用算法),淘汰最近没有访问的物理页。

被淘汰的物理页两种处理方法:

  • 如果此页内容被调入物理内存后内有改动,则直接丢弃。如果之后需要,还可以从虚拟内存复制。
  • 如果此页内容被调入物理内存后修改过,那么系统会将这一页的内存保存到磁盘的交换分区(swap)。如果之后需要,则从交换分区恢复到物理内存。

文件管理

文件管理:对外存上的数据实施统一管理。操作系统对文件的管理依靠文件系统实现。

Linux采用虚拟文件系统技术,所以可以支持多种文件系统。

在这里插入图片描述

虚拟文件系统将各种不同的文件系统的信息进行转化,形成统一格式后交给Linux处理,并将处理结果还原为原来的文件系统格式。对于Linux而言,它所处理的是统一的虚拟文件系统,而不需要知道文件所采用的真实文件系统。

Linux将文件系统通过挂载操作放置于某个目录,从而让不同的文件系统结合成为一个整体。

设备管理

Linux对计算机所有的外围设备进行统一的分配和控制,对设备驱动、设备分配、共享等操作进行统一管理。

外围设备分为三大类:

  • 1.字符设备:字符设备是以字符为单位进行输入/输出的设备。CPU能直接对字符设备进行读写,不需要经过缓冲区。
  • 2.块设备:块设备是以数据块为单位进行输入/输出的设备。CPU不能对块设备直接进行读写,必须经过缓冲区,以数据块为单位进行数据交换。
  • 3.网络设备:网络设备以数据包为单位进行数据交换的设备。网络数据传输时必须按照一定的网络协议对数据进行处理,数据压缩后,再进行数据包头和数据包尾形成一个较为安全的传输数据包后才能进行网络传播。

无论哪种类型的设备,Linux都把他统一当做文件来处理。只要安装了驱动程序,任何用户都可以像使用文件一样来使用这些设备,不必知道具体存在形式

在这里插入图片描述

Linux多重引导

Linux与其他操作系统相互独立,而开机时有引导装载程序负责实现多重引导。Linux一般以GRUB软件为引导装载程序实现多重引导。GRUB 提供用户交互式的图形操作平台,允许用户定制个性化操作环境。

  • 1.配置文件的名称改变了。在grub中,配置文件为grub.conf或menu.lst(grub.conf的一个软链接),在grub2中改名为grub.cfg。
  • 2.grub2增添了许多语法,更接近于脚本语言了,例如支持变量、条件判断、循环。
  • 3.grub2中,设备分区名称从1开始,而在grub中是从0开始的。
  • 4.grub2使用img文件,不再使用grub中的stage1、stage1.5和stage2。
  • 5.支持图形界面配置grub,但要安装grub-customizer包,epel源提供该包。
  • 6.在已进入操作系统环境下,不再提供grub命令,也就是不能进入grub交互式界面,只有在开机时才能进入,算是一大缺憾。
  • 7.在grub2中没有了好用的find命令,算是另一大缺憾。

grub2支持两种方式引导操作系统

  • 直接引导:(direct-load)直接通过默认的grub2 boot loader来引导写在默认配置文件中的操作系统
  • 链式引导:(chain-load)使用默认grub2 boot loader链式引导另一个boot loader,该boot loader将引导对应的操作系统

一般只使用第一种方式,只有想引导grub默认不支持的操作系统时才会使用第二种方式。

磁盘分区

硬盘的分区有两种类型:主分区和扩展分区。一个硬盘上最多只能有4个主分区,其中一个主分区可以用一个扩展分区来代替。逻辑分区从5开始。

主分区可以有14个,扩展分区可以有01个,扩展分区中可以划分出若干个逻辑分区

一般Linux划分为4个分区

  • 交换分区:为物理内存的1~2倍,采用swap文件系统
  • /boot分区:用于存放启动过程中使用的文件,采用ext4文件系统。
  • /var分区:保存管理性和记录性数据以及临时文件等,采用ext4文件系统
  • /分区:保存其他的所有数据,采用ext4文件系统

Linux操作系统启动流程

在这里插入图片描述

1.加载Bios

计算机电源加电质检,首先加载基本输入输出系统(Basic Input Output System,BIOS),BIOS中包含硬件CPU、内存、硬盘等相关信息,包含设备启动顺序信息、硬盘信息、内存信息、时钟信息、即插即用(Plug-and-Play,PNP)特性等。加载完BIOS信息,计算机将根据顺序进行启动。

2.读取MBR

读取BIOS信息,计算机将会查询BIOS所指定的硬盘MBR引导扇区,将其内容复制到0x7c00地址所在的物理内存中。被复制的物理内存的内容是Boot Loader,然后进行引导。

3.GRUB引导

GRUB启动引导器是计算机启动过程中运行的第一个软件程序,当计算机读取内存中的GRUB配置信息后,会根据其配置信息来启动硬盘中不同的操作系统。

4.加载Kernel

计算机读取内存映像,并进行解压缩操作,屏幕一般会输出“Uncompressing Linux”的提示,当解压缩内核完成后,屏幕输出“OK, booting the kernel”。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。

5.设定Inittab运行等级

内核加载完毕,会启动Linux操作系统第一个守护进程init,然后通过该进程读取/etc/inittab文件,/etc/inittab文件的作用是设定Linux的运行等级,Linux常见运行级别如下:

  • 0:关机模式
  • 1:单用户模式
  • 2:无网络支持的多用户模式
  • 3:字符界面多用户模式
  • 4:保留,未使用模式
  • 5:图像界面多用户模式
  • 6:重新引导系统,重启模式

6.加载rc.sysinit

读取完运行级别,Linux系统执行的第一个用户层文件/etc/rc.d/rc.sysinit,该文件功能包括:设定PATH运行变量、设定网络配置、启动swap分区、设定/proc、系统函数、配置Selinux等。

7.加载内核模块

读取/etc/modules.conf文件及/etc/modules.d目录下的文件来加载系统内核模块。该模块文件,可以后期添加或者修改及删除。

8.启动运行级别程序

根据之前读取的运行级别,操作系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。其中以S开头表示系统即将启动的程序,如果以K开头,则代表停止该服务。S和K后紧跟的数字为启动顺序编号。
在这里插入图片描述

9.读取rc.local文件

操作系统启动完相应服务之后,会读取执行/etc/rc.d/rc.local文件,可以将需要开机启动的任务加入到该文件末尾,系统会逐行去执行并启动相应命令。
在这里插入图片描述

10.执行/bin/login程序

执行/bin/login程序,启动到系统登录界面,操作系统等待用户输入用户名和密码,即可登录到Shell终端,如图3-7所示,输入用户名、密码即可登录Linux操作系统,至此Linux操作系统完整流程启动完毕。

Linux安全删除

  • 1.删除GRUB引导装载程序
    • 利用windows安装光盘可删除GRUB引导装载程序
  • 2.重建Linux使用的分区
    • windows的磁盘管理工具或专用磁盘分区软件可删除重建Linux所用分区,并将空闲空间转换为windows可使用的分区。

以上是关于Linux存储管理基础的主要内容,如果未能解决你的问题,请参考以下文章

linux 基础 管理系统存储

Linux存储管理及硬盘分区格式化挂载

Linux系统基础入门知识磁盘存储管理-基本分区

Linux系统 存储

存储管理之硬件基础机械磁盘原理以及设备规范MBR格式的分区管理

Linux存储管理