運維面試積累

1.dns工作原理是什麼:

1.假如客戶機訪問www.qq.com,操作系統會先檢查自己本地的HOSTS文件是否有這個網站的映射關係,如果有直接調用,完成域名解析

2.如果HOSTS沒有,則查找本地的DNS解析緩存,如果有該記錄,則直接返回,完成域名解析。

3.如果本地緩存中沒有,首先會找TCP/IP參數中設置的首選DNS服務器,在此叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區的資源中,則返回解析結果給客戶機,完成域名解析。

4.如果都查詢失敗了,本地DNS會把請求發至13臺跟DNS,根DNS判斷這個域名是誰來授權管理,並會返還一個負責該頂級域名服務器的IP(比如。com)。本地DNS收到IP後,將會聯繫負責.com域的這臺服務器,如果自己無法解析,會推送到二級域進行查詢,直到找到主機。

5.本地域名服務器把返回的結果緩存,備下一次使用,同事將結果返回給客戶機

 

2.DNS遞歸查詢和迭代查詢的區別是什麼:

遞歸查詢: 一般客戶機和服務器之間屬遞歸查詢,即當客戶機向DNS服務器發出請求後,若DNS服務器本身不能解析,則會向另外的DNS服務器發出查詢請求,得到結果後轉交給客戶機。

迭代查詢(反覆查詢): 一般DNS服務器之間屬迭代查詢,如:若DNS2不能響應DNS1的請求,則它會將DNS3的IP給DNS2,以便其再向DNS3發出請求。

 

3.半虛擬與全虛擬的區別:

半虛擬:半虛擬化是通過事先經過修改的客戶機操作系統內核共享宿主底層硬件來實現的,優點是半虛擬化的虛擬機操作系統內核能夠直接管理底層硬件,性能比全虛擬化技術更強,缺點是客戶機操作系統內核需要事先進行修改,部署的便利性和靈活性都不夠spacer.gif,兼容性不夠好。

全虛擬:全虛擬化是通過客戶機和宿主機直接的一個虛擬化邏輯層hypervisor來完全模擬底層硬件細節,優點是客戶機的操作系統內核不需要做特殊配置,部署便利,靈活,兼容性好,缺點是客戶機操作系統的內核不能夠直接管理底層硬件,內核通過hypervisor管理底層硬件需要有轉換開銷,性能比半虛擬化略弱。

Kvm是 半虛擬。 Xen和vmware是全虛擬。


4.OSI七層參考模型

應用層 表示層 會話層 傳輸層 網絡層 數據鏈路層 物理層

每層含義訪問:http://blog.csdn.net/youmu2010/article/details/6434867


5.nginx爲什麼可以處理高併發

Nginx 不同於 Apache2 的一點就是,Nginx 採用單線程,非阻塞,異步 IO 的工作模型。

Apache2 對於每一個請求,都會創建一個新進程或線程,會浪費很多內存和 CPU 時間,而 Nginx 使用操作系統提供的IO多路複用技術(epoll), 在一個線程中處理所有的請求。當一個 IO 操作開始的時候,Nginx 不會等待操作完成就會去處理下一個請求,等到某個 IO 操作完成後,Nginx 再回過頭去處理這次 IO 的後續工作。


6.nginx和apache誰處理靜態塊:

nginx處理靜態快,apache處理動態快。


7.http協議

http是應用層的面相對象的協議,全稱是超文本傳輸協議,是客戶端與服務器通信的協議,採用請求/響應的模式,最常用的有GET和POST請求


8.軟連接與硬鏈接的區別:

若一個 inode 號對應多個文件名,則稱這些文件爲硬鏈接。因此,刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。硬鏈接不能對目錄進行創建,只可對文件創建。

軟連接可以理解爲windows下的快捷方式


9.請求一個網站的過程

域名解析 --> 發起TCP的3次握手 --> 建立TCP連接後發起http請求 --> 服務器響應http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給用戶


10.linux中文件權限t和s分別是什麼意思

suid的設置出現在文件擁有者的x位置上,如果之前用戶有x權限,設置suid後,x就會成爲s(小寫的s);如果之前沒有x權限,即-,設置之後就會成爲S(大寫S)。

這個腳本的所屬主和所屬組爲root。我們當然可以以root的用戶的身份執行它,但是如果在某種場合,普通用戶也需要執行這個腳本來修改自己的密碼的時候,也需要調用這個腳本,於是,我們設置了suid位,也就是我們看到的那樣,在所屬主的標誌位上有個s。這樣一來,其他人有讀取和執行的權限,而且可以假如我們現在有個普通用戶名爲sunny,現在切換到sunny,執行此腳本,表面上我們看是執行成功了,其實我們是藉助root用戶的身份來執行它的,而不是sunny,這就是suid的作用。

