標籤:

Linux運維跳槽必備的40道面試精華題

過完年大家都要跳槽了,分享一篇文章,原文來自:Linux運維常見面試題之精華收錄。

過一次年,結婚、存款、父母養老,一系列向錢看的事都在碾壓我們本來還挺簡單的神經,但難過沒有出路,唯有找到好的方法和事業方向,才能實現一步一個腳印的逆襲。

下面是一名資深Linux運維求職數十家公司總結的Linux運維面試精華,助力大家年後跳槽找個高薪好工作。

1、什麼是運維?什麼是遊戲運維?

1)運維是指大型組織已經建立好的網路軟硬體的維護,就是要保證業務的上線與運作的正常,

在他運轉的過程中,對他進行維護,他集合了網路、系統、資料庫、開發、安全、監控於一身的技術

運維又包括很多種,有DBA運維、網站運維、虛擬化運維、監控運維、遊戲運維等等

2)遊戲運維又有分工,分為開發運維、應用運維(業務運維)和系統運維

開發運維:是給應用運維開發運維工具和運維平台的

應用運維:是給業務上線、維護和做故障排除的,用開發運維開發出來的工具給業務上線、維護、做故障排查

系統運維:是給應用運維提供業務上的基礎設施,比如:系統、網路、監控、硬體等等

總結:開發運維和系統運維給應用運維提供了「工具」和「基礎設施」上的支撐

開發運維、應用運維和系統運維他們的工作是環環相扣的

2、在工作中,運維人員經常需要跟運營人員打交道,請問運營人員是做什麼工作的?

遊戲運營要做的一個事情除了協調工作以外

還需要與各平台溝通,做好開服的時間、開服數、用戶導量、活動等計劃

3、現在給你三百台伺服器,你怎麼對他們進行管理?

管理3百台伺服器的方式:

1)設定跳板機,使用統一賬號登錄,便於安全與登錄的考量。

2)使用salt、ansiable、puppet進行系統的統一調度與配置的統一管理。

3)建立簡單的伺服器的系統、配置、應用的cmdb信息管理。便於查閱每台伺服器上的各種信息記錄。

4、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點

RAID,可以把硬碟整合成一個大磁碟,還可以在大磁碟上再分區,放數據

還有一個大功能,多塊盤放在一起可以有冗餘(備份)

RAID整合方式有很多,常用的:0 1 5 10

RAID 0,可以是一塊盤和N個盤組合

其優點讀寫快,是RAID中最好的

缺點:沒有冗餘,一塊壞了數據就全沒有了

RAID 1,只能2塊盤,盤的大小可以不一樣,以小的為準

10G+10G只有10G,另一個做備份。它有100%的冗餘,缺點:浪費資源,成本高

RAID 5 ,3塊盤,容量計算10*(n-1),損失一塊盤

特點,讀寫性能一般,讀還好一點,寫不好

冗餘從好到壞:RAID1 RAID10 RAID 5 RAID0

性能從好到壞:RAID0 RAID10 RAID5 RAID1

成本從低到高:RAID0 RAID5 RAID1 RAID10

單台伺服器:很重要盤不多,系統盤,RAID1

資料庫伺服器:主庫:RAID10 從庫 RAID5RAID0(為了維護成本,RAID10)

WEB伺服器,如果沒有太多的數據的話,RAID5,RAID0(單盤)

有多台,監控、應用伺服器,RAID0 RAID5

我們會根據數據的存儲和訪問的需求,去匹配對應的RAID級別

5、LVS、Nginx、HAproxy有什麼區別?工作中你怎麼選擇?

LVS: 是基於四層的轉發

HAproxy: 是基於四層和七層的轉發,是專業的代理伺服器

Nginx: 是WEB伺服器,緩存伺服器,又是反向代理伺服器,可以做七層的轉發

區別: LVS由於是基於四層的轉發所以只能做埠的轉發而基於URL的、基於目錄的這種轉發LVS就做不了

