Linux系统运维与架构设计之Linux概述

Linux系统运维与架构设计之Linux概述

1.1 浅谈计算机系统

1.1.1 计算机硬件系统

现代计算机是基于冯·诺依曼体系结构,由运算器、控制器、存储器、输入设备、输出设备五大部分组成,以下图所示
冯·诺依曼体系结构
它们各司其职,完成了数据的计算、存储、传输任务。
下面是它们各个组件的功能介绍:html

CPU:也被称为中央处理器,由运算器和控制器组成,其主要做用是数据计算(从内存中获取指令并执行后将结果返回给内存或者写入到磁盘)和控制其余设备(声卡显卡,鼠标键盘)协同工做。linux

内存:采用编址存储,其主要做用是用来做为程序的工做区,程序运行时其数据和指令会被加载到内存,断电后数据会丢失。shell

硬盘:其主要做用是永久性存储海量数据(TB/PB级别),分为机械式硬盘和固态硬盘两大类。数据库

IO设备:其主要做用是用来数据的输入输出,常见的输入设备包括鼠标键盘,常见的输出设备包含声卡,显卡,打印机等等。网卡主要是负责在网络上的传输数据。编程

在后期运维排除故障时除了考虑程序自己的错误以外还要考虑计算机硬件故障(例如磁盘被写满,网络不通)等问题。centos

1.1.2 计算机软件系统

软件出现的做用是实现了人和计算机更好的交互,它是由开发人员采用某种编程语言来编写一系列的指令以及产生的数据组成。安全

不一样平台的软件有不一样的交互方式:bash

服务器端:运维开发人员基于命令行的字符界面实现人机交互。
PC桌面端:开发人员、普通用户一般是基于图形化界面实现人机交互。
移动端:用户一般是经过语音,手势触控实现人机交互。服务器

而软件一般被分为系统软件和应用软件微信

系统软件:系统软件有操做系统、编译器、数据库等等。
应用软件:应用软件有淘宝、京东、微信、支付宝等等。

1.1.3 操做系统

操做系统(Operating System)是实现通用目的的程序,其内核(Kernel)负责和底层硬件交互,应用软件运行在操做系统之上。所以操做系统起着承上启下的做用,操做系统提供的功能以下

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

操做系统分类:

  • 桌面:Windows10,macOS10.14,Ubuntu18.04
  • 服务器:CentOS7.6, RHEL,Ubuntu Server
  • 移动设备:Android,IOS

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

API(Application Programming Interface)定义了源代码和库之间的接口,所以一样的源代码能够在支持这个API的任何系统中编译

开发人员在编写应用程序时,一般都是借助API接口实现通用目的的功能,而应用程序编译后,经过ABI接口编译连接后运行。

1.1.4 计算机经常使用应用的软硬件协做实现

计算机运行的功能流程以下图所示
计算机运行流程

聊天:应用程序监听键盘输入的数据,放到内存,而后传给网卡,经过网络传递给另一个网卡,再从网卡传到内存,显示在显示器上。
听音乐:应用程序将音乐数据加载到内存以后,而后写到声卡上。
看视频:应用程序将视频数据加载到内存,而后写到显卡上。
读文档: 应用程序将磁盘中的文档数据加载到内存后显示到屏幕上。
写文档: 应用程序将内存中的数据写入到磁盘上。

1.1.5 计算机信息存储

1.1.5.1 计算机经常使用存储单位

在计算机最底层,数据都是以二进制(01010)的补码方式存储,而计算机中最小的存储单位是位(bit),用来表示0或者1。
计算机中最基本的存储单位是字节(Byte),1个字节对应8个位(bit)。
而平常应用中常使用的基本存储单位包括KB,MB,GB,TB。它们之间都是以1024换算的,以下所示

1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024B
1B=8bit

1.1.5.2 计算机内存存储

如今一般笔记本的内存一般是8G,16G,32G,64G等等,而运行在笔记本之上的操做系统广泛都是64位的,由于32位系统只能使用4G内存,下面是4G的内存换算

4G=2^2 * 2^10 * 2^10 * 2^10 =4*1024*1024*1024=2^32

1.1.5.3 计算机网速换算

使用迅雷下载某些资源时的网速就是KB或者MB,而网络运营提供商(例如长城宽带、移)声称的百兆带宽其实是100Mb(bit),可是网络下载速度是以字节(KB)为单位的,所以真实的网速(下载速度)理论上只有100Mb/8=12.5MB