T或T(Sticky):/tmp和 /var/tmp目錄供所有用戶暫時存取文件,亦即每位用戶皆擁有完整的權限進入該目錄,去瀏覽、刪除和移動文件。


11.top命令第三行都是什麼含義

6.7% us — 用戶空間佔用CPU的百分比。

0.4% sy — 內核空間佔用CPU的百分比。

0.0% ni — 改變過優先級的進程佔用CPU的百分比

92.9% id — 空閒CPU百分比

0.0% wa — IO等待佔用CPU的百分比

0.0% hi — 硬中斷(Hardware IRQ)佔用CPU的百分比

0.0% si — 軟中斷(Software Interrupts)佔用CPU的百分比

靜態查看的話可查看/proc/stat和/proc/loadavg顯示處理器使用率和平均CPU使用率


12.netstat和ps的區別

netstat查看端口相關信息

ps查看當前正在運行的進程信息


13.寫一條iptables允許192.168.0.3這個IP訪問22端口

iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT


14.SNAT和DNAT的區別:

SNAT:開放內網機器外網權限

DNAT:發佈內部服務器,讓外面的用戶能訪問到服務器。

資料參考:http://blog.chinaunix.net/uid-7411781-id-3442250.html


15.iptables設置做nat轉發的步驟

首先開啓內核轉發的模塊。
echo 1 > /porc/sys/net/ipv4/ip_forward  #這是個暫時的做法,重啓後就會失效,好的做法是:
vi /etc/sysctl.conf
修改其中的net.ipv4.ip_forward = 1
DNS的配置在/etc/resolv.conf中添加DNS的IP即可
然後要讓它立即生效,需要執行命令:
sysctl -p 

第二步添加NAT:

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
#這條命令裏的 eth0代表外網接口,-s 192.168.10.0/24代表內網段


16.網頁返回常見狀態碼

200表示服務器成功處理請求。

201請求成功並且服務器創建了新的資源。

202服務器已經接受請求,但尚未處理。

400服務器不理解請求的語言,請求錯誤。

401身份驗證錯誤

403服務器拒絕請求

404找不到網頁

500服務器內部錯誤

502錯誤網關

503服務器不可用。

504網關超時

505服務器不支持請求中所用的http協議版本

參考網頁:http://www.cnblogs.com/captain_jack/archive/2010/09/20/1831792.html


17.lvs、nginx、haproxy的區別

lvs優勢:

1.抗負載能力強,工作在4層

2.工作穩定

3.無流量。lvs僅僅分發請求,而流量並不從它本身出去(dr)

4.基本支持所有應用。因爲lvs工作在4層,所以它可以對幾乎所有應用做負載均衡

nginx:

1.nginx工作在網絡的7層,所以它可以針對http應用本身來做分流策略,比如針對域名、目錄結構等。

2.nginx也同樣能承受很高負載且穩定,但負載度和穩定度差lvs還有幾個等級:nginx處理所有流量所以受限於機器IO和配置

3.nginx可以檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點。

在使用上,一般最前端所採取的策略應是lvs,也就是DNS的指向應爲lvs均衡器,lvs的優點令它非常適合做這個任務。

重要的ip地址,最好交由lvs託管,比如數據庫的ip、webservice服務器的ip等等,這些ip地址隨着時間推移,使用面會越來越大,如果更換ip則故障會接踵而至。所以將這些重要ip交給lvs託管是最爲穩妥的,這樣做的唯一缺點是需要的VIP數量會比較多。

nginx可作爲lvs節點機器使用,一是可以利用nginx的功能,二是可以利用nginx的性能。當然這一層面也可以直接使用squid,squid的功能方面就比nginx弱不少了,性能上也有所遜色於nginx。

nginx也可作爲中層代理使用,這一層面nginx基本上無對手,唯一可以撼動nginx的就只有lighttpd了,不過lighttpd目前還沒有 能做到nginx完全的功能,配置也不那麼清晰易讀。另外,中層代理的IP也是重要的,所以中層代理也擁有一個VIP和lvs是最完美的方案了。

haproxy:

1、HAProxy是工作在網絡7層之上。

2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作

3、支持url檢測後端的服務器出問題的檢測會有很好的幫助。

4.單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度。

