發表文章

目前顯示的是 1月, 2012的文章

[RHCE] Link File

圖片
INDEXED FILE SYSTEM 在Linux系統中,檔案系統是使用索引式檔案系統(Indexed File System)。 也就是常看到的Ext2、Ext3、Ext4,所謂的Linux Extended File System。 在這種檔案系統中,檔案的存取是利用Inode去尋找Block,再把Block裡面的資料讀取出來。 Linux Extended File System在格式化的時後會將檔案系統分為多個Block Group。 每個Block Group中會有自己的Super Block、File Table、Inode Table、Block map等。 使用者進行所謂的存取檔案的動作時,其實就是經由這些資訊找到檔案存放的Block。File Table用來紀錄檔名以及對應的Inode Table編號等資訊。Inode Table會紀錄對應的Block map編號。 Block map會記錄資料存在於Date Block的位置。 藉由這樣一層一層的連結,使用者就可以正確的存取Block中的資料。 而最重要的是Super Block,用來紀錄著該檔案系統中許多重要資訊。 包括Inode和Block的總量、用量、大小、以及其他系統資訊。 如果Super Block損毀,整個檔案系統中的資料就可能會報廢。 每個檔案系統只需要一個Super Block,但是每個Block Group都有個自的Super Block。 這麼多個Super Block,其實只有第一個是負責紀錄檔案系統的系統資訊。 而之後的Block Group如果還有Super Block,則是負責備份第一個Super Block。 SOFT LINK 連結檔(Link)是Linux中的一種檔案,類似於Windows系統中的捷徑,但也不全然相同。連結檔分成兩種,軟連結(Soft Link)跟硬連結(Hard Link)。軟連結又可稱為符號連結(Symbolic Link)是連結到原檔案的連結中,而非直接存取檔案內容。 當使用者建立軟連結的時候,這個連結檔一樣會有自己的Inode、Block等等。唯一的不同是,連結檔的Date Block會指向原檔的檔名,再利用原檔的連結去存取原檔的資料。使用 #ln -s [原始檔名] [軟連結檔名] 可以建立軟連結。例如下圖建...

[RHCE] Kickstart

圖片
KICKSTART kickstart是Red Hat Linux專用的工具,kickstart可以建立ks.cfg設定檔。藉由讀取設定檔的內容,讓Red Hat Linux可以自動安裝至裝置上。管理員可以將ks.cfg、安裝所需要用到的系統檔、以及其他的工具軟體。放置在FTP、HTTP、USB、或者CD/DVD上,讓裝置可以由ks.cfg的設定來進行安裝。所以,利用kickstart加上伺服器技術,就可以建置大量部署的功能。 kickstart可以使用圖形介面進行設定,畫面如下。管理員只需要依照自己的需求一步一步的往下設定即可完成ks.cfg的設定檔。 kickstart中比較重要的幾項設定,其中一個就是檔案的來源。 管理員可以選擇CD/DVD、NFS、FTP、HTTP、或者硬碟為檔案來源。 如果是要利用NFS、FTP、HTTP網路安裝的方式,來源檔案的位址以及目錄都要設定正確。 另外管理員可以設定在安裝前後是否要執行一些特殊的script,例如設定網路等等。可以利用Pre-Installation Script以及Post-Installation Script。 Pre-Installation Script可以編輯在安裝之前要執行的Script。Post-Installation Script則是編輯在安裝後要執行的Script。 當以上設定都完成之後,便可以儲存ks.cfg檔。ks.cfg是個可編輯的文字檔,所以管理員也可以在儲存後另行修改其中內容。關於kickstart中其他相關的參數語法,可參考Red Hat官方網站的說明。 >>Red Hat 官方網站 Kickstart Options<< 另外,關於kickstart比較完整的範例,包括從伺服器到ks.cfg檔的建置,可以參考以下文章。 >>Enterprise Linux 實戰講座 kickstart 自動安裝 Linux by IBM Alex Lin (林彥明)<<

[RHCE] HTTPd Service