1.1.5.4 计算机磁盘容量换算

在购买内存或者买移动硬盘时,一般使用的存储单位就是GB或者是TB,
可是在买4T的移动硬盘时,实际的可用容量却只有3T多,由于计算机的存储单位是以2的10次方(即1024)换算,而硬盘厂商们是以1000为换算单位。

4T的硬盘换算成位以下所示

4T=4*1024GB*1024MB*1024KB*1024B*8bit

而硬盘厂商的实际容量

4T=1000*1000*1000*1000*8

所以实际的可用容量是

4*1000*1000*1000*1000/1024/1024/1024/10243.63T

而在一些互联网巨头(例如国内的BAT,国外的亚马逊、苹果、微软、谷歌,脸书)公司中,可能使用到比TB更大的海量数据,也就是PB或者EB,ZB,它们的换算单位以下所示。

1PB=1024TB
1EB=1024PB
1ZB=1024EB
1YB=1024ZB
1BB=1024YB
1NB=1024BB
1DB=1024NB

1.2 服务器及其硬件概述

1.2.1经常使用服务器介绍

DELL,HP和IBM是互联网公司中使用最经常使用的服务器品牌。
其中互联网公司中使用最普遍的品牌DELL常见的服务器型号按照不一样的用途分为2u的R730/R830和4U的R930,其中1U表示高度为4.45cm,其结构类型是机架式,以下图所示。
Dell R730

1.2.2 服务器硬件选型

服务器中重要的组件包含电源(若是是单台服务器一般都是双路电源,集群场景不须要使用双路电源),主板(做用相似于人体的骨架),CPU,内存和磁盘,网卡(集成在主板上)等等。

而系统运维人员须要重点关注服务器的CPU、内存、磁盘三大核心组件!

CPU :服务器经常使用的CPU是基于X86指令集的英特尔至强Xeon( E3, E5, E7系类),根据用途不一样服务器的CPU一般是2-4颗,单颗CPU是4-8核,若是是作虚拟化宿主机则须要4-8颗CPU,虚拟6-10个虚拟机。

内存:服务器的内存区间一般是16-256G(32G-64G更多),若是是作虚拟化的宿主机,内存总量通常是48-128G,用来虚拟6-10个虚拟机。
32位系统最多寻址2的32次方也就是4G个内存空间,64位系统最高寻址内存能够达到2的64次方也就是4G*4G内存空间,可是因为其余组件限制,实际使用不了那么多,64位Linux支持内存为16EB。

磁盘:服务器的磁盘接口类型一般分为SATA(转速7200转/分),SAS(转速10000-15000转/分),SSD三种。
一般不对外访问的业务(例如线下数据备份)采用SATA,STAT的特色是容量大,价格便宜可是速度比较慢。
而常规正式的工做场景选用SAS硬盘,机械磁盘转速高的性能好。
高并发,小数据量(TB)时选用SSD。
考虑到经济效益,互联网公司一般根据不一样的应用场景都是SATA,SAS和SSD混合使用。

每一个计算机组件的IO性能也各不相同,核心组件(CPU,内存,磁盘)都遵循容量越大,IO性能越差,以下图所示,汇总了它们的IO性能。
IO各层次性能汇总

在后期系统优化和架构设计时,一般须要注意各个硬件组件的瓶颈,尤为是磁盘

1.3 初识Unix系统

1.3.1 Unix历史

  • 1969年,贝尔实验室的Ken Thompson使用汇编语言和B语言开发和改进了UNICS
  • 1973年,贝尔实验室的Dennis Ritchie使用C语言从新编写实现,并正式命名Unix
  • 1977年,伯克利大学开发基于Unix的BSD系统,自此之后各大公司针对自身硬件架构开发了互不兼容的各类版本的Uinx,例如SUN公司的Solaris,HP公司的HP UNIX以及IBM公司的AIX
  • 1979年贝尔实验室发表了System V架构 版权声明,HP UNIX,IBM AIX宣布“不对学生提供源码” 而且收回版权
  • 1984年 Andrew S. Tanenbaum荷兰阿姆斯特丹自由大学计算机科学的教授开发了可运行在x86 PC平台的Minix操做系统用于教学。

Unix的发展路线以及各个分支能够参考以下图所示
Unix Timeline

