題2

weixin_33807284發表於2018-05-26

一、檔案系統EXT3,EXT4和XFS的區別:

1. EXT3 
(1)最多隻能支援32TB的檔案系統和2TB的檔案,實際只
能容納2TB的檔案系統和16GB的檔案 
(2)Ext3目前只支援32000個子目錄 
(3)Ext3檔案系統使用32位空間記錄塊數量和i-節點數量 
(4)當資料寫入到Ext3檔案系統中時,Ext3的資料塊分配器
每次只能分配一個4KB的塊 
2. EXT4 
EXT4是Linux系統下的日誌檔案系統,是EXT3檔案系統的
後繼版本。 
(1)Ext4的檔案系統容量達到1EB,而檔案容量則達到
16TB 
(2)理論上支援無限數量的子目錄 
(3)Ext4檔案系統使用64位空間記錄塊數量和i-節點數量 
(4)Ext4的多塊分配器支援一次呼叫分配多個資料塊 
3. XFS 
(1)根據所記錄的日誌在很短的時間內迅速恢復磁碟檔案
內容 
(2)採用優化演算法,日誌記錄對整體檔案操作影響非常小 
(3) 是一個全64-bit的檔案系統,它可以支援上百萬T字
節的儲存空間 
(4)能以接近裸裝置I/O的效能儲存資料
centos7.0開始預設檔案系統是xfs,centos6是ext4,centos5是ext3

ext3和ext4的最大區別在於,ext3在fsck時需要耗費大量時間(檔案越多,時間越長),而ext4在fsck時用的時間會少非常多
ext4是第四代擴充套件檔案系統(英語:Fourth EXtended filesystem,縮寫
為ext4)是linux系統下的日誌檔案系統,是ext3檔案系統的後繼版本
ext4的檔案系統容量達到1EB,而檔案容量則達到16TB,這是一個非常大
的數字了。對一般的桌上型電腦和伺服器而言,這可能並不重要,但對於大型磁碟陣列的使用者而言,這就非常重要了。
ext3目前只支援32000個子目錄,而ext4取消了這一限制,理論上支援無限數量的子目
xfs是一種非常優秀的日誌檔案系統,它是SGI公司設計的。xfs被稱為業界最先進的、最具可升級性的檔案系統技術
xfs是一個64位檔案系統,最大支援8EB減1位元組的單個檔案系統,實際部署時取決於宿主作業系統的最大塊限制。對於一個32位Linux系統,檔案和檔案系統的大小會被限制在16TB
xfs在很多方面確實做的比ext4好,ext4受限制於磁碟結構和相容問題,可擴充套件性和scalability確實不如xfs,另外xfs經過很多年發展,各種鎖的細化做的也比較好

二、.ko 核心模組功能函式 .so應用模組
搭服務要應用模組像依賴包一樣

檢視模組的命令:
[root@localhost /]# lsmod
Module                  Size  Used by
ip6t_rpfilter          12595  1 
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
ip6t_REJECT            12625  2 
nf_reject_ipv6         13717  1 ip6t_REJECT
xt_conntrack           12760  13 
ip_set                 36439  0 
nfnetlink              14696  1 ip_set
ebtable_nat            12807  1 
ebtable_broute         12731  1 
bridge                136173  1 ebtabl
[root@localhost /]# modprobe bridge  載入模組
modprobe -r 模組名稱 從核心刪除模組(有依賴的不能刪)

三、在主機間複製檔案。他使用 ssh(1)作為資料傳輸。而且用同樣認證和安全性。 scp將在認證中請求輸入密碼所有的檔案可能需要伺服器和使用者的特別描述來指明檔案將被複制到/從某臺伺服器。兩個遠端登入的伺服器間的檔案複製是允許的。

scp -r root@10.18.44.190:/var/ftp/CentOS7-Base-163.repo  
/etc/yum.repos.d

四、nginx 和 apache 的區別

1.靜態頁面併發,nginx比apache大的多
2.輕量級別的web 伺服器,速度快
3.都能作反向代理 但是nginx 作反向代理效能好,用的多
4.apache 穩定性高

五、檢視開機啟動狀態

systemctl list-unit-files

六、apache 工作在程式模式和執行緒模式的區別

1.程式獨佔記憶體,執行緒共享記憶體
2.程式可以獨立存在,執行緒來源於程式
3.程式的穩定性比執行緒高
4.執行緒模式的併發量比程式模式大

七、家目錄被刪了修復賬戶:

[root@localhost ~]# useradd xiaoguo 
[root@localhost ~]# rm -rf /home/xiaoguo
[root@localhost ~]# cp -r /etc/skel /home/xiaoguo
[root@localhost ~]# chown xiaoguo.xiaoguo /home/xiaoguo
[root@localhost ~]# chmod 700 /home/xiaoguo
[root@localhost ~]# su - xiaoguo

八、ginx的500,502,504錯誤解決方法

一、解決500錯誤:
        1、500錯誤
             指的是伺服器內部錯誤,也就是伺服器遇到意外情況,而無法履行請求。
        2、500錯誤一般有幾種情況:
          (1)web指令碼錯誤,如php語法錯誤,lua語法錯誤等。
           (2)訪問量大的時候,由於系統資源限制,而不能開啟過多的檔案
        3、一般分析思路:
           (1)檢視nginx error log ,檢視php error log
           (2)如果是too many open files,修改nginx的worker_rlimit_nofile引數,
使用ulimit檢視系統開啟檔案限制,修改/etc/security/limits.conf
           (3)如果是指令碼的問題,則需要修復指令碼錯誤,並優化程式碼
           (4)各種優化都做好,還是出現too many open files,那就要考慮做負載