工作選擇:

HAproxy和Nginx由於可以做七層的轉發,所以URL和目錄的轉發都可以做在很大並發量的時候我們就要選擇LVS,像中小型公司的話並發量沒那麼大選擇HAproxy或者Nginx足已,由於HAproxy由是專業的代理伺服器配置簡單,所以中小型企業推薦使用HAproxy

6、Squid、Varinsh和Nginx有什麼區別,工作中你怎麼選擇?

Squid、Varinsh和Nginx都是代理伺服器

什麼是代理伺服器:

能當替用戶去訪問公網,並且能把訪問到的數據緩存到伺服器本地,等用戶下次再訪問相同的資源的時候,代理伺服器直接從本地回應給用戶,當本地沒有的時候,我代替你去訪問公網,我接收你的請求,我先在我自已的本地緩存找,如果我本地緩存有,我直接從我本地的緩存里回復你

如果我在我本地沒有找到你要訪問的緩存的數據,那麼代理伺服器就會代替你去訪問公網

區別:

1)Nginx本來是反向代理/web伺服器,用了插件可以做做這個副業

但是本身不支持特性挺多,只能緩存靜態文件

2)從這些功能上。varnish和squid是專業的cache服務,而nginx這些是第三方模塊完成

3)varnish本身的技術上優勢要高於squid,它採用了可視化頁面緩存技術

在內存的利用上,Varnish比Squid具有優勢,性能要比Squid高。

還有強大的通過Varnish管理埠,可以使用正則表達式快速、批量地清除部分緩存

它是內存緩存,速度一流,但是內存緩存也限制了其容量,緩存頁面和圖片一般是挺好的

4)squid的優勢在於完整的龐大的cache技術資料,和很多的應用生產環境

工作中選擇:

要做cache服務的話,我們肯定是要選擇專業的cache服務,優先選擇squid或者varnish。

7、Tomcat和Resin有什麼區別,工作中你怎麼選擇?

區別:Tomcat用戶數多,可參考文檔多,Resin用戶數少,可考慮文檔少

最主要區別則是Tomcat是標準的java容器,不過性能方面比resin的要差一些

但穩定性和java程序的兼容性,應該是比resin的要好

工作中選擇:現在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求穩定和程序的兼容

8、什麼是中間件?什麼是jdk?

中間件介紹:

中間件是一種獨立的系統軟體或服務程序,分散式應用軟體藉助這種軟體在不同的技術之間共享資源

中間件位於客戶機/ 伺服器的操作系統之上,管理計算機資源和網路通訊

是連接兩個獨立應用程序或獨立系統的軟體。相連接的系統,即使它們具有不同的介面

但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞

通過中間件,應用程序可以工作於多平台或OS環境。

jdk:jdk是Java的開發工具包

它是一種用於構建在 Java 平台上發布的應用程序、applet 和組件的開發環境

9、講述一下Tomcat8005、8009、8080三個埠的含義?

8005==》 關閉時使用

8009==》 為AJP埠,即容器使用,如Apache能通過AJP協議訪問Tomcat的8009埠

8080==》 一般應用使用

10、什麼叫CDN?

- 即內容分發網路

- 其目的是通過在現有的Internet中增加一層新的網路架構,將網站的內容發布到最接近用戶的網路邊緣,使用戶可就近取得所需的內容,提高用戶訪問網站的速度

11、什麼叫網站灰度發布?

灰度發布是指在黑與白之間,能夠平滑過渡的一種發布方式

AB test就是一種灰度發布方式,讓一部用戶繼續用A,一部分用戶開始用B

如果用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把所有用戶都遷移到B上面 來

灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度

12、簡述DNS進行域名解析的過程?

