Linux管理
1. Linux的磁盤與文件系統(tǒng)
? ? ? ?磁盤簡介:磁盤存儲器(magnetic disk storage),以磁盤為存儲介質(zhì)的存儲器。它是利用磁記錄技術(shù)在涂有磁記錄介質(zhì)的旋轉(zhuǎn)圓盤上進(jìn)行數(shù)據(jù)存儲的輔助存儲器;具有存儲容量大、數(shù)據(jù)傳輸率高、存儲數(shù)據(jù)可長期保存等特點(diǎn)。
? ? ? ?磁盤物理組成:盤片(Platters)、軸(Spindle)、讀寫頭(Read/Write Head)、讀寫頭激勵(lì)器(Actuator)、控制器(Controller)和電路板(a printed circuit board)。
? ? ? “巨磁電阻”效應(yīng):非常弱小的磁性變化就能導(dǎo)致巨大電阻變化。
? ? ? ?磁盤類型:
- IDE:(Integrated Drive Electronics)集成驅(qū)動器電子的縮寫,俗稱并口;本意是指把控制器與盤體集成在一起的硬盤驅(qū)動器,是一種硬盤的傳輸接口,另一個(gè)名稱叫做ATA(Advanced Technology Attachment);具有性能價(jià)格比高、適用面廣等特點(diǎn)。
- SATA:(Serial ATA)俗稱串口;采用點(diǎn)對點(diǎn)的方式實(shí)現(xiàn)了數(shù)據(jù)的分組傳輸從而帶來更高的傳輸效率。
- SCSI:(Small Computer System Interface)具有應(yīng)用范圍廣、多任務(wù)、帶寬大、CPU占用率低,以及熱插拔等優(yōu)點(diǎn),但較高的價(jià)格使得它很難如IDE硬盤般普及,因此SCSI硬盤主要應(yīng)用于中、高端服務(wù)器和高檔工作站中。
- SAS:(Serial Attached SCSI)即串行連接SCSI,是新一代的SCSI技術(shù)。和現(xiàn)在流行的SATA硬盤相同,都是采用串行技術(shù)以獲得更高的傳輸速度,并通過縮短連結(jié)線改善內(nèi)部空間等。SAS是并行SCSI接口之后開發(fā)出的全新接口。此接口的設(shè)計(jì)是為了改善存儲系統(tǒng)的效能、可用性和擴(kuò)充性,并且提供與SATA硬盤的兼容性。
- FC:(Fiber Channel)光纖通道硬盤是為提高多硬盤存儲系統(tǒng)的速度和靈活性才開發(fā)的,它的出現(xiàn)大大提高了多硬盤系統(tǒng)的通信速度。光纖通道的主要特性有:熱插拔性、高速帶寬、遠(yuǎn)程連接、連接設(shè)備數(shù)量大等。光纖通道是為在像服務(wù)器這樣的多硬盤系統(tǒng)環(huán)境而設(shè)計(jì),能滿足高端工作站、服務(wù)器、海量存儲子網(wǎng)絡(luò)、外設(shè)間通過集線器、交換機(jī)和點(diǎn)對點(diǎn)連接進(jìn)行雙向、串行數(shù)據(jù)通訊等系統(tǒng)對高數(shù)據(jù)傳輸率的要求。
- SSD:(Solid State Disk或Solid State Drive)稱作電子硬盤或者固態(tài)電子盤,是由控制單元和固態(tài)存儲單元(DRAM或FLASH芯片)組成的硬盤。固態(tài)硬盤的接口規(guī)范和定義、功能及使用方法上與普通硬盤的相同,在產(chǎn)品外形和尺寸上也與普通硬盤一致。由于固態(tài)硬盤沒有普通硬盤的旋轉(zhuǎn)介質(zhì),因而抗震性極佳。其芯片的工作溫度范圍很寬(-40~85℃)。目前廣泛應(yīng)用于軍事、車載、工控、視頻監(jiān)控、網(wǎng)絡(luò)監(jiān)控、網(wǎng)絡(luò)終端、電力、醫(yī)療、航空等、導(dǎo)航設(shè)備等領(lǐng)域。目前由于成本較高,正在逐漸普及到DIY市場。
? ? ? ?存儲類型:
- 直連式存儲(Direct-AttachedStorage,簡稱DAS)依賴服務(wù)器主機(jī)操作系統(tǒng)進(jìn)行數(shù)據(jù)的IO讀寫和存儲維護(hù)管理,數(shù)據(jù)備份和恢復(fù)要求占用服務(wù)器主機(jī)資源(包括CPU、系統(tǒng)IO等)。
- 網(wǎng)絡(luò)化存儲(Fabric-AttachedStorage,簡稱FAS)
? ? ? ?網(wǎng)絡(luò)化存儲根據(jù)傳輸協(xié)議又分為:
- 網(wǎng)絡(luò)接入存儲(Network-AttachedStorage,簡稱NAS)存儲設(shè)備通過標(biāo)準(zhǔn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(如以太網(wǎng))添加到一群計(jì)算機(jī)上。NAS是文件級的存儲方法,重點(diǎn)在于幫助工作組和部門級機(jī)構(gòu)解決迅速增加存儲容量的需求。如今用戶采用NAS較多的功能是用來文檔共享、圖片共享、電影共享等等,而且隨著云計(jì)算的發(fā)展,一些NAS廠商也推出了云存儲功能,大大方便了企業(yè)和個(gè)人用戶的使用。
- 存儲區(qū)域網(wǎng)絡(luò)(StorageAreaNetwork,簡稱SAN)通過光纖通道交換機(jī)連接存儲陣列和服務(wù)器主機(jī),成為一個(gè)專用的存儲網(wǎng)絡(luò)。SAN提供了一種與現(xiàn)有LAN連接的簡易方法,并且通過同一物理通道支持廣泛使用的SCSI和IP協(xié)議。SAN不受現(xiàn)今主流的、基于SCSI存儲結(jié)構(gòu)的布局限制。特別重要的是,隨著存儲容量的爆炸性增長,SAN允許企業(yè)獨(dú)立地增加它們的存儲容量。SAN的結(jié)構(gòu)允許任何服務(wù)器連接到任何存儲陣列,不管數(shù)據(jù)置放在那里,服務(wù)器都可直接存取所需的數(shù)據(jù)。
2. 查看磁盤目錄與容量
? ? ? ?df:檢查文件系統(tǒng)的磁盤空間占用情況
? ? ? ?語法:df [-ahikHTm] [目錄或文件名]
? ? ? ?選項(xiàng)與參數(shù):
- -a :列出所有的文件系統(tǒng),包括系統(tǒng)特有的 /proc 等文件系統(tǒng);
- -k :以 KBytes 的容量顯示各文件系統(tǒng);
- -m :以 MBytes 的容量顯示各文件系統(tǒng);
- -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
- -H :以 M=1000K 取代 M=1024K 的進(jìn)位方式;
- -T :顯示文件系統(tǒng)類型;
- -i :不用硬盤容量,而以 inode 的數(shù)量來顯示
? ? ? ?du:查看文件和目錄磁盤使用的空間,直接到文件系統(tǒng)內(nèi)去搜尋所有的文件數(shù)據(jù)
? ? ? ?語法:du [-ahskm] 文件或目錄名稱
? ? ? ?選項(xiàng)與參數(shù):
- -a :列出所有的文件與目錄容量,因?yàn)槟J(rèn)僅統(tǒng)計(jì)目錄底下的文件量而已。
- -h :以人們較易讀的容量格式 (G/M) 顯示;
- -s :列出總量而已,而不列出每個(gè)各別的目錄占用容量;
- -S :不包括子目錄下的總計(jì),與 -s 有點(diǎn)差別。
- -k :以 KBytes 列出容量顯示;
- -m :以 MBytes 列出容量顯示;
? ? ? ?ln:為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同步的鏈接
? ? ? ?語法:ln [參數(shù)][源文件或目錄][目標(biāo)文件或目錄]
? ? ? ?選項(xiàng)與參數(shù):
- -b :刪除,覆蓋以前建立的鏈接
- -d :允許超級用戶制作目錄的硬鏈接
- -f :強(qiáng)制執(zhí)行
- -i :交互模式,文件存在則提示用戶是否覆蓋
- -n :把符號鏈接視為一般目錄
- -s :軟鏈接(符號鏈接)
- -v :顯示詳細(xì)的處理過程
- -S :"-S<字尾備份字符串> "或 "--suffix=<字尾備份字符串>"
- -V :"-V<備份方式>"或"--version-control=<備份方式>"
- --help :顯示幫助信息
- --version :顯示版本信息
? ? ? ?fdisk:是Linux 磁盤分區(qū)表操作工具
? ? ? ?語法:fdisk [參數(shù)]
? ? ? ?必要參數(shù):
- -l :列出素所有分區(qū)表
- -u :與"-l"搭配使用,顯示分區(qū)數(shù)目
- -s :<分區(qū)編號> 指定分區(qū)
- -v :版本信息
? ? ? ?菜單操作說明:
- m :顯示菜單和幫助信息
- a :活動分區(qū)標(biāo)記/引導(dǎo)分區(qū)
- d :刪除分區(qū)
- l :顯示分區(qū)類型
- n :新建分區(qū)
- p :顯示分區(qū)信息
- q :退出不保存
- t :設(shè)置分區(qū)號
- v :進(jìn)行分區(qū)檢查
- w :保存修改
- x :擴(kuò)展應(yīng)用,高級功能
3. 新增磁盤步驟
- 發(fā)現(xiàn)磁盤:
? ? ? ?重啟系統(tǒng)或在/sys下掃描SCSI:
- cd /sys/class/scsi_host
- echo "- - -" > /sys/class/scsi_host/host0/scan
? ? ? ?fdisk–l查看新加的磁盤,如果沒有則把host0換成host1或者h(yuǎn)ost2嘗試一下
- 分割磁盤:
? ? ? ?創(chuàng)建分割槽的形式:
? ? ? ?1)1-4 號尚有剩余,且系統(tǒng)未有extended:此時(shí)會出現(xiàn)讓你挑選Primary / Extended 的項(xiàng)目,且你可以指定1~4 號間的號碼;
 ? ? ? ?2)1-4 號尚有剩余,且系統(tǒng)有extended:此時(shí)會出現(xiàn)讓你挑選Primary / Logical 的項(xiàng)目;若選擇p 則你還需要指定1~4 號間的號碼;若選擇l(L的小寫)?則不需要配置號碼,因?yàn)橄到y(tǒng)會自動指定邏輯分割槽的文件名號碼;
 ? ? ? ?3)1-4 沒有剩余,且系統(tǒng)有extended:此時(shí)不會讓你挑選分割槽類型,直接會進(jìn)入logical 的分割槽形式。