圖片
HTTPD 本文所指的httpd就是Apache以HTTPd伺服器所發展出來的自由軟體。RHCSA考試中會考httpd的安裝,RHCE考試中會考虛擬主機的設定。本文內容以考試內容筆記為主,其他相關細部設定可參考鳥哥的文章。 >>簡易 WWW 伺服器設定<< 使用 #yum install httpd-* 下載並安裝httpd服務。 或者也可使用 #wget 下載httpd,在依照檔案利用 #rpm 或其他方法安裝。 安裝完成後輸入 #service httpd start 啟動服務。 #chkconfig httpd o n 設定開機啟動服務。 可輸入 #chkconfig --list httpd 檢查服務是否有啟動在正確的runlevel。 #restorecon -R /var/www/html 開啟SELinux權限,/var/ftp/pub為預設目錄。 可關閉防火牆,輸入 #chkconfig iptables off 以及 #service iptables stop 。 或者開啟iptables中http port,考試時建議直接關閉防火牆即可。 使用瀏覽器測試httpd是否正常。 httpd的設定檔在/etc/httpd/conf/httpd.conf中。 VIRTUAL HOST Virtual Host可以使一個伺服器主機,存在多個網站。使用者輸入不同的網址,伺服器會導向到不同的網站,但實際上都是在同一台主機上。Virtual Host的好處是可以讓你在同一台主機上擁有多個網站,並且方便管理。例如你可以將主網站,討論區,相簿分別用不同的網址定義,方便使用者記憶。或者也可以利用Virtual Host完成伺服器備援的動作。 Virtual Host的設定在/etc/httpd/conf/httpd.conf檔案的最後,預設是關閉的。 開啟Virtual Host的功能只需將NameVirtualHost的注解拿掉即可。NameVirtualHost後方是要填入要使用Virtual Host的IP或者埠號。接著<VirtualHost>....</VirtualHost>中是對欲建立的Virtual Host進行設定。同樣的VirtualHost後方...

[RHCE] vsFTPd Service

VSFTPD 本文是以RHCSA考試中所用的安裝vsftpd為主,內容為考試中所需要用到的指令。vsftpd是ftp的其中一種,其相關vsftp的詳細設定,可參閱鳥哥的文章。 >>簡易 vsftpd 伺服器設定<< 使用 #yum install vsftpd-* 下載並安裝vsftpd服務。 或者也可使用 #wget 下載vsftpd,在依照檔案利用 #rpm 或其他方法安裝。 安裝完成後輸入 #service vsftpd start 啟動服務。 #chkconfig vsftpd on 設定開機啟動服務。 可輸入 #chkconfig --list vsftpd 檢查服務是否有啟動在正確的runlevel。 #restorecon -R /var/ftp/pub 開啟SELinux權限,/var/ftp/pub為匿名登入預設目錄。 可關閉防火牆,輸入 #chkconfig iptables off 以及 #service iptables stop 。 或者開啟iptables中ftp port,考試時建議直接關閉防火牆即可。 或者使用/etc/hosts.deny或/etc/hosts.allow設定存取IP或網域(RHCE考試題目)。 使用瀏覽器測試vsftpd是否正常。 vsftpd的設定檔在/etc/vsftpd/vsftpd.conf中。 其中比較重要的如anonymous_enable為是否允許匿名使用者登入,預設路徑為/var/ftp/pub。local_enable為是否允許一般使用者登入,預設路徑為使用者家目錄。write_enable為是否允許上傳檔案,預設上傳的檔案無法讓其他使用者下載。

[RHCE] SWAP

圖片
SWAP swap可稱為記憶體交換區,類似Windows系統的虛擬記憶體。主要功能是當實體記憶體不足時,提供系統額外的緩衝空間。swap對於目前的個人電腦而言,效用並不大,因為現在的實體記憶體都相當大了。但對於伺服器而言,swap還是有其重要性存在,畢竟伺服器的負載量遠大於個人電腦。 swap在2.4.10核心之後取消單一容量2GB的限制,但是仍有數量32個的限制。 一般建議swap配置約等於實體記憶體的2~4倍,可以依照使用習慣去配置swap容量。 swap的建置主要經由下列幾個步驟。 使用 #fdisk 切割出swap空間, 並將此分割區系統ID設定為82,然後重啟系統 。 使用 #mkswap [swap分割區] 格式化swap空間。 使用 #swapon [swap分割區] 啟用swap空間,類似一般檔案系統的掛載。 要終止該swap空間則輸入 #swapoff [swap分割區 ]。 編輯/etc/fstab使swap空間可於開機時自動掛載。 建立完成並啟用之後,可使用 #vmstat 或者 #top 觀察swap空間是否有增加。或者使用 #swapon -s 觀察swap空間是否有正確啟用。如下圖,可以看到/dev/sda5這個swap空間已經啟用了。

[RHCE] File Compression

