image.png

CDN 网络:内容分发网络;CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。(收费的服务) 防火墙:主要为了安全。两台高性能硬件防火墙做高可用集群。 LVS / HAProxy 高可用的四层负载均衡,代理服务器(四层代理,可以通过 TCP/UDP 端口号进行代理) Nginx 七层反向代理集群(七层代理,可以通过协议进行代理;可以实现动静分离,静态资源:存放HTML文件,动态资源:Java程序,PHP程序) 分布式注册中心(zookeeper):实现服务之间的注册,利用 zookeeper 来寻找服务 数据缓存服务器集群(Redis):为了提高用户的访问速度,利用缓存技术 数据的持久化保存:MySQL,MongoDB 消息队列集群(kafka,RabbitMQ,RocketMQ):大量服务之间相互访问 分布式监控平台(Prometheus,Zabbix):监控服务器性能以及各种服务容器性能 日志统一收集与展示平台(ELK,ElasticSearch):日志的展示平台 持续集成与持续部署平台(Jenkins,GitLab):代码仓库 自动化运维平台(Ansible,SaltStack):自动化工具 企业内基础服务(DNS,NTP,Harbor,Yum等基础服务) 高可用私有云管理端(OpenStack,Kubernetes) 远程管理和登录的方式(OpenVPN,JumpServer跳板机) 存储服务器(NFS,Ceph) 商业存储服务器(NAS,SAN)

计算机基础

内容概述

  • 计算机系统
  • 计算机硬件组成
  • 操作系统
  • Linux 相关介绍
  • Linux 哲学思想
  • 获取 Linux
  • 虚拟机
  • Linux 安装

1 计算机系统

计算机(Computer):俗称电脑,是一种接收和存储信息,并按照存储在其内部的程序对海量数据进行自动,高速的处理,然后把处理的结果输出的现代化智能电子设备。

计算机有很多的形式,比如:生活中常见的家用电脑,笔记本,智能手机,平板电脑,还有生产环境中提供业务支撑的各种服务器(Server),都是算计算机。

其中一个完整的计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成
image.png

1.1 计算机硬件

计算机发展历史:

  1. 第一代计算机(1946-1957) 电子管时代
  2. 第二代计算机(1958-1964) 晶体管时代
  3. 第三代计算机(1965-1970) 集成电路时代
  4. 第四代计算机(1971以后) 大规模集成电路时代

1.1.1 世界上第一台计算机

image.png
1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator 电子数字积分计算机)在美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算。

1.1.2 冯·诺依曼体系结构

1 计算机基础和Linux安装 - 图4
1946年美籍匈牙利数学家冯诺依曼于提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。冯·诺依曼体系结构冯诺依曼理论的要点是:

  • 数字计算机的数值采用二进制:bit 位,byte 字节,1 byte = 8 bit
  • 计算机应该按照程序顺序执行
  • 计算机硬件由运算器,控制器,存储器,输入设备和输出设备五大部分组成
    • 运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。
    • 控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。
    • 存储器:用于记忆程序和数据,例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。主存储器对应内存(只能临时存放数据,不能进行数据的持久化,断电丢失数据),辅助存储器对应硬盘(永久的存放数据,进行数据的持久化,断电不丢失数据)
    • 输入设备:用于将数据或程序输入到计算机中,例如:鼠标键盘
    • 输出设备:将数据或程序的处理结果展示给用户,例如:显示器打印机

冯·诺依曼
1 计算机基础和Linux安装 - 图5
早期计算机系统的输入设备:穿孔纸带
1 计算机基础和Linux安装 - 图6

1.1.2.1 二进制和十进制转换

  • 2 ^ 0 = 1b
  • 2 ^ 1 = 2 = 10b
  • 2 ^ 2 = 4 = 100b
  • 2 ^ 3 = 8 = 1000b
  • 2 ^ 4 = 16 = 10000b
  • 2 ^ 5 = 32 = 100000b
  • 2 ^ 6 = 64 = 1000000b
  • 2 ^ 7 = 128 = 10000000b
  • 2 ^ 8 = 256 = 100000000b
  • 2 ^ 9 = 512 = 1000000000b
  • 2 ^ 10 = 1024 = 10000000000b
  • 2 ^ 11 = 2048 = 100000000000b
  • 2 ^ 12 = 4096 = 1000000000000b

    1.1.2.2 常见单位

  • 10 的 36 次方 x

  • 10 的 33 次方 C
  • 10 的 30 次方 D
  • 10 的 27 次方 N
  • 10 的 24 次方 B
  • 10 的 21 次方 Y
  • 10 的 18 次方 E
  • 10 的 15 次方 P
  • 10 的 12 次方 T 二进制 2 ^ 40 = 1024 G
  • 10 的 9 次方 G 二进制 2 ^ 30 = 1024 M
  • 10 的 6 次方 M 二进制 2 ^ 20 = 1024 K
  • 10 的 3 次方 K 二进制 2 ^ 10 = 1024 B
  • 10 的 2 次方 百
  • 10 的 1 次方 十
  • 10 的 -1 次方 分 d
  • 10 的 -2 次方 厘 c
  • 10 的 -3 次方 m 毫
  • 10 的 -6 次方 µ 微
  • 10 的 -9 次方 n 纳
  • 10 的 -12 次方 p
  • 10 的 -15 次方 f
  • 10 的 -18 次方 a

