發表文章

[RHCE] Advance Network Setting

圖片
IP ALIAS IP aliases可以讓使用者在一個網路卡上設定多組IP,如此便可以經由不同的IP訪問多個網段,例如在一張網路卡上設定了IP 192.168.0.100再利用IP alias設定一組192.168.1.100的IP,如此這台電腦就可以同時訪問192.168.0.0/24與192.168.1.0/24這兩個網段的網路設備。 IP alias依附的是實體的網路卡,也就是說假設有一張網路卡為eth0,使用者可以依附這張網路卡建立eth0:0, eth0:1…等許多IP alias, 然而一但當eth0停用之後,依附於其上的IP alias也會一併停用。 另外,DHCP無法於IP alias上使用。 建立IP alias的方法有兩種,一種是使用指令的方式,一種是修改網路介面的設定檔。 使用指令方式建立的IP alias會在網路重啟之後消失, 如network restart或者重開機。 以指令方式建立IP alias的指令有兩種: #ip addr add 10.10.1.1/24 dev eth0 label eth0:0 dev eth0表示此IP alias是依附於eth0這個介面,label eth0:0則為此IP alias的名稱。 #ifconfig eth0:0 10.10.1.1 netmask 255.255.255.0 up eth0:0為此IP alias的名稱,其後設定該介面的IP與子網路遮罩,up表示啟動該設置,down為停用。 或者可編輯/etc/sysconfig/network-script/ifcfg-eth0:0,eth0:0可修改為要建立的IP alias名稱。之後在檔案內輸入: 存檔後再重啟網路功能,此IP alias便可運作。 BONDING 使用bonding主要有幾個理由, 網路備援、增加頻寬、與負載平衡, bonding是利用多張網路卡進行綁定,讓系統視為一個網路介面卡而達到期望的目標。這項功能通常會使用在需要大量頻寬,或者需要穩定連線的伺服器上。 Bonding有七種不同的模式以對應不同的需求。 mode 0: 循環負載平衡,封包依序由加入bonding的網路卡傳送。 mode 1: 備援模式,bonding的網路卡中只有一張會啟動,啟動的網路卡失效後獲起用其...

[RHCE] Bash Script

BASH 在RHEL(Red Hat Enterprise Linux)使用的shell為Bash。 撰寫shell script的目的在於將多個shell,搭配正規化、管線命令、資料流導向等功能,達到使用者所希望的目的。類似Windows中的批次檔,讓使用者可以執行一個shell script,便可以完成許多指令。 輸入 #touch [檔名.sh] 可建立檔案,副檔名使用sh是為了方便使用者分辨檔案為bash script。接著輸入 #chmod a+x [檔名.sh] 給予檔案可執行的權限。完成後使用 #vim [檔名.sh] 編輯script。在shell檔中,第一行要先宣告#!/bin/bash,表示這是屬於bash的script。 Variable 變數可用$呼叫,例如number = 99,我們可用$number呼叫其值;也可以利用$(shell_command)將shell當成變數,而shell的執行結果就會成為這個變數的值。 For loop for var in condition #迴圈的執行條件,當var滿足condition,就執行迴圈。 do          script #每次迴圈中所要執行的script。 done If else if condition #判斷條件 then          script1 #若判斷條件為真所執行的script。 else          script2 #若判斷條件為假所執行的script。 fi Test test可用於取得比較式的ture/false值,用法為test 比較式 或者 test [ 比較式 ] (注意比較式前後各有一個空格) 。常用的比較式有以下: 字串 #test [參數] [string] ,可用參數有: -n: 字串常度不為0。 -z: 字串長度為0。 字串比較 #test [string1] [參數] [string2] ,可用參數有: ==: 等於。 !=: ...

[RHCE] Network Monitor

圖片
NETSTAT netstat主要的功能可以掃描本機上目前開啟的port。 當某些連線服務無法正常運作時,管理者可以利用該指令查詢服務使用的port是否正常。輸入 #netstat [參數] 可以對本機端口進行觀察。 r: 列出路由表,這個參數的功能如同 #route 。 n:  列出查詢結果時不使用主機與服務名稱,使用IP與port number。 a:  列出所有的連線狀態,包括TCP、UPD等等。 t:  列出所有TCP的連線。 u:  列出所有UDP的連線。 l:  列出監聽(Listen)中的連線。 p:  列出使用這個port的PID與程序名稱。 c:  可以設定 -c [秒數] 每幾秒更新一次資訊。 在觀察netstat的查詢結果時,我們必須了解查詢出的結果代表什麼意思。 Proto: 該連線所使用的協定。 Recv-Q & Send-Q: 這個表示該連線目前的接收或者發送佇列,Q是Queue的意思。 這兩個值通常必須為0,或者短暫的非0狀況也是可以接受的, 但長期為非0,可能連線出現問題。Recv-Q表示本機接收的數據有多少bytes還在緩衝區,尚未被程序取走。如果一直為非0,可能主機已經遭到DOS攻擊。Send-Q表示由遠端主機所傳送而來,但不具有 ACK 標誌的總 bytes 數,例如遠端主動連線。如果為非0,可能遠端主機接收速度不夠快。 Local Address:  本地端的IP跟port。 Foreign Address:  目地端的IP跟port。 State:  該連線目前的狀態。      ESTABLISED:  已建立連線的狀態。      SYN_SENT:  發出主動連線 (SYN 標誌) 的連線封包。      SYN_RECV:  接收到一個要求連線的主動連線封包。      FIN_WAIT1:  該插槽服務已中斷,該連線正在斷線當中。  ...