用戶要訪問baidu.com,會先找本機的host文件,再找本地設置的DNS伺服器,如果也沒有的話,就去網路中找根伺服器,根伺服器反饋結果,說只能提供一級域名伺服器.cn,就去找一級域名伺服器,一級域名伺服器說只能提供二級域名伺服器.com.cn,就去找二級域名伺服器,二級域伺服器只能提供三級域名伺服器.baidu.com.cn,就去找三級域名伺服器,三級域名伺服器正好有這個網站baidu.com,然後發給請求的伺服器,保存一份之後,再發給客戶端

13、RabbitMQ是什麼東西?

RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程中保存消息的容器

消息中間件再將消息從它的源中到它的目標中標時充當中間人的作用

隊列的主要目的是提供路由並保證消息的傳遞;如果發送消息時接收者不可用消息隊列不會保留消息,直到可以成功地傳遞為止,當然,消息隊列保存消息也是有期限地

14、講一下Keepalived的工作原理?

在一個虛擬路由器中,只有作為MASTER的VRRP路由器會一直發送VRRP通告信息,

BACKUP不會搶佔MASTER,除非它的優先順序更高。當MASTER不可用時(BACKUP收不到通告信息)

多台BACKUP中優先順序最高的這台會被搶佔為MASTER。這種搶佔是非常快速的(<1s),以保證服務的連續性

於安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息

15、講述一下LVS三種模式的工作過程?

LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)

一、NAT模式(VS-NAT)

原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一台RS的IP地址

並發至此RS來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把數據包原IP地址改為自己的IP

將目的地址改為客戶端IP地址即可期間,無論是進來的流量,還是出去的流量,都必須經過負載均衡器

優點:集群中的物理伺服器可以使用任何支持TCP/IP操作系統,只有負載均衡器需要一個合法的IP地址

缺點:擴展性有限。當伺服器節點(普通PC伺服器)增長過多時,負載均衡器將成為整個系統的瓶頸

因為所有的請求包和應答包的流向都經過負載均衡器。當伺服器節點過多時

大量的數據包都交匯在負載均衡器那,速度就會變慢!

二、IP隧道模式(VS-TUN)

原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包通常很大

那麼隧道模式就是,把客戶端發來的數據包,封裝一個新的IP頭標記(僅目的IP)發給RS

RS收到後,先把數據包的頭解開,還原數據包,處理後,直接返回給客戶端,不需要再經過

負載均衡器。注意,由於RS需要對負載均衡器發過來的數據包進行還原,所以說必須支持

IPTUNNEL協議,所以,在RS的內核中,必須編譯支持IPTUNNEL這個選項

優點:負載均衡器只負責將請求包分發給後端節點伺服器,而RS將應答包直接發給用戶

所以,減少了負載均衡器的大量數據流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量

這種方式,一台負載均衡器能夠為很多RS進行分發。而且跑在公網上就能進行不同地域的分發。

缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的伺服器支持」IP Tunneling」

(IP Encapsulation)協議,伺服器可能只局限在部分Linux系統上

三、直接路由模式(VS-DR)

原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應

所有RS對本身這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求全部定向給DR

而DR收到數據包後根據調度演算法,找出對應的RS,把目的MAC地址改為RS的MAC(因為IP一致)

並將請求分發給這台RS這時RS收到這個數據包,處理完成之後,由於IP一致,可以直接將數據返給客戶

則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端

由於負載均衡器要對二層包頭進行改換,所以負載均衡器和RS之間必須在一個廣播域

也可以簡單的理解為在同一台交換機上

優點:和TUN(隧道模式)一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端

與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,因此可以使用大多數操作系統做為物理伺服器。

缺點:(不能說缺點,只能說是不足)要求負載均衡器的網卡必須與物理網卡在一個物理段上。

16、mysql的innodb如何定位鎖問題,mysql如何減少主從複製延遲?

mysql的innodb如何定位鎖問題:

在使用 show engine innodb status檢查引擎狀態時,發現了死鎖問題

在5.5中,information_schema 庫中增加了三個關於鎖的表(MEMORY引擎)