5、HAProxy可以對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。

現在網站發展的趨勢對網絡負載均衡的使用是隨着網站規模的提升根據不同的階段來使用不同的技術:

第一階段:利用Nginx或者HAProxy進行單點的負載均衡,這一階段服務器規模剛脫離開單服務器、單數據庫的模式,需要一定的負載均衡,但是 仍然規模較小沒有專業的維護團隊來進行維護,也沒有需要進行大規模的網站部署。這樣利用Nginx或者HAproxy就是第一選擇,此時這些東西上手快, 配置容易,在七層之上利用HTTP協議就可以。這時是第一選擇

第二階段:隨着網絡服務進一步擴大,這時單點的Nginx已經不能滿足,這時使用LVS或者商用F5就是首要選擇,Nginx此時就作爲LVS或者 F5的節點來使用,具體LVS或者F5的是選擇是根據公司規模,人才以及資金能力來選擇的,這裏也不做詳談,但是一般來說這階段相關人才跟不上業務的提 升,所以購買商業負載均衡已經成爲了必經之路。

第三階段:這時網絡服務已經成爲主流產品,此時隨着公司知名度也進一步擴展,相關人才的能力以及數量也隨之提升,這時無論從開發適合自身產品的定製,以及降低成本來講開源的LVS,已經成爲首選,這時LVS會成爲主流。

最終形成比較理想的狀態爲:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。

 

18.常用的調度算法有什麼:

1.輪叫調度

2.加權輪叫調度

3.最小連接調度

4.加權最小連接調度

 

19.lvs的三種路由方式

LVS-NAT:地址轉換

LVS-DR:直接路由

LVS-TUN:隧道

詳情參考:http://www.cnblogs.com/lixigang/p/5371815.html


20.redis兩種持久化的區別

優點:

1.只有一個文件dump.rdb,方便持久化。

2.容災性好,一個文件可以保存到安全的磁盤。

3.性能最大化,fork子進程來完成寫操作,讓主進程繼續處理命令,所以是IO最大化。

4.相對於數據集大時,比AOF的啓動效率更高。

缺點:

1.數據安全性低,當服務器還在等待寫快照時出現了宕機,那麼將會丟失數據。 

AOF持久化是指所有的命令行記錄以redis命令請求協議的格式保存爲aof文件。

優點:

1.數據安全,每進行一次命令操作就記錄到aof文件中一次;

2.通過append模式寫文件,即使中途服務器宕機,可以通過redis-check-aof工具解決數據一致性問題。

3.AOF機制的rewrite模式,用來將過大的aof文件縮小,

缺點:

1.文件會比RDB形式的文件大。

2.數據集大的時候,比rdb啓動效率低。

 

21.linux文件刪除原理

linux是通過link數量控制文件刪除,一般來說,每個文件都有兩個計數器:i_link和i_count

i_link是文件的硬鏈接數。 i_count是文件被進程調用數

只要i_link和i_count同時爲0時,文件纔回被刪除。

rm刪除的是文件的i_link數


22.linux系統的啓動過程

1.加載BIOS

2.讀取MBR

3.Boot Loader

4.加載內核

5.用戶層init根據inittab文件來設定運行級別

6.init進程執行rc.sysinit

7.啓動內核模塊

8.執行不同運行級別的腳本程序 

9.執行/etc/rc.d/rc.local

10.執行/bi/login程序,進入登陸狀態 

詳細參考:http://blog.chinaunix.net/uid-26495963-id-3066282.html

 

23.top命令右上角的load average的值是什麼意思,高於多少代表負載有問題

拆分出四個內容 :
1. load average(系統平均負載)是什麼?
系統平均負載被定義爲在特定時間間隔內運行隊列中(在CPU上運行或者等待運行多少進程)的平均進程數.

2. load average的三個數值代表什麼?
通過top\uptime\w可以獲取到load average的值,它的三個數字值分別記錄了一分鐘\五分鐘\十五分鐘的系統平均負載.

3. 高於多少負載有問題? 
高於多少代表負載有問題呢,這裏有兩個法則:

“有多少核心即爲有多少負荷”法則: 在多核處理中,你的系統均值不應該高於處理器核心的總數量。

“核心的核心”法則: 核心分佈在分別幾個單個物理處理中並不重要,其實兩顆四核的處理器 等於 四個雙核處理器 等於 八個單處理器。所以,它應該有八個處理器內核。