范例:十进制和二进制互相转换

  1. # linux计算器bc
  2. # 注意:需要先声明输出的机制,再声明输入的机制
  3. $ bc
  4. bc 1.06.95
  5. Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
  6. This is free software with ABSOLUTELY NO WARRANTY.
  7. For details type `warranty'.
  8. obase=2 # 表示输出的是二进制,默认输出进制为十进制
  9. ibase=10 # 表示输入的是十进制,默认输入进制为十进制
  10. 195 # 十进制的 195
  11. 11000011 # 输出二进制的 11000011

范例:进制的转换

## 尽量采用非交互的方式进行执行
# 十进制转二进制:echo "obase=2;255" | bc 
# 八进制转十进制:echo "obase=10;ibase=8;377" | bc 
# 二进制转十进制:echo "obase=10;ibase=2;11111111" | bc
# 二进制转十六机制:echo "obase=16;ibase=2;11111111" | bc

$ echo "obase=2;255" | bc
11111111
$ echo "obase=10;ibase=8;377" | bc
255
$ echo "obase=10;ibase=2;11111111" | bc
255
$ echo "obase=16;ibase=2;11111111" | bc
FF

范例:确定当前操作系统是32位或者64位

## getconf本身是个ELF可执行文件,用于获取系统信息
# 可以获取全部系统信息
$ getconf -a
...
$ getconf LONG_BIT
64 (32)
$ arch
x86_64 (i686)
$ lscpu | grep Architecture
Architecture:          x86_64

1.1.3 摩尔定律

由英特尔(Intel)创始人之一戈登·摩尔于1965年提出,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。
image.png

1.1.4 计算机分类

1.1.4.1 按规模划分

  1. 超级计算机:Super Computer,又称巨型计算机,应用于国防尖端技术和现代科学计算中。巨型机的运算速度可达每秒百万亿次以上, “天河一号”为我国首台千万亿次超级计算机
  2. 大型计算机:具有较高的运算速度,每秒可以执行几千万条指令,而且有较大的存储空间。往往用于科学计算、数据处理或作为网络服务器使用,如:IBM z13 mainframe
  3. 小型计算机:指采用精简指令集处理器,性能和价格介于PC服务器和大型主机之间的一种高性能 64 位计算机。在中国,小型机习惯上用来指UNIX服务器
  4. 微型计算机:指采用X86 CPU 架构的PC服务器,中央处理器(CPU)采用微处理器芯片,体积小巧轻便,广泛用于商业、服务业、工厂的自动控制、办公自动化以及大众化的信息处理,互联网公司发起去IOE运动,代替小型机

    1.1.4.2 按功能和角色划分

    服务器和客户机 服务器:即Server,计算机的一种,通常是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务

客户机:即Client,向服务器提出请求,需要服务器为之提供相应的服务和支持的计算机

服务器按应用功能可分为: Web服务器、数据库服务器、文件服务器、中间件应用服务器、日志服务器、监控服务器、程序版本控制服务器、虚拟机服务器、邮件服务器、打印服务器、域控制服务器、多媒体服务器、通讯服务器、ERP服务器等。

1.1.4.3 服务器按外形分类

  • 塔式服务器
  • 刀片式服务器
  • 机架式服务器

1.塔式Tower服务器
image.png
早期的服务器形式,目前较少使用
外形以及结构和平时使用的立式PC差不多
机箱空间大,主板扩展性较强,插槽较多
预留了足够的内部空间,以便日后进行硬盘和电源的冗余扩展,设计一般都考虑降噪。
比较接近家用的台式主机,但是企业基本上不用。

2.刀片式Blade服务器
image.png
在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度
更高的密度,集中管理,高性能,灵活扩展,按需配置
可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板可以连接起来提供高速的网络环境,并同时共享资源,为相同的用户群服务
适合做高性能的计算服务

3.机架式Rack服务器
image.png
按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位,1U=1.75英寸=44.45毫米=5厘米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器
机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的服务器
机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高2000mm(42U)
现阶段是最主流的的服务器

1.1.5 数据中心相关硬件

数据中心
1 计算机基础和Linux安装 - 图11
图中为数据中心,有许多的硬件设备,大体上可以分为三类:服务器,网络设备和存储设备,图中这一排排的就是机柜,我们平时所谓的服务器,网络交换机和存储等设备都放在这里面。

物理拓扑
image.png
在机柜中有许多的没备,用上面所示的方式进行连接,包括服务鳌、光纤交换机、磁盘阵列和磁带库等。其中上层的设备是服务益,中同的设备是光纤交换机,下层的设备是存储设备,包含破盘阵歹列和运带库。
实际数据中心要复杂的多,除了包含上述没备外,还包括核心路由器、核心交换机、防火领和负载均衡器等等设备。这还不包括上述机柜、无烟灭火器、空调和UPS等辅助没备

逻辑拓扑
1 计算机基础和Linux安装 - 图13 image.png
上面复杂的结构可简化为上面的逻糯图,可以看到服务荔通过主机总线适配脑,即:HBA(HostBus Adapter)卡和光纤交换机相连,而存储设备也通过HBA卡和光纤交换机相连:服务器之间通过以太网交换机互联。

1.1.6 服务器硬件组成

image.png

1.1.6.1 服务器硬件——CPU

image.png
CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要的部分
CPU 指令集:
1 计算机基础和Linux安装 - 图17
X86 / X86_64 架构:
主导桌面与服务器芯片市场
1 计算机基础和Linux安装 - 图18
ARM 架构:
1 计算机基础和Linux安装 - 图19

手机:华为,小米, 三星,苹果 Pad:华为,小米, 三星,苹果 机顶盒:各种电视机顶盒 华为泰山废弃物 - 鲲鹏系列 CPU

POWER 架构:
由 IBM 设计,POWER 系列微处理器在不少 IBM 服务器,超级计算机,小型计算机以及工作站中,广泛使用
RISC-V 架构:
1 计算机基础和Linux安装 - 图20
官网:https://riscv.org/
RISC-V 架构参与企业:阿里巴巴集团,华米科技等

典型代表:阿里玄铁RISC-V 平头哥半导体有限公司官网:https://www.t-head.cn/

CPU 架构:

  • CISC:Complex Instruction Set Computer,复杂指令集
  • RISC:Reduced Instruction Set Computer,精减指令集

精减指令集和复杂指令集
早期计算机一直沿用CISC指令集方式。它的设计目的是要用最少的机器语言指令来完成所需的计算任务。在CISC处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。CISC的指令系统庞大,功能复杂,指令格式、寻址方式多;执行速度慢;难以优化编译,编译程序复杂; 无法并行;无法兼容。大约20%的指令占据了80%的处理器时间。其余80%指令使用频度只占20%的处理机运行时间。由此CISC生产厂商长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器,同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误。目前个人计算机x86体系 CPU 厂商一直在走CISC的发展道路,包括Intel、AMD、VIA(威盛)等。之所以称为X86,是因为最早Intel的CPU型号是8086,后来出现了80286,80386,80486,80586等,所以之后的Intel和其兼容的厂商的生产CPU都称为X86 CPU。而后CPU从最初的8位,16位,32位,发展到目前主流的64位。为了区别非64位的CPU,一般将64位的CPU称为X86-64。由于最早在1999由AMD设计公开 64 位技术,称为 x86-64,后来改名为 AMD64,不同厂商称呼有所不同,所以AMD 64,x86-64,x64都指的是64位的基于X86的CPU。

因为CISC存在上面的问题,于是有了RISC,它是图灵奖得主John L. Hennessy和David A. Patterson对行业的重大贡献,由加州大学伯克利分校于1980年发布,其基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,使其实现更容易,指令并行执行程度更好,此称为精简指令集RISC(Reduced Instruction Set Computing)。精减指令集其风格是强调计算机结构的简单性和高效性,其特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,支持并行,并且采用流水线技术。当需要完成复杂任务时,就由多个指令组合来实现。常用的精简指令集微处理器包括 ARM、RISC-V、MIPS、PA-RISC、PowerArchitecture(包括PowerPC)、DECAlpha和SPARC等。说到这里不得不提一下ARM,全世界超过95%的智能手机和平板电脑都采用ARM架构,当前最先进的华为的海思麒麟980 CPU,高通的骁龙855 CPU,苹果的A12 CPU也都属于ARM架构。ARM可以说是目前世界上使用最广泛的CPU架构了。

CISC复杂指令集:x86,x86_64等厂家的CPU,RISC精简指令集:ARM,RISC-V,MIPS架构的厂家的CPU.

当前CPU的两大架构是 CISC(复杂指令集) 和 RISC(精简指令集),x86 是 CISC 的代表架构,占领了95%以上的桌面计算机和服务器市场。ARM作为 RISC 的一种,在智能手机,可穿戴设备等移动处理器市场占领主要地位,针对物联网,5G,AI等新兴领域,RISC-V,MIPS 两大精简指令集架构再次登上历史舞台。

RISC-V:1980年加州大学伯克利分校(Berkeley)的David Patterson(大卫帕特森)教授主导了Berkeley RISC项目并设计了其第一代的处理器RISC I.2010年KrsteAsanovic(克斯特·阿萨诺维奇)教授带领的团队大约花了四年时间,设计和开发了一套完整的新的指令集,这个新的指令集叫做RSC-V这是Berkeley从RISC I开始设计的第五代指令集架构,V还代表了变化(variation)和向量(vectors)AIlG-V架构使用BSD开源协议给予使用者很大自由,允许使用者修改和重新发布开源代码,也允许基于开源代码开发商业软件发布和销售。

MPS是一种RISC处理器,它最早是在80年代初期由斯坦福(Stanford)大学Joh L.Hennessy(约翰·亨利斯)教授领导的研究小组研制出来的.MIPS是出现最早的商业RISC架构芯片之一,2018年3月21日美国计算机协会(ACM)宣布将2017年度的图灵奖颁给了芯片界的两位大师;曾任斯坦福大学校长的ohn L.Hfennessy和曾任加州大学伯克利分校教授的David A.Patterson。
MIPS计算机系统公司创建于1984年,最初的目的是将斯坦福大学MIPS CPU小组的研究成功商业化,商用MIPS CPU增强了内存管理硬件,并于1985年末作为R.2000面世,其后又相继推出了R3000、R4000、R10000等多款处理器。

CPU类型

  • x86:CISC
  • ARM:Acorn RISC Machine 高通,华为麒麟
  • RISC-V:阿里玄铁910
  • MIPS:龙芯
  • Power:IBM
  • Powerrpc:Apple,IBM,Moto
  • Ultrasparc:Sun
  • Alpha:HP
  • 安腾:compaq

服务器CPU公司

  • Intel:
    • Xeon:至强
    • Itanium:安腾
  • AMD:Althlon MP
  • IBM:Power

按照CPU体系架构来区分,服务器主要分为两类:
X86服务器:采用CISC(复杂指令集)架构服务殿,即通常所讲的PC服务器,它是基于PC机体系结构,使用lntel或其它兼容x86指令集的处理瞧芯片的服务器。目前主要为intel的Xeon E5,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高

非X86服务器:采用RlSC(精简指令集)或EPIC(并行指令代码)处理器,主要采用UNIX和其它专用操作系统的服务器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc,Compaq的Alpha、HP的PA-RISC、intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统

微处理器
1971年11月15日,Intel公司的工程师特德·霍夫发明了世界上第一个微处理器—4004,这款4位微处理器虽然只有45条指令,而且每秒只能执行5万条指令。性能很低,但是它的集成度却很高很多,一块4004的重量还不到一盎司。Intel从8086开始,就进入了我们常说的X86时代。而且80386的诞生则标志着Intel正是进入了32位微处理器的时代。从80386到Pentium 4这个年代的CPU,就是传说中的IA-32时代。

X86-64(又称X64,即英文词64-bit extended,64位拓展的简写)是X86架构的64拓展,向后兼容于16位及32位的X86架构。X64于1999年由AMD设计,AMD首次公开64位集以扩展给X86,称为“AMD64”。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“Clackamas Technology”(CT)、“IA-32e”及“EM64T”。(2^32的数字)

Intel公司的CPU发展历程
image.png
CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒钟内发生的同步脉冲数)的简称,单位时Hz,一般来说,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样。
外频:系统总线的工作频率(主板),CPU与外部(主板芯片组)交换数据,指令的工作时钟频率。
倍频:倍频则是指CPU外频与主频相差的倍数
三者关系是:主频 = 外频 × 倍频
高速缓存(Cache):缓存是将慢速设备的数据放在高速的缓存中,当需要访问这些数据时,则直接访问高速的缓存。高速交换的存储器,CPU缓存分为一级,二级,三级缓存,即L1、L2、L3。
内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与二级(L2)高速缓存和内存之间的通信速度
地址总线宽度:决定了CPU可以访问的物理地址空间。

$ lscpu
...
L1d cache:             32K # 数据缓存
L1i cache:             32K # 指令缓存
L2 cache:              4096K  # 二级缓存
L3 cache:              16384K # 三级缓存
### 一级缓存最快,但容量最小;三级缓存最慢,但容量最大;二级缓存介于一级缓存和三级缓存之间。

1.1.6.2 服务器硬件——主板

image.png
主板mainboard,安装在机箱内,是计算机最基本的也是最重要的部件之一
主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。

1.1.6.3 服务器硬件——内存

image.png
内存是介于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路 内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快 计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大
外存:硬盘,U盘,软盘,光盘
内存和外存的区别:

  • 内存断电后数据丢失;
  • 外存断电后数据可以保存;

服务器内存常用技术:
1、在线备用内存技术

  • 当主内存或者是扩展内存中的内存出现多位错误时或者出现物理内存故障时,服务器仍然继续运行;
  • 由备用内存接替出现故障内存的工作;
  • 备用的内存区域必须比其他区域的容量要大或者相同。

2、内存镜像

  • 镜像为系统在出现多位错误时或者内存物理故障时提供数据保护功能,以保证系统仍然正常的运行;
  • 数据同时写入两个镜像的内存区域;
  • 从一个区域进行数据的读取。

容量:即该内存的存储容量,单位一般为GB。
内存带宽:
内存带宽是指内存与北桥芯片之间的数据传输率;
单通道内存控制器一般都是64-bit的,8 个二进制位相当于 1 个字节,换算成字节时64 / 8 = 8,在乘以内存的运行频率,如果时双通道内存就要再乘以 2。

计算公式:内存带宽 = 内存总线频率 × 数据总线位数 / 8
范例:

单通道 DDR(Double Data Rate 双倍速率)内存带宽计算(1 Byte字节 = 8 bit位):
DDR4-4000:4000MHz × 64 bit / 8 = 32000 MB/S
DDR4-3600:3600MHz × 64 bit / 8 = 28800 MB/S

双通道 DDR:
DDR4-40000:4000MHz × 64 bit / 8 × 2 = 64000 MB/S

1.1.6.4 服务器硬件——硬盘

1 计算机基础和Linux安装 - 图24
常见的磁盘接口种类:

  • IDE:Intergrated Drive Electronics,电子集成 | 驱动器,早期家用电脑常用接口
  • SCSI:Small Computer System Interface,小型计算机系统接口,早期服务器常用接口
  • SATA:Serial ATA(Advanced Technology Attachment 高技术配置),家用电脑常用接口
  • SAS:Serial Attached SCSI,是目前服务器上主流的接口
  • 光纤通道:Fiber Channel,高性能服务器上采用的接口
  • M.2:固态硬盘接口,性能更强。

结构分类:

  • 机械硬盘HDD(Hard State Drivers)
  • 固态硬盘SSD(Solid State Drivers)

机械硬盘:

  • 存储介质(Media)——盘片
    • 盘片的基板是金属或者玻璃材质制成,为达到高密度高稳定的质量,基板要求表面光滑平整,不可有任何瑕疵。
  • 读写磁头(Read Write Head)——磁头
    • 磁头是磁盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转换为电信号向外传输。
  • 马达(Spindle Motor & Voice Coil Motor)
    • 马达上装有一至多片盘片,以7200,10000,15000 RPM(每分钟的转速)等定速旋转,为保持其平衡不可抖动,所以其质量要求严谨,不可产生高温噪音。

机械硬盘基本参数:

  • 容量:容量是硬盘最主要的参数,单位有MB,GB,TB,常见容量:500GB,1T,2T,3T,4T,6T。
  • 转速:转速是指硬盘盘片每分钟转动的圈数,单位为RPM,常见:7200RPM,10000RPM,15000RPM
  • 传输速率:参数速率(Data Transfer Rate),硬盘的数据传输率是指硬盘读写数据的速度,单位为兆字节每秒(MB/s),常见:6Gb/s,12Gb/s
  • 缓存:硬盘缓存的目的是为了解决系统前后级读写速度不匹配的问题,以提高硬盘的读写速度
  • 磁盘尺寸:3.5″ / 2.5″ / 1.8″
  • 是否支持热插拔

SSD硬盘:
SSD,即固态硬盘,泛指使用NAND Flash组成的固态硬盘,其特别之处在于没有机械结构,以区块写入和抹除的方式作读写的功能,因此在读写的效率上,非常依赖读写技术上的设计SSD读写存取速度快,性能稳定,防震性高,发热低,耐低温,电耗低,无噪音。因为没有机械部分,所以长时间使用也出现故障几率也较小。缺点:价格高,容量小,相对普通机械硬盘性价比低,固态硬盘芯片一旦损坏,数据就没有恢复可能。

1.1.6.5 服务器硬件——网卡

image.png
服务器都在主板上集成了网卡,传输速率为1 Gbps,即千兆网卡;
特殊应用需要高端网卡,如光纤网卡,Infiniband网卡, 传输速率能到达10 Gbps,20Gbps,即万兆网卡。

1.1.6.6 服务器硬件——相关其他硬件

服务器硬件——远程管理卡
IPMM是智能型平台管理接口(Inteligent Platform Management lnterface)的缩写,是管理基于Intel结构的企业系统中所使用的外围设备采用的一种工业标准.该标准由英特尔、惠普、NEC、美国戴尔电脑和SuperMicro等公司制定。用户可以利用IPM监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。而且更为重要的是IPMI是一个开放的免费标准,用户无需为使用该标准而支付额外的费用。

IPMI定义管理员如何监测系统硬件和传感器、控制系统组件和检索重要系统事件的日志以进行远程管理和恢复。

自1998年,IPM论坛创建了IPMI标准依赖,其已经得到了170多家供应商的支持,这使得其逐渐成为了一个完整地包括服务器和其他系统(如存储设备、网络和通信设备)的硬件管理规范.

远程管理卡就是基于IPMI实现的服务器特有的远程管理部件,在家用电脑及笔记本电脑上是不存在的。
远程管理卡是安装在服务器上的硬件设备,提供一个以太网接口,使它可以连接到局域网内,提供远程访问。这种远程管理基于BMC(基板管理控制器),由集成在管理卡上的系统微处理器负责监测和管理操作系统之外的服务器环境和状态。它既不会占用服务器系统资源,也不会影响服务器系统的运行。

早期(2010年以前),服务器托管在JDC机房,一旦出现问题,还得跑机房或者请机房的人管理。有了远程管理卡之后,运维人员管理服务器的效率就大大的提高了。

远程管理卡有服务器自带的和独立的两类。服务器自带的远程管理卡,可以关机、开机,但是看不到开关服务器的过程。所以,建议给服务器配备独立的远程管理卡,可能会多花100多块钱的样子,但是,当服务器出现问题,就不需要打车或者出差,也不用给机房人员打电话了,可以利用远程管理卡快速直看服务器故障并恢复服务。

各个服务器厂商都提供了符合IPMI标准的远程管理接口,比如Dell的iDRAC,惠普的ILO等。浪潮的服务器IPMI卡,不过不像DELL,浪潮的服务器是出厂默认带的IPMI接口
Dell的 iDRAC(integrated Dell emote Accesscontroller)卡即是远程管理卡,相当于是附加在服务器上的一台独立运行的小型pc,通过与服务器主板上的管理芯片BMC进行通信,监控与管理服务器的硬件状态信息。它拥有自己的系统和IP地址,与服务器上的OS无关,是服务器管理员进行远程访问和管理的便利工具

服务器硬件——陈列卡
Raid 卡用来实现 RAID 的建立和重建,检测和修复多位错误,错误磁盘自动检测等功能。RAID 芯片使 CPU的资源得以释放,陈列卡把若干硬盘驱动器按照一定要求组成一个整体,由陈列控制器管理的系统;
陈列卡可以用来提高磁盘子系统的性能及可靠性;
支持的多种RAID级别,RAID0,1,5,6等;
陈列卡提供缓存及电源保护。

服务器硬件——电源
支持服务器的电力负载,支持荣誉,防止电源故障,故障预警和防止,故障之前的预防性维护,保证服务器持续运行,电源子系统包括:冗余电源和风扇。

服务器硬件——显卡
服务器都在主板上集成了显卡,但是显存容量不高,一般为16M或者32M,GPU:Graphic Processing Unit,即”图形处理器”。

服务器硬件——热插拔技术
热插拔技术,称为热交换技术(Hot Swap),允许在不关机的状态下更换故障热插拔设备,常见的热插拔设备:硬盘,电源,PCI设备,风扇等。热插拔硬盘技术与RAID技术配合起来,可以便于服务器在不关机的状态下恢复故障磁盘上的数据,同时并不影响网络用户对数据的使用。

服务器硬件——机柜
机架式服务器——服务器放置在机柜中。
通常使用的机柜是42U(约2米高)机柜(1U = 44.45mm)
外观尺寸一般为:宽度 600mm,深度 1000mm,高 2000mm。
在一个机架上,累计设备U数一般不超过26U,全1U设备部署一般不超过16台,全2U设备一般不超过12台,全4U设备一般 4 到 7 台。

服务器硬件——机架及其配件
image.png
键盘,显示器,电源控制。


1.1.6.7 服务器硬件——服务器各种硬件处理速度

服务器的性能短板:如果CPU有每秒处理1000个服务请求的能力,各种总线的负载能力能达到500个,但是网卡只能接受200个请求,而硬盘只能负担150个的话,那么这台服务器的处理能力只能是150个请求/秒,有85%的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶颈。
image.png
电脑的各个设备部件之间的延时从高到低的排列,依次是机械硬盘,固态硬盘,内存,CPU中的缓存Cache,CPU。Cache 缓存速度比 内存的速度快。
image.png
上图可以看到,CPU最快,一个时钟周期是0.3纳秒,内存访问需要120纳秒,固态硬盘访问需要50-150微妙,传统硬件访问需要1-10毫秒,网络访问最慢,都是几十毫秒。
上图最有趣的地方在于它把计算机世界的时间和人类世界的时间做了对比,常常把CPU比喻成跑得很快,但是记不住事情的阿甘”,他的一个时钟周期如果按1秒算:
内存访问就是6分钟
一次CPU上下文切换(系统调用)需要大约需要1小时
在1Gbps 的网络上传输2水的数据需要10多个小时
从SSD读取1MB的顺序数据,大约需要1ms,换算成人类时间是1个月
从磁盘读取1MB连续数据需要20ms,换算成人类时间是20个月
如果说打开一个网页可以秒开的话,那也相当于100年

对于CPU来说,这个世界真是太慢了!
存储器的层次结构
image.png
上图以层次化的方式,增加了价格信息,它展示了一个真理:世界上没有免费的午餐。存储器越往上速度越快,但是价格越来越贵,越往下速度越慢,但是价格越来越便宜。正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案
并发和多线程
CPU的速度超级快,不能老是让它闲着,要充分地压榨它!这里有两个强劲的理由:
1.人类需要多个租序”同时”运行,我们要把CPU的时间进行分片,让各个程序在CPU上轮转,造成一种多个程序同时在运行的假象,即并发。
2.当CPU遇到O操作(硬盘,网络)时,不能坐在那里干等“几个月”甚至”几年”,在等待的时候,一定要切换,去执行别的程序。
说起来简单,但是程序的切换需要保存程序执行的现场,以便以后恢复执行,于是需要一个数据结构来表示,这就是进程了。如果一个进程只有一个执行流”,如果进程去等待硬盘的操作,那这个程序就会被阻塞,无法响应用户的输了,所以必须得有多个”执行流”,即多线程。
缓存
需要持久化的数据一定要保存到硬盘中,但是硬盘超级慢,支持不了大量的并发访问,那怎么办呢?
可以把最常访问的热点数据放到CPL的缓存中嘛,其实CPU也是这么做的,但是CPU的L1,2.L3级缓存实在是太小,根本满足不了需求。于是只好退而求其次,把热点数据放到速度稍惯的内存中,于是应用程序的缓存就出现了。缓存虽然是解决了问题,但是也带来了更多的问题,例如:缓存数据和数据库数据怎么保持一致性?
缓存如果崩溃了该怎么处理?数据在一台机器的内存放不下了,要分布到多个机器上,怎么搞分布式啊,用什么算法?….
异步
对于Tomcat这样的应用服务器软件,对于每个请求都要用一个线程来处理,如果现在有一万个请求进来,Tomcat会建立1万个线程来处理吗?不会的,因为线程多了开销会很大,线程切换起来也很慢,所以它只好用个线程池来复用线程。现在假设线程池中有一千个可用线程(已经非常多了),它们都被派去访问硬盘数据库,或者发起网络调用,这是非常慢的操作,导致这一千个线程都在等待结果的返回((阻塞了),那剩下的九千个请求就没法处理了。所以后来人们就发明了新的处理办法,仅使用几个线程((例如和CPU核心数星一样),让他们疯狂运行,遇到/О操作,程序就注册一个钩子函数放在那里,然后线程就去处理别的谓求,等到I/O操作完成了,系统会给这个线程发送一个事件,线程就回过头来调用之前的钩子函数(也叫回调函数)来处理.
这就是异步,非阻塞的处理方式。nginx,Node.js等采用的都是类似的思想。
单线程
Redis使用单线程的方式来处理请求的,为什么用单线程就可以呢?它为什么不像Tomcat那样使用多线程和线程池呢?因为它面对的仅仅是内存,内存的速度在计算机的体系中仅次于CPU,比那些网络操作不知道要快到哪里去了所以这个唯一的线程就可以快速地执行内存的读写操作,完成从许多网络过来的缓存请求了。单线程还有个巨大的优势,没有竞争,不需要加锁!最新的redis6.0已经开始支持多线程了

1.2 操作系统和Linux

1.2.1 操作系统功能

OS:Operation System 操作系统,通用目的的软件程序
主要功能:

  • 硬件驱动
  • 进程管理
  • 内存管理
  • 网络管理
  • 安全管理
  • 文件管理

OS分类:

  • 服务器OS:CentOS,Ubuntu,Windows Server,AIX(小型机操作系统);
  • 桌面OS:Windows 10,Mac OS,Fedora,ArchLinux;
  • 移动设备OS:Android,IOS,AliOS,HarmonyOS(鸿蒙操作系统)

    1.2.2 操作系统相关概念

    接口:Interface,来源于电气工程学科,指的是插座与插头的连接口,起到将电与电器连接起为的功能。后来延伸到软件工程里软件包向外提供的功能模块的函数接口。所以接口是用来连接两个东西,信号转换和屏蔽细节。
    操作系统通过接口的方式,建立了用户与计算机硬件的沟通方式。用户通过调用操作系统的接口来使用计算机的各种计算服务。
    在OSI七层模型中,数据链路层与网络层之间的接口是Type(类型);网络层与传输层之间的接口是协议号;传输层与应用层之间的接口是端口号;
    为操作系统一般会提供两个重要的接口来满足用户的一些一般性的使用需求:

  • 命令行:实际上一个叫 Shell 的终端程序提供的功能,该程序底层的实质还是调用一些操作系统提供的函数。CLI

  • 窗口界面:窗口界面通过编写的窗口程序接受来自操作系统消息队列的一些鼠标、键盘动作,进而做出一些响应。GUI

ABI
Application Binary Interface,应用程序二进制接口,ABI 描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。
运行程序格式:

  • Windows:PE(Portable Executable)格式,.dll(dynamic link library),.lib
  • Linux:ELF(Executable and Linking Formate)格式,.so(shared object),.a

API
Application Programming Interface,应用程序开发端口,API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译;
POSIX:Portable Operating System Interface,可移植的操作系统接口;

  • IEEE在操作系统上定义的一系列API标准;
  • POSIX兼容的程序可在其他POSIX操作系统编译执行。

1 计算机基础和Linux安装 - 图30

用户态和内核态
image.png
计算机硬件资源都是操作系统内核进行管理的,目前操作系统都是基于多任务,多用户的。如果每个用户进程都可以随便访问操作系统内核的模块,改变状态,那整个操作系统的稳定性,安全性都大大降低。
为了将内核程序与用户程序隔离开,在硬件层面上提供了一次机制,将程序执行的状态分为了不同的级别,从 0 到 3,数字越小,访问级别越高,0代表内核态(可以管理硬件,分配硬件资源),在该特权级别下,所有内存上的数据都是可见的,可访问的。3 代表用户态,在这个特权级下,程序只能访问一部分的内核区域,只能执行一些限定的指令。

系统调用System call和函数库 Library Function
image.png
对于非一般使用需求,操作系统提供了一系列的函数调用给软件开发者,由于软件开发者来实现一些用户需要的功能。这些函数调用由于是操作系统内核提供的,为了有别于一般的函数调用,被称为系统调用,比如使用C语言进行软件开发时,经常用的 printf 函数,它的内部实际就是通过 write 这个系统调用,让操作系统内核把字符打印在屏幕上的。

用户空间和内核空间
应用程序和操作系统都需要在内存有一块空间来运行,软件都是需要存放在内存中运行,操作系统所在的内存空间被称为内核空间,应用程序所在的内存空间被称为用户空间。内核空间所占内存较小,用户空间所占内存大。
image.png
用户空间:User Space

  • 用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃,内核也不受影响;
  • 只能执行简单的运算,不能直接调用系统资源,必须通过系统调用(System Call),才能向内核发出指令。

内核空间:Kernel Space

  • 是 Linux 内核的运行空间;
  • 可以执行任意的命令,调用系统的一切资源;
  • 示例: ```basic
  • str = “www.magedu.com” //用户空间
  • x = x + 100 //用户空间
  • file.write(str) //切换到内核空间
  • y = x + 200 //切换到用户空间 ```

  • 说明:第一行和第二行都是简单的赋值运算,在 User Space 执行。第三行需要写入文件,就要切换到 Kernel Space,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就要切换回 User Space。

