Linux系统运维与架构设计-Unix/Linux概述

Linux系统运维与架构设计-Unix/Linux概述

1.1 服务器及其核心组件介绍

1.1.1常用服务器介绍

DELL,HP和IBM是互联网公司中使用最常用的服务器品牌。
其中互联网公司中使用最广泛的品牌DELL,常见的服务器型号按照不同的用途分为2u的R730/R830和4U的R930,其中1U表示高度为4.45cm,其结构类型是机架式。
Linux系统运维与架构设计-Unix/Linux概述_第1张图片

1.1.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性能越差。

Linux系统运维与架构设计-Unix/Linux概述_第2张图片
IO各层次性能汇总

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

1.2初识Unix系统

1.2.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的发展路线以及各个分支
Linux系统运维与架构设计-Unix/Linux概述_第3张图片

1.2.2 Unix系统的特点

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

1.2.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 
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 
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.3 Linux概述

1.3.1 Linux发展历史以及组成

我们通常所说的Linux通常指的是内核(kernel),而如果只有内核,就不是一个完整的操作系统,还需要许多能够解决实际问题的应用程序。

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

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

Linux系统运维与架构设计-Unix/Linux概述_第4张图片
Linux系统架构图

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

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

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

1.3.2 Linux系统的特点

Linux系统的特点(继承Unix之外的)

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

1.3.3 Linux主流发行版

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

  • 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.3.4 Linux系统的应用领域

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

1.3.5 Unix/Linux哲学思想

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

你可能感兴趣的:(Linux系统运维与架构设计-Unix/Linux概述)