Linux作業(4)-02

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

RAIDRedundant Arrays ofIndependent Disks(磁盤陣列),有獨立磁盤構成的具有冗餘能力的陣列之意。

級別:RAID 0RAID 1RAID 10RAID 01RAID 5

 

RAID0:連續以位或字節爲單位分割數據,同時讀/寫於多個磁盤上,因此具有很高的數據傳輸率,但它沒有數據冗餘,因此並不能算是真正的RAID結構。

RAID0只是單純地提高性能,並沒有爲數據的可靠性提供保證,它的最大優點就是可以整倍的提高硬盤的容量。(如使用了三塊80GB的硬盤組建成RAID 0模式,那麼磁盤容量就會是240GB)。其速度方面,各單獨一塊硬盤的速度完全相同。最大的缺點在於任何一塊硬盤出現故障,將影響到所有數據,可靠性僅爲單獨一塊硬盤的1/N

RAID0不能應用於數據安全性要求高的場合。一般適用於有較高IO,但數據不是很重要的場景,類似緩存一類的場景;


 

RAID1:又稱爲磁盤鏡像,原理是把一個磁盤的數據鏡像到另一個磁盤上,也就是說數據在寫入一塊磁盤的同時,會在另一塊閒置的磁盤上生成鏡像文件,在不影響性能情況下最大限度的保證系統的可靠性和可修復性上,只要系統中任何一對鏡像盤中至少有一塊磁盤可以使用,甚至可以在一半數量的硬盤出現問題時系統都可以正常運行,當一塊硬盤失效時,系統會忽略該硬盤,轉而使用剩餘的鏡像盤讀寫數據,具備很好的磁盤冗餘能力。

雖然這樣對數據來講絕對安全,但是成本也會明顯增加,磁盤利用率爲50%(以四塊80GB容量的硬盤來講,可利用的磁盤空間僅爲160GB)

另外,出現硬盤故障的RAID1系統不再可靠,應當及時的更換損壞的硬盤,否則剩餘的鏡像盤也出現問題,那麼整個系統就會崩潰。更換新盤後原有數據會需要很長時間同步鏡像,外界對數據的訪問不會受到影響,只是這時整個系統的性能有所下降。因此,RAID 1多用在保存關鍵性的重要數據的場合。


 

RAID0+1:名稱上我們便可以看出是RAID0RAID1的結合體。在我們單獨使用RAID 1也會出現類似單獨使用RAID 0那樣的問題,即在同一時間內只能向一塊磁盤寫入數據,不能充分利用所有的資源。爲了解決這一問題,我們可以在磁盤鏡像中建立帶區集。因爲這種配置方式綜合了帶區集和鏡像的優勢,所以被稱爲RAID 0+1

RAID0RAID1技術結合起來,數據除分佈在多個盤上外,每個盤都有其物理鏡像盤,提供全冗餘能力,允許一個以下磁盤故障,而不影響數據可用性,並具有快速讀/寫能力。RAID0+1要在磁盤鏡像中建立帶區集至少4個硬盤。

它的優點是同時擁有RAID 0的超凡速度和RAID 1的數據高可靠性,但是CPU佔用率同樣也更高,而且磁盤的利用率比較低。

RAID1+0是先鏡射再分區數據,再將所有硬盤分爲兩組,視爲是RAID 0的最低組合,然後將這兩組各自視爲RAID 1運作。RAID 0+1則是跟RAID 1+0的程序相反,是先分區再將數據鏡射到兩組硬盤。它將所有的硬盤分爲兩組,變成RAID 1的最低組合,而將兩組硬盤各自視爲RAID 0運作。

性能上,RAID 0+1RAID 1+0有着更快的讀寫速度。可靠性上,當RAID 1+0有一個硬盤受損,其餘三個硬盤會繼續運作。RAID 0+1 只要有一個硬盤受損,同組RAID 0的另一隻硬盤亦會停止運作,只剩下兩個硬盤運作,可靠性較低。因此,RAID 10遠較RAID 01常用,零售主板絕大部份支持RAID 0/1/5/10,但不支持RAID 01


 

RAID 5:分佈式奇偶校驗的磁盤結構,不單獨指定的奇偶盤,而是在所有磁盤上交叉地存取數據及奇偶校驗信息。在RAID 5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID 5更適合於小數據塊和隨機讀寫的數據。在RAID 5中有“寫損失”,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。 這是目前用的比較多的陣列方式,3塊磁盤,損壞一塊仍能保證數據完整性,同時又有較高的磁盤利用率。屬於物美價廉型。


 

5、創建一個大小爲10G的RAID1,要求有一個空閒盤,而且CHUNK大小爲128k;

