磁盤分區、軟RAID創建及shell腳本參數傳遞,for循環,運算表達式應用

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

  • 先使用fdisk工具創建一個10G的新分區。使用fdisk打開要創建磁盤分區的物理設備fdisk /dev/sdb,然后使用n指令創建新的分區,分區類型選此處選擇為主分區,第一個柱面使用默認的1,最后的柱面,使用+10G這種表示方式,表示創建的分區大小為10G。


  • 創建后可以使用p指令,查看剛才創建的分區,名為/dev/sdb1。

  • 然后使用w指令,保存剛才所做的修改。

(1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA,默認掛載屬性包含acl。
使用mke2fs指令完成文件系統的創建,-b選項指定塊大小,-m指定預留空間百分比,-L指定卷標。操作過程如下:


使用tune2fs指令可以設置卷的默認掛載屬性,操作方式如下:

> [root@bogon ~]# tune2fs -o acl /dev/sdb1

需要注意的是:雖然指定的默認掛載屬性包含acl,但在使用mount指令或者查看/etc/mtab文件時看不到acl這一屬性,此時可以使用指令dumpe2fs -h /dev/sdb1來查看,其中

Default mount options: acl
即表示acl屬性被啟用了。

(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳。
使用mount指令完成文件系統與目錄的掛載操作,只有在完成這一步驟以后,物理磁盤空間才能為系統所用。使用-o選項指定noexec禁止程序自動運行,noatime指定不更新文件的訪問時間戳。操作過程如下:

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

  • 先使用fdisk工具創建一個1G的分區并指定分區類型為swap。操作過程如下:

  • 使用mkswap指令創建swap分區
    [root@bogon ~]# mkswap /dev/sdb2

  • 使用swapon指令啟用新的swap分區
    [root@bogon ~]# swapon /dev/sdb2

  • 使用blkid指令可以查看之前掛載的兩個新分區(/dev/sdb1和/dev/sdb2)。

3、寫一個腳本:獲取當前系統上的所有磁盤設備;并顯示每個磁盤設備上每個分區的空間使用信息。

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

    RAID-0:
        讀出性能提升
        可用空間:N*min(S1,S2,...)
        無容錯能力
        最小磁盤數:2
        
    RAID-1:(同一個數據存兩份)
        讀性能提升,寫性能略有下降
        可用空間:1*min(S1,S2,...)
        有冗余能力
        最少磁盤數:2

    
    RAID-5:
        讀、寫性能提升
        可用空間:(N-1)*min(S1,S2,...)
        有容錯能力:1塊磁盤
        最少磁盤數:3
        
    RAID-6:
        讀、寫性能提升
        可用空間:(N-2)*min(S1,S2,...)
        有容錯能力:2塊磁盤
        最少磁盤數:4
        
混合類型:
    RAID-10:先組建RAID-0再將RAID-0組建為RAID-1
        讀、寫性能提升
        可用空間:N*min(S1,S2,...)/2
        有容錯能力:每組鏡像最多只能塊一塊
        最少磁盤數:4
        
    RAID-01:先組建RAID-1再將RAID-1組建為RAID-0
    
    JBOD:Just a Bunch Of Disks
        功能:將多塊磁盤的空間合并一個大的連續空間使用
        可用空間:sum(S1,S2,...)

5、創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128k。
創建RAID1最少需要2塊磁盤且它是同一份數據保存兩份(在兩塊磁盤上都有),可用空間里取決于N塊磁盤中容量最小的那塊。這里還要求有一個空閑盤,因此需要使用3塊磁盤組建RAID1。在Linux系統中創建軟RAID的指令為:mdadm,軟raid可以基于磁盤分區來實現,即將不同的分區組成RAID組,但如果是將同一物理磁盤的不同分區組成RAID實際意義并不大,當一塊物理磁盤故障后,很可能整個RAID組都一同不可用了。所以此處我使用的是給虛擬機添加多塊(虛擬)磁盤來實現的,每塊磁盤設定為10G大小。具體操作指令為:
mdadm -C /dev/md0 -n 2 -l 1 -c 128 -x 1 /dev/sd{c,d,e}
-C 稱為創建模式,表示后面的指令是用來創建指定的RAID
-n 2 指定使用2個塊設備來創建此RAID,RAID1最少需要2塊磁盤,-n表示在這一RAID組中active的塊設備數量
-l 1 指定RAID的級別,1表示RAID1
-c 128 指定CHUNK的大小為128,單位為KB,默認大小為512K
-x 1 指定作為空閑盤的數量

創建過程如下:  
[root@bogon ~]# mdadm -C /dev/md0 -n 2 -l 1 -c 128 -x 1 /dev/sd{c,d,e}   
mdadm: Note: this array has metadata at the start and    
may not be suitable as a boot device.  If you plan to  
store '/boot' on this device please ensure that  
your boot-loader understands md/v1.x metadata, or use  
--metadata=0.90  
Continue creating array? y  
mdadm: Defaulting to version 1.2 metadata     
mdadm: array /dev/md0 started.  
        
創建完成后使用cat /proc/mdstat或mdadm -D /dev/md0進行查看其詳細狀態信息:    
[root@bogon ~]# cat /proc/mdstat  
Personalities : [raid1]  #RAID級別為RAID1  
md0 : active raid1 sde[2](S) sdd[1] sdc[0]  
      10477568 blocks super 1.2 [2/2] [UU]  
      
unused devices: <none>  
[root@bogon ~]# mdadm -D /dev/md0  #查看更為詳細的RAID信息  
/dev/md0:  
        Version : 1.2  
  Creation Time : Sun Dec 11 19:28:53 2016  
     Raid Level : raid1  
     Array Size : 10477568 (9.99 GiB 10.73 GB)  
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)  
   Raid Devices : 2  
  Total Devices : 3  
    Persistence : Superblock is persistent  

    Update Time : Sun Dec 11 19:29:47 2016  
          State : clean   
   Active Devices : 2  
  Working Devices : 3  
  Failed Devices : 0  
    Spare Devices : 1  

           Name : bogon:0  (local to host bogon)  
           UUID : 2beef9f4:5631d26b:078cdccc:ef2fe348  
         Events : 17  

    Number   Major   Minor   RaidDevice State  
       0       8       32        0      active sync   /dev/sdc  
       1       8       48        1      active sync   /dev/sdd  

       2       8       64        -      spare   /dev/sde

6、創建一個大小為4G的RAID5設備,chunk大小為256k,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能。
RAID5要求的最少磁盤數為3塊,可用空間為(N-1)*min(S1,S2,S3…),要創建一個大小為4G的RAID5,最小的磁盤空間可以設置為2G。但實際生產環境中不大會有這么小的磁盤了。操作步驟如下所示:

  • 使用fdisk創建3個大小為2G的分區:

[root@bogon ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9dca1ea0

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263         524     2104515   83  Linux
/dev/sdb3             525         786     2104515   83  Linux
  • 使用mdadm創建chunk為256k的RAID5磁盤組
    mdadm -C /dev/md1 -n 3 -l 5 -c 256 /dev/sdb{1,2,3}

  • 查看創建的RAID5的狀態:

[root@bogon ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md1 : active raid5 sdb3[3] sdb2[1] sdb1[0]
      4204544 blocks super 1.2 level 5, 256k chunk, algorithm 2 [3/3] [UUU]
      
md0 : active raid1 sde[2](S) sdd[1] sdc[0]
      10477568 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
        
[root@bogon ~]# mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sun Dec 11 22:28:39 2016
     Raid Level : raid5
     Array Size : 4204544 (4.01 GiB 4.31 GB)
  Used Dev Size : 2102272 (2.00 GiB 2.15 GB)
  • 使用mke2fs指令將此RAID5設備格式化成ext4文件系統:

[root@bogon ~]# mke2fs -t mkfs.ext4 /dev/md1

  • 要實現開機自動掛載功能必須修改/etc/fstab文件,將剛創建的RAID5設備掛載上去。
    使用vim編輯器,在/etc/fstab文件中添加如下一行:


  • 使用mount -a指令將/etc/fstab中的設備全部掛載上。

7、寫一個腳本 實現以下功能: 接受一個以上文件路徑作為參數, 顯示每個文件擁有的行數,總結說明本次共為幾個文件統計了其行數。
設定此腳本至少需要一個參數并給出提示,$#表示參數的個數。
將腳本提供的所有參數組成一個列表放入for語句依次進行循環執行echo "$i has $(wc -l $i | cut -d" " -f1) lines.",$\*表示所有的參數。

#!/bin/bash
#
[ $# -eq 0 ] && echo "At least on path." && exit 1 

for i in $*;do
    echo "$i has $(wc -l $i | cut -d" " -f1) lines."
done

echo "A total of $# files were counted."

8、寫一個腳本:傳遞兩個以上字符串當作用戶名; 創建這些用戶;且密碼同用戶名;總結說明共創建了幾個用戶。
依然使用$#來判斷參數個數,要求至少輸入3個字符串作為用戶名。然后將全部參數傳遞給for進行遍歷,循環執行useraddpasswd指令完成用戶創建,最后使用$#顯示一共添加了多少個用戶。

#!/bin/bash
#
[ $# -lt 2 ] && echo "At least gave there strings." && exit 1

for i in $*;do
    useradd $i
    echo $i | passwd --stdin $i
done

echo "$# users added."

9、寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和。
使用for循環語句遍歷1-20的列表,依次創建用戶,然后使用for循環提取出每個用戶的ID,然后作為計算表達式的參數進行算術運算。

#!/bin/bash
#
for i in {1..20};do
    for id in $(useradd visitor$i | id -u visitor$i);do
    let sum+=${id}
    done
done
echo "Sum:$sum."

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

(0)
N24_lantianN24_lantian
上一篇 2016-12-26
下一篇 2016-12-26

相關推薦

  • sed,vim練習

    1 、刪除/etc/grub2.cfg 文件中所有以空白開頭的行行首的 空白字符 [root@localhost ~]# sed -r 's@^[[:space:]]+@@' /etc/grub2.cfg 2 、刪除/etc/fstab 文件中所有以#開頭,后面至少跟一個空白字符的行的行首…

    Linux干貨 2016-08-10
  • 8.網絡基礎知識

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:網橋就是把2個不同的網段橋接起來;可隔離沖突域。 集線器:集線器就是把多根以太網線或光纖集合連接在同一段物理介質下的裝置;工作在物理層;不能隔離沖突域。 二層交換機:工作于OSI模型的第2層(數據鏈路層),故而稱為二層交換機。二層交換技術的發展已經比較成熟,二層交換機屬數據…

    Linux干貨 2017-08-21
  • 馬哥教育網絡班21期+第11周課程練習

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 單向加密:只能加密,不能解密,提取數據指紋(特征碼),來保證數據的完整性,如上圖的第二步,單向加密的協議有MD5,SHA等 非對稱加密:公鑰和私鑰成對出現,私鑰必須本機器保存,用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然,數字簽名是私鑰加密特征碼,如上圖的第三步;實現對稱秘鑰交換,如上圖第五步 對稱…

    Linux干貨 2016-08-15
  • 網絡及TCP

    為什么要使用分層網絡模型     降低復雜性     標準化接口     簡化模塊化設計     確保技術的互操作性     加快發展速度  &nbs…

    2017-05-08
  • 文件系統上的權限管理

                        文件系統上的權限管理: 一 、三種權限       &nbs…

    Linux干貨 2017-04-03
  • 網絡管理基礎-子網劃分及網絡配置練習

    1、某公司申請到一個C 類IP 地址,但要連接6 個的子公司,最大的一個子  公司有26 臺計算機,每個子公司在一個網段中,則子網掩碼應設為?  192.168.100.1 網絡位192.168.100 192.168.100.00000000 C類掩碼255.255.255.0 192.168.100. 000 00001  …

    Linux干貨 2016-09-05
欧美性久久久久