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的註冊表須要專門的二進制或十六進制的編輯器纔可編輯,修改比較複雜。
相關文章
相關標籤/搜索