[root@wangyafei ~]# fdisk -l

 

磁盤 /dev/sdb42.9 GB, 42949672960 字節,83886080 個扇區

Units = 扇區 of 1 * 512 = 512 bytes

扇區大小(邏輯/物理)512 字節 / 512 字節

I/O 大小(最小/最佳)512 字節 / 512 字節

 

 

磁盤 /dev/sda128.8 GB, 128849018880 字節,251658240個扇區

Units = 扇區 of 1 * 512 = 512 bytes

扇區大小(邏輯/物理)512 字節 / 512 字節

I/O 大小(最小/最佳)512 字節 / 512 字節

磁盤標籤類型:dos

磁盤標識符:0x000aaf3f

 

  設備 Boot     Start         End      Blocks  Id  System

/dev/sda1   *        2048    4196351     2097152   83 Linux

/dev/sda2        4196352    96479231    46141440  8e  Linux LVM

 

磁盤 /dev/mapper/cl-root42.9 GB, 42945478656字節,83877888 個扇區

Units = 扇區 of 1 * 512 = 512 bytes

扇區大小(邏輯/物理)512 字節 / 512 字節

I/O 大小(最小/最佳)512 字節 / 512 字節

 

 

磁盤 /dev/mapper/cl-swap4294 MB, 4294967296 字節,8388608 個扇區

Units = 扇區 of 1 * 512 = 512 bytes

扇區大小(邏輯/物理)512 字節 / 512 字節

I/O 大小(最小/最佳)512 字節 / 512 字節

 

[root@wangyafei~]# fdisk /dev/sdb

歡迎使用 fdisk (util-linux 2.23.2)

 

更改將停留在內存中,直到您決定將更改寫入磁盤。

使用寫入命令前請三思。

 

Device does not contain a recognized partition table

使用磁盤標識符 0x83c00ca3 創建新的 DOS 磁盤標籤。

 

命令(輸入 m 獲取幫助)n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

分區號 (1-4,默認 1)1

起始扇區 (2048-83886079,默認爲 2048)

將使用默認值 2048

Last 扇區, +扇區 or +size{K,M,G} (2048-83886079,默認爲83886079)+10G

分區 1 已設置爲 Linux 類型,大小設爲 10 GiB

 

命令(輸入 m 獲取幫助)n

Partition type:

   p   primary (1 primary, 0 extended, 3 free)

   e   extended

Select (default p): p

分區號 (2-4,默認 2)2

起始扇區 (20973568-83886079,默認爲 20973568)

將使用默認值 20973568

Last 扇區, +扇區 or +size{K,M,G} (20973568-83886079,默認爲83886079)+10G

分區 2 已設置爲 Linux 類型,大小設爲 10 GiB

 

命令(輸入 m 獲取幫助)n

Partition type:

   p   primary (2 primary, 0 extended, 2 free)

   e   extended

Select (default p): p

分區號 (3,4,默認 3)3

起始扇區 (41945088-83886079,默認爲 41945088)

將使用默認值 41945088

Last 扇區, +扇區 or +size{K,M,G} (41945088-83886079,默認爲83886079)+10G

分區 3 已設置爲 Linux 類型,大小設爲 10 GiB

 

命令(輸入 m 獲取幫助)t

分區號 (1-3,默認 3)1

Hex 代碼(輸入 L 列出所有代碼)fd

已將分區“Linux”的類型更改爲“Linux raid autodetect

 

命令(輸入 m 獲取幫助)t

分區號 (1-3,默認 3)2

Hex 代碼(輸入 L 列出所有代碼)fd

已將分區“Linux”的類型更改爲“Linux raid autodetect

 

命令(輸入 m 獲取幫助)t

分區號 (1-3,默認 3)3

Hex 代碼(輸入 L 列出所有代碼)fd

已將分區“Linux”的類型更改爲“Linux raid autodetect

 

命令(輸入 m 獲取幫助)p

 

磁盤 /dev/sdb42.9 GB, 42949672960 字節,83886080 個扇區

Units = 扇區 of 1 * 512 = 512 bytes

扇區大小(邏輯/物理)512 字節 / 512 字節

I/O 大小(最小/最佳)512 字節 / 512 字節

磁盤標籤類型:dos

磁盤標識符:0x83c00ca3

 

  設備 Boot     Start         End      Blocks  Id  System

/dev/sdb1           2048    20973567    10485760  fd  Linux raid autodetect

/dev/sdb2       20973568    41945087    10485760  fd  Linux raid autodetect

/dev/sdb3       41945088    62916607    10485760  fd  Linux raid autodetect

 

命令(輸入 m 獲取幫助)w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

正在同步磁盤。