均衡,把流量分散到不同伺服器上去了

二、解決502,504錯誤
        1、使用nginx代理,而後端伺服器發生故障;或者php-cgi程式數不夠用;php執行時間
長,或者是php-cgi程式死掉;已經執行fastCGI等使用情況都會導致502、504。
        2、502 Bad Gateway 是指請求的php-fpm已經執行,但是由於某種原因而
沒有執行完畢,最終導致php-fpm程式終止。
        一般來說,與php-fpm.conf的設定有關,也與php的執行程式效能有關,網站的訪問
量大,而php-cgi的程式數偏少。針對這種情況的502錯誤,只需增加php-cgi的程式數。
        具體就是修改/usr/local/php/etc/php-fpm.conf檔案,將其中的max_children
值適當增加。
        這個資料要依據你的VPS或獨立伺服器的配置進行設定。一般一個php-cgi程式佔20M
記憶體,你可以自己計算下,適量增多。
        /usr/local/php/sbin/php-fpm restart 然後重啟一下.
        3、504 表示超時,也就是客戶端所發出的請求沒有到達閘道器,請求沒有得到可以執行的php-fpm

三、解決503錯誤
    503 Service Temporarily Unavailable錯誤
    單個ip併發設定過小會導致503報錯
================檢視當前伺服器的版本===================
[root@cat mycat]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
================檢視網路卡速率========================
[root@cat nginx]# ethtool ens33
Settings for ens33:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

為什麼要做主從複製?

1、在業務複雜的系統中,有這麼一個情景,有一句sql語句需要鎖表,導致暫時不能使用讀的服務,那麼就很影響執行中的業務,使用主從複製,讓主庫負責寫,從庫負責讀,這樣,即使主庫出現了鎖表的情景,通過讀從庫也可以保證業務的正常運作。
2、做資料的熱備
3、架構的擴充套件。業務量越來越大,I/O訪問頻率過高,單機無法滿足,此時做多庫的儲存,降低磁碟I/O訪問的頻率,提高單個機器的I/O效能。

mysql主從複製原理

1.資料庫有個bin-log二進位制檔案,記錄了所有sql語句。
2.我們的目標就是把主資料庫的bin-log檔案的sql語句複製過來。
3.讓其在從資料的relay-log重做日誌檔案中再執行一次這些sql語句即可。
4.下面的主從配置就是圍繞這個原理配置
5.具體需要三個執行緒來操作:
binlog輸出執行緒。每當有從庫連線到主庫的時候,主庫都會建立一個執行緒然後傳送binlog內容到從庫。
在從庫裡,當複製開始的時候,從庫就會建立兩個執行緒進行處理:
從庫I/O執行緒。當START SLAVE語句在從庫開始執行之後,從庫建立一個I/O執行緒,該執行緒連線到主庫並請求主庫傳送binlog裡面的更新記錄到從庫上。從庫I/O執行緒讀取主庫的binlog輸出執行緒傳送的更新並拷貝這些更新到本地檔案,其中包括relay log檔案。
從庫的SQL執行緒。從庫建立一個SQL執行緒,這個執行緒讀取從庫I/O執行緒寫到relay log的更新事件並執行。
可以知道,對於每一個主從複製的連線,都有三個執行緒。擁有多個從庫的主庫為每一個連線到主庫的從庫建立一個binlog輸出執行緒,每一個從庫都有它自己的I/O執行緒和SQL執行緒。

SVN與Git優缺點比較(屬面試常問提)

1.SVN優缺點
優點: 
1、 管理方便,邏輯明確,符合一般人思維習慣。 
2、 易於管理,集中式伺服器更能保證安全性。 
3、 程式碼一致性非常高。 
4、 適合開發人數不多的專案開發。 
缺點: 
1、 伺服器壓力太大,資料庫容量暴增。 
2、 如果不能連線到伺服器上,基本上不可以工作,看上面第二步,如果伺服器不能連線上,就不能提交,還原,對比等等。 
3、 不適合開源開發(開發人數非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明確的許可權管理機制(例如分支訪問限制),可以實現分層管理,從而很好的解決開發人數眾多的問題。

2.Git優缺點
優點: 
1、適合分散式開發,強調個體。 
2、公共伺服器壓力和資料量都不會太大。 
3、速度快、靈活。 
4、任意兩個開發者之間可以很容易的解決衝突。 
5、離線工作。 
缺點: 
1、學習週期相對而言比較長。 
2、不符合常規思維。 
3、程式碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有程式碼和版本資訊。

jenkins

Jenkins是幫我們將程式碼進行統一的編譯打包、還可以放到tomcat容器中進行釋出。
意思是我們通過配置,將以前:編譯、打包、上傳、部署到Tomcat中的過程交由Jenkins,Jenkins通過給定的程式碼地址URL,將程式碼拉取到其“宿主伺服器”(Jenkins的安裝位置),進行編譯、打包和釋出到容器中。

ansible

1. 幾種常用運維工具比較
    Puppet
        —基於 Ruby 開發,採用 C/S 架構,擴充套件性強,基於 SSL,遠端命令執行相對較弱
    SaltStack
        —基於 Python 開發,採用 C/S 架構,相對 puppet 更輕量級,配置語法使用 YAML,使得配置指令碼更簡單
    Ansible
        —基於 Python paramiko 開發,分散式,無需客戶端,輕量級,配置語法使用YAML 及 Jinja2
模板語言,更強的遠端命令執行操作
    Ansible 基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。

開機啟動

BIOS啟動引導(從mbr中裝載啟動管理器grub)-->GRUB啟動引導(裝載kernel和initrd到記憶體)--》核心啟動引數-sys init 初始化