关键词: Linux 磁盘分区
0. 概述
接触Linux有接近一年多的时间了,从一开始对它的恐惧和陌生,到现在Linux成为我日常使用的操作系统,虽然渐渐上手并熟悉,但中间始终缺乏系统性地提炼和总结。于是我想认认真真地通读一遍《鸟哥的Linux私房菜–基础学习篇》,并结合自己在实际工作中遇到的相关问题,做一个Linux基础系列的总结。
1. 计算机概论
- 计算机的五大单元包括输入单元、输出单元、CPU内部的控制单元、CPU内部的算术逻辑单元与内存。
- 数据会流进/流出内存,其命令是CPU所发布的控制命令,而CPU实际要处理的数据则完全来自于内存。
- CPU按照设计理念主要分为精简指令集(RISC)与复杂指令集(CISC)系统。
- CPU的外频指的是CPU与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者相乘是CPU的频率速度。
- 主板芯片组一般分为北桥和南桥,北桥负责连接速度较快的CPU、内存与显卡等组件,南桥负责连接速度较慢的周边接口,包括硬盘、USB、网卡等。
- 个人计算机的内存主要组件为动态随机访问内存(Dynamic Random Access Memory, DRAM),DRAM只有在通电时才能记录与使用,断电后数据丢失。CPU内部的第二层缓存则使用静态随机访问内存(Static Random Access Memory, SRAM),SRAM体积小,速度快,但价钱高。
- BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中,这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器(Read Only Memory, ROM)。
2. Linux的历史
- UNIX的前身是由贝尔实验室(Bell Lab.)的Ken Thompson利用汇编语言写成的,后来在1971~1973年间由Dennis Ritchie以C程序语言进行改写,才称为UNIX。
- 1977年由Bill Joy释出BSD(Berkeley Software Distribution),这称为UNIX like的操作系统。
- 1984年由Andrew Tannenbaum制作出Minix操作系统,该系统可以提供源码及其软件。
- 1984年由Richard Stallman提倡GNU项目,倡导自由软件(Free Software),强调其软件可以自由地取得、复制、修改与再发行,并规范出GPL授权模式,任何GPL(General Public License)软件均不可单纯仅销售其软件,也不可修改其软件授权。
- 1991年由芬兰人Linux Torvalds开发出Linux操作系统。
- 目前Linux内核的开发分为两种版本,分别是稳定版本的偶数版,如2.6.x,适用于商业与家用环境使用;一种是开发中版本,如2.5.x,适合开发特殊功能的环境。
- Linux distributions是”Linux Kernel + Free Software + Documentations(Tools) + 可完全安装的程序”所制成的一套完整的系统。
3. 主机规划与磁盘分区
3.1 Linux与硬件的搭配
硬件设备在Linux中的文件名:
设备 | 设备在Linux内的文件名 |
---|---|
IDE硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB硬盘 | /dev/sd[a-p] |
当前CD ROM/DVD ROM | /dev/cdrom |
更多的Linux内核支持的硬件设备与文件名,可参考连接。
3.2 磁盘分区
磁盘主要是由盘片、机械手臂、磁头与主轴马达所组成。数据写入的动作是在盘片上执行的。盘片又可细分为扇区(sector)与柱面(cylinder)两种单位,每个扇区大小为512bytes。
每个扇区并不是一样重要。整块磁盘最重要的是第一扇区,其记录了两个重要的信息:
- 主引导分区(Master Boot Record,MBR):可以安装引导加载程序的地方,有446bytes。
- 分区表(Partition Table):记录整块硬盘分区的状态,有64bytes。
在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的起始与结束的柱面号码。由于分区表就只有64bytes,最多只能容纳四个分区,这四个分区被成为主(Primary)或扩展(Extended)分区。
小总结:
- “分区”的概念只是针对64bytes的分区表进行设置。
- 硬盘默认的分区表仅能写入四组分区信息。
- 这四组分区信息我们成为主(Primary)或扩展(Extended)分区。
- 分区的最小单位为柱面(cylinder)。
Q:那么为什么要对磁盘进行分区?
- 分区保证了磁盘内数据的安全性。每个分区内的数据是分开的。所以如果将某个分区的数据进行重新调整时,并不会影响到其它分区内的数据。
- 分区提高了系统的性能。分区可以缩小从磁盘内读取数据的柱面范围,从而加快了数据的读取速度。
Q:那么是不是一块硬盘最多只能分成四个分区?
当然不是,我们通过扩展分区来记录更多的分区信息。扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。由扩展分区继续切出来的分区,被成为逻辑分区。
小总结:
- 主分区与扩展分区最多可以有四个(硬盘的限制)。
- 扩展分区最多只能有一个(操作系统的限制)。
- 逻辑分区是由扩展分区持续切割出来的分区。
- 能够被格式化后作为数据访问的分区为主分区与逻辑分区,扩展分区无法格式化。
开机流程到操作系统之前的流程:
- BIOS: 开机主动执行的韧体,找到第一个能够开机的设备。
- MBR: 第一个可开机设备的第一个扇区内的主引导分区块,内包含引导加载程序。
- 引导加载程序(Boot Loader):用来读取内核文件并将其执行的软件。
- 内核文件:开始操作系统的功能。
挂载的概念:”挂载”就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,即,进入该目录就可以读取该分区,这个操作我们称为”挂载”,进入点的目录我们称之为”挂载点”。
4. Linux在线求助
4.1 Linux中重要的热键
- [Tab]按键
[Tab]具有”命令补全”与”文件补齐”的功能。
[Tab]接在一串命令的第一个命令的后面,则为”命令补全”。
[Tab]接在一串命令的第二个命令以后时,则为”文件补齐”。 - [Ctrl]-c按键
[Ctrl]-c是中断目前程序的按键。 - [Ctrl]-d按键
[Ctrl]-d代表着键盘输入结束,直接离开文字界面(相当于输入exit)。
4.2 man page
当想要在命令行里查询相关命令的使用方法,可以使用man命令来查看。1
man date
命令行显示的结果为DATE(1),括号里的数字是有含义的,具体含义如表所示:
代号 | 代表内容 |
---|---|
1 | 用户在shell环境中可以操作的命令或者是可执行文件 |
2 | 系统内核可调用的函数与工具等 |
3 | 一些常用的函数与函数库,大部分为C的函数库 |
4 | 设备文件的说明,通常在/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戏 |
7 | 惯例与协议,如Linux文件系统、网络协议、ASCII code等 |
8 | 系统管理员可用的管理命令 |
9 | 与kernel有关的文件 |
4.3 正确的关机命令使用
- 将数据同步写入硬盘中的命令:sync
- 惯用的关机命令:shutdown
- 重启、关机: reboot, halt, poweroff
惯用的关机命令: shutdown
shutdown可以达成如下的工作:
- 可以自由选择关机模式:使要关机、重启或进入单用户操作模式均可。
- 可以设置关机时间:可以设置成现在立刻关机,也可以设置某一特定时间才关机。
- 可以自定义关机消息:在关机之前,可以将自己设置的消息传送给在线用户。
- 可以仅发出警告消息:有时要告诉用户某段时间要注意一下,这个时候可以使用shutdown来通知用户,但却不是真的要关机。
- 可以选择是否要用fsck检查文件系统。
1 | $ shutdown [-t 秒] [-krhfFnc] 时间 [警告消息] |
举例:1
2
3
4 shutdown -r +30 'The system will reboot'
三十分钟后系统会重启,并将消息显示给所有在线的用户
shutdown -k now 'The system will reboot'
仅发出警告,系统并不会关机