4. 我們以哪個數字爲準?一分鐘?五分鐘?還是十五分鐘?
我認爲你應該着眼於五分鐘或者十五分鐘的平均數值。坦白講,如果前一分鐘的負載情況是 1.00,那麼仍可以說明認定服務器情況還是正常的。 但是如果十五分鐘的數值仍然保持在 1.00,那麼就值得注意了(根據我的經驗,這時候你應 該增加的處理器數量了).


24.當一個網站訪問慢時,你怎麼去優化 

翻譯爲: 當一個網站訪問慢時, 你都是怎麼去查找問題,和解決問題以達到優化效果的

第一,用5分鐘排除網絡因素,藉助工具(如pagespeed)分析頁面加載過程
1. 某個元素或者圖片加載過慢: 具體原因具體分析
2. DNS解析時長問題: 可以通過購買解析服務, 來讓自己的域名在各地DNS更多緩存
3. 網絡帶寬瓶頸: 考慮增加帶寬
4. 網絡線路波動: 考慮CDN,或者鏡像站
第二,要考慮到服務器問題
1. 是否有服務器過載: 考慮增加硬件
2. I/O操作:數據庫的頻繁讀寫,服務器的頻繁請求(包括靜態文件的讀取,圖片的讀取)等都屬於I/O問題。對於數據庫的問題,首先要優化SQL,存儲過程等。如果單表數據量過大要考慮做分割或者運用程序來控制分表。如果請求量過大,要考慮做集羣。對於服務器(靜態)文件的I/O問題,則可以考慮做CDN,這樣也可以解決地域性問題。對於動態文件的訪問,則涉及到代碼優化及負載均衡兩項。
3. 具體應用優化: nginx針對訪問量修改配置文件,調高Buffers 調低keep alive空連接時間等
第三,安全方面
1. 查看web\mail等其它服務日誌,是否存在被***現象: 針對安全方面加固
2. 是否有其它***存在DDOS,WEB CC等


25.進程和線程的區別

翻譯: 進程和線程的概念

進程(英語:process),是計算機中已運行程序的實體。進程是程序的基本執行實體,進程本身不是基本運行單位,而是線程的容器

線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程並行執行不同的任務。

① 進程是系統進行資源分配的基本單位,有獨立的內存地址空間; 線程是CPU調度的基本單位,沒有單獨地址空間,有獨立的棧,局部變量,寄存器, 程序計數器等。
② 創建進程的開銷大,包括創建虛擬地址空間等需要大量系統資源; 創建線程開銷小,基本上只有一個內核對象和一個堆棧。
③ 一個進程無法直接訪問另一個進程的資源;同一進程內的多個線程共享進程的資源。
④ 進程切換開銷大,線程切換開銷小;進程間通信開銷大,線程間通信開銷小。
⑤ 線程屬於進程,不能獨立執行。每個進程至少要有一個線程,成爲主線程


26.常用的RAID原理

RAID 0連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率,但它沒有數據冗餘,因此並不能算是真正的RAID 結構。RAID 0 只是單純地提高性能,並沒有爲數據的可靠性提供保證,而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0 不能應用於數據安全性要求高的場合。

RAID 1它是通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1 可以提高讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。簡單來說就是:鏡象結構,類似於備份模式,一個數據被複制到兩塊硬盤上。

RAID 10高可靠性與高效磁盤結構一個帶區結構加一個鏡象結構,因爲兩種結構各有優缺點,因此可以相互補充。主要用於容量不大,但要求速度和差錯控制的數據庫中。

RAID 5分佈式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於所有磁盤上,任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據。支持一塊盤掉線後仍然正常運行。


27.有沒有做過性能調優

這個是個大的話題,要反問是應用調優還是系統調優 沒有進行過調優,基本調優步驟:
1. 找出系統性能瓶頸(包括硬件瓶頸和軟件瓶頸);
2. 性能優化的方案(升級硬件?改進系統系統結構?);
3. 達到合理的硬件和軟件配置;
4. 使系統資源使用達到最大的平衡。


28.我想查看WEB日誌中訪問TOP 10的IP有哪些怎麼查看

當時是面試官讓我把具體命令說出來, 也就是看看知道一些處理文本的命令嘛.其實不難:

1

cat logfile |cut -d ' ' -f 5 |sort |uniq -c | sort -nr | head -n 10 |less

cut命令負責將文本以空格分開,取第五列數據==>
排序==> 去重並統計次數(-c參數就是統計參數)==> 再次排序(統計次數會被寫在IP之前, 所以這裏是按統計次數排序 sort的-r是逆序就是從大到小,-n爲按數字排序主要是sort默認排序很可能會把10判斷爲比2還小,通過-n就不會出現這個情況)==> 取次數最多的10條