1.3.2 Unix系统的特色

  • 技术成熟、可靠性高:一般超大型银行、金融公司等可靠性要求性极高的公司会采用Unix做为服务器操做系统,可是Unix一般是随着硬件捆绑销售的,例如IBM的小型机。
  • 支持主流CPU的架构:Intel/AMD,PowerPC,UltraSPARC
  • 支持主流的数据库:Oracle,DB2,Informix
  • 强大的开发功能:Unix促使C语言的诞生,而TCP/IP,XML,WWW都是诞生在Unix之上

1.3.3 GUN与开源软件

GUN概述
因为Unix面临商业化版权制约以及源码面临闭源的问题,1984年Ritchard Stallman发起了开发自由软件的运动,并成立自由软件基金会(Free Software Foundation)和GNU(GUN is Not Unix)项目以及GPL(GNU General Public License)协议,目标是编写大量兼容于Unix系统的自由软件。GNU项目最终产出了Linux系统的重要组件,包括GCC编译器,Emacs编辑器,bash命令解释程序和编程语言以及gawk。

自由不表明免费,例如RedHat的RHEL是自由可是难免费的操做系统,提供的服务收费。
GPL是保证任何人有共享和修改自由软件的自由,任何人有权获取、修改、发布自由软件的源代码的权利,但同时给出具体的修改的源码。LGPL(Lesser General Public License)相对于GPL较为宽松,容许不公开所有源代码。

开源软件
开源指的是软件和源码提供给全部人,同时可以自由分发软件和源代码,可以自由的修改和建立其衍生品。
而目前软件类型能够分为商业软件,共享软件以及自由软件。

  • 商业软件就是使用收费,例如Window10企业版,Office2016,Edraw Max等等都是商业软件,其特色就是收费而且不开放源代码。
  • 共享软件就是免费,可是不开放源码,功能会有所局限,至关于免费版
  • 自由软件是开放源码,而且可以自由修改、分发,可是自由不必定意味着免费,典型的RedHat公司发行的REHL就是自由,可是提供的服务是收费的。

目前世界上开源软件有不一样的开源许可证,常见的有Apache,MIT,LGPL等等。

  • 其中Apache协议指的是他人修改源码后可以闭源,可是每个修改过的文件,必需要放置版权说明
  • MIT协议在Apache协议的基础之上,每一个修改的文件不须要放置版权说明,而且衍生软件的广告,还能够用你的名字促销,应该是最宽松的开源许可协议。
  • LGPL协议指的是他人修改软件的源码以后不能闭源,同时新增的代码也不能采用一样的许可证,可是修改源码的地方不须要提供说明文档,而Mozila协议是须要提供说明文档。

CentOS系列都是遵照GPLV2协议,可使用rpm -qi kernel命令查看

CentOS6.10的版权声明

[root@centOS6 ~]# rpm -qi kernel
Name        : kernel                       Relocations: (not relocatable)
Version     : 2.6.32                            Vendor: CentOS
Release     : 754.el6                       Build Date: Wed 20 Jun 2018 05:43:27 AM CST
Install Date: Sat 26 Jan 2019 12:32:12 AM CST      Build Host: x86-01.bsys.centos.org
Group       : System Environment/Kernel     Source RPM: kernel-2.6.32-754.el6.src.rpm
Size        : 139595110                        License: GPLv2
Signature   : RSA/SHA1, Wed 20 Jun 2018 07:38:57 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.kernel.org/
Summary     : The Linux kernel
Description :
The kernel package contains the Linux kernel (vmlinuz), the core of any
Linux operating system.  The kernel handles the basic functions
of the operating system: memory allocation, process allocation, device
input and output, etc.

CentOS7.6的版权声明

[root@centos7 ~]# rpm -qi kernel
Name        : kernel
Version     : 3.10.0
Release     : 957.el7
Architecture: x86_64
Install Date: Fri 25 Jan 2019 12:48:59 PM CST
Group       : System Environment/Kernel
Size        : 66192729
License     : GPLv2
Signature   : RSA/SHA256, Mon 12 Nov 2018 10:30:44 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : kernel-3.10.0-957.el7.src.rpm
Build Date  : Fri 09 Nov 2018 08:08:59 AM CST
Build Host  : kbuilder.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.kernel.org/
Summary     : The Linux kernel
Description :
The kernel package contains the Linux kernel (vmlinuz), the core of any
Linux operating system.  The kernel handles the basic functions
of the operating system: memory allocation, process allocation, device
input and output, etc.

1.4 初识Linux

1.4.1 Linux概述

咱们一般所说的Linux一般指的是内核(kernel),而若是只有内核,就不是一个完整的操做系统,还须要许多可以解决实际问题的应用程序。

