1. 程式人生 > >Linux運維(十)

Linux運維(十)

1、什麼是關係型資料庫?什麼是非關係型資料庫?他們之間有何優勢和區別?
答:(1)關係型資料庫:建立在關係模型基礎上的資料庫,是一張擁有關係名稱的二維表,關係模型由關係資料結構、操作集合、完整性約束三部分組成。如Mysql和Oracle。
非關係型資料庫:一種鍵值對形式儲存的資料結構,雖然它的速度非常快,但基本上只能通過鍵的完全一致查詢獲取資料。如Mongodb和
Redis。
(2)SQL優勢:支援事務(保證資料的一致性)、支援多表複合查詢。
(3)NOSQL優勢:擅長大量資料的寫入處理,適合欄位不固定的應用。
參考文件:http://www.cnblogs.com/chay1227/archive/2013/03/17/2964020.html


2、如果有一天,你發現主從不同步,你咋辦?(生產環境太難辦了)
答:通過安裝pt-table-checksum軟體來檢查主從一致性,或者在從機上show slave status \G檢視SQL執行緒和IO執行緒是否Yes
(不太準確)。
解決:分析是IO執行緒不同步還是SQL執行緒不同步,首先是分析Mysql的日誌情況,一般情況下的是
(1)跳過錯誤執行同步。set global sql_slave_skip_counter =1;
(2)從主庫上拷貝資料到從機上,然後進行匯入,最後重新指定master的binlog檔案和位置,重新進行主從複製同步。
參考文件:(pt-table-checksum的安裝)http://mrxiong.blog.51cto.com/287318/1651349/

(主從不同步解決步驟)http://www.cnblogs.com/lixiansen/p/5667340.html

3、top和ps命令在程序佔有資源率的統計方式有什麼不同?(別看這些細節還不好說清楚)
答:(1)top命令是實時動態監控程序所佔資源的情況,包括記憶體、CPU、以及程序執行的狀態;而ps命令是顯示執行命令的這一時刻的所有程序執行情況。
(2)top命令更全面一些,記錄當前系統時間,平均負載情況,以及交換分割槽情況。

4、硬連結有什麼用?
答:因為在linux系統中通過硬連結刪除大檔案速度會很快。

5、初學者在Linux系統的開機啟動項如何選擇?
答:建議選擇六個開機啟動項:
①crond:該服務用於週期地執行系統及使用者配置的計劃任務。有要週期性執行的任務計劃需要開啟

②iptables: iptables包過濾防火牆,有外網IP時,考慮開啟。
③network: 啟動系統時,若想啟用/關閉啟動時的各個網路介面,則應(必須)考慮開啟。
④sshd: 遠端連線Linux伺服器時需要用到這個服務程式,所以必須要開啟,否則將無法遠端連線到Linux伺服器。
⑤rsyslogd:是作業系統提供的一種機制,系統的守護程式通常會使用rsyslog將各種資訊收集寫入到系統日誌檔案中,CentOS6以前此服務的名字為syslog。
⑥sysstat:包含監測系統性能及效率的一組工具,比如CPU使用率、硬碟和網路吞吐資料等,這些資料的分析,有利於判斷系統執行是否正常。
參考文件:http://ccyypoint2008.blog.51cto.com/5602714/1763539

6、詳述iptales工作流程以及規則過濾順序?(這個問題一時不好回答,沒見過這種問問題的方式)
答:工作流程:本地網絡卡收到源端發過來的資料幀,根據四表五鏈的規則,進行匹配轉發或者丟棄。
過濾順序:iptables執行規則時,是從從規則表中從上至下順序執行的,如果沒遇到匹配的規則,就一條一條往下執行,如果遇到匹配的規則後,那麼就執行本規則,執行後根據本規則的動作(accept, reject, log等),決定下一步執行的情況,後續執行一般有三種情況。
(1)一種是繼續執行當前規則佇列內的下一條規則。比如執行過Filter佇列內的LOG後,還會執行Filter佇列內的下一條規則。
(2)一種是中止當前規則佇列的執行,轉到下一條規則佇列。比如從執行過accept後就中斷Filter佇列內其它規則,跳到nat佇列規則去執行
(3)一種是中止所有規則佇列的執行。
參考文件:http://www.educity.cn/linux/515608.html