- 格式化磁盤:
? ? ? ?mkfs:在特定的分區(qū)上建立 linux 文件系統(tǒng)
? ? ? ?語法:mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
? ? ? ?選項(xiàng)與參數(shù):
- -t :可以接文件系統(tǒng)格式,例如 ext3, ext2, vfat 等(系統(tǒng)有支持才會生效)
- device :預(yù)備檢查的硬盤分區(qū),例如:/dev/sda1
- -V :詳細(xì)顯示模式
- -c :在制做檔案系統(tǒng)前,檢查該partition 是否有壞軌
- -l bad_blocks_file :將有壞軌的block資料加到 bad_blocks_file 里面
- block :給定 block 的大小
? ? ? ?超過16T硬盤分區(qū)和格式化:傳統(tǒng)fdisk分區(qū)不支持2T以上的磁盤分區(qū),而parted分區(qū)可以支持;ext4格式不支持16T以上的磁盤空間分區(qū),必須使用xfs系統(tǒng)類型。
? ? ? ?parted:對大容量硬盤進(jìn)行分區(qū)
? ? ? ?語法:parted [選項(xiàng)]... [設(shè)備 [命令 [參數(shù)]...]...]
? ? ? ?選項(xiàng)與參數(shù):
- -h, --help :顯示求助信息
- -i, --interactive :在必要時(shí)提示用戶
- -l, --list :顯示所有磁盤設(shè)備的分區(qū)表
- -s, --script :不進(jìn)入用戶交互模式
- -v, --version :顯示版本
- -m,?--machine :打印出方便機(jī)器解析的輸出
- -a,?--alignment :對齊分區(qū)
? ? ? ?對大容量硬盤進(jìn)行格式化:mkfs.xfs [設(shè)備]
| check NUMBER | 做一次簡單的文件系統(tǒng)檢測 | 
| cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER | 復(fù)制文件系統(tǒng)到另一個(gè)分區(qū) | 
| help [COMMAND] | 顯示所有的命令幫助 | 
| mklabel,mktable LABEL-TYPE??gpt | 創(chuàng)建新的磁盤卷標(biāo)(分區(qū)表) | 
| mkfs NUMBER FS-TYPE | 在分區(qū)上建立文件系統(tǒng) | 
| mkpart PART-TYPE [FS-TYPE] START END | 創(chuàng)建一個(gè)分區(qū) | 
| mkpartfs PART-TYPE FS-TYPE START END | 創(chuàng)建分區(qū),并建立文件系統(tǒng) | 
| move NUMBER START END | 移動分區(qū) | 
| name NUMBER NAME | 給分區(qū)命名 | 
| print [devices|free|list,all|NUMBER] | 顯示分區(qū)表、活動設(shè)備、空閑空間、所有分區(qū) | 
| quit | 退出 | 
| rescue START END | 修復(fù)丟失的分區(qū) | 
| resize NUMBER START END | 修改分區(qū)大小 | 
| rm NUMBER | 刪除分區(qū) | 
| select DEVICE | 選擇需要編輯的設(shè)備 | 
| set NUMBER FLAG STATE | 改變分區(qū)標(biāo)記 | 
| toggle [NUMBER [FLAG]] | 切換分區(qū)表的狀態(tài) | 
| unit UNIT | 設(shè)置默認(rèn)的單位 | 
| Version | 顯示版本 | 
- 檢驗(yàn)磁盤:
? ? ? ?fsck:用來檢查和維護(hù)不一致的文件系統(tǒng)
? ? ? ?語法:fsck [-t 文件系統(tǒng)] [-ACay] 裝置名稱
? ? ? ?選項(xiàng)與參數(shù):
- -t :給定檔案系統(tǒng)的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此參數(shù)
- -s :依序一個(gè)一個(gè)地執(zhí)行 fsck 的指令來檢查
- -A :對/etc/fstab 中所有列出來的 分區(qū)(partition)做檢查
- -C :顯示完整的檢查進(jìn)度
- -V :詳細(xì)顯示模式
- -R :同時(shí)有 -A 條件時(shí),省略 / 不檢查
- -d :?打印出 e2fsck 的 debug 結(jié)果
- -p :同時(shí)有 -A 條件時(shí),同時(shí)有多個(gè) fsck 的檢查一起執(zhí)行
- -a :如果檢查有錯(cuò)則自動修復(fù)
- -r :如果檢查有錯(cuò)則由使用者回答是否修復(fù)
- -y :選項(xiàng)指定檢測每個(gè)文件是自動輸入yes,在不確定那些是不正常的時(shí)候,可以執(zhí)行 # fsck -y 全部檢查修復(fù)
- 掛載與卸除磁盤:
? ? ? ?mount:掛載Linux系統(tǒng)外的文件
? ? ? ?語法:mount [-t 文件系統(tǒng)] [-L Label名] [-o 額外選項(xiàng)] [-n] 裝置文件名 掛載點(diǎn)
? ? ? ?選項(xiàng)與參數(shù):
- -V :顯示程序版本
- -h :顯示輔助訊息
- -v :顯示較訊息,通常和 -f 用來除錯(cuò)。
- -a :將 /etc/fstab 中定義的所有檔案系統(tǒng)掛上。
- -F :這個(gè)命令通常和 -a 一起使用,它會為每一個(gè) mount 的動作產(chǎn)生一個(gè)行程負(fù)責(zé)執(zhí)行。在系統(tǒng)需要掛上大量 NFS 檔案系統(tǒng)時(shí)可以加快掛上的動作。
- -f :通常用在除錯(cuò)的用途。它會使 mount 并不執(zhí)行實(shí)際掛上的動作,而是模擬整個(gè)掛上的過程。通常會和 -v 一起使用。
- -n :一般而言,mount 在掛上后會在 /etc/mtab 中寫入一筆資料。但在系統(tǒng)中沒有可寫入檔案系統(tǒng)存在的情況下可以用這個(gè)選項(xiàng)取消這個(gè)動作。
- -L :將含有特定標(biāo)簽的硬盤分割掛上。
- -U :將檔案分割序號為 的檔案系統(tǒng)掛下。-L 和 -U 必須在/proc/partition 這種檔案存在時(shí)才有意義。
- -t :指定檔案系統(tǒng)的型態(tài),通常不必指定。mount 會自動選擇正確的型態(tài)。
? ? ? ?umount:卸除目前掛在Linux目錄中的文件系統(tǒng)
? ? ? ?語法:umount [-fn] 裝置文件名或掛載點(diǎn)
? ? ? ?選項(xiàng)與參數(shù):
- -a :卸除/etc/mtab中記錄的所有文件系統(tǒng)。
- -f? :強(qiáng)制卸除
- -h :顯示幫助。
- -n :卸除時(shí)不要將信息存入/etc/mtab文件中。
- -r :若無法成功卸除,則嘗試以只讀的方式重新掛入文件系統(tǒng)。
- -t :<文件系統(tǒng)類型> 僅卸除選項(xiàng)中所指定的文件系統(tǒng)。
- -v :執(zhí)行時(shí)顯示詳細(xì)的信息。
- -V :顯示版本信息。
? ? ? ?掛載前注意的事情:
? ? ? ?1)單一文件系統(tǒng)不應(yīng)該被重復(fù)掛載在不同的掛載點(diǎn)(目錄)中
 ? ? ? ?2)單一目錄不應(yīng)該重復(fù)掛載多個(gè)文件系統(tǒng);
 ? ? ? ?3)要作為掛載點(diǎn)的目錄,理論上應(yīng)該都是空目錄才是。
