馬哥教育網絡班21期-第7周課程練習

    7周課程練習

    1. 創建一個10G分區,并格式為ext4文件系統;

    添加一塊硬盤sdb

    blob.png

    1. 要求其block大小為2048,       預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;

    # mke2fs -t ext4 -b 2048 -L 'MYDATA' -m 2

    blob.png

    # mount -o acl /dev/sdb1/ /data/mydata/

    blob.png

    1. 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;

    # mount -o noexec,noatime /dev/sdb1/ /data/mydata/

    blob.png

    1. 創建一個大小為1G的swap分區,并創建好文件系統,并啟用之;

    blob.png

     

    blob.png

    # mkswap /dev/sdb2

    # swapon /dev/sdb2

    blob.png

    blob.png

    3、寫一個腳本

        (1)、獲取并列出當前系統上的所有磁盤設備;

        (2)、顯示每個磁盤設備上每個分區相關的空間使用信息;

    #!/bin/bash

    #

    echo "當前系統所有磁盤:"

    fdisk -l | grep "^Disk[[:space:]]/dev"

    echo "分區使用情況:"

    fdisk -l | grep "^/dev/sd"   

    blob.png

    1. 總結RAID的各個級別及其組合方式和性能的不同;

    RAID全稱為獨立磁盤冗余陣列(Redundant Array of Independent  Disks),基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。RAID通常被用在服務器電腦上,使用完全相同的硬盤組成一個邏輯扇區,因此操作系統只會把它當做一個硬盤。RAID分為不同的等級,各個不同的等級均在數據可靠性及讀寫性能上做了不同的權衡。在實際應用中,可以依據自己的實際需求選擇不同的RAID方案。

    RAID0:RAID0稱為條帶化(Striping)存儲,將數據分段存儲于各個磁盤中,讀寫均可以并行處理。因此其讀寫速率為單個磁盤的N倍(N為組成RAID0的磁盤個數),但是卻沒有數據冗余,單個磁盤的損壞會導致數據的不可修復。

    blob.png

    Raid1:鏡像存儲(mirroring),沒有數據校驗。數據被同等地寫入兩個或多個磁盤中,可想而知,寫入速度會比較慢,但讀取速度會比較快。讀取速度可以接近所有磁盤吞吐量的總和,寫入速度受限于最慢的磁盤。  RAID1也是磁盤利用率最低的一個。如果用兩個不同大小的磁盤建立RAID1,可以用空間較小的那一個,較大的磁盤多出來的部分可以作他用,不會浪費。

    blob.png

    Raid2:RAID0的改良版,加入了漢明碼(Hanmming  Code)錯誤校驗。漢明碼能夠檢測最多兩個同時發生的比特錯誤,并且能夠更正單一比特的錯誤。漢明碼的位數與數據的位數有一個不等式關系,即:

    1    2^P ≥ P + D +1

    P代表漢明碼的個數,D代表數據位的個數,比如4位數據需要3位漢明碼,7位數據需要4位漢明碼,64位數據時就需要7位漢明碼。RAID2是按1bit來分割數據寫入的,而P:D就代表了數據盤與校驗盤的個數。所以如果數據位寬越大,用于校驗的盤的比例就越小。由于漢明碼能夠糾正單一比特的錯誤,所以當單個磁盤損壞時,漢明碼便能夠糾正數據。

    RAID 2  因為每次讀寫都需要全組磁盤聯動,所以為了最大化其性能,最好保證每塊磁盤主軸同步,使同一時刻每塊磁盤磁頭所處的扇區邏輯編號都一致,并存并取,達到最佳性能。如果不能同步,則會產生等待,影響速度。

    與RAID0相比,RAID2的傳輸率更好。因為RAID0一般stripe  size相對于RAID2的1bit來說實在太大,并不能保證每次都是多磁盤并行。而RAID2每次IO都能保證是多磁盤并行,為了發揮這個優勢,磁盤的尋道時間一定要減少(尋道時間比數據傳輸時間要大幾個數量級),所以RAID2適合于連續IO,大塊IO(比如視頻流服務)的情況。

    blob.png

    Raid3:類似于RAID2,數據條帶化(stripe)存儲于不同的硬盤,數據以字節為單位,只是RAID3使用單塊磁盤存儲簡單的奇偶校驗信息,所以最終磁盤數量為  N+1 。當這N+1個硬盤中的其中一個硬盤出現故障時, 從其它N個硬盤中的數據也可以恢復原始數據,當更換一個新硬盤后,系統可以重新恢復完整的校驗容錯信息。

    由于在一個硬盤陣列中,多于一個硬盤同時出現故障率的幾率很小,所以一般情況下,使用  RAID3,安全性是可以得到保障的。RAID 3會把數據的寫入操作分散到多個磁盤上進行,不管是向哪一個數據盤寫入數據,  都需要同時重寫校驗盤中的相關信息。因此,對于那些經常需要執行大量寫入操作的應用來說,校驗盤的負載將會很大,無法滿足程序的運行速度,從而導致整個RAID系統性能的下降。鑒于這種原因,RAID  3更加適合應用于那些寫入操作較少,讀取操作較多的應用環境,例如數據庫和WEB服務器等。

    blob.png

    Raid4:與RAID3類似,但RAID4是按塊(扇區)存取。無須像RAID3那樣,哪怕每一次小I/O操作也要涉及全組,只需涉及組中兩塊硬盤(一塊數據盤,一塊校驗盤)即可,從而提高了小量數據  I/O速度。

    blob.png

    Raid5:奇偶校驗(XOR),數據以塊分段條帶化存儲。校驗信息交叉地存儲在所有的數據盤上。

    RAID5把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,并且奇偶校驗信息和相對應的數據分別存儲于不同的磁盤上,其中任意N-1塊磁盤上都存儲完整的數據,也就是說有相當于一塊磁盤容量的空間用于存儲奇偶校驗信息。因此當RAID5的一個磁盤發生損壞后,不會影響數據的完整性,從而保證了數據安全。當損壞的磁盤被替換后,RAID還會自動利用剩下奇偶校驗信息去重建此磁盤上的數據,來保持RAID5的高可靠性。

    RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID  5可以為系統提供數據安全保障,但保障程度要比鏡像低而磁盤空間利用率要比鏡像高。RAID 5具有和RAID  0相近似的數據讀取速度,只是因為多了一個奇偶校驗信息,寫入數據的速度相對單獨寫入一塊硬盤的速度略慢。

    blob.png

    Raid6:類似RAID5,但是增加了第二個獨立的奇偶校驗信息塊,兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效也不會影響數據的使用。但RAID  6需要分配給奇偶校驗信息更大的磁盤空間,相對于RAID 5有更大的“寫損失”,因此“寫性能”非常差。

    每個硬盤上除了都有同級數據XOR校驗區外,還有一個針對每個數據塊的XOR校驗區。當然,當前盤數據塊的校驗數據不可能存在當前盤而是交錯存儲的。從數學角度來說,RAID  5使用一個方程式解出一個未知變量,而RAID 6則能通過兩個獨立的線性方程構成方程組,從而恢復兩個未知數據。

    伴隨著硬盤容量的增長,RAID6已經變得越來越重要。TB級別的硬盤上更容易造成數據丟失,數據重建過程(比如RAID5,只允許一塊硬盤損壞)也越來越長,甚至到數周,這是完全不可接受的。而RAID6允許兩塊硬盤同時發生故障,所以漸漸受到人們的青睞。

    伴隨CD,DVD和藍光光盤的問世,存儲介質出現了擦除碼技術,即使媒介表面出現劃痕,仍然可以播放,大多數常見的擦除碼算法已經演變為上世紀60年代麻省理工學院林肯實驗室開發的Reed-Solomon碼。實際情況中,多RAID6實現都采用了標準的RAID5教校驗比特和Reed-Solomon碼  。而純擦除碼算法的使用使得RAID6陣列可以失效兩塊以上的硬盤,保護力度更強,有些實現方法提供了多種級別的保護,甚至允許用戶(或存儲管理員)指定保護級別。

    blob.png

    混合RAID

    Raid01:是RAID0和RAID1的結合。先做條帶(0),再做鏡像(1)。

    blob.png

    Raid10:是先做鏡像(1),再做條帶(0)

    blob.png

    RAID01和RAID10非常相似,二者在讀寫性能上沒有什么差別。但是在安全性上RAID10要好于  RAID01。假設DISK0損壞,在RAID10中,在剩下的3塊盤中,只有當DISK1故障,  整個RAID才會失效。但在RAID01中,DISK0損壞后,左邊的條帶將無法讀取,在剩下的3快盤中,只要DISK2或DISK3兩個盤中任何一個損壞,都會導致RAID失效。

    RAID10和RAID5也是經常用來比較的兩種方案,二者都在生產實踐中得到了廣泛的應用。  RAID10安全性更高,但是空間利用率低。至于讀寫性能,與cache有很大關聯,最好根據實 際情況測試比較選擇。

    Raid50:RAID 5與RAID  0的組合,先作RAID 5,再作RAID 0。至少需要6塊硬盤,最多只能壞一塊硬盤。

    blob.png

    JBOD:主要功能是將多塊硬盤的空間合并成一個大的連續空間使用。

    blob.png

    總結:

    blob.png

    1. 創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128k;

    # mdadm -C /dev/md1 -n 2 -l 1 -c 128 -x 1 /dev/sdb1 /dev/sdb2  /dev/sdb3

    blob.png

    blob.png

     

    1. 創建一個大小為4G的RAID5設備,chunk大小為256k,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能;

    # mdadm -C /dev/md2 -n 3 -l 5 -c 256 /dev/sdb5 /dev/sdb6 /dev/sdb7

    blob.png

    blob.png

    # mkfs ext4 /dev/md2

    blob.png

    # mkdir /backup

    # vim /etc/fstab

    blob.png

     

    7、寫一個腳本

       (1)  接受一個以上文件路徑作為參數;

       (2)  顯示每個文件擁有的行數;

       (3)  總結說明本次共為幾個文件統計了其行數;

    #!/bin/bash

    #

    declare -i i=0

    for file in $*; do

                   if [ -f $file ]; then

                   echo "$file line  number:$(wc -l $file | cut -d" " -f1)"

    let i++

                else

                    echo "please input  correct file path"

                fi

    done

    echo "Totle file count=$i"

    blob.png

    8、寫一個腳本

       (1)  傳遞兩個以上字符串當作用戶名;

       (2)  創建這些用戶;且密碼同用戶名;

       (3)  總結說明共創建了幾個用戶;

    #!/bin/bash

    #

    declare -i i=0

    if [ $# -lt 2 ];then

                echo "please input at least  two words!"

                exit 99

    fi

    for username in $@;do

                id $username &> /dev/null

                if [ $? -eq 0 ];then

                    echo "$username is  exist!"

               else

                    useradd $username

                    echo "$username" |  passwd –stdin $username &> /dev/null

                    let i++

            fi

    done

    echo "count:$i"

    blob.png

    9、寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和;

    #!/bin/bash

    #

    declare -i i=0

    for i in {1..20};do

                    useradd visitor$i

                     echo "add visitor$i  success!"

                     sum+=(id -u visitor$i)

    done

    echo "sum ID:$sum"

    blob.png

    10、寫一腳本,分別統計/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#號開頭的行數之和,以及總的空白行數;

    #!/bin/bash

    #

    declare -i sum1=0

    declare -i sum2=0

    for i in /etc/{rc.d/{rc.sysinit,init.d/functions},fstab}

    do

                   sum1+=$( grep "^#" $i  | wc -l )

                   sum2+=$( grep "^$" $i  | wc -l )

    done

    echo "begin with # line:$sum1"

    echo "space line:$sum2"

    blob.png

    11、寫一個腳本,顯示當前系統上所有默認shell為bash的用戶的用戶名、UID以及此類所有用戶的UID之和;

    #!/bin/bash

    #

    declare -i sum=0

    declare -i i=0

    cat /etc/passwd | grep "/bin/bash$" | cut -d':' -f1,3

    for i in $(cat /etc/passwd | grep "/bin/bash$" | cut  -d':' -f3)

    do

                   let sum+=$i

    done

    echo "UID sum is:$sum

    blob.png

    12、寫一個腳本,顯示當前系統上所有,擁有附加組的用戶的用戶名;并說明共有多少個此類用戶;

    #!/bin/bash

    #

    declare -i sum=0

    for i in $(cat /etc/passwd | cut -d':' -f1)

    do

                   id $i | cut -d' ' -f3 | grep  "," &> /dev/null

                   if [ $? -eq 0 ];then

                          echo $i

                          let sum++

                   fi

    done

    echo "total user:$sum"

    blob.png

    13、創建一個由至少兩個物理卷組成的大小為20G的卷組;要求,PE大小為8M;而在卷組中創建一個大小為5G的邏輯卷mylv1,格式化為ext4文件系統,開機自動掛載至/users目錄,支持acl;

    使用/dev/sdb8和/dev/sdc1

    blob.png

    blob.png

    # pvcreate /dev/sdb8

    # pvcreate /dev/sdc1

    blob.png

    # vgcreate -s 8m myvg /dev/sdb8 /dev/sdc1

    blob.png

    # lvcreate -L 5g -n mylv1 myvg

    blob.png

    # mkfs.ext4 /dev/myvg/mylv1

    blob.png

    # echo "/dev/myvg/mylv1   /users  ext4  defaults,acl 0 0" >> /etc/fstab

    blob.png

    14、新建用戶magedu;其家目錄為/users/magedu,而后su切換至此用戶,復制多個文件至家目錄;

    # mkdir -p /users/magedu

    # useradd -d /users/magedu magedu

    blob.png

    # cp -rf /etc/skel/. /users/magedu/

    15、擴展mylv1至9G,確保擴展完成后原有數據完全可用;

    # lvextend -L +9G /dev/myvg/mylv1

    # resize2fs /dev/myvg/mylv1

    blob.png

    16、縮減mylv1至7G,確保縮減完成后原有數據完全可用;

    # lvreduce -L 7G /dev/myvg/mylv1

    # resize2fs /dev/myvg/mylv1

    blob.png

    17、對mylv1創建快照,并通過備份數據;要求保留原有的屬主屬組等信息;

    # lvcreate -L 5G -p r -s -n mylv1_snapshot /dev/myvg/mylv1

    blob.png

原創文章,作者:N21_我愛羅,如若轉載,請注明出處:http://www.www58058.com/49451

(0)
N21_我愛羅N21_我愛羅
上一篇 2016-10-09
下一篇 2016-10-09

相關推薦

  • 第一周初入Linux世界 —馬哥教育網絡班N22_第一周課程練習

    一、描述計算機的組成及其功能        計算機體系結構以圖靈機理論為基礎,屬于馮·諾依曼體系結構。    計算機由運算器、控制器、寄存器、輸入輸出設備組成            運算器:是計算機中執行各種算術和邏輯運算操作的部件。運算器…

    Linux干貨 2016-08-15
  • linux系統啟動流程詳解

    一、 為什么要研究linux系統啟動:     或許有人會說,等它開機就好了,為什么還要研究它開機流程呢,其實如果服務器運行很好又沒有人為的誤操作等,或許不用研究,但是為了能在系統出問題后第一時間的修復它,又或者你忘記了root密碼等情況時就非常有必要研究一下linux的開機流程了,因為只有知道了它是如何運作的,才能讓…

    Linux干貨 2016-09-13
  • 磁盤分區磁盤管理及掛載

    磁盤分區 fdisk提供交互式接口管理分區,操作均在內存中完成,沒有直接同步到磁盤;直到使用w命令保存至磁盤中。 語法: 1.查看分區使用信息:     fdisk -l [-u] [device…]:列出指定磁盤設備上的分區情況; 2.管理分區    fdisk d…

    Linux干貨 2016-08-31
  • week4:grep命令正則表達式的應用

    1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限;     ~]# cp -r /etc/skel/ /home/tuser1 |chmod -R g-rwx,o-rwx /home/tuser1 2.編輯/etc/group文件,添加組hadoop; &…

    Linux干貨 2016-11-23
  • TCP三次握手和四次揮手

    TCP三次握手 有兩臺機器,A是客戶端(主動發起請求的人),B是服務器端(被動接受請求的人),客戶端A剛開始沒有人和他通訊,所以客戶端A的狀態是CLOSDE(關閉的),服務器端B剛開始的狀態也是CLOSDE,但是總有人去訪問他,所以服務器端B開啟了LISTEN(收聽)狀態。 (1)假設A機器想鏈接B機器了,他就會向B機器發送一個建立鏈接的請求,這個建立鏈接請…

    2017-08-31

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-10-25 12:39

    對腳本下次格式化一下會更好,操作過程可以截圖,但總結最好自己來寫

欧美性久久久久