[RHCE] Kernel Manage

圖片
KERNEL 核心是整個作業系統中最重要的部分,無論在Windows或Linux系統中。 核心主要的工作就是驅動主機的各項硬體的偵測程式與驅動模組。 簡單來說就是幫助使用者控制系統的硬體設備。我們可以使用 #uname [參數] 查詢當前系統的核心資訊。 a: 顯示系統的詳細資料,所有參數的資料都會被列出來。以我機器的資訊為例,主機使用的核心名稱為 Linux,而主機名稱為 localhost.localdomain。核心的版本為 3.10.0-123.6.3.el7.x86_64,該核心版本建立的日期為 2014/8/6。最後三個x86_64分別為m、p、i三個參數的查詢結果。 r: 核心的版本。 s: 核心的名稱。 m: 本系統的硬體名稱。 p: CPU的類型。 i: 適用的硬體平台。 隨著我們更換新的硬體,核心有時後也需要做更新的動作。首先我們必須先取得新版的kernel的rpm檔,接著可以使用yum或者rpm兩種方法更新。可以使用 #yum update kernel 或者 #rpm -ivh [核心rpm檔名稱] 來更新。使用yum更新完,若新版核心不是預設值,待確定新版穩定之後,可以修改/boot/grub/grub.conf。 使用rpm更新時,記得不要用 -U 或 -F , 否則如果新版不穩定時,你就沒有舊版可以使用了。同樣更新完,確定新版穩定之後,可以修改/boot/grub/grub.conf改變預設核心。 MODULE 談完了核心接著就必須說到模組(module),沒有這些模組核心就無法控制硬體。可以輸入 #lsmod 查詢目前系統所載入的模組有哪些,或者到/lib/modules下去查詢。輸入 #modprobe [模組名稱] 可以載入模組。輸入 #modprobe -r [模組名稱] 可以移除模組。修改/etc/modprobe.d/local.conf設定開機時載入的模組。

[RHCE] Deamon Manage

圖片
DAEMON 系統的服務我們會稱為service,例如httpd、ftpd等等, 而啟動這些服務的程序就稱為daemon。 daemon會在系統開機時執行,一般來說會在關機時結束。 daemon可以分成兩大類, 一類是可以獨立啟動的stand_alone。 例如httpd、ftpd等,不必透過其他機制就可以啟動,直到關閉前都會一直存在。這種daemon的好處在於對於用戶發送的要求反應較快,但是缺點是會一直佔據記憶體空間。 另一類是透過一個叫做xinetd的super daemon來管理其他的服務。 xinetd會在用戶連線時去呼叫對應的服務,當用戶離線就會關閉這些服務,如Telent、Tftp等。spuer daemon的好處在於減少服務呆滯在記憶體的時間,缺點是反應會比較慢一點。 SERVICE SCRIPT 管理員可以透過 #service [Script] [服務名稱] [參數] 去管理各種daemon。參數 start 、 stop 、 reatart 、 reload 可以對服務進行基本的控制。或者編輯service script對service進行進階的設定跟控制,系統的srevice script存放在/ect/init.d/中。 在之前提到過,我們可以在/etc/inittab中設定開機時的run level。 >>[RHCE課堂筆記] 開機<< 當設定完run level之後,我們就可以在/etc/rc.d中設定各run level下要啟動的service script。以我虛擬機中的rc5.d為例,也就是run level 5的設定。 我們可以看到這些檔案是用連結的方式連到/etc/init.d中的service script檔。每個檔名前面會多一個英文字以及兩個數字, K表示kill service,S表示start service。而之後的數字表示kill或者start的順序。 上面的例子會先啟動network,接著依序iprinit、iprupdate、iprdump,最後kill netconsole。 BOOT 管理者也可以針對這些服務,設定是否需要在系統啟動時執接執行。 #chkconfig [服務名稱] [on/off] 可以設定是否在當前run level啟動系統時執行。 ...

[RHCE] Install And Manage Software