而最先期的Linux内核是由Linus Torvalds在大学教授Andrew Tanenbaum开发的Minix基础之上开发的,1991年年末发布了Linux内核的0.02版本,自那之后全世界的开源爱好者们共同推动着Linux系统的发展,使其在服务器端,嵌入式和PC桌面获得了普遍的运用。

Linux系统=Linux内核+GNU项目组件+各类应用程序(Apache,Nginx,Zabbix)

完整的Linux系统架构图以下图所示
Linux系统架构图

内核主要是实现系统内存管理,软件程序管理,硬件设备管理,文件系统管理

GNU组件主要包含处理文件(gawk)、操做文本、管理进程的工具以及shell,gcc等等

常见的应用程序包含不一样的图形化界面(KDE,GNOME,XFace),运行于桌面端的Firefox,Chrome和运行于服务端Nginx,Apache等等。

1.4.2 Linux系统的特色

Linux系统的特色(继承Unix以外的)

  • 开放源代码、自由传播的类Unix
  • 基于Intel X86系列CPU
  • 支持多任务、多线程、多CPU、多用户
  • 完善的图形用户界面:GNOME,KDE
  • 完善的开发平台:Java/C/C++/Pythton
  • 支持主流数据库:MySQL,Oracle,PostgreSQL
  • 完善的网络服务:HTTP、WWW,SFTP,DNS,SSH等等

1.4.3 Linux主流发行版

为了便于Linux系统的安装和使用,诞生了诸如RedHat公司的Linux发行商,将Linux内核和各类系统组件以及应用组件组合成一个完整的操做系统。
目前主流的Linux发行版主要由三个,分别是RedHat,Debian和Slackware,后续主流的RHEL,Ubuntu,Open SUSE都是基于前面三个分支演进而来的。
以下列表展现出了目前主流的Linux分支以及发行版本

  • Debian
    • Ubuntu
    • Mint
  • Slackware
    • SUSE Linux Enterprise Server
    • Open SUSE
  • RedHat
    • RHEL
    • CentOS

关于RHEL和CentOS的关系:CentOS是基于RHEL源码编译而来,仅仅去除了RHEL源码的商标以及非自由软件部分。

面对如此多的发行版该如何选择呢?
若是你想从事Linux系统运维与架构设计的工做,推荐使用CentOS6.10版本或者CentOS7.6。
若是是想尝试下Linux的桌面版,推荐可使用Open SUSE LEAP 42.3或者Ubuntu18.04。

若是以上的发行版没法知足你的需求,能够访问下面的链接,获取全部的Linux发行版信息。
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg

1.4.4 Linux系统的应用领域

通过20多年的发展,现在的Linux在服务器领域、桌面领域、移动嵌入式领域和云计算、大数据领域占据了广阔的市场。
其中服务器领域在全球占据了75%的市场份额
而Ubuntu也做为最流行的桌面版Linux,基本能够知足平常办公须要,可是普及远远不及Windows。
经过Linux系统架构图能够得知手机操做系统Android的内核就是基于Linux修改而来的。

1.4.5 Unix/Linux哲学思想

  1. 一切皆文件:普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不一样,可是对其提供的倒是同一套操做界面。
  2. 小型,单一用途的程序:程序和可执行文件不要太复杂,这样才能保证了linux内核的高效运行。
  3. 连接程序,共同完成复杂的任务:复杂的任务能够经过链接多个简单的程序实现复杂的功能。对于复杂的功能linux经过许多简单程序的组合等方式实现,在保证简单功能的高效性的同时,复杂的程序也必然是高效性的。
  4. 避免使人困惑的用户界面:如Windows那样出了问题通常人选择的会是重启,实在是不行的话就是从新安装系统了,由于对于Windows那样不是开源的,而且用户界面比较复杂操做系统出了问题,通常的人是根本没有办法解决的。可是linux就不同了,第一linux是开源的,不管什么问题均可以经过简洁的命令行实现排错,修改系统的配置,一切都是简洁明了为基础。
  5. 配置数据存储在文本中:linux全部的配置文件都存放在文本配置文件当中,不管什么配置修改都只需修改其配置文件便可,配置文件时文本形式的只需任意一款文本编辑器修改便可而不是相似于Windows那样将保存在注册表中,而且Windows的注册表须要专门的二进制或十六进制的编辑器才可编辑,修改比较复杂。
相关文章
相关标签/搜索