7、如何解釋iptables的四表五鏈?每個表有哪幾個鏈(看圖說話才好懂,真拓麻難記啊)
答:NAT表:用來做地址轉換的(PREROUTING/OUTPUT/POSTROUTIONG);
filter用來過濾的(INPUT/FORWARD/OUTPUT);
mangle:修改資料包格式的(五條鏈都有);
raw:(OUTPUT、PREROUTING)設定raw時一般是為了不再讓iptables做資料包的連結跟蹤處理,提高效能
PREROUTING:資料包進入路由表之前,用DNAT目的地址替換動作
INPUT:通過路由表後目的地為本機
FORWARDING:通過路由表後,目的地不為本機
OUTPUT:由本機產生,向外轉發
POSTROUTIONG:離開路由表之後,用於SNAT源地址替換動作
4個表的優先順序由高到低的順序為:raw-->mangle-->nat-->filter,如果PRROUTING鏈上,即有mangle表,也有nat表,那麼先由mangle處理,然後由nat表處理
參考文件:http://www.360doc.com/content/11/0506/09/706976_114731108.shtml

8、如何使在命令列執行的 iptables 規則永久生效?
答:service iptables save 是臨時生效
(1)將規則寫入到/etc/sysconfig/iptables中。
(2)將規則寫入到/etc/rc.local中

9、linux 伺服器忽然變成只讀檔案系統,是什麼情況?(這個問題好像經常被考呀)
答:(1)檢查一下檔案許可權,重新掛載一下根分割槽,mount -o rw,remount /
(2)用mount命令檢視已經掛載的檔案系統,有何異常,如果有檔案系統是隻讀的,建議解除安裝umount -l /dev/sr0(list label)
(3)可能Inode已經使用完了,雖然磁碟還有空間但是沒法去寫檔案了,用df -hi 引數檢視一下。必須刪除小檔案才行結合find。
(4)最差的選擇,用光碟引導進入,進入Linux rescue救援模式,進行fsck.ext4 -y /dev/sda進行檔案修復,但是要之前備份好
檔案,否則可能會產生災難。
參考文件:http://blog.csdn.net/ablo_zhou/article/details/5530826/

10、為什麼要整合apache和tomcat?
答:(1)為了動靜分離客戶端發出來的請求。tomcat本身作為web伺服器可以處理靜態內容,但是即要處理靜態資源和又要處理動態資源對tomcat伺服器的處理壓力巨大。
(2)tomcat應用程式伺服器對rewrite重定向規則、expires瀏覽器快取、gzip傳輸壓縮等功能支援不夠好。

11、shell中"."和"source"有什麼區別?
答:”.“ 是新產生一個shell程序,然後執行相應的指令碼
   source是在當前shell下執行,不再啟用其它shell。

12、一主多從環境下,主機器down掉之後,選擇哪臺slave作為新主?(唉,終於知道他想問什麼呢?)
答:選擇中繼的日誌偏移量最大的作為新主。對比選擇Relay_Master_Log_File,Exec_Master_Log_Pos最大的作為新的主庫,這裡我們選擇slave1為新的主庫,其實如果兩個從IO執行緒一直都是正常,沒有落後於主,且relaylog都已經重放完成,兩個從是一樣的,選擇哪個都可以。也能使用keepalived高可用軟體實現自動的故障切換。
參考文件:http://wenku.baidu.com/link?url=6HbE86_8JasiUAd6aJmgSa005KRAomGW3QVWZaEODsh_1jNqKTQazQlhxnaRTqJb_e4-8A9O5T_xIVhM8sSTP0TpJtKGXoCvVkq4mZ6iNm3