innodb_trx ## 當前運行的所有事務innodb_locks ## 當前出現的鎖innodb_lock_waits ## 鎖等待的對應關係

mysql如何減少主從複製延遲:

如果延遲比較大,就先確認以下幾個因素:

1. 從庫硬體比主庫差,導致複製延遲

2. 主從複製單線程,如果主庫寫並發太大,來不及傳送到從庫就會導致延遲。更高版本的mysql可以支持多線程複製

3. 慢SQL語句過多

4. 網路延遲

5. master負載

主庫讀寫壓力大,導致複製延遲,架構的前端要加buffer及緩存層

6. slave負載

一般的做法是,使用多台slave來分攤讀請求,再從這些slave中取一台專用的伺服器

只作為備份用,不進行其他任何操作.另外, 2個可以減少延遲的參數:

–slave-net-timeout=seconds 單位為秒 默認設置為 3600秒

#參數含義:當slave從主資料庫讀取log數據失敗後,等待多久重新建立連接並獲取數據

–master-connect-retry=seconds 單位為秒 默認設置為 60秒

#參數含義:當重新建立主從連接時,如果連接建立失敗,間隔多久後重試

通常配置以上2個參數可以減少網路問題導致的主從數據同步延遲

MySQL資料庫主從同步延遲解決方案

最簡單的減少slave同步延時的方案就是在架構上做優化,盡量讓主庫的DDL快速執行

還有就是主庫是寫,對數據安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit

= 1 之類的設置,而slave則不需要這麼高的數據安全,完全可以講sync_binlog設置為0或者關閉binlog

innodb_flushlog也可以設置為0來提高sql的執行效率。另外就是使用比主庫更好的硬體設備作為slave

17、如何重置mysql root密碼?

一、 在已知MYSQL資料庫的ROOT用戶密碼的情況下,修改密碼的方法:

1、 在SHELL環境下,使用mysqladmin命令設置:

mysqladmin –u root –p password 「新密碼」 回車後要求輸入舊密碼

2、 在mysql>環境中,使用update命令,直接更新mysql庫user表的數據:

Update mysql.user set password=password(『新密碼』) where user=』root』;flush privileges;

注意:mysql語句要以分號」;」結束

3、 在mysql>環境中,使用grant命令,修改root用戶的授權許可權。

grant all on *.* to root@』localhost』 identified by 『新密碼』;

二、 如查忘記了mysql資料庫的ROOT用戶的密碼,又如何做呢?方法如下:

1、 關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加為系統服務)

2、 使用mysqld_safe腳本以安全模式(不載入授權表)啟動mysqld 服務

/usr/local/mysql/bin/mysqld_safe --skip-grant-table &

3、 使用空密碼的root用戶登錄資料庫,重新設置ROOT用戶的密碼

#mysql -u rootMysql> Update mysql.user set password=password(『新密碼』) where user=』root』;Mysql> flush privileges;

18、lvs/nginx/haproxy優缺點

Nginx的優點是:

1、工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構

它的正則規則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一

Nginx單憑這點可利用的場合就遠多於LVS了。

2、Nginx對網路穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一

相反LVS對網路穩定性依賴比較大,這點本人深有體會;

3、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌列印出來

LVS的配置、測試就要花比較長的時間了,LVS對網路依賴比較大。

4、可以承擔高負載壓力且穩定,在硬體不差的情況下一般能支撐幾萬次的並發量,負載度比LVS相對小些。

5、Nginx可以通過埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一台伺服器重新處理,而LVS就直接斷掉了

如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。

6、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟體,它同時也是功能強大的Web應用伺服器

LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。

7、Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid伺服器更快,可考慮用其作為反向代理加速器

8、Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了

不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍

9、Nginx也可作為靜態網頁和圖片伺服器,這方面的性能也無對手。還有Nginx社區非常活躍,第三方模塊也很多

Nginx的缺點是:

1、Nginx僅能支持http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點

2、對後端伺服器的健康檢查,只支持通過埠來檢測,不支持通過url來檢測