GZIP & BZIP2 Linux系統中最常使用的壓縮指令為gzip以及bzip2,但是這兩種指令只能針對單一檔案壓縮。雖然gzip以及bzip2也可以對目錄壓縮,不過是將目錄中的檔案壓縮成個別的壓縮檔。 gzip利用指令 #gzip [檔名] 進行壓縮, #gzip -d [檔名 ] 進行解壓縮。gzip的壓縮檔副檔名是*.gz。 bzip2利用指令 #bzip2 -z [檔名] 進行壓縮 #bzip2 -d [檔名] 進行解壓縮。bzip2的壓縮檔副檔名是*.bz2。 TAR 對於多檔時,例如要備分系統,需要先將這些檔案進行打包的動作,之後才可加以壓縮。 tar可以將多個檔案打包成一個檔案,再經由gzip或者bzip2的方式製作成壓縮檔。 tar的應用除了打包壓縮,備份檔案,同時也可以配合rsnyc進行遠端備份的作業。 tar的指令為 #tar [參數] [檔案或目錄] 。tar是利用參數控制壓縮或解壓縮, -c 為壓縮, -x 為解壓縮。tar可以同時使用gzip或bzip2來壓縮打包好的檔案, -z 為gzip, -j 為bzip2。 -v 是觀察模式,會顯示目前壓縮的進度。 -f 為指定壓縮檔檔名,後面必須要接上指定的壓縮檔檔名。 -C 為指定解壓縮位置,後面必須接上解壓縮路徑,若不加 -C 則解壓縮到當前目錄。 例如要打包/etc下所有檔案至/tmp,並使用gzip壓縮。則輸入指令 #tar -zcvf /tmp/etc.tar.gz /et c。若要改成bzip2壓縮模式,則輸入 #tar -jcvf /tmp/etc.tar.gz /etc 。如此便會再/tmp之下依照選擇的壓縮方式產生壓縮檔。 若要將檔案解壓縮,例如將/tmp/etc.tar.gz解壓縮回/etc。則輸入 #tar -zxv /tmp/ect.tar.gz 。若當前目錄不是在根目錄,則必須在後面指定路徑 #tar -zxv /tmp/etc.tar.gz -C / 。如此便會在根目錄下解壓縮檔案。

[RHCE] Remote Connect

圖片
SSH SSH(Secure Shell Protocol)是一種加密的傳輸協定,利用非對稱金鑰系統。 公鑰由伺服器端產生,並讓用戶端下載;用戶端利用公鑰產生私鑰並傳給伺服器端。之後伺服器與用戶端之間就以公鑰加密,私鑰解密的方式通訊。所以正常的情況下,一台主機中,會有兩把鑰匙,「遠端主機公鑰」和「本地主機私鑰」。公鑰存放的目錄在~/.ssh/know_hosts,而私鑰存放在/etc/ssh/ssh_host_key*。 使用者可以使用 #ssh [參數] [使用者名稱]@[遠端主機位址] 連結登入遠端主機。 -X 參數可以讓ssh使用x-window通道,使用戶端可以再本機上顯示遠端主機的圖形介面。也可以使用 #ssh -f [使用者名稱]@[伺服器位址] [指令] 直接對遠端主機下達指令,無須登入。若不加 -f 參數,連線會卡在登入,但是指令仍會執行,必須等待遠端主機指令跑完。加上 -f 則會下完指令後馬上登出遠端主機,繼續在本地主機工作。 ssh的設定檔,用戶端的存放於/etc/ssh/ssh_config,伺服器端的存放於/etc/ssh/sshd_config。 ssh伺服器端有幾個比較重要的設定,PermitRootLogin是設定可否使用root身分登入。AllowUser是設定允許登入的使用者,PasswordAuthentication是設定是否驗證。一般來說為了安全起見,會關閉允許使用root身分登入。 ssh同時也可以用於傳送檔案, #scp 可以用以上傳或下載檔案。 #scp [參數] [檔案或目錄] [使用者名稱]@[遠端主機位址]:[目的目錄] 用以上傳檔案。 #scp [參數] [使用者名稱]@[遠端主機位址]:[檔案或目錄] [目的目錄] 用以下載檔案。 參數 -p 可以保留原本的權限, -r 可以複製目錄以下所有檔案, -l 可以限制傳輸的速度,單位為Kbits/s。而 #rsync 可以將檔案同步至遠端主機中,用法與 #cp 類似。指令為 #rsync [參數] [使用者名稱]@[遠端主機位址]:[檔案或目錄] [目的目錄] 。常用參數有, -a 為保存來源所有權限屬性設定, -v 為觀察模式, -r 可以同步目錄以下所有檔案。 為了省去登入時輸入密碼的步驟,使得ssh可以利用在自動排程上,可...

[RHCE] Bash