[root@wangyafei ~]# partx -a /dev/sdb

partx: /dev/sdb: error adding partitions 1-3

[root@wangyafei ~]# mdadm -C /dev/md0 -a yes -c 128 -n 2 -x 1 -l 1 /dev/sdb{1,2,3}

mdadm: Note: this array has metadata at the start and

    may not be suitable asa boot device.  If you plan to

    store '/boot' on thisdevice please ensure that

    your boot-loaderunderstands 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.

[root@wangyafei ~]# mdadm -D /dev/md0

/dev/md0:

        Version : 1.2

  Creation Time : WedFeb  1 15:22:11 2017

     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 : WedFeb  1 15:22:43 2017

          State : clean,resyncing

 Active Devices : 2

Working Devices : 3

 Failed Devices : 0

  Spare Devices : 1

 

  Resync Status : 64%complete

 

           Name :wangyafei:0  (local to host wangyafei)

           UUID :cf8d148c:c9ac1ea0:799fced4:61f9caac

         Events : 10

 

    Number   Major  Minor   RaidDevice State

       0       8      17        0      active sync   /dev/sdb1

       1       8      18        1      active sync   /dev/sdb2

 

       2       8      19        -      spare  /dev/sdb3

[root@wangyafei ~]# cat /proc/mdstat

Personalities : [raid1]

md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]

      10477568 blockssuper 1.2 [2/2] [UU]

     

unused devices: <none>

 

 

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

[root@wangyafei~]# fdisk /dev/sdb
歡迎使用 fdisk(util-linux 2.23.2)

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0xc6a0e865創建新的 DOS 磁盤標籤。

命令(輸入 m 獲取幫助)n
Partition type:
   p  primary (0 primary, 0 extended, 4 free)
   e  extended
Select (default p): p
分區號 (1-4,默認 1)
起始扇區(2048-41943039,默認爲 2048)
將使用默認值 2048
Last 
扇區, +扇區 or+size{K,M,G} (2048-41943039,默認爲 41943039)+4G
分區 1 已設置爲 Linux 類型,大小設爲 4 GiB

命令(輸入 m 獲取幫助)n
Partition type:
   p  primary (1 primary, 0 extended, 3 free)
   e  extended
Select (default p): p
分區號 (2-4,默認 2)
起始扇區(8390656-41943039,默認爲 8390656)
將使用默認值 8390656
Last 
扇區, +扇區 or+size{K,M,G} (8390656-41943039,默認爲 41943039)+4G
分區 2 已設置爲 Linux 類型,大小設爲 4 GiB

命令(輸入 m 獲取幫助)n
Partition type:
   p  primary (2 primary, 0 extended, 2 free)
   e  extended
Select (default p): p
分區號 (3,4,默認 3)
起始扇區(16779264-41943039,默認爲 16779264)
將使用默認值 16779264
Last 
扇區, +扇區 or+size{K,M,G} (16779264-41943039,默認爲 41943039)+4G
分區 3 已設置爲 Linux 類型,大小設爲 4 GiB

命令(輸入 m 獲取幫助)t
分區號 (1-3,默認 3)1
Hex 
代碼(輸入 L 列出所有代碼)fd
已將分區“Linux”的類型更改爲“Linuxraid autodetect”

命令(輸入 m 獲取幫助)t
分區號 (1-3,默認 3)2
Hex 
代碼(輸入 L 列出所有代碼)fd
已將分區“Linux”的類型更改爲“Linuxraid autodetect”

命令(輸入 m 獲取幫助)t
分區號 (1-3,默認 3)3
Hex 
代碼(輸入 L 列出所有代碼)fd
已將分區“Linux”的類型更改爲“Linuxraid autodetect”

命令(輸入 m 獲取幫助)p

磁盤 /dev/sdb21.5 GB, 21474836480字節,41943040 個扇區
Units = 
扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理)512 字節 / 512 字節
I/O 
大小(最小/最佳)512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0xc6a0e865

   
設備Boot      Start         End      Blocks  Id  System
/dev/sdb1            2048     8390655    4194304   fd  Linux raid autodetect
/dev/sdb2         8390656    16779263    4194304   fd  Linux raid autodetect
/dev/sdb3        16779264    25167871    4194304   fd  Linux raid autodetect