不支持Session的直接保持,但能通過ip_hash來解決

LVS:使用Linux內核集群實現一個高性能、高可用的負載均衡伺服器

它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

LVS的優點是:

1、抗負載能力強、是工作在網路4層之上僅作分發之用,沒有流量的產生

這個特點也決定了它在負載均衡軟體里的性能最強的,對內存和cpu資源消耗比較低

2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西

所以並不需要太多接觸,大大減少了人為出錯的幾率

3、工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案

如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived

4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。

5、應用範圍較廣,因為LVS工作在4層,所以它幾乎可對所有應用做負載均衡,包括http、資料庫、在線聊天室等

LVS的缺點是:

1、軟體本身不支持正則表達式處理,不能做動靜分離

而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在

2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了

特別後面有Windows Server的機器的話,如果實施及配置還有維護過程就比較複雜了

相對而言,Nginx/HAProxy+Keepalived就簡單多了。

HAProxy的特點是:

1、HAProxy也是支持虛擬主機的。

2、HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導

同時支持通過獲取指定的url來檢測後端伺服器的狀態

3、HAProxy跟LVS類似,本身就只是一款負載均衡軟體

單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在並發處理上也是優於Nginx的

4、HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡

對後端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡

5、HAProxy負載均衡策略非常多,HAProxy的負載均衡演算法現在具體有如下8種:

①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;

② static-rr,表示根據權重,建議關注;

③leastconn,表示最少連接者先處理,建議關注;

④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似

我們用其作為解決session問題的一種方法,建議關注;

⑤ri,表示根據請求的URI;

⑥rl_param,表示根據請求的URl參數』balance url_param』 requires an URL parameter name;

⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;

⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。

19、mysql數據備份工具

mysqldump工具

mysqldump是mysql自帶的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump

支持基於innodb的熱備份,但是由於是邏輯備份,所以速度不是很快,適合備份數據比較小的場景

Mysqldump完全備份+二進位日誌可以實現基於時間點的恢復。

基於LVM快照備份

在物理備份中,有基於文件系統的物理備份(LVM的快照),也可以直接用tar之類的命令對整個資料庫目錄

進行打包備份,但是這些只能進行泠備份,不同的存儲引擎備份的也不一樣,myisam自動備份到表級別

而innodb不開啟獨立表空間的話只能備份整個資料庫。

tar包備份

percona提供的xtrabackup工具

支持innodb的物理熱備份,支持完全備份,增量備份,而且速度非常快,支持innodb存儲引起的數據在不同

資料庫之間遷移,支持複製模式下的從機備份恢復備份恢復,為了讓xtrabackup支持更多的功能擴展

可以設立獨立表空間,打開 innodb_file_per_table功能,啟用之後可以支持單獨的表備份

20、keepalive的工作原理和如何做到健康檢查

keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。

虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將N台提供相同功能的路由器組成一個路由器組

這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在區域網內

其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了

這時就需要根據VRRP的優先順序來選舉一個backup當master。這樣就可以保證路由器的高可用了

keepalived主要有三個模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護

及全局配置文件的載入和解析。check負責健康檢查,包括常見的各種檢查方式,vrrp模塊是來實現VRRP協議的

Keepalived健康檢查方式配置