编程语言

  • 低级语言:计算机能理解的语言,二进制。
  • 机器语言:0 和 1
    • 汇编语言:和机器语言一一对应,与硬件相关的持有代码,驱动程序开发。
  • 中级语言:C语言,系统级应用,驱动程序
  • 高级语言:Java,Python,Go,PHP,Objective-C,C#,易语言(中文实现),应用程序开发,人类语言实现。

    1.2.3 各种操作系统

    操作系统演变

  • 单用户系统:一次只能支持一个用户程序的运行。向用户提供联机交互式的工作环境,如:DOS

  • 批处理系统:用户将一批作业提交给操作系统后就不再交互,由操作系统控制自动运行,提高系统运行效率;
  • 多道程序系统:程序控制CPU处理顺序;
  • 分时系统:提高系统利用率,操纵系统控制CPU处理顺序,多个人共用一台计算机;
  • 个人计算机:每个用户对应一个系统,廉价,方便,易用;
  • 分布式计算:每个用户对应多个系统,云计算,大数据处理。

服务器三大操作系统

  • Windows Server(商业操作系统)
  • Linux:GNU / Linux
  • Unix:1969年Ken Thompson (商业操作系统)
    • System:Bell Lab
      • AIX(IBM)
      • Solaris(SUN)
      • HP-UX(HP)
    • BSD:(BSRG)Berkeley System Distribution
      • NetBSD
      • OpenBSD
      • FreeBSD

