主机规划与磁盘分区

各种硬件设备在Linux中的文件名

常见目录

目录 含义
/bin Binary的缩写,用来存二进制可执行文件,并且比较特殊的是/bin存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd等常用指令
/sbin Super User的意思,存放一些只有root用户才有权限执行的可执行文件,如init,ip,mount等命令
/boot 主要存放开机时用到的引导文件,如linux内核文件和开机菜单与开机所有需要的配置文件
/dev device,任何设备都以文件的形式存放在这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备
/etc 包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭shell脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有root管理员有权利修改
/home 系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为名称的目录作为该用户的家目录。
/lib library,存放着系统开机时所需的函数库以及/bin和/sbin目录下的命令会调用的函数库
/lib64 存放相对于/lib中支持64位格式的函数库
/media 存放可移除的媒体设备、如光盘,DVD等
/mnt mount,临时挂载的设备文件,临时安装目录,系统管理员可以挂载文件系统。系统管理员临时安装文件的系统安装点。
/opt optional,可选的软件包,即第三方文件软件。我们可以将除了系统自带软件之外的其他软件安装到这个目录。
/proc 特殊的动态目录,用以维护系统的信息和状态,包括当前运行中进程(processes)信息。包含系统进程的相关信息,是一个虚拟的文件系统,包含有关正在运行的进程的信息,系统资源以文本信息形式存在。
/root 系统管理员root的主目录
/run 最近一次开机后所产生的各项信息,如当前的用户和正在运行中的守护进程等。
/srv service,存放一些服务启动后所需的数据
/sys system,与/proc类似也是虚拟文件系统,存放系统核心与硬件相关信息管理设备文件。不占用硬件容量。
/tmp temporary, 存放系统运行过程中使用的一些临时文件,可以被所有就用户访问,系统重启时会清空该目录。
/usr 包含绝大部分所有用户(users)都能访问的应用程序和文件包含二进制文件,库文件。文档和二级程序的源代码。
/var 经常变化的(variable)文件,诸如日志或数据库等代表变量文件。在这个目录下可以找到内容可能增长的文件

常见设备与其在Linux下的文件名

设备 设备在Linux中的文件名
SCSI、SATA、USB磁盘驱动器 /dev/sd[a-p]
USB盘 /dev/sd[a-p] (与SATA相同)
Virtio接口 /dev/vd[a-p] (用于虚拟机内)
软盘驱动器 /dev/fd[0-7]
打印机 /dev/lp[0-2] (25针打印机) /dev/usb/lp[0-15] (USB接口)
鼠标 /dev/input/mouse[0-15] (通用) /dev/psaux (PS/2接口) /dev/mouse (當前鼠标)
CDROM、DVDROM /dev/scd[0-1] (通用) /dev/sr[0-1] (通用,CentOS较常见) /dev/cdrom (當当前CDROM)
磁带机 /dev/ht0 (IDE 接口) /dev/st0 (SATA/SCSI接口) /dev/tape (当前磁带)
IDE磁盘驱动器 /dev/hd[a-d] (旧式系统才有)

磁盘连接方式与设备文件名的关系

正常的物理机器大概使用的都是/dev/sd[a-p]的磁盘文件名,至于虚拟环境中,为了加速,可能就会使用/dev/vd[a-p]的文件名

假设主机位虚拟机,里面仅有一块virtio接口的磁盘,请问它在Linux操作系统里面的设备名是什么?

虚拟机使用virtio接口,磁盘文件名应该是/dev/vda

SATA、USB、SAS等磁盘接口都是使用SCSI模块驱动,因此这些接口的磁盘设备名都是/dev/sd[a-p]的格式,SATA或USB接口的磁盘没有一定的顺序,这时候就需要根据Linux内核检测到的磁盘顺序来命名

如果你的PC上有两个SATA磁盘以及一个USB磁盘,而主板上有六个SATA的插槽。这两个SATA磁盘分别安插在主板上的SATA1、SATA5插槽上,请问这三个磁盘在Linux中的设备文件名是什么?

由于是使用检测到的顺序来决定设备文件名,并非与实际插槽顺序有关

  • SATA1插槽上的文件名:/dev/sda
  • SATA5插槽上的文件名:/dev/sdb
  • USB磁盘(系统启动完成后才被系统识别):/dev/sdc

MBR(MS-DOS)与GPT磁盘分区表(partition table)

MBR分区表

早期Linux为兼容Windows磁盘,使用MBR(Master Boot Record,主引导记录)方式处理启动引导程序和分区表,他们通常放在磁盘的第一个扇区

  1. 主引导记录:用于安装启动引导程序的地方
  2. 分区表:记录整块磁盘分区的状态,由于分区表所在区块仅64B,最多仅能有四组记录区,每组记录区记录了该区段的起始与结束的柱面号