? ? ? ?mtab文件和 fstab文件區(qū)別:它們結(jié)構(gòu)和內(nèi)容基本相同,一樣在 /etc 文件下,但是不同的是,mtab文件記錄的是,當(dāng)前已掛載的分區(qū)信息。
? ? ? ?1)/etc/fstab文件作用:文件/etc/fstab存放的系統(tǒng)啟動時(shí)需要掛載的文件系信息。系統(tǒng)啟動時(shí)會讀該文件,當(dāng)需要啟動時(shí)掛載時(shí),系統(tǒng)就自動掛載;
? ? ? ?2)/etc/mtab文件作用:動態(tài)的記錄現(xiàn)在系統(tǒng)已經(jīng)掛載的文件系統(tǒng),包括操作系統(tǒng)建立的虛擬文件等;而/etc/fstab是為系統(tǒng)啟動掛載文件系統(tǒng)準(zhǔn)備的。每當(dāng) mount 掛載分區(qū)、umount 卸載分區(qū),都會動態(tài)更新 mtab,mtab 總是保持著當(dāng)前系統(tǒng)中已掛載的分區(qū)信息,fdisk、df 這類程序,必須要讀取 mtab 文件,才能獲得當(dāng)前系統(tǒng)中的分區(qū)掛載情況。
? ? ? ?進(jìn)入單人維護(hù)模式,在/目錄只有read only的狀態(tài),需要修改/etc/fstab
- mount -n -o remount,rw /
4.?RAID陣列
? ? ? ?RAID:(Redundant Arrays of Inexpensive Disks, RAID)容錯(cuò)式廉價(jià)磁盤陣列,RAID 可以透過一個(gè)軟件或硬件,將多個(gè)較小的磁盤整合成為一個(gè)較大的磁盤裝置。
? ? ? ?RAID?level:
- RAID-0 (等量模式, stripe):效能最佳
- RAID-1 (映射模式, mirror):完整備份
- RAID 0+1,RAID 1+0
- RAID 5:效能與數(shù)據(jù)備份的均衡考量
- Spare Disk:預(yù)備磁盤,在壞掉硬盤時(shí)主動重建數(shù)據(jù)系統(tǒng)
| 最少磁盤數(shù) | 2 | 2 | 4 | 3 | 4 | 
| 最大容錯(cuò)磁盤數(shù) | 無 | n-1 | n/2 | 1 | 2 | 
| 資料安全性 | 完全沒有 | 最佳 | 最佳 | 好 | 比RAID5好 | 
| 理論寫入效能 | n | 1 | n/2 | <n-1 | <n-2 | 
| 理論讀出效能 | n | n | n | <n-1 | <n-2 | 
| 可用容量 | n | 1 | n/2 | n-1 | n-2 | 
| 一般應(yīng)用 | 強(qiáng)調(diào)效能但資料不重要的環(huán)境 | 資料與備份 | 服務(wù)器、云系統(tǒng)常用 | 資料與備份 | 資料與備份 | 
5. 配置軟件磁盤陣列
- 創(chuàng)建RAID0
? ? ? ?1)新建分區(qū):創(chuàng)建RAID0 需要兩塊硬盤,所以我們拿/dev/sdb和/dev/sdc來實(shí)驗(yàn)。輸入"n" 新建分區(qū),這里我們將整個(gè)磁盤都劃分成一個(gè)分區(qū),然后輸入"p" 查看分區(qū)情況。
? ? ? ?2)修改分區(qū)類型:默認(rèn)新建分區(qū)的類型是Linux,代號83,我們需要將其修改為raid 類型。輸入"t",然后輸入"L" 列出所有的文件格式,這里選擇"fdLinux raid auto", 輸入"fd",然后再輸入"p" 查看分區(qū)情況,這是分區(qū)格式已經(jīng)變成了Linux raid autodetect;輸入"w" 保存分區(qū)。
? ? ? ?3)同步分區(qū):使用“partprobe”命令同步分區(qū)情況,保存完后查看/proc/partitions是否存在。此命令在物理機(jī)管用,在虛擬機(jī)不行,只能重啟或“partx -a /dev/sdb1 /dev/sdb”
? ? ? ?4)創(chuàng)建RAID0:mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd{b,c}1
? ? ? ?mdadm:用于建設(shè)、管理和監(jiān)控RAID陣列
? ? ? ?語法:mdadm [mode] [options]
? ? ? ?選項(xiàng)與參數(shù):
- -A, --assemble :激活啟用磁盤陣列
- -C, --create :創(chuàng)建一個(gè)新陣列
- -D, --detail :打印陣列設(shè)備的詳細(xì)信息
- -G, --grow :改變陣列的大小或形態(tài)
- -v, --verbose :顯示詳細(xì)信息
- -f, --fail :將設(shè)備狀態(tài)定為故障
- -s, --scan :掃描配置文件或 /proc/mdstat以搜尋丟失的信息。配置文件/etc/mdadm.conf
- -c, --chunk= :設(shè)定陣列的塊chunk大小,單位為KB
- -a, --add :添加設(shè)備到陣列
- -x, --spare-devices= :指定初始陣列的備用盤數(shù)目
- -n, --raid-devices= :指定陣列成員數(shù)目,這個(gè)數(shù)目只能由 --grow 修改
- -l, --level= :設(shè)定磁盤陣列級別
- -r,?--remove : 移除設(shè)備
- --auto=yes :自動為其創(chuàng)建設(shè)備文件
- -S, --stop?:停用磁盤陣列
? ? ? ?5)查看RAID0狀態(tài):cat /proc/mdstat; mdadm -D /dev/md0
? ? ? ?6)創(chuàng)建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
? ? ? ?7)格式化磁盤陣列:mkfs.ext4 /dev/md0
? ? ? ?8)建立掛載點(diǎn)并掛載:mkdir /mnt/raid0; mount /dev/md0 /mnt/raid0
? ? ? ?9)開機(jī)掛載:vi?/etc/fstab
- 創(chuàng)建RAID1
? ? ? ?和創(chuàng)建raid0類似,我們拿/dev/sdd和/dev/sde這兩塊硬盤來做演示。重復(fù)創(chuàng)建raid0前三個(gè)步驟。
? ? ? ?4)創(chuàng)建RAID1:mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1
? ? ? ?5)查看RAID1狀態(tài):cat /proc/mdstat; mdadm -D /dev/md1
? ? ? ?6)創(chuàng)建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
? ? ? ?7)格式化磁盤陣列:mkfs.ext4 /dev/md1
? ? ? ?8)建立掛載點(diǎn)并掛載:mkdir /mnt/raid1; mount /dev/md1?/mnt/raid1
? ? ? ?9)開機(jī)掛載:vi?/etc/fstab
- 創(chuàng)建RAID10
? ? ? ?raid10就是由兩個(gè)raid1組成raid0的級別,raid0、raid1各需要兩塊磁盤,所以創(chuàng)建raid10就需要四塊磁盤。重復(fù)創(chuàng)建raid0前三個(gè)步驟。
? ? ? ?4)創(chuàng)建2個(gè)raid1:mdadm -C /dev/md3?-ayes -l1 -n2 /dev/sd[f,g]1; mdadm -C /dev/md4 -a yes -l1 -n2 /dev/sd{h,i}1
? ? ? ?5)創(chuàng)建raid0:mdadm -C /dev/md10?-ayes -l0 -n2 /dev/md{3,4}
? ? ? ?或以上2步驟化簡為:mdadm -C /dev/md10 -ayes -l10 -n4 /dev/sd{f,g,h,i}1
? ? ? ?6)查看RAID10狀態(tài):cat /proc/mdstat; mdadm -D /dev/md10
? ? ? ?7)創(chuàng)建配置文件/etc/mdadm.conf:mdadm -Dsv >/etc/mdadm.conf
? ? ? ?8)格式化磁盤陣列:mkfs -t xfs -f /dev/md10?
? ? ? ?9)建立掛載點(diǎn)并掛載:mkdir /mnt/raid10; mount /dev/md10 /mnt/raid10
? ? ? ?10)開機(jī)掛載:vi?/etc/fstab
- 創(chuàng)建RAID5
? ? ? ?RAID5 至少需要三塊硬盤,我們拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi這四塊硬盤來做實(shí)驗(yàn),三塊做為活動盤,另一塊做為熱備盤。重復(fù)創(chuàng)建raid0前三個(gè)步驟。
? ? ? ?4)創(chuàng)建RAID5:mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[j,k,l,m]1
? ? ? ?5)查看raid5 狀態(tài):cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?6)創(chuàng)建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
? ? ? ?7)格式化磁盤陣列:mkfs.ext4 /dev/md5
? ? ? ?8)建立掛載點(diǎn)并掛載:mkdir /mnt/raid5; mount /dev/md0 /mnt/raid5
? ? ? ?9)開機(jī)掛載:vi?/etc/fstab
- raid5維護(hù)
? ? ? ?1)模擬磁盤損壞:mdadm /dev/md5 -f /dev/sdm1
? ? ? ?2)查看重建狀態(tài):cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?3)移除損壞磁盤:mdadm /dev/md5 -r /dev/sdm1
? ? ? ?4)再次查看狀態(tài):cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?5)新加熱備磁盤:mdadm /dev/md5 -a /dev/sdm1
? ? ? ?6)再次查看狀態(tài):cat /proc/mdstat;?mdadm -D /dev/md5
- 向RAID5增加存儲硬盤
? ? ? ?4)新加硬盤:mdadm /dev/md5 -a /dev/sdn1
? ? ? ?5)查看raid5 狀態(tài):cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?6)熱備盤轉(zhuǎn)換成活動盤:mdadm -G /dev/md5 -n4
? ? ? ?7)擴(kuò)容文件系統(tǒng):resize2fs /dev/md5;?df -TH
? ? ? ?8)創(chuàng)建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
- 刪除軟件磁盤陣列
? ? ? ?1)卸載陣列:umount?/dev/md0
? ? ? ?2)停止RAID陣列:
- mdadm --stop /dev/md0
- mdadm --misc --zero-superblock /dev/sdb
- mdadm --misc --zero-superblock /dev/sdc
? ? ? ?3)防止開機(jī)啟動RAID:把該設(shè)備相關(guān)的配置信息刪除 vim /etc/mdadm.conf;刪除開機(jī)啟動信息 vim /etc/fstab
4.?LVM卷管理
? ? ? ? LVM:(Logical Volume Manager)邏輯盤卷管理的簡稱,它是Linux環(huán)境下對磁盤分區(qū)進(jìn)行管理的一種機(jī)制,LVM是建立在硬盤和分區(qū)之上的一個(gè)邏輯層,來提高磁盤分區(qū)管理的靈活性。、
? ? ? ?工作原理:通過將底層的物理硬盤抽象的封裝起來,然后以邏輯卷的方式呈現(xiàn)給上層應(yīng)用。
? ? ? ?邏輯卷管理:
- PV(Physical Volume)物理卷,在邏輯卷管理中處于最底層,它可以是實(shí)際物理硬盤上的分區(qū),也可以是整個(gè)物理硬盤,也可以是raid設(shè)備。
- VG(VolumneGroup)卷組,建立在物理卷之上,一個(gè)卷組中至少要包括一個(gè)物理卷,在卷組建立之后可動態(tài)添加物理卷到卷組中。一個(gè)邏輯卷管理系統(tǒng)工程中可以只有一個(gè)卷組,也可以擁有多個(gè)卷組。
- LV(Logical Volume)邏輯卷,建立在卷組之上,卷組中的未分配空間可以用于建立新的邏輯卷,邏輯卷建立后可以動態(tài)地?cái)U(kuò)展和縮小空間。系統(tǒng)中的多個(gè)邏輯卷可以屬于同一個(gè)卷組,也可以屬于不同的多個(gè)卷組。
- PE(Physical Extent)物理塊。整個(gè)LVM 最小的儲存區(qū)塊,數(shù)據(jù)資料都是由寫入PE 來處理的。
5.?卷管理操作?
? ? ? ?我們將模擬raid5、分區(qū)、物理硬盤三種類型設(shè)備創(chuàng)建VG,raid5需要四塊硬盤,分區(qū)和物理硬盤各一塊硬盤,還有擴(kuò)容時(shí)需要至少一塊硬盤,所以在虛擬機(jī)里添加八塊硬盤,每塊5GB.
- 創(chuàng)建LVM
? ? ? ?1)安裝LVM管理工具
? ? ? ?檢查系統(tǒng)中是否安裝了LVM管理工具:rpm -qa | grep lvm
? ? ? ?如果未安裝,則使用yum 方式安裝:yum install lvm*;?rpm -qa | grep lvm
? ? ? ?2)新建raid5設(shè)備:使用/dev/sdb, /dev/sdc, /dev/sdd, /dev/sde四塊物理硬盤做軟raid模擬。重復(fù)創(chuàng)建raid0前三個(gè)步驟。
- mdadm-C /dev/md5 -ayes -l5 -n3 –x1 /dev/sd[b,c,d,e]
? ? ? ?3)創(chuàng)建配置文件/etc/mdadm.conf:mdadm -Dsv >/etc/mdadm.conf
? ? ? ?4)新建分區(qū):使用/dev/sdf硬盤進(jìn)行分割和格式化為/dev/sdf1
? ? ? ?5)創(chuàng)建PV:pvcreate /dev/md5 /dev/sdf1 /dev/sdg
? ? ? ?6)查看PV:pvdisplay;?pvs;?pvscan
? ? ? ?7)創(chuàng)建VG:vgcreate vg0 /dev/md5 /dev/sdf1 /dev/sdg
? ? ? ?8)查看VG:vgdisplay; vgs; vgscan
? ? ? ?9)創(chuàng)建LV:lvcreate -L 5G -n lv1 vg0
? ? ? ?10)查看LV:lvdisplay
? ? ? ?11)再看VG:vgs
? ? ? ?12)格式化LV:mkfs.ext4 /dev/vg0/lv1
? ? ? ?13)掛載LV:mkdir/mnt/lv1; mount /dev/vg0/lv1 /mnt/lv1/; df -TH
? ? ? ?14)開機(jī)掛載:vi?/etc/fstab
- 擴(kuò)容LVM
? ? ? ?1)查看vg0:vgs
? ? ? ?2)擴(kuò)容lv1:lvextend -L +1G /dev/vg0/lv1
? ? ? ?3)查看lv1:lvs
? ? ? ?4)擴(kuò)容文件系統(tǒng):resize2fs /dev/vg0/lv1;?df -TH
? ? ? ?5)擴(kuò)容VG:pvcreate /dev/sdh; vgextend vg0 /dev/sdh
? ? ? ?或 mdadm /dev/md5 -a /dev/sdj1; mdadm -G /dev/md5 -n4; pvresize /dev/md5
- 縮減LVM
? ? ? ?1)卸載掛載點(diǎn):umount /mnt/lv1/
? ? ? ?2)縮減文件系統(tǒng):resize2fs /dev/vg0/lv1 4G
? ? ? ?3)檢查磁盤:e2fsck -f /dev/vg0/lv1
? ? ? ?4)再次執(zhí)行縮減:resize2fs /dev/vg0/lv1 4G
? ? ? ?5)縮減LV:lvreduce /dev/vg0/lv1 -L 4G? (縮減到的大小)
? ? ? ?6)掛載查看:mount /dev/vg0/lv1 /mnt/lv1; df -TH
? ? ? ?7)卸載掛載點(diǎn):umount /mnt/lv1/
? ? ? ?8)查看PV:pvs
? ? ? ?9)移除硬盤:vgreduce vg0 /dev/sdg
? ? ? ?10)查看vg0:vgs
- 刪除LVM
? ? ? ?1)卸載掛載點(diǎn):umount /mnt/lv1/
? ? ? ?2)移除LV:lvremove /dev/vg0/lv1
? ? ? ?3)移除VG:vgremove vg0; vgs
? ? ? ?4)移除PV:pvremove /dev/md5 /dev/sdf1 /dev/sdg /dev/sdh
- LVM快照
? ? ? ?snapshot:快照就是將當(dāng)時(shí)的系統(tǒng)信息記錄下來,就好像照相一樣,未來若有任何資料變動了,則原始資料會被移動到快照區(qū),沒有被改動的區(qū)域則由快照區(qū)與檔案系統(tǒng)共享。
? ? ? ?1)建立LV:lvcreate -L 100M -n lv2?vg0
? ? ? ?2)格式化LV:mkfs.ext4 /dev/vg0/lv2
? ? ? ?3)掛載LV:mkdir?/mnt/lv2;?mount /dev/vg0/lv2 /mnt/lv2? ?(對 /mnt/lv2 掛載點(diǎn)寫入測試數(shù)據(jù))
? ? ? ?4)創(chuàng)建快照:lvcreate -L 80M -s -n lv2snap /dev/vg0/lv2
? ? ? ?5)查看快照:lvdisplay
? ? ? ?6)掛載查看:mkdir /mnt/snapshot; mount /dev/vg0/lv2snap /mnt/snapshot? ?(對 /mnt/lv2 掛載點(diǎn)文檔進(jìn)行修改操作)
? ? ? ?7)打包備份:cd?/mnt/snapshot; tar cjf /tmp/lvm.tar.bz2 *
? ? ? ?8)卸載并移除snapshot:umount /mnt/snapshot; lvremove /dev/vg0/lv2snap
? ? ? ?9)卸載并格式化/mnt/lv1:umount /mnt/lv2; mkfs.ext4 /dev/vg0/lv2
? ? ? ?10)恢復(fù)數(shù)據(jù):mount /dev/vg0/lv2 /mnt/lv2; tar xjf /tmp/lvm.tar.bz2? -C /mnt/lv2
? ? ? ?11)查看掛載:ll /mnt/lv2/
6.?進(jìn)程管理
? ? ? ?進(jìn)程:是正在執(zhí)行的一個(gè)程序或命令,每一個(gè)進(jìn)程都是一個(gè)運(yùn)行的實(shí)體,都有自己的地址空間,并占用一定的系統(tǒng)資源。
? ? ? ?進(jìn)程和程序區(qū)別:
- 程序是靜態(tài)概念,本身作為一種軟件資源長期保存;而進(jìn)程是程序的執(zhí)行過程的動態(tài)概念,具有一定的生命期,是動態(tài)產(chǎn)生和消亡的。
- 程序和進(jìn)程無對應(yīng)關(guān)系。一個(gè)程序可以由多個(gè)進(jìn)程公用;另一方面,一個(gè)進(jìn)程在活動中有可順序地執(zhí)行若干個(gè)程序。
? ? ? ?ps:顯示當(dāng)前進(jìn)程的狀態(tài)
? ? ? ?語法:ps [options] [--help]
? ? ? ?選項(xiàng)與參數(shù):
- -w :顯示加寬可以顯示較多的資訊
- -C :指定顯示的進(jìn)程名
- -au :顯示較詳細(xì)的資訊
- -aux :顯示所有包含其他使用者的行程
- au(x) :使用BSD操作系統(tǒng)格式顯示系統(tǒng)中所有進(jìn)程
- -e :顯示所有進(jìn)程,環(huán)境變量
- -f :顯示程序間的關(guān)系,全格式輸出
- -o :指定顯示列名
- -h :不顯示標(biāo)題
- -l :長格式輸出
- -a :顯示終端上地所有進(jìn)程,包括其他用戶地進(jìn)程
- -r :只顯示正在運(yùn)行地進(jìn)程
- -x :顯示沒有控制終端地進(jìn)程
- -u :以用戶為主的格式來顯示程序狀況
- --lines<行數(shù)> :每頁顯示的行數(shù)
- --width<字符數(shù)> :每頁顯示的字符數(shù)
- --help :顯示幫助信息
- --version :顯示版本顯示
? ? ? ?ps配合watch使用,每秒中進(jìn)行刷新顯示:
- watch -n 1 'ps -u root u --sort -pcpu -pmem | head -n 10'
? ? ? ?pstree:以樹狀圖的方式展現(xiàn)進(jìn)程之間的派生關(guān)系
? ? ? ?語法:pstree [選項(xiàng)]
? ? ? ?選項(xiàng)與參數(shù):
- -a :顯示每個(gè)程序的完整指令,包含路徑,參數(shù)或是常駐服務(wù)的標(biāo)示;
- -c :不使用精簡標(biāo)示法;
- -G :使用VT100終端機(jī)的列繪圖字符;
- -h :列出樹狀圖時(shí),特別標(biāo)明現(xiàn)在執(zhí)行的程序;
- -H<程序識別碼> :此參數(shù)的效果和指定"-h"參數(shù)類似,但特別標(biāo)明指定的程序;
- -l :采用長列格式顯示樹狀圖;
- -n :用程序識別碼排序。預(yù)設(shè)是以程序名稱來排序;
- -p :顯示每個(gè)進(jìn)程的PID
- -u :顯示每個(gè)進(jìn)程的所屬賬號名稱
- -U :使用UTF-8列繪圖字符;
- -V :顯示版本信息。
- -A :各進(jìn)程樹之間的連接以ASCII碼字符來連接
? ? ? ?top:實(shí)時(shí)顯示進(jìn)程的動態(tài)
? ? ? ?語法:top [選項(xiàng)]
? ? ? ?選項(xiàng)與參數(shù):
- -d :指定每兩次屏幕信息刷新之間的時(shí)間間隔。當(dāng)然用戶可以使用s交互命令來改變之
- -p :通過指定監(jiān)控進(jìn)程ID來僅僅監(jiān)控某個(gè)進(jìn)程的狀態(tài)
- -q :沒有任何延遲的進(jìn)行刷新
- -S :指定累計(jì)模式
- -s :使top命令在安全模式中運(yùn)行,去除交互命令所帶來的潛在危險(xiǎn)
- -i :使top不顯示任何閑置或者僵死進(jìn)程
- -c :顯示整個(gè)命令行而不只是顯示命令名
- -n :更新的次數(shù),完成后將會退出 top
- -b :批處理模式顯示程序信息
? ? ? ?交互式命令:
- K :終止一個(gè)進(jìn)程。系統(tǒng)將提示用戶輸入需要終止的進(jìn)程PID,以及需要發(fā)送給該進(jìn)程什么樣的信號。一般的終止進(jìn)程可以使用15信號;如果不能正常結(jié)束那就使用信號9強(qiáng)制結(jié)束該進(jìn)程。默認(rèn)值是信號15
- i :忽略閑置和僵死進(jìn)程
- q :退出程序
- s :改變兩次刷新之間的延遲時(shí)間
- M :根據(jù)駐留內(nèi)存大小進(jìn)行排序
- P :根據(jù)CPU使用百分比大小進(jìn)行排序
- T :根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序
- W :將當(dāng)前設(shè)置寫入~/.toprc文件中
- x :打開/關(guān)閉排序列的加亮效果,通過”shift + >”或”shift + <”可以向右或左改變排序列
- r :重新安排一個(gè)進(jìn)程的優(yōu)先級別。系統(tǒng)提示用戶輸入需要改變的進(jìn)程PID以及需要設(shè)置的進(jìn)程優(yōu)先級值。輸入一個(gè)正值將使優(yōu)先級降低,反之則可以使該進(jìn)程擁有更高的優(yōu)先權(quán)。默認(rèn)值是10
- S :切換到累計(jì)模式
- f或F :從當(dāng)前顯示中添加或者刪除項(xiàng)目
- o或O :改變顯示項(xiàng)目的順序
- l :切換顯示平均負(fù)載和啟動時(shí)間信息
- m :切換顯示內(nèi)存信息
- t :切換顯示進(jìn)程和CPU狀態(tài)信息
- c :切換顯示命令名稱和完整命令行
? ? ? ?pidof:查找指定名稱的進(jìn)程的進(jìn)程號id號
? ? ? ?語法:pidof [option]?[command]?
? ? ? ?選項(xiàng)與參數(shù):
- -s :僅返回一個(gè)進(jìn)程號
- -c :僅顯示具有相同“root”目錄的進(jìn)程
- -x :顯示由腳本開啟的進(jìn)程
- -o :指定不顯示的進(jìn)程ID
? ? ? ?nice:指定程序的運(yùn)行優(yōu)先級
? ? ? ?語法:nice [option]?[command]?
? ? ? ?選項(xiàng)與參數(shù):
- -n,--adjustment= :指定優(yōu)先級
- --help :顯示求助訊息
- --version :顯示版本資訊
? ? ? ?renice:改變一個(gè)或多個(gè)行程的優(yōu)先級
? ? ? ?語法:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
? ? ? ?選項(xiàng)與參數(shù):
- -n,--priority <priority> :指定標(biāo)識符的計(jì)劃優(yōu)先級
- -g,--pgrp <pgid> :標(biāo)識符指定為進(jìn)程組ID
- -u,--user <name_or_uid> :標(biāo)識符指定為用戶名或用戶ID
- -p,--pid <pid> :標(biāo)識符指定為進(jìn)程ID(默認(rèn))
- -h,--help :顯示幫助信息
- -V,--version :顯示版本信息
? ? ? ?killall:殺死指定進(jìn)程名
? ? ? ?語法:kill [參數(shù)] [進(jìn)程號]
? ? ? ?選項(xiàng)與參數(shù):
- -a :當(dāng)處理當(dāng)前進(jìn)程時(shí),不限制命令名和進(jìn)程號的對應(yīng)關(guān)系
- -Z :只殺死擁有scontext的進(jìn)程
- -e :要求匹配進(jìn)程名稱
- -I :忽略小寫
- -g :殺死進(jìn)程組(不是進(jìn)程)
- -i :殺死進(jìn)程前會先詢問用戶
- -l :列出所有的已知信號名稱
- -q :禁止輸出警告信息
- -s :發(fā)送指定的信號
- -v :顯示報(bào)告信號是否成功發(fā)送
- -w :等待進(jìn)程死亡
- -u :指定用戶
- --version :顯示版本顯示
? ? ? ?kill:刪除執(zhí)行中的程序或工作
? ? ? ?語法:kill [參數(shù)] [進(jìn)程id]
? ? ? ?選項(xiàng)與參數(shù):
- -l :列出全部的信號名稱
- -a :當(dāng)處理當(dāng)前進(jìn)程時(shí),不限制命令名和進(jìn)程號的對應(yīng)關(guān)系
- -p :指定kill 命令只打印相關(guān)進(jìn)程的進(jìn)程號,而不發(fā)送任何信號
- -s :指定發(fā)送信號
- -u :指定用戶
| 1 | SIGHUP | 該信號讓進(jìn)程立即關(guān)閉.然后重新讀取配置文件之后重啟 | 
| 2 | SIGINT | 程序中止信號,用于中止前臺進(jìn)程。相當(dāng)于輸出 Ctrl+C 快捷鍵 | 
| 8 | SIGFPE | 在發(fā)生致命的算術(shù)運(yùn)算錯(cuò)誤時(shí)發(fā)出。不僅包括浮點(diǎn)運(yùn)算錯(cuò)誤,還包括溢出及除數(shù)為 0 等其他所有的算術(shù)運(yùn)算錯(cuò)誤 | 
| 9 | SIGKILL | 用來立即結(jié)束程序的運(yùn)行。本信號不能被阻塞、處理和忽略。般用于強(qiáng)制中止進(jìn)程 | 
| 14 | SIGALRM | 時(shí)鐘定時(shí)信號,計(jì)算的是實(shí)際的時(shí)間或時(shí)鐘時(shí)間。alarm 函數(shù)使用該信號 | 
| 15 | SIGTERM | 正常結(jié)束進(jìn)程的信號,kill 命令的默認(rèn)信號。如果進(jìn)程已經(jīng)發(fā)生了問題,那么這 個(gè)信號是無法正常中止進(jìn)程的,這時(shí)我們才會嘗試 SIGKILL 信號,也就是信號 9 | 
| 18 | SIGCONT | 該信號可以讓暫停的進(jìn)程恢復(fù)執(zhí)行。本信號不能被阻斷 | 
| 19 | SIGSTOP | 該信號可以暫停前臺進(jìn)程,相當(dāng)于輸入 Ctrl+Z 快捷鍵。本信號不能被阻斷 | 
? ? ? ?pkill:控制同名程序的所有進(jìn)程
? ? ? ?語法:pkill [選項(xiàng)] [信號] 進(jìn)程名
? ? ? ?選項(xiàng)與參數(shù):
- -f :顯示完整程序
- -l :顯示源代碼
- -n :顯示新程序
- -o :顯示舊程序
- -v :與條件不符合的程序
- -x :與條件符合的程序
- -p<進(jìn)程號> :列出父進(jìn)程為用戶指定進(jìn)程的進(jìn)程信息
- -t<終端> :指定終端下的所有程序
- -u<用戶> :指定用戶的程序
? ? ? ?pgrep:查看當(dāng)前正在運(yùn)行的進(jìn)程
? ? ? ?語法:pgrep [選項(xiàng)] 進(jìn)程名
? ? ? ?選項(xiàng)與參數(shù):
- -o :僅顯示找到的最小(起始)進(jìn)程號
- -n :僅顯示找到的最大(結(jié)束)進(jìn)程號
- -l :顯示進(jìn)程名稱
- -P :指定父進(jìn)程號
- -g :指定進(jìn)程組
- -t :指定開啟進(jìn)程的終端
- -u :指定進(jìn)程的有效用戶ID
? ? ? ?w:顯示目前登入系統(tǒng)的用戶信息
? ? ? ?語法:w [選項(xiàng)]?[用戶名]
? ? ? ?選項(xiàng)與參數(shù):
- -f :開啟或關(guān)閉顯示用戶從何處登入系統(tǒng)。
- -h :不顯示各欄位的標(biāo)題信息列。
- -l :使用詳細(xì)格式列表,此為預(yù)設(shè)值。
- -s :使用簡潔格式列表,不顯示用戶登入時(shí)間,終端機(jī)階段作業(yè)和程序所耗費(fèi)的CPU時(shí)間。
- -u :忽略執(zhí)行程序的名稱,以及該程序耗費(fèi)CPU時(shí)間的信息。
- -V :顯示版本信息。
7.?計(jì)劃任務(wù)
? ? ? ?at:一次性計(jì)劃任務(wù),在某一固定的時(shí)間執(zhí)行特定命令
? ? ? ?語法:at [選項(xiàng)] [時(shí)間參數(shù)]?
? ? ? ?選項(xiàng)與參數(shù):? ? ? ?
- -m :當(dāng)計(jì)劃任務(wù)執(zhí)行結(jié)束后發(fā)郵件給客戶
- -l :查看用戶計(jì)劃任務(wù)
- -d :刪除用戶計(jì)劃任務(wù)
- -c :查看at計(jì)劃任務(wù)的具體內(nèi)容
- -f /path/from/somefile :從指定文件中讀取任務(wù),不用交互式輸入
? ? ? ?TIME格式:
- HH:MM :在今日的某時(shí)某分進(jìn)行,若該時(shí)刻已過,則明天此時(shí)執(zhí)行任務(wù)
- HH:MM YYYY-MM-DD :規(guī)定在某年某月的某一天的特殊時(shí)刻進(jìn)行該項(xiàng)任務(wù)
- HH:MM [am|pm] [Month] [Date] :強(qiáng)調(diào)在某年某月某日的某時(shí)刻進(jìn)行
- tomorrow,noon,midnight, teatime :明天、中午、午夜、下午茶時(shí)間
- HH:MM [am|pm] + number [minutes|hours|days|weeks] :在某個(gè)時(shí)間點(diǎn)再加幾個(gè)時(shí)間后才進(jìn)行任務(wù)
- now+#{minutes,hours,days,or weeks} :現(xiàn)在之后的多久執(zhí)行任務(wù)
? ? ? ?atd服務(wù)暫時(shí)啟動:systemctl start atd; service atd restart
? ? ? ?atd服務(wù)開機(jī)啟動:systemctl enable atd;?chkconfig --level 345 atd on
? ? ? ?chkconfig:更新(啟動或停止)和查詢系統(tǒng)服務(wù)的運(yùn)行級信息? ? ?
? ? ? ?語法:chkconfig [--add] [--del] [--list] [系統(tǒng)服務(wù)] 或 chkconfig [--level <等級代號>] [系統(tǒng)服務(wù)] [on/off/reset]??
? ? ? ?選項(xiàng)與參數(shù):?
- --add :增加所指定的系統(tǒng)服務(wù),讓chkconfig指令得以管理它,并同時(shí)在系統(tǒng)啟動的敘述文件內(nèi)增加相關(guān)數(shù)據(jù)
- --del :刪除所指定的系統(tǒng)服務(wù),不再由chkconfig指令管理,并同時(shí)在系統(tǒng)啟動的敘述文件內(nèi)刪除相關(guān)數(shù)據(jù)
- --list [name] :顯示所有運(yùn)行級系統(tǒng)服務(wù)的運(yùn)行狀態(tài)信息(on或off)。如果指定了name,那么只顯示指定的服務(wù)在不同運(yùn)行級的狀態(tài)
- --level<等級代號> :指定系統(tǒng)服務(wù)要在哪一個(gè)執(zhí)行等級中開啟或關(guān)畢
- ???等級0:表示關(guān)機(jī)
- ? ?等級1:單用戶模式
- ???等級2:無網(wǎng)絡(luò)連接的多用戶命令行模式
- ???等級3:有網(wǎng)絡(luò)連接的多用戶命令行模式
- ? ?等級4:不可用
- ? ?等級5:帶圖形界面的多用戶模式
- ? ?等級6:重新啟動
? ? ? ?需要說明的是,level選項(xiàng)可以指定要查看的運(yùn)行級而不一定是當(dāng)前運(yùn)行級。對于每個(gè)運(yùn)行級,只能有一個(gè)啟動腳本或者停止腳本。當(dāng)切換運(yùn)行級時(shí),init不會重新啟動已經(jīng)啟動的服務(wù),也不會再次去停止已經(jīng)停止的服務(wù)。
? ? ? ?crontab:周期性計(jì)劃任務(wù),定期執(zhí)行程序命令
? ? ? ?語法:crontab [-u user] [-l | -r | -e] [-i]? ? ? ? ? ? ? ? ? ?
? ? ? ?選項(xiàng)與參數(shù):?
- -u :指定計(jì)劃任務(wù)的用戶,默認(rèn)為當(dāng)前用戶
- -l :查看計(jì)劃任務(wù)·
- -r :刪除計(jì)劃任務(wù)
- -e :編輯計(jì)劃任務(wù)
- -i :刪除時(shí)提示是否確認(rèn)
? ? ? ?crontab服務(wù)暫時(shí)啟動:systemctl start crond;?systemctl status crond;?service cron?start;?service?crond?status
? ? ? ?crontab服務(wù)開機(jī)啟動:systemctl enable crond;?chkconfig –level 345 crond on
? ? ? ?分鐘? ? ? 小時(shí)? ? ? ? 日? ? ? ? ?月? ? ? ?星期? ? ? ? ?命令
 ? ? ? ?0-59? ? ? 0-23? ? ? 1-31? ? ? 1-12? ? ? 0-7? ? ? command? ?(取值范圍,0和7表示周日,周與日月不可同時(shí)并存)