服务器操作系统市场
image.png

1.2.4 UNIX

image.png
兼容分时系统Multics
1 计算机基础和Linux安装 - 图36
为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用,所以在1964年,由贝尔实验室(Bell),麻省理工学院(MIT)及奇异公司(GE美国通用电气公司)共同发起了Multics(多路信息计算系统)的计划,Multics计划的目的是让大型主机可以同时支持300个以上的终端机连接使用。不过,到了1969年前后,由于计划进度缓慢,资金也短缺,所以该计划虽然继续在研究,但是最终贝尔实验室还是选择了退出。
Unix的诞生
1966年从加州伯克利分校毕业的Ken Thompson加入贝尔实验室,参与了Multics系统的研发。它基于Multics开发了“Star Travel”游戏,不幸的是,1969年由于贝尔实验室退出了Multics项目,这同时意味着Ken将没有机器可以再玩这个游戏了。面对此情此景,Ken作为一个创作者的本性立刻体现了出来,于是他决定自己写一个操作系统来满足他玩游戏的需要,Ken找到一台废弃已久的老式PDP-7,并在这台机器上重写了他的游戏。在这个过程中,Ken有了一个主意,要开发一个全新的操作系统。利用PDP.7上的汇编语言,Ken只花了一个月就编写完了操作系统的内核,在这个一个月中,他一周一个内核,一个文件系统,一个编辑器和一个编译程序的完成。