29.CDN的主要原理

① 源站
源站指發佈內容的原始站點。添加、刪除和更改網站的文件,都是在源站上進行的;另外緩存服務器所抓取的對象也全部來自於源站。
② 緩存服務器
緩存服務器是直接提供給用戶訪問的站點資源,有一臺或數臺服務器組成;當用戶發起訪問時,他的訪問請求被智能DNS定位到離他較近的緩存服務器。如果用戶所請求的內容剛好在緩存裏面,則直接把內容返還給用戶;如果訪問所需的內容沒有被緩存,則緩存服務器向鄰近的緩存服務器或直接向源站抓取內容,然後再返還給用戶。
③ 智能DNS
智能DNS是整個CDN技術的核心,它主要根據用戶的來源,將其訪問請求指向離用戶比較近的緩存服務器,如把廣州電信的用戶請求指向到廣州電信IDC機房中的緩存服務器。通過智能DNS解析,讓用戶訪問同服務商下的服務器,消除國內南北網絡互相訪問慢的問題,達到加速作用。智能DNS的出現,顛覆了傳統的一個域名對應一個鏡像的做法,讓用戶更加便捷的去訪問網站。

緩存服務器中有訪問內容:
客戶端請求 ==> 智能DNS解析到最近的緩存服務器 ==> 緩存服務器返回請求資源
緩存服務器中無訪問內容:
客戶端請求 ==> 智能DNS解析到最近的緩存服務器 ==> 緩存服務器發現沒有客戶端請求資源,向源站請求 ==> 源站返回資源到緩存服務器 ==> 緩存服務器返回客戶端請求資源


30.跨服務器同步文件

查看:http://coolk.blog.51cto.com/1752609/1707382


31.服務器更換主板後linux無法識別網卡

系統加載網卡驅動後會去讀一個文件,這個文件是一個緩存文件,包含了網卡的mac地址,因爲更換了主板,網卡的mac也變動了,但是這個文件的mac還是沒有變,所以現有的網卡mac地址和文件裏的不同,所以系統就拒絕啓動,把這個文件刪除後重啓系統就可以了 操作爲下:

>#mv /etc/udev/rules.d/70-persistent-net.rules  /etc/udev/rules.d/70-persistent-net.rules.bak

>#reboot  #重啓後會生成新的緩存文件

 

32.將/opt目錄中創建時間超過7天的文件壓縮成tar.ge格式

find /opt -type f -mtime +7 -name ‘*’ -exec tar -zxvf {}.tar.gz {}\;

-amin n

查找系統中最後N分鐘訪問的文件

-atime n

查找系統中最後n*24小時訪問的文件

-cmin n

查找系統中最後N分鐘被改變文件狀態的文件

-ctime n

查找系統中最後n*24小時被改變文件狀態的文件

-mmin n

查找系統中最後N分鐘被改變文件數據的文件

-mtime n

查找系統中最後n*24小時被改變文件數據的文件

 

33.2016-09-09 13:30:28這個日期用命令怎麼表示

data +“%Y-%m-%d %H:%M:%S”

詳細參考data命令地址:http://blog.csdn.net/runming918/article/details/7223520


34.每天中午12點使用tcpdump命令抓取目的端口爲TCP 80的1000個包輸出到當前目錄並以當前時間命名.請寫出定時任務及腳本內容.

待補全

 

35.簡述非對稱加密算法工作過程。

非對稱密鑰加密體制,又稱爲公鑰密碼體制、雙密鑰密碼體制。它是指對信息加密和解密時所使用的密鑰是不同的,即有兩個密鑰,一個是可以公開的,另一個是私有的,這兩個密鑰組成一對密鑰對,分別爲公開密鑰和私有密鑰。如果使用其中一個密鑰對數據進行加密,則只有用另外一個密鑰才能解密。由於加密和解密時所使用的密鑰不同,這種加密體制稱爲非對稱密鑰加密體制。 在公開密鑰算法中,用公開的密鑰進行加密,用私有密鑰進行解密的過程,稱爲加密。而用私有密鑰進行加密,用公開密鑰進行解密的過程稱爲認證。

參考網頁:http://www.wm23.com/wiki/933.htm

 

36.把A B(目錄中可能還有目錄)兩個目錄中不同的文件拷貝到C目錄中.

待補全

 

___________________________________________________________________________________________


                如有問題,歡迎指正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章