圖片
USE RPM 在過去沒有rpm的時後,使用者想在系統上安裝軟體是相當麻煩的。要先確定作業系統與環境是否符合、設定軟體的參數、然後還要編譯過才能使用。所以Red Hat開發出rpm這個機制,將開發完的軟體先經過編譯,打包成rpm的封裝檔案。 然後利用資料庫去紀錄檔案的相關資訊、相依檔案、系統需求等等。 當使用者得到rpm檔案之後,rpm會利用軟體的資料庫去檢查環境是否符合、相依檔案是否存在等等。如果條件都符合軟體需求,則可使用簡單的指令快速安裝這些軟體。甚至對於將來可能需要的升級、反安裝,也都可以輕鬆完成。 rpm可以用 -q 參數來查尋軟體的相關資訊。 #rpm -q [軟體名稱] 可以查詢該軟體是否安裝,這邊軟體名稱必須輸入完整。例如要查詢qemu-kvm-common-1.5.3-60.el7.x86_64,就必須輸入qemu-kvm-common。或者使用 #rpm -q[參數] [軟體名稱] ,可以查詢其他的資訊。 a:  查詢所有已安裝的軟體名稱,使用qa時後面不用接軟體名稱。 i:  查詢該軟體的詳細資訊。 l:  查詢該軟體安裝後所有的檔案及目錄的完整名稱。 c:  查詢該軟體安裝後所有的設定檔名稱。 d:  查詢該軟體安裝後所有的說明檔名稱。 R:  查詢該軟體安裝時所需要的相依檔案名稱及版本要求。 f:  此參數後面接的為目錄或檔名,可以查詢該目錄或檔案屬於哪個已安裝軟體。 p:  此參數是配合上述參數針對未安裝的rpm檔進行查詢。 --scripts:  查詢軟體安裝或移除時直行的shell scripts。 --changelog:  查詢軟體的更新紀錄檔。 rpm也可以用來安裝以及更新軟體。當我們要安裝一個軟體時,可以輸入 #rpm -ivh [軟體名稱] 。 i:  安裝(install)。 v:  安裝時顯示更多的資訊畫面。 h:  安裝時顯示安裝進度。 當我們要對現有的軟體做更新時,可輸入 #rpm -Uvh [軟體名稱] 或 #rpm -Fvh [軟體名稱] 。 U:  如果軟體並未安裝過,則會直接安裝,而已安裝的軟體則自動更新。 F: ...

[RHCE] Disk And File System

圖片
DISK 在Linux中,所有的裝置是用掛載的方式連結到系統。 系統必須為裝置建立一個目錄,經由將裝置掛載(Mount)到指定的目錄上,使用者才可以存取裝置。 而這個目錄在Linux中稱為掛載點(Mount Point)。就像貨輪上的貨物,必須停靠在港口後才可以搬運。貨輪就是硬碟,貨物就是資料,港口就是目錄,把貨輪停靠到指定的港口就是掛載。有別於Windows系統中硬體是以代號的方式辨識,Linux則是以目錄。 在IDE介面中,若主機板上有兩個IDE插槽,每個排線可連結到兩個IDE裝置。則Linux會分別為這些裝置建立目錄以便於掛載。 IDE裝置的目錄是固定的,例如只有Secordary的Master有連接裝置,目錄依舊是/dev/hdc。 而在SATA介面上,裝置目錄的命名則是以系統偵測到的順序依序而定。例如若在SATA1、SATA5以及USB上各有一顆硬碟,則系統給予的目錄會分別為。 DISK PARTITION 跟磁碟最有關係的就是磁碟分割,而管理磁碟分割的就是MBR中的分割表(Partition Table)。分割表紀錄分割區起始以及結束磁柱的號碼,檔案則利用分割表寫入指定的磁碟中。分割表有64bytes,每組分割需使用16bytes,所以一個硬碟總共可以有四組分割。分割後的磁區會以硬碟目錄檔名後面加上號碼作為區分。以上面IDE的硬碟為例,IDE1的Master硬碟切了兩個分割區,則分別為/dev/hda1和/dev/hda2。 雖然分割表只能紀錄四組分割區,但並不代表只能有四個分割區。分割區主要分為主要分割(Primary)、延伸分割(Extended)以及邏輯分割(Logical)。而一個分割表中, 主要分割以及延伸分割總合必小於四組。 如果使用者希望有大於四組的分割區,則必須在延伸分割區上建立邏輯分割區。 主要分割區: 主要分割區可以格式化,一個主要分割區可以存在一個作業系統,以及任意數目的檔案資料。 延伸分割區: 延伸分割區不可格式化,所以也無法建立任何資料,延伸分割區主要是用以建立邏輯分割區。一顆硬碟中最多只能有一個延伸分割區。 邏輯分割區: 邏輯分割區可格式化,可存在可以邏輯分割區開機的作業系統,以及任意數目的檔案資料。邏輯分割區必須建立在延伸分割區上。IDE硬碟可以建立59個(5~63號)邏輯分割,SATA...