Linux系统运维与架构设计之Linux概述
Linux系統(tǒng)運維與架構設計之Linux概述
Linux系統(tǒng)運維與架構設計1.1 淺談計算機系統(tǒng)
1.1.1 計算機硬件系統(tǒng)
現(xiàn)代計算機是基于馮·諾依曼體系結構,由運算器、控制器、存儲器、輸入設備、輸出設備五大部分組成,如下圖所示
它們各司其職,完成了數(shù)據(jù)的計算、存儲、傳輸任務。
下面是它們各個組件的功能介紹:
CPU:也被稱為中央處理器,由運算器和控制器組成,其主要作用是數(shù)據(jù)計算(從內(nèi)存中獲取指令并執(zhí)行后將結果返回給內(nèi)存或者寫入到磁盤)和控制其他設備(聲卡顯卡,鼠標鍵盤)協(xié)同工作。
內(nèi)存:采用編址存儲,其主要作用是用來作為程序的工作區(qū),程序運行時其數(shù)據(jù)和指令會被加載到內(nèi)存,斷電后數(shù)據(jù)會丟失。
硬盤:其主要作用是永久性存儲海量數(shù)據(jù)(TB/PB級別),分為機械式硬盤和固態(tài)硬盤兩大類。
IO設備:其主要作用是用來數(shù)據(jù)的輸入輸出,常見的輸入設備包括鼠標鍵盤,常見的輸出設備包含聲卡,顯卡,打印機等等。網(wǎng)卡主要是負責在網(wǎng)絡上的傳輸數(shù)據(jù)。
在后期運維排除故障時除了考慮程序本身的錯誤之外還要考慮計算機硬件故障(例如磁盤被寫滿,網(wǎng)絡不通)等問題。
1.1.2 計算機軟件系統(tǒng)
軟件出現(xiàn)的作用是實現(xiàn)了人和計算機更好的交互,它是由開發(fā)人員采用某種編程語言來編寫一系列的指令以及產(chǎn)生的數(shù)據(jù)組成。
不同平臺的軟件有不同的交互方式:
服務器端:運維開發(fā)人員基于命令行的字符界面實現(xiàn)人機交互。
PC桌面端:開發(fā)人員、普通用戶通常是基于圖形化界面實現(xiàn)人機交互。
移動端:用戶通常是通過語音,手勢觸控實現(xiàn)人機交互。
而軟件通常被分為系統(tǒng)軟件和應用軟件
系統(tǒng)軟件:系統(tǒng)軟件有操作系統(tǒng)、編譯器、數(shù)據(jù)庫等等。
應用軟件:應用軟件有淘寶、京東、微信、支付寶等等。
1.1.3 操作系統(tǒng)
操作系統(tǒng)(Operating System)是實現(xiàn)通用目的的程序,其內(nèi)核(Kernel)負責和底層硬件交互,應用軟件運行在操作系統(tǒng)之上。因此操作系統(tǒng)起著承上啟下的作用,操作系統(tǒng)提供的功能如下
- 硬件驅(qū)動
- 進程管理
- 內(nèi)存管理
- 網(wǎng)絡管理
- 安全管理
- 文件管理
操作系統(tǒng)分類:
- 桌面:Windows10,macOS10.14,Ubuntu18.04
- 服務器:CentOS7.6, RHEL,Ubuntu Server
- 移動設備:Android,IOS
ABI(Application Binary Interface)描述了應用程序與OS之間的底層接口,允許編譯好的目標代碼在使用兼容ABI的系統(tǒng)中無需改動就能運行
API(Application Programming Interface)定義了源代碼和庫之間的接口,因此同樣的源代碼可以在支持這個API的任何系統(tǒng)中編譯
開發(fā)人員在編寫應用程序時,通常都是借助API接口實現(xiàn)通用目的的功能,而應用程序編譯后,通過ABI接口編譯鏈接后運行。
1.1.4 計算機常用應用的軟硬件協(xié)作實現(xiàn)
計算機運行的功能流程如下圖所示
聊天:應用程序監(jiān)聽鍵盤輸入的數(shù)據(jù),放到內(nèi)存,然后傳給網(wǎng)卡,通過網(wǎng)絡傳遞給另外一個網(wǎng)卡,再從網(wǎng)卡傳到內(nèi)存,顯示在顯示器上。
聽音樂:應用程序?qū)⒁魳窋?shù)據(jù)加載到內(nèi)存之后,然后寫到聲卡上。
看視頻:應用程序?qū)⒁曨l數(shù)據(jù)加載到內(nèi)存,然后寫到顯卡上。
讀文檔: 應用程序?qū)⒋疟P中的文檔數(shù)據(jù)加載到內(nèi)存后顯示到屏幕上。
寫文檔: 應用程序?qū)?nèi)存中的數(shù)據(jù)寫入到磁盤上。
1.1.5 計算機信息存儲
1.1.5.1 計算機常用存儲單位
在計算機最底層,數(shù)據(jù)都是以二進制(01010)的補碼方式存儲,而計算機中最小的存儲單位是位(bit),用來表示0或者1。
計算機中最基本的存儲單位是字節(jié)(Byte),1個字節(jié)對應8個位(bit)。
而日常應用中常使用的基本存儲單位包括KB,MB,GB,TB。它們之間都是以1024換算的,如下所示
1.1.5.2 計算機內(nèi)存存儲
現(xiàn)在通常筆記本的內(nèi)存通常是8G,16G,32G,64G等等,而運行在筆記本之上的操作系統(tǒng)普遍都是64位的,因為32位系統(tǒng)只能使用4G內(nèi)存,下面是4G的內(nèi)存換算
4G=2^2 * 2^10 * 2^10 * 2^10 =4*1024*1024*1024=2^321.1.5.3 計算機網(wǎng)速換算
使用迅雷下載某些資源時的網(wǎng)速就是KB或者MB,而網(wǎng)絡運營提供商(例如長城寬帶、移)聲稱的百兆帶寬實際上是100Mb(bit),但是網(wǎng)絡下載速度是以字節(jié)(KB)為單位的,因此真實的網(wǎng)速(下載速度)理論上只有100Mb/8=12.5MB
1.1.5.4 計算機磁盤容量換算
在購買內(nèi)存或者買移動硬盤時,通常使用的存儲單位就是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/1024≈3.63T而在一些互聯(lián)網(wǎng)巨頭(例如國內(nèi)的BAT,國外的亞馬遜、蘋果、微軟、谷歌,臉書)公司中,可能使用到比TB更大的海量數(shù)據(jù),也就是PB或者EB,ZB,它們的換算單位如下所示。
1PB=1024TB 1EB=1024PB 1ZB=1024EB 1YB=1024ZB 1BB=1024YB 1NB=1024BB 1DB=1024NB1.2 服務器及其硬件概述
1.2.1常用服務器介紹
DELL,HP和IBM是互聯(lián)網(wǎng)公司中使用最常用的服務器品牌。
其中互聯(lián)網(wǎng)公司中使用最廣泛的品牌DELL常見的服務器型號按照不同的用途分為2u的R730/R830和4U的R930,其中1U表示高度為4.45cm,其結構類型是機架式,如下圖所示。
1.2.2 服務器硬件選型
服務器中重要的組件包含電源(如果是單臺服務器通常都是雙路電源,集群場景不需要使用雙路電源),主板(作用類似于人體的骨架),CPU,內(nèi)存和磁盤,網(wǎng)卡(集成在主板上)等等。
而系統(tǒng)運維人員需要重點關注服務器的CPU、內(nèi)存、磁盤三大核心組件!
CPU :服務器常用的CPU是基于X86指令集的英特爾至強Xeon( E3, E5, E7系類),根據(jù)用途不同服務器的CPU通常是2-4顆,單顆CPU是4-8核,如果是做虛擬化宿主機則需要4-8顆CPU,虛擬6-10個虛擬機。
內(nèi)存:服務器的內(nèi)存區(qū)間通常是16-256G(32G-64G更多),如果是做虛擬化的宿主機,內(nèi)存總量一般是48-128G,用來虛擬6-10個虛擬機。
32位系統(tǒng)最多尋址2的32次方也就是4G個內(nèi)存空間,64位系統(tǒng)最高尋址內(nèi)存可以達到2的64次方也就是4G*4G內(nèi)存空間,但是由于其他組件限制,實際使用不了那么多,64位Linux支持內(nèi)存為16EB。
磁盤:服務器的磁盤接口類型通常分為SATA(轉(zhuǎn)速7200轉(zhuǎn)/分),SAS(轉(zhuǎn)速10000-15000轉(zhuǎn)/分),SSD三種。
通常不對外訪問的業(yè)務(例如線下數(shù)據(jù)備份)采用SATA,STAT的特點是容量大,價格便宜但是速度比較慢。
而常規(guī)正式的工作場景選用SAS硬盤,機械磁盤轉(zhuǎn)速高的性能好。
高并發(fā),小數(shù)據(jù)量(TB)時選用SSD。
考慮到經(jīng)濟效益,互聯(lián)網(wǎng)公司通常根據(jù)不同的應用場景都是SATA,SAS和SSD混合使用。
每個計算機組件的IO性能也各不相同,核心組件(CPU,內(nèi)存,磁盤)都遵循容量越大,IO性能越差,如下圖所示,匯總了它們的IO性能。
在后期系統(tǒng)優(yōu)化和架構設計時,通常需要注意各個硬件組件的瓶頸,尤其是磁盤
1.3 初識Unix系統(tǒng)
1.3.1 Unix歷史
- 1969年,貝爾實驗室的Ken Thompson使用匯編語言和B語言開發(fā)和改進了UNICS
- 1973年,貝爾實驗室的Dennis Ritchie使用C語言重新編寫實現(xiàn),并正式命名Unix
- 1977年,伯克利大學開發(fā)基于Unix的BSD系統(tǒng),自此以后各大公司針對自身硬件架構開發(fā)了互不兼容的各種版本的Uinx,例如SUN公司的Solaris,HP公司的HP UNIX以及IBM公司的AIX
- 1979年貝爾實驗室發(fā)表了System V架構 版權聲明,HP UNIX,IBM AIX宣布“不對學生提供源碼” 并且收回版權
- 1984年 Andrew S. Tanenbaum荷蘭阿姆斯特丹自由大學計算機科學的教授開發(fā)了可運行在x86 PC平臺的Minix操作系統(tǒng)用于教學。
Unix的發(fā)展路線以及各個分支可以參考如下圖所示
1.3.2 Unix系統(tǒng)的特點
- 技術成熟、可靠性高:通常超大型銀行、金融公司等可靠性要求性極高的公司會采用Unix作為服務器操作系統(tǒng),但是Unix通常是隨著硬件捆綁銷售的,例如IBM的小型機。
- 支持主流CPU的架構:Intel/AMD,PowerPC,UltraSPARC
- 支持主流的數(shù)據(jù)庫:Oracle,DB2,Informix
- 強大的開發(fā)功能:Unix促使C語言的誕生,而TCP/IP,XML,WWW都是誕生在Unix之上
1.3.3 GUN與開源軟件
GUN概述
由于Unix面臨商業(yè)化版權制約以及源碼面臨閉源的問題,1984年Ritchard Stallman發(fā)起了開發(fā)自由軟件的運動,并成立自由軟件基金會(Free Software Foundation)和GNU(GUN is Not Unix)項目以及GPL(GNU General Public License)協(xié)議,目標是編寫大量兼容于Unix系統(tǒng)的自由軟件。GNU項目最終產(chǎn)出了Linux系統(tǒng)的重要組件,包括GCC編譯器,Emacs編輯器,bash命令解釋程序和編程語言以及gawk。
自由不代表免費,例如RedHat的RHEL是自由但是不免費的操作系統(tǒng),提供的服務收費。
GPL是保證任何人有共享和修改自由軟件的自由,任何人有權獲取、修改、發(fā)布自由軟件的源代碼的權利,但同時給出具體的修改的源碼。LGPL(Lesser General Public License)相對于GPL較為寬松,允許不公開全部源代碼。
開源軟件
開源指的是軟件和源碼提供給所有人,同時能夠自由分發(fā)軟件和源代碼,能夠自由的修改和創(chuàng)建其衍生品。
而目前軟件類型可以分為商業(yè)軟件,共享軟件以及自由軟件。
- 商業(yè)軟件就是使用收費,例如Window10企業(yè)版,Office2016,Edraw Max等等都是商業(yè)軟件,其特點就是收費并且不開放源代碼。
- 共享軟件就是免費,但是不開放源碼,功能會有所局限,相當于免費版
- 自由軟件是開放源碼,并且能夠自由修改、分發(fā),但是自由不一定意味著免費,典型的RedHat公司發(fā)行的REHL就是自由,但是提供的服務是收費的。
目前世界上開源軟件有不同的開源許可證,常見的有Apache,MIT,LGPL等等。
- 其中Apache協(xié)議指的是他人修改源碼后能夠閉源,但是每一個修改過的文件,必須要放置版權說明
- MIT協(xié)議在Apache協(xié)議的基礎之上,每個修改的文件不需要放置版權說明,并且衍生軟件的廣告,還可以用你的名字促銷,應該是最寬松的開源許可協(xié)議。
- LGPL協(xié)議指的是他人修改軟件的源碼之后不能閉源,同時新增的代碼也不能采用同樣的許可證,但是修改源碼的地方不需要提供說明文檔,而Mozila協(xié)議是需要提供說明文檔。
CentOS系列都是遵守GPLV2協(xié)議,可以使用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通常指的是內(nèi)核(kernel),而如果只有內(nèi)核,就不是一個完整的操作系統(tǒng),還需要許多能夠解決實際問題的應用程序。
而最早期的Linux內(nèi)核是由Linus Torvalds在大學教授Andrew Tanenbaum開發(fā)的Minix基礎之上開發(fā)的,1991年年底發(fā)布了Linux內(nèi)核的0.02版本,自那以后全世界的開源愛好者們共同推進著Linux系統(tǒng)的發(fā)展,使其在服務器端,嵌入式和PC桌面得到了廣泛的運用。
Linux系統(tǒng)=Linux內(nèi)核+GNU項目組件+各種應用程序(Apache,Nginx,Zabbix)
完整的Linux系統(tǒng)架構圖如下圖所示
內(nèi)核主要是實現(xiàn)系統(tǒng)內(nèi)存管理,軟件程序管理,硬件設備管理,文件系統(tǒng)管理
GNU組件主要包含處理文件(gawk)、操作文本、管理進程的工具以及shell,gcc等等
常見的應用程序包含不同的圖形化界面(KDE,GNOME,XFace),運行于桌面端的Firefox,Chrome和運行于服務端Nginx,Apache等等。
1.4.2 Linux系統(tǒng)的特點
Linux系統(tǒng)的特點(繼承Unix之外的)
- 開放源代碼、自由傳播的類Unix
- 基于Intel X86系列CPU
- 支持多任務、多線程、多CPU、多用戶
- 完善的圖形用戶界面:GNOME,KDE
- 完善的開發(fā)平臺:Java/C/C++/Pythton
- 支持主流數(shù)據(jù)庫:MySQL,Oracle,PostgreSQL
- 完善的網(wǎng)絡服務:HTTP、WWW,SFTP,DNS,SSH等等
1.4.3 Linux主流發(fā)行版
為了便于Linux系統(tǒng)的安裝和使用,誕生了諸如RedHat公司的Linux發(fā)行商,將Linux內(nèi)核和各種系統(tǒng)組件以及應用組件組合成一個完整的操作系統(tǒng)。
目前主流的Linux發(fā)行版主要由三個,分別是RedHat,Debian和Slackware,后續(xù)主流的RHEL,Ubuntu,Open SUSE都是基于前面三個分支演進而來的。
如下列表展示出了目前主流的Linux分支以及發(fā)行版本
- Debian
- Ubuntu
- Mint
- Slackware
- SUSE Linux Enterprise Server
- Open SUSE
- RedHat
- RHEL
- CentOS
關于RHEL和CentOS的關系:CentOS是基于RHEL源碼編譯而來,僅僅去除了RHEL源碼的商標以及非自由軟件部分。
面對如此多的發(fā)行版該如何選擇呢?
如果你想從事Linux系統(tǒng)運維與架構設計的工作,推薦使用CentOS6.10版本或者CentOS7.6。
如果是想嘗試下Linux的桌面版,推薦可以使用Open SUSE LEAP 42.3或者Ubuntu18.04。
如果以上的發(fā)行版無法滿足你的需求,可以訪問下面的連接,獲取所有的Linux發(fā)行版信息。
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg
1.4.4 Linux系統(tǒng)的應用領域
經(jīng)過20多年的發(fā)展,如今的Linux在服務器領域、桌面領域、移動嵌入式領域和云計算、大數(shù)據(jù)領域占據(jù)了廣闊的市場。
其中服務器領域在全球占據(jù)了75%的市場份額
而Ubuntu也作為最流行的桌面版Linux,基本可以滿足日常辦公需要,但是普及遠遠不及Windows。
通過Linux系統(tǒng)架構圖可以得知手機操作系統(tǒng)Android的內(nèi)核就是基于Linux修改而來的。
1.4.5 Unix/Linux哲學思想
轉(zhuǎn)載于:https://www.cnblogs.com/ittimeline/p/10236566.html
總結
以上是生活随笔為你收集整理的Linux系统运维与架构设计之Linux概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言-5月23日-指针(一)
- 下一篇: python脚本分享:xml文件批量修改