N22-冥界之王-第7周作業

1、創建一個10G分區,并格式為ext4文件系統;
   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;
       在虛擬機里新添加一塊磁盤20G,/dev/sdb
      

[root@CentOS6 ~]# fdisk /dev/sdb
        Welcome to fdisk (util-linux 2.23.2).
 
        Changes will remain in memory only, until you decide to write them.
        Be careful before using the write command.
 
        Device does not contain a recognized partition table
        Building a new DOS disklabel with disk identifier 0xe879321a.
 
        Command (m for help): n
        Partition type:
        p   primary (0 primary, 0 extended, 4 free)
        e   extended
        Select (default p): 
        Using default response p
        Partition number (1-4, default 1): 
        First sector (2048-41943039, default 2048): 
        Using default value 2048
        Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
        Partition 1 of type Linux and of size 10 GiB is set
 
        Command (m for help): w
        The partition table has been altered!
 
        Calling ioctl() to re-read partition table.
        Syncing disks.

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

[root@CentOS6 ~]# cat /proc/partitions
       [root@CentOS6 ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
       [root@CentOS6 ~]# mkdir -pv /data/mydata
       [root@CentOS6 ~]# echo '/dev/sdb1  /data/mydata  ext4  defaults,noexec,nodiratime,acl  0 0' >> /etc/fstab

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

  [root@CentOS6 ~]# fdisk /dev/sdb
     Command (m for help): n
     Partition type:
     p   primary (1 primary, 0 extended, 3 free)
     e   extended
     Select (default p): 
     Using default response p
     Partition number (2-4, default 2): 
     First sector (20973568-41943039, default 20973568): +1G
     Value out of range.
     First sector (20973568-41943039, default 20973568): 
     Using default value 20973568
     Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +1G
     Partition 2 of type Linux and of size 1 GiB is set
 
     Command (m for help): t
     Partition number (1,2, default 2): 2
     Hex code (type L to list all codes): 82
     Changed type of partition 'Linux' to 'Linux swap / Solaris'
 
     Command (m for help): w
     The partition table has been altered!
 
     Calling ioctl() to re-read partition table.
 
     WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
      The kernel still uses the old table. The new table will be used at
      the next reboot or after you run partprobe(8) or kpartx(8)
     Syncing disks.
 
     [root@CentOS6 ~]# partx -a /dev/sdb2
     [root@CentOS6 ~]# mkswap /dev/sdb2
       Setting up swapspace version 1, size = 1048572 KiB
      no label, UUID=0340f896-5d37-4c99-bb32-bd3cef571c01
     [root@CentOS6~]# swapon -a /dev/sdb2
       [root@CentOS6 ~]# swapon -s

    
3、寫一個腳本
   (1)、獲取并列出當前系統上的所有磁盤設備;
   (2)、顯示每個磁盤設備上每個分區相關的空間使用信息;
 

   #!/bin/bash
    echo -e "All disks \n`fdisk -l | grep -o "[sh]d[a-z]" | uniq `\n"
    echo "Disk informations:"
    for disk in `fdisk -l | grep "^/dev/[sh]d[a-z][1-9]" | cut -d' ' -f1`; do
        df -h $disk
    done

   

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

Raid0本質上來講根本不應該算是一種Raid級別,因為Raid0根本就沒有冗余效果。Raid0只是用來指代將數據條帶化分部到多塊磁盤上的這種技術。它能夠提高對數據的讀寫速度,但是對任何一個磁盤故障的情況下不提供任何保護措施。Raid0一般被用來提升針對臨時文件的讀寫性能。對于長度大于一個Block(一個Block一般為4KB大小)的文件來說,Raid0可以并行的從多塊磁盤來讀寫這個文件所對應的數據,所以也就提高了訪問速度。然而,因為它沒有冗余效果,所以它不能夠在磁盤故障的情況下對數據提供保護。

  Raid1

  Raid1本質上也就是對每個寫入操作進行鏡像處理,即,將相同的數據同時寫入兩塊或者多塊磁盤。數據被寫入不同的磁盤兩次。Raid1原理上很簡單,它提供優秀的數據保護能力,而且在磁盤故障之后,數據回拷的過程也是很迅速的。

  Raid1的一個不足之處就是成本過高。它可以說是一種最消耗存儲空間的Raid級別了,因為Raid1對存儲空間的需求量基本上等于實際數據存儲數量的兩倍。所以,如果你有300GB的數據,那么你就需要600GB的磁盤空間,也就是將你的磁盤成本增加了一倍。

  Raid3

  Raid3引入了數據校驗(Parity)的方法,一旦一塊磁盤發生故障,那么系統可以使用校驗數據將丟失的數據重新計算出來。在一個Raid3的Raid組中,單獨的一塊磁盤被用來存放校驗數據,用戶數據則被條帶化的分部到其它的磁盤上。如果一塊磁盤故障,Raid3則使用校驗數據來將失敗磁盤上的數據重建(Reconstruct)出來。

  Raid5

  對于SMB來講,Raid5幾乎可以說是最為普遍使用的一種了。它在數據保護和經濟性方面取得很好的平衡。在一個Raid5的Raid組中,所有的用戶數據以及校驗局都被條帶化平均分部到了所有的磁盤上。然而,數據校驗卻引入了額外的負擔,所以Raid5相對于Raid10來講,會有一定的性能懲罰。不但寫入數據的時候會因為數據校驗帶來的懲罰而使得性能降低,而且在磁盤故障之后的數據重建過程中,也會因為這種校驗懲罰而導致重建時間大增。當一塊磁盤故障之后,重建尚未完成的這段時間內,此時整個Raid5組就是一個單點故障了,一旦再有一塊磁盤損壞,那么數據丟不保了。

  Raid6

  Raid6相當于在Raid5的基礎之上在增加一個額外的冗余保護。它使用兩個校驗磁盤而不是一個,也就是說它能夠抵御兩塊磁盤損壞之后的數據丟失風險。隨著SATA磁盤的使用率日益提高,Raid6也正在被越來越多的人所使用。SATA盤相對于SCSI盤來講更加廉價,但是可靠性不及后者,所以對SATA盤使用Raid6是最合適不過了。

  Raid10

  Raid10屬于一種“嵌套”模式的Raid級別。也就是說,它結合了兩種另外的Raid級別來實現額外的好處。Raid10首先將數據在磁盤之間進行鏡像處理,然后再將鏡像之后的數據進行條帶化分布。條帶化帶來的好處就是大大提高了性能,而鏡像則可以提供冗余性。Raid10既具有Raid1的簡單性和冗余性,又具有條帶化的高性能。像Raid1一樣,Raid10對存儲空間的耗費也是很高的,但是許多系統管理員依然愿意花費高價來使用Raid10

  Raid10的另一個變種是Raid01,Raid01則是先將數據條帶化分布到多個磁盤之上,然后再將多個條帶化之后的數據集進行鏡像處理。Raid01相對于Raid10來講在健壯性方面有所降低,所以它并不及Raid10受歡迎。除此之外,還有另外的一些Raid級別,比如Raid2,但是Raid2從來沒被真正的商業化使用過,但是對于一些極少的情況下,比如針對大尺寸的連續分布的文件的存儲系統中,偶爾會被使用。還有Raid4等。

  如果你追求性能,那么Raid10是最好不過了。如果追求經濟性,那么Raid5會在保證數據冗余性的前提下,耗費最少的磁盤數量。當你需要對數據進行額外層次的保護的時候,那么可以使用Raid6.在這些例子中,請盡量保證Raid組中擁有足夠數量的熱備磁盤(當其他磁盤故障之后用于立即頂替的額外磁盤)。個空閑盤,而且CHUNK大小為128k;

    
5、創建一個大小為10G的RAID1,要求有一Raid0

  

mdadm -C /dev/md0 -a yes -l 1 -c 128 -n 2  -x 1 /dev/sdc{6,7,8}

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

mdadm -C /dev/md0 -a yes -n 3 -c 256 -l 5 /dev/sdc{1,2,3}
 mke2fs -t ext4 /dev/md0

    
7、寫一個腳本
   (1) 接受一個以上文件路徑作為參數;
   (2) 顯示每個文件擁有的行數;
   (3) 總結說明本次共為幾個文件統計了其行數;
 

單獨參數版本:

       for((i=1;i<=$number;i++));do
           echo -n "please input $i file name:"
           read  file[${i}]
       done
     for((i=1;i<=$number;i++));do
           if [ -f ${file[${i}]} ];then
             echo "file ${file[${i}]} is exists."
            else
              echo "file ${file[${i}]} is not exists."
              number=$[$number-1]
              continue
            fi  
 
            echo   "file ${file[${i}]} is lines"  | cat ${file[${i}]} | wc -l
     done
         echo "total $number files."

全參數版本:

     #!/bin/bash
     sum=$#
     if [ $# -lt 1 ];then
        echo "please input a than number 1 files."
        exit 2
      fi
     for file in $@;do
        if [ -f "$file" ];then
           echo "filename is $file,lines are `cat $file | wc -l`."
         else
           echo "$file is no"
           sum=$[$sum-1]
        fi
     done
     echo "files are $sum."

   
8、寫一個腳本
   (1) 傳遞兩個以上字符串當作用戶名;
   (2) 創建這些用戶;且密碼同用戶名;
   (3) 總結說明共創建了幾個用戶;
   
   
  

declare -x username
   echo -n "input your want add user count number[1-9]:"
   read number
   if echo "$number" | grep -qE '^[1-9]$'; then
         echo "'$number' is a number."
   else
         echo "'$number' not scope."
         exit 2
   fi
   echo  "$number args: please input username:"
   for((i=1;i<=$number;i++));do
      echo -n "please input $i username:"
      read  username[${i}]
   done
   for((i=1;i<=$number;i++));do
       useradd ${username[${i}]}
       echo ${username[${i}]} | passwd ${username[${i}]} --stdin
   done
   echo "total create $number users."

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

for((i=1;i<=20;i++));do
     useradd visitor$i;
     echo "visitor$i" | passwd visitor$i --stdin
   done
   declare -a number
   number=(`cat /etc/passwd | grep "visitor" | cut -d: -f3`)
   declare sum=0
   for((i=0;i<${#number[*]};i++));do
     sum=$[$sum+${number[i]}]
   done
   echo $sum

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

file=(/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab)
sum=0
sumbegin=0
for((i=0;i<=${#file[*]}-1;i++)); do
  echo "${file[i]} 已#開頭的行的行數是:" 
   cat ${file[i]} | grep -E "^#" | wc -l
  echo "${file[i]} 空白的行的行數是:"
  cat ${file[i]} | grep -E "^[[:space:]]+" | wc -l
  sum=$[$sum+`cat ${file[i]} | grep -E "^[[:space:]]+" | wc -l`]
  sumbegin=$[$sumbegin+`cat ${file[i]} | grep -E "^#" | wc -l`]
done
  echo "3個文件的空白行總和 $sum"
  echo "3個文件#開頭的文件總行數和 $sumbegin"

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

cat /etc/passwd | grep '/bin/bash'| sort | awk -F: '{print $1}' | awk -v RS="" '{gsub("\n"," ");print}'
number=(`cat /etc/passwd | grep '/bin/bash' |  cut -d: -f3`)
sum=0
for((i=0;i<${#number[*]}-1;i++));do
  sum=$[$sum+${number[i]}]
done
echo "bash uid sum is $sum."

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

     cat /etc/group | cut -d: -f1,4 | awk -F: '{if ($2!="") printf "%s:%s\n",$1,$2}' | cut -d: -f1 | sort
     cat /etc/group | cut -d: -f1,4 | awk -F: '{if ($2!="") printf "%s:%s\n",$1,$2}' | wc -l

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

    fdisk -l /dev/sdc
    pvcreate /dev/sdc{1,2}
    vgcreate -s 8M myvg1 /dev/sdc1 /dev/sdc2
    lvcreate -L 5G -n mylv1 myvg1
    mke2fs -t ext4 /dev/myvg1/mylv1
    mkdir /users
    在/etc/fstab下添加/dev/myvg1/mylv1 /users ext4 defaults,acl 0 0

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

  useradd -d /users/magedu magedu
  su magedu
  cp -r /etc /home/megedu

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

lvextend -L +2g /dev/myvg1/mylv1 /dev/sdc{1,2}
resize2fs /dev/myvg1/mylv1

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

umount /dev/myvg1/mylv1
e2fsck -f /dev/myvg1/mylv1
lvreduce -L -2g /dev/myvg1/mylv1
resize2fs /dev/myvg1/mylv1

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

 lvcreate -L 3g -p r -s -n lihui_snapshot /dev/myvg1/mylv1

原創文章,作者:lihuisjsq,如若轉載,請注明出處:http://www.www58058.com/49094

(0)
lihuisjsqlihuisjsq
上一篇 2016-09-26 07:41
下一篇 2016-09-26 07:43

相關推薦

  • 高級文件系統管理之磁盤配額及RAID的運用

    本章內容 設定文件系統配額 設定和管理軟RAID設備 一,概述 配置配額系統: 綜述 在內核中執行 以文件系統為單位啟用 磁盤配額最小單位是以文件系統為單位啟用,就是一個掛載點,而不能以目錄為單位 對不同組或者用戶的策略不同 根據塊或者節點進行限制 執行軟限制(soft limit) 硬限制(hard limit) 初始化 分區掛載選項:usrquota、g…

    Linux干貨 2016-09-07
  • RHCS問題匯總-深圳Eric

    拓補圖: 服務器用了4個網卡 兩個萬兆網卡做了bond連到netgear交換機,交換機端口access 30 對應IP段10.199.16.0/22,網關10.199.16.1做在netgear上 兩個千兆網卡做了bond連到cisco 3750交換機,交換機端口truck 30 40 1001-1300 對應IP段10.199.16.0/22、10.176…

    Linux干貨 2016-06-22
  • 【26期】Linux第八周學習小總結

        前言     本周的學習已經過去了,雖然本周學習中老師一直都有說,哎呀,這個不重要,以后有網絡管理員給你們來做,了解一下就行,然而話鋒一轉就又說,其實小公司沒有網絡管理員,如果你們不好好學,以后就會做得更多更雜的工作,這一周的知識點基本上都是在一個pdf上的,大概有200…

    2017-09-02
  • 淺談篩選日志中的IP地址信息

    作為運維人員,經常會需要會對日志中的某些重要信息進行篩選,比如說ip等參數。 案例一:篩選出IP地址信息 日志信息如下: [root@C67-X64-A1 hanghang]# cat test.txt  Jul 13 08:13:09 localhost sshd[14678]…

    系統運維 2016-07-22
  • Linux簡單命令說明(date、clock、echo 、Tab鍵、screen)

    Linux簡單命令說明 1、如何查詢命令的幫助文檔 外部命令:是系統用應用程序的一部分,在系統啟動時不會被加載到內存,而在服務或進程啟用時 才執行它。 查看 COMMAND –help man COMMAND 內部命令:是簡小的命令,開機就已加載到shell中。 查看 help COMMAND 2、date和clock命令 date #顯示當前系統時間 […

    Linux干貨 2017-07-12
  • 瀏覽和管理log文件

    瀏覽和管理log文件 log文件是一種包含系統消息的文件,包括內核、服務和應用運行在其上。不同的日志文件對應不同的日志信息。例如,默認的系統log文件,一個log文件對應安全消息,一個log文件對應計劃任務。當要對一個系統問題排錯例如加載內核驅動或者當尋找對系統的非授權登錄攻擊,日志文件是很有幫助的。一些log文件被一個稱之為rsyslogd的守護進程控制?!?/p>

    Linux干貨 2017-05-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-27 09:51

    寫的很棒,看的出來很用心,希望繼續保持

欧美性久久久久