假设下面的磁盘设备名为/dev/sda,那么四个分区在Linux中设备名如下

  • P1: /dev/sda1
  • P2: /dev/sda2
  • P3: /dev/sda3
  • P4: /dev/sda4

由于分区表只有64字节,最多只能容纳四组分区记录,这四个分区的记录被称为主要或扩展分区

  • 磁盘默认的分区表仅能写入四组分区信息
  • 分区的最小单位通常是柱面
  • 当系统要写入磁盘,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身不能拿来格式化,但我们可以通过扩展分区所指向的那个区块继续做分区的记录

如下图,右下方那个区块划分出来的五个分区,被称为逻辑分区

上述分区在Linux中设备名称:

  • P1: /dev/sda1
  • P2: /dev/sda2
  • L1: /dev/sda5
  • L2: /dev/sda6
  • L3: /dev/sda7
  • L4: /dev/sda8
  • L5: /dev/sda9

前四个号码留给主要分区或者扩展分区使用,因此逻辑分区的设备号从5号开始

总结

  1. 主要分区与扩展分区最多有4个(硬盘的限制
  2. 扩展分区最多只能有1个(操作系统的限制

  3. 逻辑分区是由扩展分区持续划分出来的分区

  4. 能够被格式化后作为数据存取的分区是主要分区和逻辑分区,扩展分区无法格式化
  5. 逻辑分区的数量因操作系统而不同

注意

  • 操作系统无法使用2.2TB以上的磁盘容量
  • MBR仅有一个区块,若被破坏后,经常无法或很难恢复
  • MBR内的存放启动引导程序的区块仅446字节,无法存储较多的程序代码

GPT分区表

GPT将磁盘所有的区块以逻辑区块地址(LBA)处理,从0开始编号。GPT使用34个LBA区块记录分区信息,除了前面34个LBA,整个磁盘最后34个LBA被拿来作为备份。GPT分区没有所谓的主、扩展、逻辑分区概念,每组分区都可以独立存在,都可以视为主分区,都可以拿来格式化使用。

index 说明
LBA0(兼容区块) 存储第一阶段的启动引导程序,在原本的分区表记录区内,该兼容模式仅放入一个特殊标志符,表示此磁盘为GPT格式
LBA1(GPT表头记录) 记录分区本身的位置与大小,同时记录备份用的GPT分区,放置了分区校验码判断GPT是否正确
LBA2-33(实际记录分区信息处) 每个LBA都可以记录4组分区记录,在默认情况,共用4*32=128组分区记录

启动流程中的BIOS与UEFI启动检测程序

BIOS搭配MBR/GPT的启动流程

  1. BIOS:启动主动执行的固件,会认识第一个可启动的设备
  2. MBR:第一个可启动设备的第一个扇区内的主引导记录块,内含启动引导代码
  3. 启动引导程序(boot loader):一个可读取内核文件来执行的软件
  4. 内核文件:开始启动操作系统

如果分区表为GPT格式,BIOS也能从LBR0的MBR兼容区块读取第一阶段的启动引导程序,如果启动引导程序支持GPT,使用BIOS同样可以读取到正确的操作系统内核

BIOS与MBR都是硬件本身支持的功能,Boot loader是OS安装在MBR上软件,其功能:

  • 提供选项:用户可以选择不同的启动选项(多重引导的重要功能)
  • 加载内核文件:直接指向可使用的程序区段来启动操作系统
  • 转交其他启动引导程序:将启动管理功能转交其他启动引导程序负责

多重引导功能解释

启动程序除了可以安装在MBR上还可以安装在每个分区的启动扇区,造成多重引导功能

假设计算机只有一个硬盘,里面分成四个分区,第一分区、第二分区分别安装了Windows和Linux,如何开机时选择用Windows还是Linux,假设MBR安装的是可以同时认识两种系统的启动引导程序

该MBR启动提供两个选项

  • M1:直接加载Windows内核文件来开机
  • M2:将开机管理工作交给第二分区的启动引导程序。当第二个启动引导程序启动后,该启动引导程序内只有一个启动选项,因此可以使用Linux内核文件启动

总结

  1. 每个分区都有自己的启动扇区
  2. 实际可启动的内核文件是放置到各个分区中的
  3. 启动引导程序只会认识主机的系统分区内的可启动的内核文件和其他启动引导程序
  4. 启动引导程序可直接指向或是间接将管理权转交给另一个管理程序

UEFI BIOS搭配GPT启动流程

BIOS不懂GPT,需要通过GPT提供兼容模式才能读写这个磁盘设备,BIOS仅是16位的程序,与现阶段的操作系统接轨些弱,因此统一可扩展固件接口(UEFI)诞生

当加载操作系统后,一般来说,UEFI就会停止工作,将系统交给操作系统

Linux安装模式下,磁盘分区的选择

目录树结构

Linux内所有数据都以文件形式呈现,整个目录树最重要的是根目录/

文件系统与目录树的关系(挂载)

挂载

利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,即进入该目录就可以读取该分区,该操作称为挂载,进入点的目录称为“挂载点”。由于根目录是最重要的,根目录一定要挂载到某个分区,至于其他目录可以根据用户需求挂载到不同分区。

上图中分区1挂载到根目录中,分区2挂载到/home中,当数据放置在/home内的各层目录时数据是放在分区2中的,如果不是放在/home下面的目录,那么数据会被放在分区1中

首次登录与在线求助

X Window 与 命令行模式的切换

Linux默认情况下会提供六个终端让用户登录,切换方式为使用[Ctrl+Alt+F1~F6],系统将[F1]~[F6]命名为tty1~tty6的操作接口环境

模式 按键
图形用户界面模式 Ctrl+Alt+F1
命令行模式登录tty2~tty6终端 Ctrl+Alt+F2~F6

命令行模式下命令的执行

命令行模式登录后所运行的程序被称为Shell

语系支持

Linux终端在默认情况下无法支持以中文编码输出数据,我们需要将语系支持改成英文

1
2
3
4
5
6
# 显示目前支持的语系
locale
# 修改语系成英文语系
LANG=en_US.utf8
# LANG只与输出信息有关,若需要更改其不同的他信息,要同步更新LC_ALL
export LC_ALL=en_US.UTF8

基础命令操作

命令 说明
date 显示日期与时间
cal 显示日历
bc 计算器

重要热键

热键 说明
[Tab] [Tab]接在一串命令的第一个字段后面,可以命令补全;[Tab]接在一串命令的第二个字段后面,可以文件补齐
Ctrl+c 中断目前程序
Ctrl+d 键盘输入结束
[Shift]+[Page Up] [Page Down] 命令行中前翻和后翻

在线求助

help 指令

1
date --help

man 指令

说明

获取帮助信息

代号 说明
1 用户在shell环境中可以操作的命令或可执行文件
2 系统内核可调用的函数与工具等
3 一些常用的函数与函数库,大部分为C的函数库
4 设备文件的说明,通常在/dev下的文件
5 配置文件或是某些文件的格式
6 游戏
7 惯例与协议等,如Linux文件系统、网络协议、ASCII代码等的说昆明
8 系统管理员可用的管理指令
9 跟内核有关的文件

man page 热键

热键 说明
Space 向下翻一页
[Page Down] 向下翻一页
[Page Up] 向上翻一页
[Home] 去到第一页
[End] 去到最后一页
/string 向下查找string关键字
?string 向上查找string关键字
n,N 利用/?来查找字符串时,用n来继续下一个查找,利用N来反向查找
q0 结束本次man page

info 指令

说明

用来查询命令的用法或文件的格式

热键 说明
Space 向下翻一頁
[Page Down] 向下翻一頁
[Page Up] 向上翻一頁
[tab] 在 node 之间移动,有 node 的地方,通常会以 * 显示。
[Enter] 当光标在阶段上面时,按下Enter进入该节点
b 移动光标到该info界面当中的第一个node处
e 移动光标到该info界面当中的最后一个node处
n 前往下一个 node 处
p 前往上一个 node 处
u 向上移动一层
s(/) 在 info page 当中进行查找
h, ? 显示帮助选项
q 结束本次的 info page

简单的文本编辑器 nano

1
nano test.text
热键 说明
[ctrl]-G 联机帮助
[ctrl]-X 离开nano
[ctrl]-O 保存文件
[ctrl]-R 从其他文件读入数据
[ctrl]-W 查找字符串
[ctrl]-C 目前光标所在行列信息
[ctrl]-_ 输入行号,光标快速移动到该行
[alt]-Y 语法校验功能开启或关闭
[alt]-M 支持鼠标移动光标

正确关机

  1. 查看系统使用状态

    1
    2
    3
    4
    5
    6
    # 查看在线人员
    who
    # 查看网络联机状态
    netstat -a
    # 查看后台程序
    ps -aux
  2. 通知在线用户关机的时刻

    | 命令 | 说明 |
    | ——————— | ————————————— |
    | sync | 将数据同步写入硬盘中的命令 |
    | 常用的关机命令 | shutdown |
    | 重新启动,关机 | reboot、halt、poweroff |

常用关机命令

1
shutdown [-krhc]
选项 说明
-k 不是真的关机,只是发送警告信息出去
-r 将系统服务停掉后就重新启动
-h 将系统的服务停掉后,立即关机
-c 取消已经在进行的shutdown命令内容

如果什么参数都没加。单纯的执行shutdown,系统默认在一分钟后进行关机