鸟哥的Linux私房菜学习笔记(1)概论/ 主机规划与磁盘分区/ 安装Linux虚拟机

2020.01.14

计算机概论

  • 电脑硬件主要分为以下三部分:
    1.输入单元:包括键盘、鼠标、读卡器、扫描仪、触控屏幕等。
    2.主机部分:有CPU、内存等。
    3.输出单元:屏幕、打印机等。
    主机的重点在于CPU(Centrral Processing Unit)中央处理器,CPU作为一个具有特定功能的芯片,里面含有指令集,CPU分为两个主要的单元:算术逻辑单元与控制单元,其中算术逻辑单元主要负责程序运算与逻辑判断,控制单元则主要协调各周边组件与各单元之间的工作。
    既然CPU的重点在进行运算与判断,那么要被运算与判断的数据是从哪里来的呢? CPU读取的数据都是从内存来的,内存中的数据则是从输入单元所传输进来的,而CPU处理完毕的数据也必须先写回内存。最后数据从内存传输到输出单元。
    为什么我们说要加快系统性能,通常将内存容量加大就可以获得相当好的效果? 因为所有的数据都要经过内存的传输,所以如果内存的容量太小,数据读写性能就不足,对性能的影响就大,尤其在Linux作为服务器操作系统的环境下,这点要特别注意。

  • 所谓的”位(bit)“,是CPU一次读取数据的最大量,64位CPU代表CPU一次可以读写64位的数据,32位CPU则是CPU一次读取32位的意思。
    因为CPU读取数据量有限制,因此能够从内存中读写的数据也就有所限制,一般32位的CPU所能读写的最大数据量,大概是4GB。

”硬盘“就相当于脑袋中存放回忆的记忆区块,与”内存“不同,内存是提供脑袋目前要思考与处理的信息,但是有些生活琐事或其他没有要立刻处理的事情,就当成回忆先放置到脑袋的记忆深处吧(这也太fzl了吧。) 那就是硬盘,主要目的是将重要的数据记录起来,以便未来将这些重要的数据再次使用。

Linux是什么


Linux之前,UNIX的历史:
兼容分时系统 Multics(可以让大型主机通过提供数个终端Terminal以连接进入主机 ,可以让多个用户在某一段时间内分别使用CPU的资源,感觉是同时使用,其实是CPU在每个用户的工作之间进行切换。)-----> Unics文件系统(汇编语言写成,所有的程序或设备都是文件;不管程序本身还是附属文件,所写的程序只有一个目的,且要有效地完成目标。 ) ----->UNIX( C语言编写,高度可移植性与性能 )----->重要的UNIX分支BSD -----> 重要的System V架构 (“纯种的UNIX”指的是System V以及BSD这两套套件 )-----> x86架构的Minix操作系统。 …


GNU计划的目的:建立一个自由、开放的UNIX操作系统。


“好在有GNU计划提供的bash以及gcc编译器等自由软件,让托瓦兹得以顺利地编写内核程序。他参考Minix的设计理念与书上的程序代码,仔细研究出386个人计算机的性能优化,然后使用GNU的自由软件将内核程序代码与386紧紧结合在一起,最终写出他所需要的内核程序。”


由于托瓦兹是针对386写的,跟386硬件的相关性很强,所以,早期的Linux确实是不具有移植性的。不过,开源的好处是可以修改程序代码去适合的操作环境。因此,在1994年以后,Linux便被移植到很多的硬件上。目前除了x86以外,IBM、HP等公司出的硬件也都被Linux所支持。甚至于小型单板计算机(树莓派/香蕉派等) 与 移动设备 (智能手机、平板电脑)的ARM架构系统,大多也是使用Linux内核。


Linux的内核版本编号类似于如下样子:

 3.10.0 -123.      e17.          x86-64
 主版本  次版本  发布版本  修改版本

如果是要装在个人计算机上作为桌面使用,建议使用社区版,包括Fedora、Ubuntu、openSUSE等。


选择适合你的Linux发行版:
用于企业环境:
建议使用商业版本,例如Red Hat的RHEL或是SUSE都是不错的选择,环境强调的是稳定的运行。
用于个人或教学的服务器环境:
可以使用号称完全兼容商业版RHEL的CentOS。因为CentOS是使用了RHEL的源代码来重新编译发布的一个Linux发行版,所以号称兼容RHEL 。适合于服务器系统的环境。

