SRE运维工程师笔记-计算机基础

计算机基础

内容概述

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

1. 计算机系统

计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。
计算机有很多形式,比如:生活中常见的家用电脑,笔记本,智能手机,平板电脑等,还有生产环境中提供重要业务支撑的各种服务器(Server),都算是计算机。
其中一个完整的计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成 。

1.1 计算机硬件

在这里插入图片描述 计算机发展历史:

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

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

1.1.2 冯·诺依曼体系结构

在这里插入图片描述1946年美籍匈牙利数学家冯·诺依曼于提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺依曼体系结构冯·诺依曼理论的要点是:

  • 数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
  • 计算机应该按照程序顺序执行
  • 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成
1.1.2.1 二进制和十进制转换
  • 2^0=1=1b
  • 2^1=2=10b
  • 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 1024G
  • 10的 9次方 G 二进制 2^30 1024M
  • 10的 6次方 M 二进制 2^20 1024K
  • 10的 3次方 K 二进制 2^10=1024
  • 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
    范例:十进制和二进制互相转换
[root@CentOS-7 ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2*3
6
obase=2
168
10101000
ibase=2
1010
10
quit

范例:进制转换

#十进制转二进制:echo "obase=2;255" | bc
#八进制转十进制:echo "obase=10;ibase=8;377" | bc
#二进制转十进制:echo "obase=10;ibase=2;11111111" | bc
#二进制转16进制:echo "obase=16;ibase=2;11111111" | bc
[root@CentOS-7 ~]# echo "obase=2;255" | bc
11111111
[root@CentOS-7 ~]# echo "obase=10;ibase=8;377" | bc
255
[root@CentOS-7 ~]# echo "obase=10;ibase=2;11111111" | bc
255
[root@CentOS-7 ~]# echo "obase=16;ibase=2;11111111"|bc
FF
[root@CentOS-7 ~]# echo "ibase=2;obase=16;11111111"|bc
100110

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

[root@CentOS-7 ~]# getconf LONG_BIT
64
du@ubuntu18:~$ getconf LONG_BIT
64
[root@CentOS-7 ~]# arch
x86_64
du@ubuntu18:~$ arch
x86_64
1.1.3 摩尔定律

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

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 服务器按外形分类

PC服务器常见的三种外型:

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

塔式服务器

  • 早期的服务器形式,目前较少使用
  • 外形以及结构和平时使用的立式PC差不多
  • 机箱空间大,主板扩展性较强,插槽较多
  • 预留了足够的内部空间,以便日后进行硬盘和电源的冗余扩展,设计一般都考虑降噪

刀片式Blade服务器

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

机架式Rack服务器

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

在这里插入图片描述
上图为数据中心,有许多硬件设备,大体上可以分为三类:服务器,网络设备和存储设备,图中这一排
排的就是机柜,我们平时所谓的服务器、网络交换机和存储等设备都放在这里面。

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

逻辑拓扑
在这里插入图片描述复杂的结构物理拓扑图可简化为逻辑图

1.1.6 服务器硬件组成

在这里插入图片描述服务器配置参考(参考价格47588)
在这里插入图片描述

1.1.6.1 服务器硬件—CPU

CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要的部分
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架构,当前最先进的华为的海思麒麟990 CPU,高通的骁龙865 CPU,苹果的A13 CPU也都属于ARM架构。ARM可以说是目前世界上使用最广泛的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年,Krste Asanovic(克斯特·阿萨诺维奇)教授带领的团队
大约花了四年时间,设计和开发了一套完整的新的指令集,这个新的指令集叫做RISC-V,这是Berkeley从
RISC I开始设计的第五代指令集架构,V还代表了变化(variation)和向量(vectors),RISC-V架构使用BSD开
源协议给予使用者很大自由,允许使用者修改和重新发布开源代码,也允许基于开源代码开发商业软件
发布和销售。
MIPS是一种RISC处理器,它最早是在80年代初期由斯坦福(Stanford)大学John L. Hennessy(约翰·亨利斯)教授领导的研究小组研制出来的,MIPS是出现最早的商业RISC架构芯片之一,2018年3月21日美国计算机协会(ACM)宣布将2017年度的图灵奖颁给了芯片界的两位大师:曾任斯坦福大学校长的John L.
Hennessy和曾任加州大学伯克利分校教授的David A. Patterson。
MIPS计算机系统公司创建于1984年,最初的目的是将斯坦福大学MIPS CPU小组的研究成功商业化,商用MIPS CPU增强了内存管理硬件,并于1985年末作为R2000面世,其后又相继推出了R3000、
R4000、R10000等多款处理器。

CPU类型

  • X86:CISC
  • ARM:Acorn RISC Machine 高通,华为麒麟
  • RISC-V 阿里玄铁910
  • MIPS 龙芯
  • Power:IBM
  • Powerpc:apple,ibm,moto
  • Ultrasparc :Sun
  • Alpha:HP
  • 安腾:compaq

服务器CPU公司

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

按照CPU体系架构来区分,服务器主要分为两类:
x86服务器:采用CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高
非x86服务器:采用RISC(精简指令集)或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”,在之前曾使用过“ClackamasTechnology” (CT)、“IA-32e”及“EM64T”
Intel公司的CPU发展历程
在这里插入图片描述CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样
外频:系统总线的工作频率, CPU与外部(主板芯片组)交换数据、指令的工作时钟频率
倍频:倍频则是指CPU外频与主频相差的倍数
三者关系是:主频=外频x倍频
高速缓存(cache):高速交换的存储器。CPU缓存分为一级,二级,三级缓存,即L1,L2,L3
内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与二级(L2)高速缓存和内存之间的通信速度
地址总线宽度:决定了CPU可以访问的物理地址空间

1.1.6.2 服务器硬件—主板

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

1.1.6.3 服务器硬件—内存

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

内存和外存的区别:

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

服务器内存常用技术:

1、在线备用内存技术

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

2 、内存镜像

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

容量:即该内存的存储容量,单位一般为GB

内存带宽:
内存带宽是指内存与北桥芯片之间的数据传输率,B byte 字节 b bit位
单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是双通道内存就要再乘以2
计算公式: 内存带宽=内存总线频率×数据总线位数/8

范例:

单通道DDR(Double Data Rate双倍速率)内存带宽计算
DDR4-4000:4000MHz64bit/8=32000MB/S
DDR4-3600:3600MHz
64bit/8=28800MB/S
双通道:
DDR4-4000:4000MHz64bit2/8=64000MB/S

1.1.6.4 服务器硬件—硬盘

常见的磁盘接口种类:

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

结构分类:

  • 机械硬盘HDD(Hard Disk Drive)
  • 固态硬盘SSD(Solid State Drives )

机械硬盘:

  • 存储介质(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 服务器硬件—网卡

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

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

服务器硬件—远程管理卡
IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel
结构的企业系统中所使用的外围设备采用的一种工业标准,该标准由英特尔、惠普、NEC、美国戴尔电
脑和SuperMicro等公司制定。用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工
作状态、电源状态等。而且更为重要的是IPMI是一个开放的免费标准,用户无需为使用该标准而支付额
外的费用。
IPMI 定义管理员如何监测系统硬件和传感器、控制系统组件和检索重要系统事件的日志以进行远程管
理和恢复。
自1998 年,IPMI论坛创建了IPMI标准依赖,其已经得到了170 多家供应商的支持,这使得其逐渐成为
了一个完整地包括服务器和其他系统(如存储设备、网络和通信设备)的硬件管理规范.
远程管理卡就是基于IPMI实现的服务器特有的远程管理部件,在家用电脑及笔记本电脑上是不存在的。
远程管理卡是安装在服务器上的硬件设备,提供一个以太网接口,使它可以连接到局域网内,提供远程
访问。这种远程管理基于BMC(基板管理控制器),由集成在管理卡上的系统微处理器负责监测和管理
操作系统之外的服务器环境和状态。它既不会占用服务器系统资源,也不会影响服务器系统的运行。
早期(2010年以前),服务器托管在IDC机房,一旦出现问题,还得跑机房或者请机房的人管理。有了
远程管理卡之后,运维人员管理服务器的效率就大大的提高了。
远程管理卡有服务器自带的和独立的两类。服务器自带的远程管理卡,可以关机、开机,但是看不到开
关服务器的过程。所以,建议给服务器配备独立的远程管理卡,可能会多花100多块钱的样子,但是,
当服务器出现问题,就不需要打车或者出差,也不用给机房人员打电话了,可以利用远程管理卡快速查
看服务器故障并恢复服务。
各个服务器厂商都提供了符合IPMI标准的远程管理接口,比如Dell的iDRAC,惠普的ILO等
在这里插入图片描述
上图是浪潮的服务器IPMI卡,不过不像DELL,浪潮的服务器是出厂默认带的IPMI接口
在这里插入图片描述上图为Dell的 iDRAC((integrated Dell Remote Access Controller))卡即是远程管理卡, 相当于是附加在
服务器上的一台独立运行的小型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)
外观尺寸一般为:宽600深1000高2000(mm)
在一个机架上,累计设备U数一般不超过26U,全1U设备部署数量一般不超过16台,全2U设备一般不超过12台,全4U设备一般4到7台

机架式服务器-机架及其配件
在这里插入图片描述

1.1.6.7 各种硬件处理速度和性能优化

服务器的性能短板:如果CPU有每秒处理1000个服务请求的能力,各种总线的负载能力能达到500个,但网卡只能接受200个请求,而硬盘只能负担150个的话,那这台服务器得处理能力只能是150个请求/秒,有85%的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶颈
在这里插入图片描述电脑的各个设备部件之间的延时从高到底的排列,依次是机械硬盘、固态硬盘、内存、CPU
在这里插入图片描述上图可以看到,CPU最快,一个时钟周期是0.3纳秒,内存访问需要120纳秒,固态硬盘访问需要50-150微秒,传统硬盘访问需要1-10毫秒, 网络访问最慢,都是几十毫秒。
上图最有趣的地方在于它把计算机世界的时间和人类世界的时间做了对比,常常把CPU比喻成跑得很快,但是记不住事情的“阿甘”, 他的一个时钟周期如果按1秒算:
内存访问就是6分钟
一次 CPU 上下文切换(系统调用)需要大约需要1小时
在 1Gbps 的网络上传输 2K 的数据需要10多个小时
从 SSD 读取 1MB 的顺序数据,大约需要 1ms,换算成人类时间是 1个月
从磁盘读取 1MB 连续数据需要 20ms,换算成人类时间是 20个月
如果说打开一个网页可以秒开的话,那也相当于100年
对于CPU来说,这个世界真是太慢了!
存储器的层次结构
在这里插入图片描述上图以层次化的方式,增加了价格信息,它展示了一个真理:世界上没有免费的午餐。存储器越往上速度越快,但是价格越来越贵, 越往下速度越慢,但是价格越来越便宜。正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案

并发和多线程
CPU的速度超级快,不能老是让它闲着,要充分地压榨它!这里有两个强劲的理由:

  1. 人类需要多个程序“同时”运行,我们要把CPU的时间进行分片,让各个程序在CPU上轮转,造成一种多个程序同时在运行的假象,即并发
  2. 当CPU遇到IO操作(硬盘,网络)时,不能坐在那里干等“几个月”甚至“几年”,在等待的时候,一定要切换,去执行别的程序。

说起来简单,但是程序的切换需要保存程序执行的现场,以便以后恢复执行,于是需要一个数据结构来表示,这就是进程了。如果一个进程只有一个“执行流”, 如果进程去等待硬盘的操作,那这个程序就会被阻塞,无法响应用户的输入了,所以必须得有多个“执行流”,即多线程

缓存
需要持久化的数据一定要保存到硬盘中,但是硬盘超级慢,支持不了大量的并发访问,那怎么办呢?

可以把最常访问的热点数据放到CPU的缓存中嘛, 其实CPU也是这么做的,但是CPU的L1, L2, L3级缓存实在是太小, 根本满足不了需求。于是只好退而求其次,把热点数据放到速度稍慢的内存中,于是应用程序的缓存就出现了。缓存虽然是解决了问题,但是也带来了更多的问题,例如:缓存数据和数据库数据怎么保持一致性?

缓存如果崩溃了该怎么处理?数据在一台机器的内存放不下了,要分布到多个机器上,怎么搞分布式啊,用什么算法?…

异步
对于Tomcat这样的应用服务器,对于每个请求都要用一个线程来处理,如果现在有一万个请求进来,Tomcat会建立1万个线程来处理吗? 不会的,因为线程多了开销会很大 ,线程切换起来也很慢,所以它只好用个线程池来复用线程。现在假设线程池中有一千个可用线程(已经非常多了),它们都被派去访问硬盘,数据库,或者发起网络调用,这是非常慢的操作,导致这一千个线程都在等待结果的返回(阻塞了),那剩下的九千个请求就没法处理了,对吧?所以后来人们就发明了新的处理办法,仅使用几个线程(例如和CPU核心数量一样),让他们疯狂运行,遇到I/O操作,程序就注册一个钩子函数放在那里,然后线程就去处理别的请求,等到I/O操作完成了,系统会给这个线程发送一个事件, 线程就回过头来调用之前的钩子函数(也叫回调函数)来处理。
这就是异步,非阻塞的处理方式。nginx,Node.js等采用的都是类似的思想。

单线程
Redis使用单线程的方式来处理请求的,为什么用单线程就可以呢? 它为什么不像Tomcat那样使用多线程和线程池呢?因为它面对的仅仅是内存,内存的速度在计算机的体系中仅次于CPU,比那些网络操作不知道要快到哪里去了所以这个唯一的线程就可以快速地执行内存的读写操作,完成从许多网络过来的缓存请求了。单线程还有个巨大的优势,没有竞争,不需要加锁!

1.2 操作系统

1.2.1 操作系统功能

OS: Operating System 操作系统,通用目的的软件程序
在这里插入图片描述
主要功能:

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

OS分类:

  • 服务器OS:CentOS,Ubuntu,Windows Server,AIX
  • 桌面OS:Windows 10,Mac OS,Fedora
  • 移动设备OS:Andriod,IOS,AliOS,HarmonyOS
1.2.2 操作系统相关概念

接口:interface,来源于电气工程学科,指的是插座与插头的连接口,起到将电与电器连接起为的功能。后来延伸到软件工程里指软件包向外提供的功能模块的函数接口。所以接口是用来连接两个东西、信号转换和屏蔽细节
操作系统通过接口的方式,建立了用户与计算机硬件的沟通方式。用户通过调用操作系统的接口来使用计算机的各种计算服务。
为操作系统一般会提供两个重要的接口,来满足用户的一些一般性的使用需求:

  • 命令行:实际是一个叫shell的终端程序提供的功能,该程序底层的实质还是调用一些操作系统提供的函数
  • 窗口界面:窗口界面通过编写的窗口程序接收来自操作系统消息队列的一些鼠标、键盘动作,进而做出一些响应

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

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

API
Application Programming Interface,应用程序开发接口,API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译

POSIX: Portable Operating System Interface 可移植的操作系统接口
IEEE在操作系统上定义的一系列API标准
POSIX兼容的程序可在其它POSIX操作系统编译执行

用户态和内核态
在这里插入图片描述计算机硬件资源都是操作系统内核进行管理的,目前操作系统都是基于多任务、多用户的。如果每个用户进程都可以随便访问操作系统内核的模块,改变状态,那整个操作系统的稳定性、安全性都大大降低,为了将内核程序与用户程序隔离开,在硬件层面上提供了一次机制,将程序执行的状态分为了不同的级别,从0到3,数字越小,访问级别越高。0代表内核态,在该特权级别下,所有内存上的数据都是可见的,可访问的。3代表用户态,在这个特权级下,程序只能访问一部分的内存区域,只能执行一些限定的指令
系统调用system call和函数库Library function
在这里插入图片描述对于非一般性使用需求,操作系统提供了一系列的函数调用给软件开发者,由软件开发者来实现一些用户需要的功能。这些函数调用由于是操作系统内核提供的,为了有别于一般的函数调用,被称为系统调用。比如使用C语言进行软件开发时,经常用的printf函数,它的内部实际就是通过write这个系统调用,让操作系统内核把字符打印在屏幕上的

用户和内核空间
在这里插入图片描述用户空间:User space
用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃内核也不受影响
只能执行简单的运算,不能直接调用系统资源,必须通过系统接口( system call),才能向内核发出指令

内核空间:Kernel space
是 Linux 内核的运行空间
可以执行任意命令,调用系统的一切资源

范例:

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:
  • 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

服务器操作系统市场
在这里插入图片描述

1.2.4 UNIX历史

在这里插入图片描述
兼容分时系统 Multics
在这里插入图片描述为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用,所以在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语言
  • 1977 BSD
    • Berkeley Software Distribution 伯克利大学
  • 1979 System V架构 版权声明
    • HP-UNIX IBM AIX “不对学生提供源码” 收回版权
  • 1984年 Minix操作系统
    • Andrew S. Tanenbaum 荷兰阿姆斯特丹自由大学计算机科学系
1.2.5 GNU

GNU:GNU is Not Unix
1984年由Richard Stallman发起并创建
目标是编写大量兼容于Unix系统的自由软件
官方链接: link.
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
官网链接: link.
richard Stallman 为了无止境寻找完美内核,而忘记了HURD的原本目的:能用的操作系统

1.2.6 Linux

1991年的10月5日Linus Benedict Torvalds在comp.os.minix 新闻组上发布消息,正式向外宣布他自行编写的完全自由免费的内核诞生(Freeminix-like kernel sources for 386-AT) — FREAX,含义是怪诞的、怪物、异想天开类Unix的内核,在GPL下发布

官网链接: link.

最早版本链接: link.

Linux操作系统:
完整的类UNIX操作系统
Linux内核+ GNU工具=Linux/GNU
如:CentOS,Ubuntu,Android

Linux的内核版本组成

  • 主版本号
  • 次版本号
  • 末版本号
  • 打包版本号
  • 厂商版本
    在这里插入图片描述
1.2.6.2 Linux 发行版
  • slackware:SUSE Linux Enterprise Server (SLES) , OpenSuse桌面
  • debian: ubuntu,deepin(深度),mint
  • redhat: RHEL: RedHat Enterprise Linux, 每18个月发行一个新版本
    • CentOS: Community Enterprise Operating System 兼容RHEL的格式
    • 中标麒麟:中标软件
    • Fedora:每6个月发行一个新版本
  • Alpine: 一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musllibc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,只有5M左右大小
  • ArchLinux:轻量简洁,遵循K.I.S.S.原则( keep it simple and stupid ),Manjaro
  • Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件
  • LFS:Linux From scratch 自制Linux,只是一个说明书
  • Android:kernel+busybox(工具集)+java虚拟机

Linux 分支参考网站链接: link.
Linux发行版排名:链接: link.
Linux 发行版体验链接: link.

1.2.6.3 RHEL

RedHat 红帽公司
Marc Ewing早在卡内基梅隆大学读书的时候就戴着他祖父的红色曲球帽. Marc在Marc Ewing大学常把自己的软件命名为Red Hat — Red hat 1, Red Hat 2 用来区别他人的软件. 所以当他开始自己的Linux项目, 自然就会命名为Red Hat Linux。Ewing非常乐于帮助同学解决计算机问题 “你的朋友可能会说, 去跟我的朋友Marc交流. 谁是Marc? 他是红帽男孩. ” 所以, 至少在他们最亲密的朋友当中, 红帽子成为了技术专家的同义词
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

2004年,Gregory Kurtzer和CentOS的其他创始成员基于开源的RHEL创建了CentOS,将Enterprise
Linux引入了社区。
2014年,红帽宣布正式赞助CentOS。CentOS的几个核心团队入职Red Hat专门负责其开发。并在Red Hat在理事会中占了三席,但是其社区属性得到保留,交易结果是一部分包括将CentOS商标和IP转移到Red Hat以安全保存。
CentOS 8于2019年9月交付,紧随RHEL 8之后,CentOS Stream的发布和发布是对下一个次要更新中即将发布内容预览版本。可以说是RHEL的beta频道。
2019,巨头IBM花重资收购了Red Hat。并承诺Red Hat忠于其开源根基不会改变,声称" Red Hat对开源
的使命和坚定承诺将保持不变。"
2020年12月8日IBM宣布将惯例支持到2029年CentOS 8,提前在2年内就终结,唯一的升级途径Centos
Stream—AKA,RHEL的Beta发布,并建议不再生产环境中使用。预示着CentOS可能会正式死亡。CentOS已死,但是CentOS精神将会永存。
随后以CentOS创始人之一Gregory Kurtzer为首,8小时内250人啸聚网络,计划以创建Rocky
Linux(Rocky为已经逝世的另外一个CentOS创始人)取代CentOS。Rocky Linux与RHEL兼容
目前已经创建了Github Rocky Linux项目组织(github.com/rocky-linux/rocky)和官网(rockylinux.org)。

1.2.7 开源 Open Source

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

开源 Open Source

  • 软件和源代码提供给所有人,自由分发软件和源代码,free 自由,不是免费的意思
  • 能够修改和创建衍生作品

软件分类:

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

开源协议

世界上的开源许可证,大概有上百种
在这里插入图片描述

  • GPLv2, GPLv3, LGPL(lesser) :通用公共许可 copyleft
  • Apache: apache
  • BSD: bsd
  • Mozilla
  • MIT

2 Linux 安装

2.1 Linux哲学思想

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

2.2 Linux生产主流版本

Linux各种版本
Centos 各版本介绍
https://zh.wikipedia.org/wiki/CentOS
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.cn/centos/

Ubuntu
http://cdimage.ubuntu.com/releases/ Server版
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/releases/
http://releases.ubuntu.com/ Desktop版
http://mirrors.aliyun.com/ubuntu-releases/
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/

Ubuntu20.04下载
http://mirrors.aliyun.com/ubuntu-releases/20.04.1/ubuntu-20.04.1-live-server-amd64.iso

2.3 安装Linux系统

2.3.1 Linux安装前准备

虚拟机:用软件(如:vmware,virtualbox等)模拟硬件,方便实验的灵活配置
在这里插入图片描述虚拟化软件,建议使用 Vmware Workstation
在这里插入图片描述虚拟硬件配置

  • CPU:2核或更多
  • 内存:1G以上,推荐2G
  • 硬盘:一块硬盘,200G
  • 网卡:NAT模式
  • 光盘:挂载对应版本的ISO文件

打开虚拟化功能
在很多家用台式机和笔记本电脑上,虚拟化功能默认是关闭的,再要打开后才能使用Vmware等虚拟化软件,否则会报类拟以下的错误

Inter CPU 报错提示
在这里插入图片描述
AMD CPU 报错提示
在这里插入图片描述
在电脑的BIOS里,打开虚拟化功能
范例:Intel CPU 虚拟化功能
在这里插入图片描述范例:AMD CPU 虚拟化功能
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dws123654/article/details/120841190