1969年 Unix 雏形 UNICS:Ken Thompson 汇编语言:B语言
1973年 正式命名为 Unix:Dennis Ritchie C语言重写了UNIX,从此Unix和C语言成为了CP
1977年 BSD:Berkeley Software Distibution:伯克利大学
1979年 System V架构 版权声明:HP-UNIX IBM AIX “不对学生提供源代码” 收回版权
1984年 Minix操作系统:Andrew S.Tanenbaum 荷兰阿姆斯特丹自由大学计算机科学系。

1.2.5 GNU

1 计算机基础和Linux安装 - 图37
GNU(GNU is Not Unix):1984年由Richard Stallman发起并创建;目标是编写大量兼容于Unix系统的自由软件。
官网:http://www.gnu.org
GPL(GNU General Public License):自由软件基金会:Free Software Foundation;允许用户任意复制、传递、修改及再发布;基于自由软件修改再次发布的软件,仍然需要遵守GPL。
LGPL(Lesser General Public License),LGPL相对于GPL较为宽松,允许不公开全部源代码。

GNU操作系统:
Hurd:Hird(Hurd of Interfaces Representing Depth)of Unix-Replacing Daemons
官网:http://www.gnu.org/software/hurd/hurd.html
Richard Stallman:为了无止境寻找完美内核,而忘记了HURD的原本目的:能用的操作系统