命令(輸入 m 獲取幫助)w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@wangyafei~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-3
[root@wangyafei~]# mdadm -C /dev/md0 -a yes -c 256 -n 3 -l 5 /dev/sdb{1,2,3}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@wangyafei~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Wed Feb  1 15:59:10 2017
     Raid Level : raid5
     Array Size : 8380416 (7.99 GiB 8.58GB)
  Used Dev Size : 4190208 (4.00 GiB 4.29GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock ispersistent

    Update Time : Wed Feb  1 15:59:29 2017
          State : clean, degraded,recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 256K

 Rebuild Status : 88% complete

           Name : wangyafei:0  (local to host wangyafei)
           UUID :c5785808:daccbe2a:28df00c8:aec75aec
         Events : 15

    Number   Major  Minor   RaidDevice State
       0       8      17        0      active sync   /dev/sdb1
       1       8      18        1      active sync   /dev/sdb2
       3       8      19        2      spare rebuilding   /dev/sdb3
[root@wangyafei~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb3[3] sdb2[1] sdb1[0]
      8380416 blocks super 1.2 level 5,256k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>
[root@wangyafei~]# mke2fs -t ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=4096(log=2)
分塊大小=4096(log=2)
Stride=64 blocks, Stripe width=128 blocks
524288 inodes, 2095104 blocks
104755 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=2145386496
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
     32768, 98304, 163840, 229376, 294912,819200, 884736, 1605632

Allocating group tables: 
完成                            
正在寫入inode完成                            
Creating journal (32768 blocks): 
完成
Writing superblocks and filesystem accounting information: 
完成 

[root@wangyafei~]# vim /etc/fstab
/dev/md0/backup ext4 acl,noatime 0 0

[root@wangyafei~]# mount -a
[root@wangyafei ~]# df -lh | grep '/dev/md0'
/dev/md0             7.8G   36M 7.3G    1% /backup
[root@wangyafei ~]#

7、寫一個腳本

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

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

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

1:

[root@wangyafei~]# touch test07.sh
[root@wangyafei ~]# vim test07.sh
[root@wangyafei ~]# cat test07.sh
#!/bin/bash
#Author:wangyafei

if [ $# -lt 2 ];then
    echo "At least two username"
    exit 2
fi


    for i in $*;do
        if grep "^$i\>"/etc/passwd &> /dev/null;then


            echo "User $iexists"

    else
        useradd $i
            echo $i | passwd --stdin $i&> /dev/null
            echo "Add user $ifinished"
        fi


    done

echo "total of Create $# users"

[root@wangyafei~]# bash test07.sh
At least two username 
[root@wangyafei~]# bash test07.sh abb1 abb2 abb3
Add user abb1 finished
Add user abb2 finished
Add user abb3 finished
total of Create 3 users

2:

[root@wangyafei~]# touch test08.sh

 [root@wangyafei ~]# vi test08.sh

[root@wangyafei~]# cat test08.sh

#!/bin/bash

#Author:wangyafei

for i in $@;do

    useradd $i

    echo $i | passwd--stdin $i

done

echo "create total users: $#"

 

[root@wangyafei~]# bash test08.sh

create total users: 0

[root@wangyafei~]# bash test08.sh abc1 abc2 abc3 abc4

更改用戶 abc1 的密碼

passwd:所有的身份驗證令牌已經成功更新。

更改用戶 abc2 的密碼

passwd:所有的身份驗證令牌已經成功更新。

更改用戶 abc3 的密碼

passwd:所有的身份驗證令牌已經成功更新。

更改用戶 abc4 的密碼

passwd:所有的身份驗證令牌已經成功更新。

create total users: 4

 

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

[root@wangyafei~]# ls /etc/rc.d/

init.d  rc0.d  rc1.d rc2.d  rc3.d  rc4.d rc5.d  rc6.d  rc.local

[root@wangyafei~]# ls /etc/rc.d/init.d/

functions  netconsole  network  README

[root@wangyafei~]# ls /etc/fstab

/etc/fstab

[root@wangyafei~]# touch test09.sh

[root@wangyafei~]# vim test09.sh

[root@wangyafei~]# cat test09.sh

#!/bin/bash

for i in /etc/rc.d/rc.local /etc/rc.d/init.d/functions/etc/fstab;do

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

    line2=$(grep"^[[:space:]]" $i | wc -l)

    echo "$i # startline total: $line1"

    echo "$i spaceline total: $line2"

done

 

[root@wangyafei~]# bash test09.sh

/etc/rc.d/rc.local # start line total: 11

/etc/rc.d/rc.local space line total: 0

/etc/rc.d/init.d/functions # start line total: 31

/etc/rc.d/init.d/functions space line total: 471

/etc/fstab # start line total: 7

/etc/fstab space line total: 0

[root@wangyafei ~]#

 

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

   #!/bin/bash

    #

    cat /etc/group | cut -d-f1,4 | grep -E ".*:[^[:space:]]"

 

    num=$(cat /etc/group |cut -d-f1,4 | grep -E ".*:[^[:space:]]" | wc -l)

 

    echo"There are such users$num"

 


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章