“先学习以RPM软件管理为主的RHEL、Fedora、SUSE、CentOS等用户较多的版本。…如果你已经接触过Linux,还想要探讨更严谨的Linux版本,可以考虑使用Debian,如果以性能至上考虑,或许Gentoo是不错的选择。 ”


Linux内核小巧精致,可以在很多强调省电以及配置较低硬件资源的环境下执行。Linux常见的应用大概分为企业应用与个人应用两方面:
企业环境的应用:
(1)网络服务器
这是Linux当前最热门的应用,承袭了UNIX高稳定性的良好传统,Linux上面的网络功能特别稳定和强大。此外,由于GNU计划与Linux的GPL授权模式,让很多优秀的软件都在Linux上面开发,且这些在Linux上面的服务器软件几乎是自由软件。因此,作为一台网络服务器,例如网站服务器、邮件服务器、文件服务器等,Linux绝对是上上之选。
(2)关键任务的应用
很多企业渐渐走向Intel兼容的x86主机环境,而这些企业所使用的软件大多使用UNIX操作系统平台的软件,而Linux是符合UNIX操作系统标准并且可以在x86上运行的。
(3)学术机构的高性能计算任务
Linux有强大的运算能力,并且具有支持度相当广泛的gcc编译软件。
个人环境的应用:
(1)桌面计算机
也就是桌面系统。
(2)手持系统(PDA、手机)
Google成立了开放手机联盟(Open Handset Alliance),并且退出Andriod操作系统,而Andriod操作系统其实是Linux内核的分支,只是专门用来针对手机或平板这类的ARM机器所设计的。
2015最新的Andriod系统6.x就是Linux kernel 3.4.x版本。
(3)嵌入式系统
包括路由器、防火墙、手机、交换机、机器人控制芯片、家电产品的微计算机控制器,都可以是Linux操作系统。


云程序的底层是Linux,而云程序搭建出来的虚拟机,大多也是Linux操作系统,且用的越来越多。


主机规划与磁盘分区

2020.01.27
在Linux系统中,每个设备都被当成一个文件来对待。 比如,SATA接口的硬盘的文件名为 /dev/sd[a-d],其中,括号[ ]内的字母为a-d当中的任意一个,即有 /dev/sda/dev/sdb/dev/sdc/dev/sdd四个文件。


磁盘设备的文件名通常分为两种:
实际 SATA 与 USB 设备文件名为 /dev/sd[a-p],而虚拟机的设备可能为 /dev/vd[a-p]。


近年来硬件虚拟化技术渐渐成熟,一台计算机就能虚拟出好几台逻辑独立的系统,虚拟化系统可以很简单地制造出相似的硬件资源,能够取得相同的环境来查看效果。如果系统是Windows系统,推荐使用VirtualBox软件。


接下来安装Linux,那么Linux系统是安装在计算机组件的哪个部分呢?磁盘(也就是硬盘)。
一块磁盘可以被划分成多个分区( partition ),以Windows观点来看,可能会有一块磁盘并且将它划分成C盘、D盘、E盘。C、D、E就是分区。
在这里插入图片描述


虚拟机使用的虚拟磁盘并不是正规的磁盘接口(个人计算机常见的磁盘接口有两种,分别是 SATASAS ,更早些还有 IDE )。这种情况下,磁盘文件名就不一样了。正常的物理机器大概使用的都是 /dev/sd[a-p] 的磁盘文件名,而虚拟机环境中,为了加速,可能会使用 /dev/vd[a-p]这种设备文件名。
以SATA接口来说,由于SATA、USB、SAS等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是 /dev/sd[a-p]的格式。所以SATA或USB接口的磁盘没有一定的顺序,如何决定它的设备文件名呢? 需要根据Linux内核检测到的磁盘的顺序( 与实际插槽顺序无关 )来命名。


MBR(Master Boot Record 主引导记录 ):
磁盘主要由碟片、机械手臂、磁头和主轴马达所组成,而数据的写入其实是在碟片上面。碟片上面又细分出扇区( Sector )磁道 ( Track ) 两种单位,其中扇区的物理大小设计有两种,分别是512字节4K字节
整块磁盘的 第一个扇区 特别重要,因为它记录了整块磁盘的重要信息,早期磁盘第一扇区里面含有的重要信息成为MBR格式
但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰,甚至有些2TB以上的磁盘分区已经让某些操作系统无法读取,因此后来又多了一个新的磁盘分区格式,称为GPT(GUID partition table)磁盘分区表
早期的Linux系统为了兼容Windows的磁盘,因此使用的是支持Windows的MBR 的方式来处理启动程序与分区表。而启动程序记录区与分区表则通通放在磁盘的第一个扇区,这个扇区通常是 512 字节的大小,所以说,第一个扇区的512字节主要会有这两个东西:
**(1)主引导记录(Master Boot Record):**可以安装启动引导程序的地方,有 446 字节;
2)分区表( partion table ):记录整块硬盘分区的状态,有 64 字节 。
由于分区表所在区块仅有64字节容量,因此
最多只能由四组记录区
,每组记录区记录了该区段的启动与结束的柱面号码。假设硬盘只有 400 个柱面,共划分成四个分区,如果操作系统是Windows系统,那么第一到第四个分区的代号应该是C、D、E、F。