HTTP_GET|SSL_GETHTTP_GET | SSL_GET{url {path /# HTTP/SSL 檢查的url可以是多個digest <STRING> # HTTP/SSL 檢查後的摘要信息用工具genhash生成status_code 200# HTTP/SSL 檢查返回的狀態碼}connect_port 80 # 連接埠bindto<IPADD>connect_timeout 3 # 連接超時時間nb_get_retry 3 # 重連次數delay_before_retry 2 #連接間隔時間}

21、統計ip訪問情況,要求分析nginx訪問日誌,找出訪問頁面數量在前十位的ip

cat access.log | awk {print $1} | uniq -c | sort -rn | head -10

22、使用tcpdump監聽主機為192.168.1.1,tcp埠為80的數據,同時將輸出結果保存輸出到tcpdump.log

tcpdump host 192.168.1.1 and port 80 > tcpdump.log

23、如何將本地80 埠的請求轉發到8080 埠,當前主機IP 為192.168.2.1

iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

24、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點

RAID 0:帶區卷,連續以位或位元組為單位分割數據,並行讀/寫於多個磁碟上,因此具有很高的數據傳輸率

但它沒有數據冗餘,RAID 0 只是單純地提高性能,並沒有為數據的可靠性提供保證

而且其中的一個磁碟失效將影響到所有數據。因此,RAID 0 不能應用於數據安全性要求高的場合

RAID 1:鏡像卷,它是通過磁碟數據鏡像實現數據冗餘,在成對的獨立磁碟上產生互為備份的數據

不能提升寫數據效率。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID1 可以提高讀取性能

RAID 1 是磁碟陣列中單位成本最高的,鏡像卷可用容量為總容量的1/2,但提供了很高的數據安全性和可用性

當一個磁碟失效時,系統可以自動切換到鏡像磁碟上讀寫,而不需要重組失效的數據

RAID5:至少由3塊硬碟組成,分散式奇偶校驗的獨立磁碟結構,它的奇偶校驗碼存在於所有磁碟上

任何一個硬碟損壞,都可以根據其它硬碟上的校驗位來重建損壞的數據(最多允許1塊硬碟損壞)

所以raid5可以實現數據冗餘,確保數據的安全性,同時raid5也可以提升數據的讀寫性能

25、你對現在運維工程師的理解和以及對其工作的認識

運維工程師在公司當中責任重大,需要保證時刻為公司及客戶提供最高、最快、最穩定、最安全的服務

運維工程師的一個小小的失誤,很有可能會對公司及客戶造成重大損失

因此運維工程師的工作需要嚴謹及富有創新精神

26、實時抓取並顯示當前系統中tcp 80埠的網路數據信息,請寫出完整操作命令

tcpdump -nn tcp port 80

27、伺服器開不了機怎麼解決一步步的排查

A、造成伺服器故障的原因可能有以下幾點:

B、如何排查伺服器故障的處理步驟如下:

28、Linux系統中病毒怎麼解決

1)最簡單有效的方法就是重裝系統

2)要查的話就是找到病毒文件然後刪除

中毒之後一般機器cpu、內存使用率會比較高

機器向外發包等異常情況,排查方法簡單介紹下

top 命令找到cpu使用率最高的進程

一般病毒文件命名都比較亂,可以用 ps aux 找到病毒文件位置

rm -f 命令刪除病毒文件

檢查計劃任務、開機啟動項和病毒文件目錄有無其他可以文件等

3)由於即使刪除病毒文件不排除有潛伏病毒,所以最好是把機器備份數據之後重裝一下

29、發現一個病毒文件你刪了他又自動創建怎麼解決

公司的內網某台linux伺服器流量莫名其妙的劇增,用iftop查看有連接外網的情況

針對這種情況一般重點查看netstat連接的外網ip和埠。

用lsof -p pid可以查看到具體是那些進程,哪些文件

經查勘發現/root下有相關的配置conf.n hhe兩個可疑文件,rm -rf後不到一分鐘就自動生成了

由此推斷是某個母進程產生的這些文件。所以找到母進程就是找到罪魁禍首

查殺病毒最好斷掉外網訪問,還好是內網伺服器,可以通過內網訪問

斷了內網,病毒就失去外聯的能力,殺掉它就容易的多

怎麼找到呢,找了半天也沒有看到蛛絲馬跡,沒辦法只有ps axu一個個排查

方法是查看可以的用戶和和系統相似而又不是的冒牌貨,果然,看到了如下進程可疑

看不到圖片就是/usr/bin/.sshd