13、mysql主從的物理特性是什麼?(我日啊,現在才想起來當時思必馳技術總監想問啥意思)
答:保證資料的一致性和完整性。但是資料一致是在建立主從關係以後,主建立的資料才會被傳入到從機器上面,在這之前的資料,只能進行手工匯入(就這麼簡單吧,我都想不起來,唉,難怪我失業呀)
參考文件:http://blog.chinaunix.net/uid-20639775-id-3254611.html

14、說說讀寫分離是怎麼一回事?
答:(1)讀寫分離簡單的說是把對資料庫讀和寫的操作分開對應不同的資料庫伺服器,這樣能有效地減輕資料庫處理壓力,也能減輕磁碟io壓力。主資料庫提供寫操作,從資料庫提供讀操作,其實在很多系統中,主要是讀的操作。當主資料庫進行寫操作時,資料要同步到從機器上面,這樣才能有效保證資料庫完整性。
(2)使用mysql-proxy作為讀寫分離的軟體,mysql-proxy的4040埠負責監聽前端應用程式發過來的請求,mysql-proxy本身並
不負責讀和寫的任務,僅僅是充當SQL路由的角色,將寫操作發生master上面,將讀操作發生在從伺服器叢集的某個節點上面。這種設計能夠很大程度上減輕mysql例項的CPU使用率高居不下的情形下。