其实所谓的分区只是针对那个64字节的分区表进行设置而已 。
—硬盘默认的分区表仅能写入四组分区信息 。

—这四组划分信息我们称为主要 ( Primary )或扩展 ( Extends )分区。

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

—当系统要写入磁盘时,一定会参考磁盘分区,才能针对某个分区进行数据的处理。


2020.01030
如果磁盘容量大于 2TB 以上时,系统会自动使用 GPT 分区来处理磁盘分区。 GPT分区已经没有扩展与逻辑分区的概念。
GPT (GUI partition table)磁盘分区表:原来一个扇区的大小只是512字节而已,不过目前已经有4K的扇区设计出现,为了兼容所有的磁盘,因此在扇区的定义上,大多会使用所谓的逻辑区块地址Logical Block A ddress )来处理,GPT 将磁盘所有区块依次 LBA (默认为 512 字节 )来规划,而第一个 LBA 称为 LBA0 (从0开始编号)。
与MBR仅使用第一个 512 字节区块来记录不同,GPT 使用了 34 个 LBA 区块来记录分区信息。同时 GPT 除了前面 34 个LBA 之外,整个磁盘的最后 34 个LBA 也拿来作为另一个备份,更安全。

LBA0( MBR 兼容区块):存储了第一阶段的启动引导程序 。
LBA1( GPT 表头信息):记录了分区表本身的位置与大小,同时记录了备份用的 GPT 分区(就是最后 34 个LBA )放置的位置,同时放置了分区表的校验码 (CRC32 ),操作系统可以根据这个校验码来判断 GPT 是否正确 。若有错误可以通过这个记录区来获取备份的 GPT 。
LBA2-33( 实际记录分区信息处 ):从LBA2开始,每个 LBA 都可以记录 4 组分区记录,每个 LBA 有 512 字节,因此每组用到 128 字节。在默认的情况下,总共可以有 432=128 组记录。( 因为是从LBA2开始 );除了每组记录所需要的标识符与相关记录以外, GPT 在每组记录中分别提供了 64 位来记载开始/结束的扇区号码,因此, GPT分区表对于单一分区来说,它的最大容量限制就会在 2^64 * 512字节 = 2^631 K字节=8 ZB ,其中 1 ZB =2^30 TB 。


通常磁盘可能会有多个碟片,所有碟片的同一个磁道我们称为柱面 ( Cylinder ),通常那是文件系统的最小单位,也就是分区的最小单位。现在也可以用扇区( Sector )号码来作为分区单位。 所以说,我们是利用参考对照柱面或扇区号码的方式来处理


为什么要分区:
(1)数据的安全性 :比如要将计算机中Windows的C盘重新安装依次系统时,可以将其他重要数据移动到其他分区,那么重装系统并不会影响到那些数据 。
(2)系统的性能:分区使数据集中,有助于数据读取的速度与性能。


扩展分区的目的是使用额外的扇区来记录分区信息,(比如在Window与Linux系统中,将一块硬盘划分成十个以上的分区,就是通过扩展分区来处理。)实际上扩展分区不是只占一个区块,而是分布在每个分区的最前面的几个扇区来记录分区信息 。
由扩展分区继续划分出来的分区,被称为逻辑分区 (logical partition ) , (所以如果扩展分区被破坏,所有逻辑分区将被删除 。)比如逻辑分区在Linux系统中的设备文件名::

    L1:/dev/sda5
    L2:/dev/sda6
    L3:/dev/sda7
    L4:/dev/sda8
    L5:/dev/sda9

为什么设备中没有/dev/sda1、/dev/sda2、 /dev/sda3、 /dev/sda4呢? 因为前面四个号码都是保留给主要分区或扩展分区使用的,所以逻辑分区的设备名称号码就由5号开始,这在 MBR 方式中是个很重要的特性,不能忘记。

