Linux系統運維與架構設計-Unix/Linux概述
1.1 服務器及其核心組件介紹
1.1.1常用服務器介紹
DELL,HP和IBM是互聯網公司中使用最常用的服務器品牌。
其中互聯網公司中使用最廣泛的品牌DELL,常見的服務器型號按照不同的用途分為2u的R730/R830和4U的R930,其中1U表示高度為4.45cm,其結構類型是機架式。
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性能越差。

在后期系統優化和架構設計時,通常需要注意各個硬件組件的瓶頸,尤其是磁盤。
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的發展路線以及各個分支
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 <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.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)

內核主要是實現系統內存管理,軟件程序管理,硬件設備管理,文件系統管理
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的注冊表需要專門的二進制或十六進制的編輯器才可編輯,修改比較復雜。