於是我殺掉所有.sshd相關的進程,然後直接刪掉.sshd這個可執行文件

然後才刪掉了文章開頭提到的自動復活的文件

總結一下,遇到這種問題,如果不是太嚴重,盡量不要重裝系統

一般就是先斷外網,然後利用iftop,ps,netstat,chattr,lsof,pstree這些工具順藤摸瓜

一般都能找到元兇。但是如果遇到諸如此類的問題

/boot/efi/EFI/redhat/grub.efi: Heuristics.Broken.Executable FOUND,個人覺得就要重裝系統了

30、說說TCP/IP的七層模型

應用層 (Application):

網路服務與最終用戶的一個介面。

協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示層(Presentation Layer):

數據的表示、安全、壓縮。(在五層模型裡面已經合併到了應用層)

格式有,JPEG、ASCll、DECOIC、加密格式等

會話層(Session Layer):

建立、管理、終止會話。(在五層模型裡面已經合併到了應用層)

對應主機進程,指本地主機與遠程主機正在進行的會話

傳輸層 (Transport):

定義傳輸數據的協議埠號,以及流控和差錯校驗。

協議有:TCP UDP,數據包一旦離開網卡即進入網路傳輸層

網路層 (Network):

進行邏輯地址定址,實現不同網路之間的路徑選擇。

協議有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

數據鏈路層 (Link):

建立邏輯連接、進行硬體地址定址、差錯校驗等功能。(由底層網路定義協議)

將比特組合成位元組進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正

物理層(Physical Layer):

是計算機網路OSI模型中最低的一層

物理層規定:為傳輸數據所需要的物理鏈路創建、維持、拆除

而提供具有機械的,電子的,功能的和規範的特性

簡單的說,物理層確保原始的數據可在各種物理媒體上傳輸。區域網與廣域網皆屬第1、2層

物理層是OSI的第一層,它雖然處於最底層,卻是整個開放系統的基礎

物理層為設備之間的數據通信提供傳輸媒體及互連設備,為數據傳輸提供可靠的環境

如果您想要用盡量少的詞來記住這個第一層,那就是「信號和介質」

31、你常用的Nginx模塊,用來做什麼

rewrite模塊,實現重寫功能access模塊:來源控制ssl模塊:安全加密ngx_http_gzip_module:網路傳輸壓縮模塊ngx_http_proxy_module 模塊實現代理ngx_http_upstream_module模塊實現定義後端伺服器列表ngx_cache_purge實現緩存清除功能

32、請列出你了解的web伺服器負載架構

NginxHaproxyKeepalivedLVS

33、查看http的並發請求數與其TCP連接狀態

netstat -n | awk /^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}還有ulimit -n 查看linux系統打開最大的文件描述符,這裡默認1024不修改這裡web伺服器修改再大也沒用,若要用就修改很幾個辦法,這裡說其中一個:修改/etc/security/limits.conf* soft nofile 10240* hard nofile 10240重啟後生效

34、用tcpdump嗅探80埠的訪問看看誰最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." {print $1"."$2"."$3"."$4}| sort | uniq -c | sort -nr |head -20

35、寫一個腳本,實現判斷192.168.1.0/24網路里,當前在線的IP有哪些,能ping通則認為在線

#!/bin/bashfor ip in `seq 1 255`do{ping -c 1 192.168.1.$ip > /dev/null 2>&1if [ $? -eq 0 ]; thenecho 192.168.1.$ip UPelseecho 192.168.1.$ip DOWNfi}&donewait

36、已知 apache 服務的訪問日誌按天記錄在伺服器本地目錄/app/logs 下,由於磁碟空間緊張現在要求只能保留最近 7 天的訪問日誌!請問如何解決? 請給出解決辦法或配置或處理命令

創建文件腳本:

#!/bin/bashfor n in `seq 14`do date -s "11/0$n/14"touch access_www_`(date +%F)`.logdone

解決方法:

# pwd/application/logs# ll-rw-r--r--. 1 root root 0 Jan 1 00:00 access_www_2015-01-01.log-rw-r--r--. 1 root root 0 Jan 2 00:00 access_www_2015-01-02.log-rw-r--r--. 1 root root 0 Jan 3 00:00 access_www_2015-01-03.log-rw-r--r--. 1 root root 0 Jan 4 00:00 access_www_2015-01-04.log-rw-r--r--. 1 root root 0 Jan 5 00:00 access_www_2015-01-05.log-rw-r--r--. 1 root root 0 Jan 6 00:00 access_www_2015-01-06.log-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log# find /application/logs/ -type f -mtime +7 -name "*.log"|xargs rm –f ##也可以使用-exec rm -f {} ;進行刪除# ll-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log

37、如何優化 Linux系統(可以不說太具體)?

  1. 不用root,添加普通用戶,通過sudo授權管理
  2. 更改默認的遠程連接SSH服務埠及禁止root用戶遠程連接
  3. 定時自動更新伺服器時間
  4. 配置國內yum源
  5. 關閉selinux及iptables(iptables工作場景如果有外網IP一定要打開,高並發除外)
  6. 調整文件描述符的數量
  7. 精簡開機啟動服務(crond rsyslog network sshd)
  8. 內核參數優化(/etc/sysctl.conf)
  9. 更改字符集,支持中文,但建議還是用英文字符集,防止亂碼
  10. 鎖定關鍵系統文件
  11. 清空/etc/issue,去除系統及內核版本登錄前的屏幕顯示

38、請執行命令取出 linux 中 eth0 的 IP 地址(請用 cut,有能力者也可分別用 awk,sed 命令答)

cut方法1:# ifconfig eth0|sed -n 2p|cut -d ":" -f2|cut -d " " -f1192.168.20.130awk方法2:# ifconfig eth0|awk NR==2|awk -F ":" {print $2}|awk {print $1}192.168.20.130awk多分隔符方法3:# ifconfig eth0|awk NR==2|awk -F "[: ]+" {print $4}192.168.20.130sed方法4:# ifconfig eth0|sed -n /inet addr/p|sed -r s#^.*ddr:(.*)Bc.*$#1#g192.168.20.130

39、請寫出下面 linux SecureCRT 命令行快捷鍵命令的功能?

Ctrl + aCtrl + cCtrl + dCtrl + eCtrl + lCtrl + uCtrl + ktabCtrl+shift+cCtrl+shift+v

解答:

Ctrl + a —->游標移動到行首Ctrl + e —->游標移動到行尾Ctrl + c —->終止當前程序Ctrl + d —->如果游標前有字元則刪除,沒有則退出當前中斷Ctrl + l —->清屏Ctrl + u —->剪切游標以前的字元Ctrl + k —->剪切游標以後的字元Ctrl + y —->複製u/k的內容Ctrl + r —->查找最近用過的命令tab —->命令或路徑補全Ctrl+shift+c —->複製Ctrl+shift+v —->粘貼

40、每天晚上 12 點,打包站點目錄/var/www/html 備份到/data 目錄下(最好每次備份按時間生成不同的備份包)

# cat a.sh #/bin/bashcd /var/www/ && /bin/tar zcf /data/html-`date +%m-%d%H`.tar.gz html/# crontab –e00 00 * * * /bin/sh /root/a.sh


你想更深入了解學習Linux知識體系,你可以看一下我們花費了一個多月整理了上百小時的幾百個知識點體系內容:

【超全整理】《Linux雲計算從入門到精通》linux學習入門教程系列實戰筆記


推薦閱讀:

bash腳本各種記錄
Linux, emacs難以割捨的情結,單位使用的是win + vs,怎麼辦?
如何評價NetHack?
深度學習工具caffe在windows上的性能表現真的沒有在Linux上好嗎?
C / C++,怎麼高效地刪除文件中的前100個位元組?

TAG:Linux | Linux運維 |