首页 > 系统服务 > 详细

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

时间:2019-01-07 23:54:11      阅读:305      评论:0      收藏:0      [点我收藏+]

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

1.1 浅谈计算机系统

1.1.1 计算机硬件系统

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

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

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

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

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

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

1.1.2 计算机软件系统

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

不同平台的软件有不同的交互方式:

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

而软件通常被分为系统软件和应用软件

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

1.1.3 操作系统

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

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

操作系统分类:

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

操作系统在计算机系统所处的位置

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,其结构类型是机架式,如下图所示。
技术分享图片

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性能。
技术分享图片

在后期系统优化和架构设计时,通常需要注意各个硬件组件的瓶颈

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的发展路线以及各个分支可以参考如下图所示
技术分享图片

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协议是需要提供说明文档。

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系统架构图如下图所示
技术分享图片

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

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修改而来的。

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

原文:https://www.cnblogs.com/ittimeline/p/10236566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!