圖片
BASH 一台電腦可以簡單的分為三個部分,硬體、系統核心、以及使用者介面。Shell屬於使用者介面的一種,用來幫助使用者下達命令給核心,核心再去控制硬體。Bash是Linux預設的Shell,全名為Bourne Again Shell。Linux中不只Bash一種Shell,可以在/etc/shells中查詢目前可使用的Shell;Bash主要的優點有以下六點: 歷史紀錄 利用 #history 可以列出之前輸入過的的命令,上限筆數預設是1000筆。列表中編號數字越大的表示時間越接近當前。 可以利用 #![編號] 重新入數列表中特定編號的命令, #!! 可以重新輸入上一筆命令。利用 #![關鍵字] 可以重新輸入以關鍵字開頭且時間最接近的命令。或者在使用者家目錄下的.bash_history檔中,可以看到使用者最近一次登出前的命令歷史紀錄。 紀錄的上限筆數可以輸入 #echo $HISTSIZE 查詢。 可在/etc/profile中變更上限設定。 命令與檔案補全 在輸入Shell的時候,有些太過複雜難記的的命令或檔案,可以擅用Tab鍵幫忙補全。例如當我們想輸入 #ifconfig 這個命令,但是可能只記得if這兩個字。這時按下Tab,系統不會有反應,但是再按一次系統就會列出所有if開頭的命令。如果是輸入ifco再按下Tab,因為可能的命令只剩下一個了,系統就會自動補齊ifconfig。除了命令之外Tab鍵也可以補齊檔案名稱。 別名 別名的概念有點像是快捷鍵,使用簡單易記的自訂命令來取代過長的命令。例如 #route -n 這個指令使用者覺得太長,想用 #rou 這個別名取代原本的命令。這時候就可以輸入 #alias rou='route -n' ,如此之後輸入 #rou 就可以等同 #route -n 。 另外也可以使用 #alias [命令] 去查詢這個別名原本的命令。 而輸入 #alias 可以查詢目前所使用的別名有哪些。 工作控制 命令輸入之後會在系統中產生一個工作,Bash可以對這些工作進行控制。Ctrl+C可以終止目前正在進行的工作,Ctrl+Z可以暫停目前正在進行的工作,將之移至背景。前景與背景的差別在於,前景可以讓使用者進行操作,而背景則無法。使用 #jobs 可以...

[RHCE] LVM

圖片
LVM LVM(Logical Volume Management,邏輯捲軸管理)是一種可以更彈性管理磁碟的方法。 藉由將實體儲存裝置的分割區整合提供一個更大的儲存空間,讓管理員依照需求去分配資源。 並且若日後需要增加或縮減檔案系統空間,都可以在不重新格式化整個檔案系統的情況下完成。 LVM主要分成四個項目,而這四個項目也代表著建制LVM的階段作業。 PV(Physical Volume,實體捲軸) LVM中最底層的空間,為實體切割區調整系統識別碼後格式化的區域。因為PV無法跨實體磁碟,所以最大空間即為實體磁碟空間。 PE(Physical Extend,實體延伸區塊) PE是LVM中最小的儲存單位,類似實體磁碟的block,建立VG時可以決定PE的大小,預設是4MB。 PE可以決定VG的大小,在LVM1中,PE的個數限制在65534個,每個PE的大小為8k-512MB。而在LVM2中,PE移除了個數的限制,大小則是延伸到16GB,使得管理員可以建立更大的VG。 VG(Volume Group,捲軸群組) VG為PV所集合而成的空間,可跨越實體磁碟。VG的大小主要因PE而決定,在LVM1中,VG最大的限制到2TB。在LVM2中,VG在32bits的系統中可到達16TB,在64bits的系統更可到達8EB的空間。 LV(Logical Volume,邏輯捲軸) VG最終會切割出各個LV,在格式化LV之後就可成為類似分割區的空間儲存資料。LV的大小也是以PE為單位。 整個LVM的建立流程就是,一個實體的磁碟經由建立PV,再由建立VG決定PE大小而堆疊組合出VG。VG在經過管理者分配切割為LV,格式化LV之後便成為可用的檔案系統,如下圖所示: LVM CREATE 首先先來介紹LVM建立的方法。 使用 #fdisk 建立一個系統識別碼為8e的分割區( #fdisk 切割出分割區後按 t 可變更識別碼)。 #pvcreate /dev/[分割區代號] 建立PV。 使用 #vgcreate -s [PE大小] [VG名稱] [PV名稱 ] 建立VG, -s 為設定PE大小,預設為4MB。如有多個PV,例如vda5、vda6、vda7,則輸入 #vgcreate -s [VG名稱] /dev/vda{5,6,7} 。 使用 #lvcr...