15、主從複製中有master,slave1,slave2,...等等這麼多MYSQL資料庫,那比如一個JAVA WEB應用到底應該連線哪個資料庫?(這個問題我應該思考很多次了吧,只能說理論很簡單,實施實驗沒一天是完成不了的,還不是運維能做的是事情)
答:當然,我們在應用程式中可以這樣,insert/delete/update這些更新資料庫的操作,用connection(for master)進行操作,select用connection(for slaves進行操作。那我們的應用程式還要完成怎麼從slaves選擇一個來執行select,
例如簡單的輪循演算法。這樣的話,相當於應用程式完成了SQL語句的路由,而且與MYSQL的主從複製架構非常關聯,一旦master掛了,某些slave掛了,那麼應用程式就要修改了。能不能讓應用程式與MYSQL的主從複製架構沒有什麼太多關係呢?
找一個元件,application program只需要與它打交道,用它來完成MYSQL的代理,實現SQL語句的路由。
mysql proxy並不負責,怎麼從眾多的slaves挑一個?可以交給另一個元件(比如haproxy)來完成。這就是所謂的MYSQL READ WRITE SPLITE,MYSQL的讀寫分離。
參考文件:http://biweili.blog.51cto.com/4234993/1839448

16、請從一個運維的角度(非開發),窮盡所有思路,對資料庫伺服器進行優化?(之所以這麼問,是避免回答說些SQL語句優化,可能不是運維面試官想聽的答案,開發大佬會接受)
答:(1)老思路,從硬體上改變是最給力,使用固態硬碟做RAID陣列(可能是RAID 1+0),提高磁碟的IO能力
(2)根據業務邏輯,對資料庫進行分庫分表,是減輕對海量資料的讀寫壓力(不要說是提高讀寫能力)
(3)分散式叢集,以mysql-proxy和ameoba為首的讀寫分離方案
(4)搭建一臺Memcached伺服器,用來對查詢頻繁的資料進行快取,減輕後端伺服器的讀壓力
(5)配置檔案中對引數的優化,比如最大併發連線數、連線超時時間、表快取和索引快取。

17、Nginx與Fastcgi整合的原理?
答:Nginx不支援對外部程式的直接呼叫或者解析,所有的外部程式(包括PHP)必須通過FastCGI介面來呼叫。FastCGI介面在Linux下是socket,(這個socket可以是檔案socket,也可以是ip socket)。為了呼叫CGI程式,還需要一個FastCGI的wrapper(wrapper可以理解為用於啟動另一個程式的程式),這個wrapper繫結在某個固定socket上,如埠或者檔案socket。當Nginx將CGI請求傳送給這個socket的時候,通過FastCGI介面,wrapper接納到請求,然後派生出一個新的執行緒,這個執行緒呼叫直譯器或者外部程式處理指令碼並讀取返回資料;接著,wrapper再將返回的資料通過FastCGI介面,沿著固定的socket傳遞給Nginx;最後,Nginx將返回的資料傳送給客戶端,這就是Nginx+FastCGI的整個運作過程
http://blog.csdn.net/sunnyzhangwenhan/article/details/8833296

18、程序的執行型別有哪幾種?有何區別。
答:standalone和xinetd。(1)standalone稱為獨立執行模式,而xinetd稱為超級模式,它是基於父程序啟動的。
(2)apache服務就是這樣的執行模式,standalone是啟動一次然後監聽所有的連線,而xinetd接到客戶端的連線請求才啟動,隨著連線的結束程序也相應結束。

19、如果Apache伺服器只允許192.168.1.1來訪問,不允許其他人訪問,該怎麼設定?
答:在配置檔案httpd.conf中,vim httpd.conf
-------------------------
<Directory />  ##用於定義URI的訪問控制屬性
Order deny,allow ##此處不區分大小寫也行的,此處allow和deny的順序不能反著來
deny from all
allow from 192.169.1.1
</Directory>
----------------------

20、Nginx+Fastcgi的工作原理?(這裡漏掉了wrapper派生執行緒的說法)
答:(1)Nginx伺服器監聽在80埠。
(2)客戶端與服務端建立TCP三次握手,而後,連線建立成功,可以傳輸資料了。
(3)客戶端發出http請求報文,web伺服器收到該請求報文會根據URI判斷是否是動態請求,如果是動態請求,那麼web伺服器會通過程序通訊找到fastcgi介面,這裡的介面可以理解為套接字。
(4)而後,fastcgi介面通過cgi協議將動態請求交給分離式的PHP-FPM程序池進行處理,PHP程序可能會讀取後臺的資料庫,他們之間通過
一種驅動進行通訊。
(5)PHP直譯器(php.ini)解釋執行完畢之後,先把處理結果傳送給web伺服器,而後web伺服器封裝http應答報文返回給客戶端。
(6)客戶端的瀏覽器進行解析,就能得到想要的頁面了。
參考文件:http://www.cnblogs.com/mangguoxiansheng/p/5967745.html

21、什麼叫做解釋執行?
答:(1)由高階語言編譯成一種中間語言,而後中間語言可以在不同平臺上再次進行編譯成為可執行的程式。
(2)讀取一行就向計算機的CPU提交一行,而後再讀取一行再提交一行,執行效率有點低下。

22、NFS與FTP還有Samba之間有何區別?(我覺得這種問題實在太愚蠢了,他們完全不同,打不到一竿子上去)
答:(1)NFS是網路檔案系統,用於Linux或Unix之間共享檔案,基於C/S模式,服務端共享出來,客戶端再掛載在本地,有基於TCP傳輸的,也有

相關推薦

Linux

1、什麼是關係型資料庫?什麼是非關係型資料庫?他們之間有何優勢和區別?答:(1)關係型資料庫:建立在關係模型基礎上的資料庫,是一張擁有關係名稱的二維表,關係模型由關係資料結構、操作集合、完整性約束三部分組成。如Mysql和Oracle。非關係型資料庫:一種鍵值對形式儲存的資料

Linux初級——Linux檔案查詢詳解

一、檔案查詢     常用命令:locate,find     1、locate         locate:在全系統查詢檔案的命令。非實

教老婆學LinuxLinux常用命令指南【上】

目錄 教老婆學Linux(二)Linux常用命令指南【上】 一、概述 二、常用命令 教老婆學Linux(二)Linux常用命令指南【上】 作者:姚毛毛的部落格 tips:文

Linux初級——facl及使用者及Linux終端及case語句

一、檔案系統訪問列表     FACL :Filesystem Access Control List    檔案系統訪問列表      利用檔案擴充套件儲存額外的訪問控制權限。  

Linux初級——磁碟及檔案系統管理

一、磁碟管理        1、 機械式硬碟:             U盤、光碟、軟盤、硬碟、磁帶  &nb

Linux初級——Linux軟體管理

一、軟體包管理     1、應用程式:         程式,Architecture      C語言:原始碼-->(編譯

Linux初級——bash指令碼程式設計之函式

一、函式         函式:功能,function  程式碼重用的功能。         結構化程式設計,不能獨立執行,需要呼叫

linux安全

系統 gop shutdown ace sim -s user nbsp 服務 1.刪除特殊的用戶和用戶組: linux提供了各種不同角色的系統賬號,在系統安裝完成後,默認會安裝很多不必要的用戶和用戶組,如果不需要某些用戶或用戶組,應立即刪除他們,因為賬號越多,系統就越不

章、日常

抓取 進入 fff 0.11 cpu rip 筆記 裏來 ifd 10.1 使用w查看系統負載 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令 10.6 監控io性能 10.7 free命令 10.8 ps命令 10.9 查

Linux初級——vim編輯器

一、VIM介紹         vim是一個類似於vi的著名的功能強大的、高度可定製的文字編輯器,在vi的基礎上改進和增加了很多特性。vim是自由軟體。vim是從vi發展出來的一個文字編輯器。程式碼補全、編譯及錯誤跳轉等方面

Linux初級十三——RAID及mdadm命令

一、RAID介紹         RAID(Redundant arrays of Independent Drives),有“獨立磁碟構成的具有冗餘能力的陣列”。磁碟陣是由很多價格較便宜的磁碟,組合成一個容量巨大的磁碟組,

Linux日常

10.4 Linux的防火牆 SELinux SELinux是linux系統特有的安全機制,這種機制限制較多,配置也比較繁瑣,所以一般把SELinux關閉。 檢視selinux的狀態有兩種方法: getenforce 命令是單詞get(獲取)和enforce(

Docker環境下的前後端分離專案部署與Docker Swarm技術

Docker Swarm技術 docker swarm技術(之前的docker叢集都是在 一個虛擬主機上的,但是如果這個主機掛掉了over了,docker技術就是多個虛擬主機形成一個叢集) Swarm是Docker的一個編排工具,參考官網:https://docs.docker.com/engine/

日常

系統命令監控系統狀態 w、uptime 查看系統負載 w 查看系統負載 系統時間、運行時間、登錄用戶數、平均負載1min 5min 15min tty1 系統登錄用戶 pts/0 遠程登錄用戶 cat /proc/cpuinfo 查看cup核數 processor 0 為 1顆 1為2顆 邏

日常

iostat ps top tcpdump netstat iostat iostat 直接查看 iostat 1 iostat -x 磁盤使用 %util:表示I/O等待,占用CPU的等待時間,這個數字大,可能硬盤有故障 iotop iotop 磁盤使用y

日常

日常運維ifconfig ifconfig 查看網卡IP (yum install -y net-tools) 和 ip add 一樣ifconfig -a 當宕了網卡,沒有IP時,不顯示 ifup / ifdown ifup / ifdown 開啟關閉網卡 用於指定的網卡設定虛擬網卡 將配置文件復制一份

日常

iptablesiptables 規則 默認規則保存在配置文件中/etc/sysconfig/iptables iptables -F 清空規則 service iptables save 保存當前規則到配置文件裏 ###默認規則在 filter 表裏 +t 更改指定的表 默認就是filter表 ipta

日常

firewalledCentOS 7 firewalled 打開firewalled systemctl disable iptables #關閉服務 systemctl stop iptables #停止運行的服務 systemctl enable firewalld

日常

crontab chkconfig systemd unit target crontab crontab 任務計劃 crond服務crontab -u -e -l -r5個*格式:分,時,日,月,周 user command/etc/crontab 配置文件 crontab -e