1.2.6 Linux

1.2.6.1 Linux 历史

1 计算机基础和Linux安装 - 图38
1991年的10月5月Linux Benedict Torvalds在comp.os.minix新闻组上发布消息,正式向外宣布他自行编写的完全自由免费的内核诞生(Freeminix-like kernel sources for 386-AT)— FREAX,含义就是怪诞的,怪物,异想天开,类Unix的内核,在GPL(开源协议中最严格的许可证)下发布。
官网:http://www.kernel.org/
最早版本:https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/

Linux操作系统:
完整的类Unix操作系统;Linux内核 + GNU工具 = Linux/GNU;如CentOS,Ubuntu,Android;
image.png

Linux的内核版本组成:
内核,是基于硬件的第一层软件扩充,是操作系统的核心,提供操作系统最基础的功能,是操作系统的基础。

  • 主版本号
  • 次版本号
  • 末版本号
  • 打包版本号
  • 厂商版本

image.png

1.2.6.2 Linux 发行版

  • slackware:SUSE Linux Enterprise Server(SLSE),OpenSuse桌面
  • debian:Ubuntu,deepin(深度),mint,Kali Linux
  • redhat:
    • RHEL:RedHat Enterprise Linux,每18个月发行一个新版本;
    • CentOS:兼容RHEL的格式;(RedHat Enterprise Linux 社区版)
    • 中标麒麟:中标软件;
    • Fedora:每6个月发行一个新版本;
  • ArchLinux:轻量简洁,遵循K.I.S.S原则(Keep It Simple and Stupid),Manjaro
  • Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件
  • LFS:Linux From Scratch,自制Linux
  • Android:Kernel + Busybox(工具集)+ java虚拟机