? ? ? ?使用以下特殊字符:
- 星號(*):代表取值范圍內(nèi)的數(shù)字
- 逗號(,):代表分隔時(shí)段
- 中杠(-):指定時(shí)間范圍
- 正斜線(/n):指定時(shí)間的間隔頻率
? ? ? ?at控制文件分別為 /etc/at.allow; /etc/at.deny
? ? ? ?crontab控制文件分別為?/etc/cron.allow; /etc/cron.deny
- 只有allow時(shí),只允許allow用戶添加計(jì)劃
- allow與deny共存時(shí),只允許allow中的用戶添加
- 只有deny時(shí),除deny中的用戶都可添加
? ? ? ?crontab不執(zhí)行問題總結(jié)
- crond服務(wù)未啟動:crontab不是Linux內(nèi)核的功能,而是依賴crond服務(wù),這個(gè)服務(wù)可以啟動當(dāng)然也可以停止。如果停止了就無法執(zhí)行任何定時(shí)任務(wù)了,解決的方法是啟動服務(wù):/etc/init.d/crond restart
- 權(quán)限問題:(如:腳本沒有x執(zhí)行權(quán)限,解決方法:增加執(zhí)行權(quán)限,或者用?/bin/bash abc.sh的方法執(zhí)行)
- 路徑問題:有的命令在shell中執(zhí)行正常,但是在crontab執(zhí)行卻總是失敗。有可能是因?yàn)閏rontab沒有使用絕對路徑
- 身份問題:在系統(tǒng)配置文件/etc/crontab里面,使用者自己的crontab并不需要指定身份,但/etc/crontab里面要指定身份!系統(tǒng)默認(rèn)的例行性工作是以root的身份來進(jìn)行的;“run-parts”后接目錄參數(shù),將會運(yùn)行此目錄中的每個(gè)腳本;如果去掉”run-parts”這個(gè)參數(shù)的話,后面可接運(yùn)行的某個(gè)腳本名,而不是文件名
8. 日志管理
? ? ? ?日志:記錄系統(tǒng)活動信息文件
? ? ? ?重要性:日志文件對于診斷和解決系統(tǒng)中的問題很有幫助,因?yàn)樵贚inux系統(tǒng)中運(yùn)行的程序通常會把系統(tǒng)消息和錯(cuò)誤消息寫入相應(yīng)的日志文件,這樣系統(tǒng)一旦出現(xiàn)問題就會“有據(jù)可查”。此外,當(dāng)主機(jī)遭受攻擊時(shí),日志文件還可以幫助尋找攻擊者留下的痕跡.
? ? ? ?常見日志文件:
- /var/log/messages :記錄Linux內(nèi)核消息及各種應(yīng)用程序的公共日志信息,包括啟動、IO錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤、程序錯(cuò)誤等。對于未使用獨(dú)立日志文件的應(yīng)用程序或服務(wù),一般都可以從該日志文件中獲得相關(guān)的事件記錄信息。
- /var/log/cron :記錄crond計(jì)劃任務(wù)產(chǎn)生的事件信息。
- /var/log/dmesg :記錄系統(tǒng)在啟動的時(shí)候核心偵測過程所產(chǎn)生的各項(xiàng)信息。
- /var/log/maillog :記錄進(jìn)入或發(fā)出系統(tǒng)的電子郵件活動。
- /var/log/lastlog :最近幾次成功登錄事件和最后一次不成功登錄事件。
- /var/log/rpmpkgs :記錄系統(tǒng)中安裝的各rpm包列表信息。
- /var/log/secure :記錄用戶登錄認(rèn)證過程中的事件信息。
- /var/log/wtmp :記錄每個(gè)用戶登錄、注銷及系統(tǒng)啟動和停機(jī)事件。
- /var/run/utmp :記錄當(dāng)前登錄的每個(gè)用戶的詳細(xì)信息。
? ? ? ?日志格式:
- 事件發(fā)生的日期與時(shí)間
- 發(fā)生此事件的主機(jī)名稱
- 啟動此事件的服務(wù)名稱
- 該信息的實(shí)際數(shù)據(jù)內(nèi)容
? ? ? ?日志級別:
- (EMERG)緊急:系統(tǒng)不可用
- (ALERT)警告:必須馬上采取措施
- (CRIT)嚴(yán)重:比較嚴(yán)重的錯(cuò)誤
- (ERR)錯(cuò)誤:軟件運(yùn)行出現(xiàn)錯(cuò)誤
- (WARNING)提醒:可能影響系統(tǒng)功能,給出用戶提醒
- (NOTICE)注意:不會影響系統(tǒng)功能,給出用戶提醒
- (INFO)信息:一般信息
- (DEBUG)調(diào)試:程序或系統(tǒng)調(diào)試信息
? ? ? ?日志類型:
- auth :認(rèn)證相關(guān)
- authpriv :安全權(quán)限相關(guān)的日志
- cron :系統(tǒng)定期執(zhí)行計(jì)劃任務(wù)時(shí)產(chǎn)生的日志
- damon :和各個(gè)守護(hù)進(jìn)程相關(guān)的日志
- kern :內(nèi)核相關(guān)日志
- lpr :打印服務(wù)相關(guān)日志
- mail :郵件收發(fā)日志
- mark :產(chǎn)生時(shí)間戳
- news :網(wǎng)絡(luò)新聞協(xié)議產(chǎn)生的日志
- syslog :記錄rsyslog服務(wù)產(chǎn)生的日志
- user :用戶程序產(chǎn)生的相關(guān)信息
- uucp :UUCP子系統(tǒng)的日志信息
- local0 through local7 :默認(rèn)歸類的日志,留給本地用戶開發(fā)測試使用
? ? ? ?連接符號:
- “*”:代表所有日志等級
- “.”:代表只要比后面的等級高的(包含該等級)日志都記錄下來
- “.=”:代表只記錄所需等級的日志,其他等級的都不記錄
- “.!”:代表不等于,也就是除了該等級的日志外,其他等級的日志都記錄
? ? ? ?logger:通過shell命令接口使用Syslog的系統(tǒng)日志模塊
? ? ? ?語法:logger [options] [messages]
? ? ? ?選項(xiàng)與參數(shù):?
- -d, --udp :使用數(shù)據(jù)報(bào)(UDP)而不是使用默認(rèn)的流連接(TCP)
- -i, --id :逐行記錄每一次logger的進(jìn)程ID
- -f, --file file_name :記錄特定的文件
- -h, --help :顯示幫助文本并退出
- -n,?--server :寫入指定遠(yuǎn)程syslog服務(wù)器,使用UDP代替內(nèi)裝式syslog的例程
- -P, --port port_num :使用指定的UDP端口。默認(rèn)的端口號是514
- -p, --priority priority_level :指定輸入消息的優(yōu)先級,優(yōu)先級可以是數(shù)字或者指定為 "facility.level" 的格式
- -s,?--stderr :輸出標(biāo)準(zhǔn)錯(cuò)誤到系統(tǒng)日志。
- -t,?--tag tag :指定標(biāo)記記錄
- -u,?--socket socket :寫入指定的socket,而不是到內(nèi)置系統(tǒng)日志例程。
- -V,?--version :現(xiàn)實(shí)版本信息并退出
- **messages :**寫入log文件的內(nèi)容消息,可以與-f配合使用。
- ^ :后跟可執(zhí)行腳本或程序的絕對路徑
9. 遠(yuǎn)程日志同步
- 關(guān)閉防火墻和selinux
? ? ? ?清空防火墻規(guī)則:/etc/init.d/iptables stop;
? ? ? ?臨時(shí)關(guān)閉Sselinux:setenforce 0; getenforce?
? ? ? ?開機(jī)關(guān)閉selinux:vi?/etc/selinux/config,將SELINUX的值設(shè)置為disabled
? ? ? ?臨時(shí)關(guān)閉防火墻:systemctl stop firewalld;?systemctl status firewalld;?service iptables stop;?service iptables status
? ? ? ?開機(jī)自關(guān)閉防火墻:systemctl disable firewalld.service;?chkconfig iptables off
- 部署服務(wù)端
? ? ? ?1)打開TCP端口:vim /etc/rsylog.conf? ? ?
? ? ? ?$ModLoad imtcp?
? ? ? ?$InputTCPServerRun 514
? ? ? ?@表示udp協(xié)議發(fā)送,@@表示tcp協(xié)議發(fā)送
? ? ? ?2)編寫配置文件:在GLOBAL DIRECTIVE塊前追加以下三行
? ? ? ?#按照主機(jī)名區(qū)分目錄
- $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
- *.* ?RemoteLogs
- & ~
? ? ? ?#按照ip地址區(qū)分目錄
- $template RemoteLogs,"/var/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" *
- *.* ?RemoteLogs
- & ~
? ? ? ?3)重啟服務(wù):systemctl? restart? rsyslog; service rsyslog restart
- 部署客戶端
? ? ? ?1)編輯配置文件:vim /etc/rsylog.conf
? ? ? ?2)重啟服務(wù):systemctl? restart? rsyslog; service rsyslog restart
? ? ? ?cron.*? @@192.168.12.40:514?
? ? ? ?3)執(zhí)行任務(wù):crontab -e
? ? ? ?*/1 * * * * echo “nihao”>>/tmp/file.log
- 驗(yàn)證配置
? ? ? ?客戶端查看:tail -f /var/log/cron
? ? ? ?服務(wù)端查看:tail -f /var/log/['hostname']/CROND.log? or? tail -f /var/log/[‘a(chǎn)ddress’]/['address_date'].log
10. 日志輪替
? ? ? ?logrotate的配置文件:/etc/logrotate.conf;?/etc/logrotate.d/,logrotate.conf是主要參數(shù)文件,logrotate.d目錄里面的所有文件都會被主動讀入/etc/logrotate.conf當(dāng)中來進(jìn)行!另外在/etc/logrotate.d/文件中,如果沒有規(guī)定到的細(xì)部配置,則以/etc/logrotate.conf文件的規(guī)定來指定默認(rèn)值。
? ? ? ?logrotate:管理記錄文件
? ? ? ?語法:logrotate [-vf] logfile
? ? ? ?選項(xiàng)與參數(shù):
- -v,?--version :顯示日志輪替過程
- -f,?--force :強(qiáng)制進(jìn)行日志輪替。不管日志輪替的條件是否已經(jīng)符合,強(qiáng)制配置文件中所有的日志進(jìn)行輪替
- -d, --debug :以預(yù)演方式運(yùn)行l(wèi)ogrotate,模擬演練日志輪循并顯示其輸出,便于排錯(cuò)或了解程序執(zhí)行的情況
- -s<狀態(tài)文件>, --state=<狀態(tài)文件> :使用指定的狀態(tài)文件
| daily | 指定轉(zhuǎn)儲周期為每天 | 
| weekly | 指定轉(zhuǎn)儲周期為每周 | 
| monthly | 指定轉(zhuǎn)儲周期為每月 | 
| create mode owner group | 在輪替動作之后,postrotate腳本執(zhí)行之前,立即使用剛輪替的日志文件名創(chuàng)建日志文件。MODE 指定日志文件的權(quán)限(0660之類),OWNER 指定日志文件的屬主,GROUP 指定日志文件的屬組 | 
| rotate count | 輪替最多保留之前的數(shù)據(jù)幾次,超出的將被刪除或郵件接收,設(shè)0則不保存 | 
| compress | 通過gzip壓縮轉(zhuǎn)儲以后的日志 | 
| ? ? ?nocompress | 不需要壓縮轉(zhuǎn)儲 | 
| ? nodelaycompress | 轉(zhuǎn)儲同時(shí)壓縮 | 
| delaycompress | 指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進(jìn)行 | 
| dateext | 使用日期作為日志輪替文件的后綴 | 
| start count | 輪替文件名基于這個(gè)數(shù)字 | 
| missingok | 如果日志不存在,則忽略該日志的警告信息 | 
| sharedscripts | 在此關(guān)鍵字之后的腳本只執(zhí)行一次 | 
| minsize | 大小日志輪替的最小值。日志達(dá)到最小值才會輪替,否則就算時(shí)間達(dá)到也不輪替 | 
| size Size | 當(dāng)日志增長到指定大小的時(shí)候開始輪替,Size 可以指定 bytes(缺省)以及KB(sizek)或者M(jìn)B (sizem) | 
| nomail | 不發(fā)送郵件到任何地址 | 
| mail address | 將輪替后的文件發(fā)送到指定E-mail地址 | 
| ? ? ? ? ?errors address | 專儲時(shí)的錯(cuò)誤信息發(fā)送到指定的Email 地址 | 
| mailfirst/maillast | 向郵件發(fā)送輪替文件/輪替后歷史文件,默認(rèn) | 
| notifempty | 若日志為空文件,則不進(jìn)行日志輪替 | 
| ifempty | 即使日志文件是空的也輪替 | 
| ? noolddir | 轉(zhuǎn)儲后的日志文件和當(dāng)前日志文件放在同一個(gè)目錄下,默認(rèn) | 
| olddir directory | 輪替后日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個(gè)文件系統(tǒng) | 
| copytruncate | 用于還在打開中的日志文件,把當(dāng)前日志備份并截?cái)?#xff0c;開始輪替 | 
| postrotate/endscript | 在日志輪替之后執(zhí)行腳本命令,endscript標(biāo)示postrotate腳本結(jié)束;這兩個(gè)關(guān)鍵字必須單獨(dú)成行,注意使用外部指令時(shí)要用絕對路徑 | 
| prerotate/endscript | 在日志輪替之前執(zhí)行腳本命令,endscript標(biāo)示prerotate腳本結(jié)束 | 
?
?
?
?
?
?
?
?
?
?
總結(jié)
 
                            
                        