(能够被格式化后作为数据存取的分区是主要分区与逻辑分区,扩展分区无法格式化 。)
(逻辑分区的数量根据操作系统而不同,在Linux系统中 SATA 硬盘已经可以突破 63 个以上的分区限制 。)


2020.02.01
并不是所有的操作系统都可以读取到 GPT 的磁盘分区格式,同时,也不是所有的硬件都可以支持 GPT 格式,是否能够读写 GPT 格式又与启动的检测程序有关。启动的检测程序分为 BIOS 与 UEFI 。
BIOS 是一个写入到主板上的一个固件,就是在启动的时候,计算机系统会主动执行的第一个程序。接下来,BIOS会去分析计算机里面有哪些存储设备,以硬盘为例, BIOS 会依据用户的设置去取得能够启动的硬盘,并且到该硬盘里面去读取第一个扇区的 MBR 位置。 MBR这个仅有 446 字节的硬盘容量里 会放置最基本的启动引导程序 ( Boot loader)。这个启动引导程序的目的是加载 ( load )内核文件。内核文件就会启动操作系统。
开机的流程:BIOS–>MBR–>引导启动程序–>内核文件。
Boot loader的主要任务:
(1)提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能。
(2)加载内核文件:直接指向可使用的程序区段来启动操作系统。
(3)转交其他启动引导程序:将启动管理功能转交给其他启动引导程序负责。(计算机系统中可能具有两个以上的启动引导程序 。
启动引导程序除了可以安装在 MBR 以外,还可以安装在每个分区的启动扇区。

如果分区表为 GPT 格式的话,那么 BIOS 也能从LBA 0 的 MBR 兼容区块读取第一阶段的启动引导程序代码。
由于 LBA 0 仅提供第一阶段的启动引导程序代码,因此,如果使用类似 grub 的启动引导程序的话,那么就得额外划分出一个 " BIOS boot " 的分区,这个分区才能够放置其他开机过程所需的程序,在 CentOS 中,这个分区通常占用 2MB 左右。


UEFI( Unified extensible Firmware Interface):统一可扩展固件接口。
就像一个低级的操作系统,硬件资源使用轮询 ( Polling )的方式来管理,加入了一个所谓的安全启动 (secure boot) 的功能。 (某些时刻,可能需要将UEFI 的 secure boot 功能关闭,才能顺利进入Linux)。
为了与Windows系统兼容,并且提供第三方厂商所使用的 UEFI 应用程序存储的空间,必须要格式化一个 FAT 格式的文件系统分区,大约提供 512MB 到 1GB 左右的大小,以让其它 UEFI 执行较为方便。
某些操作系统要使用 GPT 分区的时候,必须要搭配 UEFI 固件才可以安装使用。


整个Linux系统最重要的地方就是在于目录树 ( directory tree )架构:以根目录为主,然后向下呈现为分支状的一种文件架构。 所以,整个目录树架构最重要的就是那个根目录 (root directory ),这个根目录的表示方法为一条斜线 “/” ,所有的文件都与目录树有关。


Linux主机可作的服务:
(1)NAT ( 完成 IP 分享器的功能 )
(2)SAMBA ( 加入Windows 网络邻居 )
(3)Mail ( 邮件服务器 )
(4)Web ( WWW服务器 )
(5)DHCP ( 提供客户端自动获取IP的功能 )
(6)FTP ( 进行网络数据的传输 )


基本硬盘分区的模式:
最简单的分区模式(懒人分区法):仅划分出根目录与内存交换分区 ( / 与 swap ),然后再预留一些剩余的磁盘空间以供后续的练习使用。 但是这种是不保险的,因为如果任何一个小细节坏掉,根目录就可能整个地损坏,拯救比较困难。
比较符合容量大且(或)读写频繁的特征的目录:

  • /boot (1GB,xfs,主要分区)
  • / (10GB,xfs,LVM方式)
  • /home(5GB,xfs,LVM方式)
  • /var
  • swap(1GB,swap,LVM方式)
    (预计练习机是要作为服务器之用,同时可能会用到图形用户界面模式来管理系统。
    括号内为预计分区情况:磁盘容量/ 文件系统 /分区格式,
    还有个系统自定义的2MB的文件系统 BIOS boot,也是主要分区。)

用VMware Workstation Player安装CentOS 7Linux系统并分区 超详解全记录(小白也能会哦!)在我的这一篇博客中: https://blog.csdn.net/weixin_41750142/article/details/104149742

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值