Linux分类参考网站:http://futurist.se/gldt/
Linux发行版排名:https://distrowatch.com/dwres.php?resource=popularity
Linux发行版体验:https://distrotest.net/

1.2.6.3 RHEL

RedHat 红帽公司
Marc Ewing早在卡内基梅隆大学读书的时候就带着他祖父的红色曲球帽,Marc在Marc Ewing大学常把自己的软件命名为Red Hat — Red Hat 1,Red Hat 2用来区别他人的软件,所以当他开始自己的Linux项目,自然就会命名为Red Hat Linux。Ewing非常乐于帮助同学解决计算机问题。
1993年,Bob Young 建立 ACC 公司,营销Linux和UNIX的支持软件和书籍杂志;
1995年,Bob Young 收购了Marc Ewing的业务,合并后的ACC公司成为新的Red Hat软件公司,发布了Red Hat Linux 2.0;
2018年10月29日,IBM宣布将以约340亿美元收工开源软件和技术主要供应商红帽公司。
红帽发行版本
Red Hat Linux 1.0(Mother’s Day)1994年11月03日
Red Hat Linux 2.0 1995年09月20日
Red Hat Linux 3.0(Picasso)1996年05月01日
Red Hat Linux 4.0(Colgate)1996年10月08日
Red Hat Linux 5.0(Hurricane)1997年12月01日
Red Hat Linux 6.0(Hedwig)1999年04月26日
Red Hat Linux 6.2(Zoot)Red Hat Linux 6.2E 2000年04月03日
Red Hat Linux 7.0(Guinness)2000年03月27日
Red Hat Linux 7.2(Enigma)Red Hat Enterprise Linux 2 2001年10月22日
Red Hat Linux 8.0(Psyche)2002年09月30日
Red Hat Linux 9.0(Shrike)2003年03月31日
Red Hat Enterprise Linux 3.0(Taroon)Fedora 1(Yarrow)2003年10月22日
Red Hat Enterprise Linux 4.0 2005年02月15日
Red Hat Enterprise Linux 5.0(Tikanga)2007年03月14日
Red Hat Enterprise Linux 6.0(Santiago)2010年11月10日
Red Hat Enterprise Linux 7.0(Maipo)2014年06月10日
Red Hat Enterprise Linux 8.0 2019年05月07日

1.2.6.4 CentOS和Rockey Linux

1 计算机基础和Linux安装 - 图41

2004年,Gregory Kurtzer和Centos的其他创始成员基于开源的RHEL创建了centos,将Enterprise Linux引入了社区。

2014年,红帽宣布正式赞助cento5。 centos的几个核心团队入职Red Hat专门负责其开发。
并在Red Hat在理事会中占了三席,但是其社区属性得到保留,交易结果是一部分包括将centos商标和IP转移到Red Hat以安全保存。

Centos 8于2019年9月文付,紧随RHEL 8之后,centos Stream的发布和发布是对下一个次要更新中即将发布内容预览版本。
可以说是RHEL的eta频道。

2019,巨头IBA花重资收购了Red Hat。并承诺Red Hat忠于其开源根基不会改变,声称”Red Hat对开源的使命和坚定承诺将保持不变。"

2020年12月8日1BM宣布将惯例支持到2029年cento 8,提前在2年内就终结,唯一的升级途径是centos Strea-AX.a, RHEL的Beta发布,并建议不再生产环境中使用。
预方着centos可能会正式死亡。Centos已死,但是centos精神将会永存。

随后以Centos创始人之一Gregory Kurtzer为首,8小时内250人啸聚网络,计划以创建Rocky Linux (Rocky为已经逝世的另外一个CentOS创始人)取代CentOS,
Rocky Linux与RHEL兼容
目前已经创建了Github Rocky Linux项目组织(github.com/rocky-1inux/rocky)和官网(rockylinux.org)。

image.png

1.2.7 开源Open Source

1998年的2月5日,一场小型聚会在美国加州的VA研究中心举行,与会的人包括了一众信息技术领域的知名学者和工程师。正是在这场会上,大家同意了Christine Peterson 女士提出的用”开放源代码”(Open Source)一词来替代容易在英语人士中引起歧义的”自由软件”(Free Software)一词,表达的是同样的软件和意思,但更方便理解更容易获取更多支持。从那一天开始,“开源”正式诞生。
image.png
开源Open Source:

  • 软件和源代码提供给所有人,自由分发软件和源代码;
  • 能够修改和创建衍生作品;

软件分类:

  • 商业;收费,源码也不公开
  • 共享;免费使用,但源码不公开
  • 自由 free;源代码公开

开源协议:
1 计算机基础和Linux安装 - 图44
世界上的开源许可证,大概有上百种;协议中最严格的许可证为GPL许可证;最松的许可证为MIT许可证。

  • GPLv2,GPLv3,LGPL(lesser):通用公共许可 CopyLeft
  • Apache:Apache
  • BSD:BSD
  • Mozilla
  • MIT:十分宽松的许可证协议。

    2 Linux 安装

    2.1 Linux哲学思想

  • 一切都是一个文件(包括硬件);Windows一切都是图形。

  • 小型,单一用途的程序
  • 链接程序,共同完成复杂的任务
  • 避免令人困惑的用户界面
  • 配置数据存储在文本中

    2.2 Linux 生产主流版本

    Linux 各种版本
    CentOS 各版本介绍
    维基解释:https://zh.wikipedia.org/wiki/CentOS
    官方站点:www.centos.org

RHEL 各版本介绍
维基解释:https://zh.wikipedia.org/wiki/Red_Hat_Enterprise_Linux

Ubuntu 各版本介绍
维基解释:https://zh.wikipedia.org/wiki/Ubuntu
https://blog.csdn.net/songfulu/article/details/85310273

获取发行版
CentOS:
https://wiki.centos.org/Download
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
https://mirrors.tuna.tsinghua.edu.com/centos/

Ubuntu:
Server版本(没有GUI):
http://cdimage.ubuntu.com/release/
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/releases/
Desktop版本(有GUI):
http://release.ubuntu.com/
https://mirrors.aliyun.com/ubuntu/
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/

2.3 安装Linux系统

2.3.1 Linux安装前准备

虚拟机:用软件(如Vmware,Virtualbox等)模拟硬件,方便实验的灵活配置
image.png
虚拟化软件,建议使用Vmware Workstation

CPU:默认,2核或者更多
内存:1G以上,推荐2G
硬盘:一块硬盘,200G
网卡:桥接或者仅主机模式
光盘:挂载对应的版本的ISO文件
主分区+扩展分区<=4
逻辑分区属于扩展分区中的小的分区。

打开虚拟化功能
在很多家用台式机和笔记本电脑上,虚拟化功能默认是关闭的,再要打开才能使用VMware等虚拟化软件,进入到对应的主板BIOS开启虚拟化功能。根据主板和处理器型号进行搜索解决。
Intel:Intel Virtualization Technology 虚拟化功能打开
AMD:SVM Mode 虚拟化功能打开

2.3.2 安装CentOS

初始化操作系统的分区计划 总容量为:200G / 100G —> xfs /boot 1G —> ext4 /data 50G —> xfs swap 2G

2.3.2.1 针对CentOS 8 创建虚拟机环境

打开VMware Workstation后创建虚拟机,根据安装虚拟机向导进行配置虚拟机安装

2.3.2.2 安装CentOS 8

根据操作系统的ISO镜像进行安装,安装配置根据向导进行安装。

2.3.3 安装Ubuntu

2.3.3.1 针对Ubuntu18.04 创建虚拟机环境

打开VMware Workstation后创建虚拟机,根据安装虚拟机向导进行配置虚拟机安装

2.3.3.2 安装Ubuntu18.04

根据操作系统的ISO镜像进行安装,安装配置根据向导进行安装。
注意:安装Ubuntu时一定要在安装中选择”安装 SSH 软件”

2.3.3 Linux系统目录结构

image.png

  • /bin:该目录是 Binaries(二进制文件)的缩写,这个目录是存放最经常使用的命令
  • /boot:该目录是存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • /dev:该目录是 Device(设备)的缩写,该目录是存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc:该目录是存放所有系统管理所需要的配置文件和子目录
  • /home:用户的主目录,在Linux系统中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名。
  • /lib:该目录是 Library(库)的缩写,这个目录是存放系统最基本的动态连接共享库。
  • /lost+found:当系统非法关机后,就会存放相应的日志文件。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统。
  • /opt:系统给主机额外安装软件所摆放的目录
  • /proc:是 Processes(进程)的缩写,是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是虚拟的目录,它是系统内存的映射,通过直接访问这个目录获取系统信息。
    这个目录的内容不在硬盘上而是在内存中,可以通过修改里面的某些文件,比如可以通过命令来屏蔽主机的ping命令,使得别人无法ping你的机器。
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root:该目录为系统管理员,也称作超级权限者的用户家目录
  • /run:是一个临时文件系统,存储系统启动以来的消息。当系统重启时,这个目录下的文件一个被删除和清除。
  • /sbin:s 是 Super User 的意思,是 Superuser Binaries(超级管理员的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序。
  • /selinux:这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于Windows的防火墙。
  • /srv:该目录是存放一些服务启动之后需要提取的数据
  • /tmp:是 Temporary(临时)的缩写这个目录是用来存放一些临时文件的。
  • /sys:该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
  • /usr:是Unix Shared Resources(共享资源)的缩写,该目录是用户的很多用户程序和文件都存放的目录,类似于Windows下的 Program Files 目录。
  • /usr/bin:系统用户使用的应用程序
  • /usr/sbin:超级用户使用比较高级的管理程序和系统守护程序
  • /var:是 Variable(变量)的缩写,这个目前存放着不断扩充着的东西,包括各种日志文件。