一、創建一個10G分區,并格式為ext4文件系統;
1、要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;
2、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;
###創建10G分區
~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-83886079, default 2048):
Using default value 2048
Value out of range.
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): +10G
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x517616e7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
Command (m for help): w
~]# partx -u /dev/sdb
~]# partx -s /dev/sdb
NR START END SECTORS SIZE NAME UUID
1 2048 20973567 20971520 10G
###格式為ext4文件系統,要求其block大小為2048,預留空間百分比為2,卷標為MYDATA
[root@localhost ~]# mke2fs -t ext4 -b 2048 -L MYDATA -m 2 -O has_journal /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=MYDATA
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
104857 blocks (2.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=273678336
320 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,
2048000, 3981312
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: don
###掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;
默認掛載屬性包含acl
~]# mkdir -pv /data/mydata
~]# mount -o noexec,noatime /dev/vdb1 /data/mydata
二、創建一個大小為1G的swap分區,并創建好文件系統,并啟用之
~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (20973568-83886079, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-83886079, default 83886079): +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.
~]# partx -u /dev/sdb
~]# swapon /dev/sdb2
~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 128K -1
/dev/sdb2 partition 1024M 0B -2
三、寫一個腳本
(1)、獲取并列出當前系統上的所有磁盤設備;
(2)、顯示每個磁盤設備上每個分區相關的空間使用信息;
腳本如下:
~]# vim show_D.sh
#!/bin/bash
#
dev=$(ls /dev/ | grep “[hsv]d[a-z]”)
echo -e “All of you disk devices is \n$dev”
dev_Fs=$(df -h | grep “Filesystem”)
dev_Show=$(df -lh | grep “^/dev”)
echo -e The “Disk partition information\n$dev_Fs \n$dev_Show”
~]#chmod u+x show_D.sh
~]# ./show_D.sh
All of you disk devices is
sda
sda1
sda2
sdb
sdb1
sdb2
The Disk partition information
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 50G 5.4G 45G 11% /
/dev/sda1 1014M 173M 842M 18% /boot
/dev/mapper/cl-home 67G 36M 67G 1% /home
/dev/sr0 7.8G 7.8G 0 100% /run/media/ronny2/CentOS 7 x86_64
/dev/sdb1 9.8G 13M 9.6G 1% /data/mydata
四、總結RAID的各個級別及其組合方式和性能的不同
RAID:獨立硬盤冗余陣列(RAID,RedundantArray ofIndependentDisks),舊稱廉價磁盤冗余陣列(RedundantArray ofInexpensiveDisks),簡稱磁盤陣列。其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。根據選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數據集成度,增強容錯功能,增加處理量或容量。另外,磁盤陣列對于電腦來說,看起來就像一個單獨的硬盤或邏輯存儲單元。分為RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。
RAID 0[編輯]

RAID 0亦稱為帶區集。它將兩個以上的磁盤并聯起來,成為一個大容量的磁盤。在存放數據時,分段后分散存儲在這些磁盤中,因為讀寫時都可以并行處理,所以在所有的級別中,RAID 0的速度是最快的。但是RAID 0既沒有冗余功能,也不具備容錯能力,如果一個磁盤(物理)損壞,所有數據都會丟失,危險程度與JBOD相當??捎每臻g:N*min(S1,S2,…)
RAID 1[編輯]

兩組以上的N個磁盤相互作鏡像,在一些多線程操作系統中能有很好的讀取速度,理論上讀取速度等于硬盤數量的倍數,與RAID 0相同。另外寫入速度有微小的降低。只要一個磁盤正常即可維持運作,可靠性最高。其原理為在主硬盤上存放數據的同時也在鏡像硬盤上寫一樣的數據。當主硬盤(物理)損壞時,鏡像硬盤則代替主硬盤的工作。因為有鏡像硬盤做數據備份,所以RAID 1的數據安全性在所有的RAID級別上來說是最好的。但無論用多少磁盤做RAID 1,僅算一個磁盤的容量,是所有RAID中磁盤利用率最低的一個級別。如果用兩個不同大小的磁盤建RAID 1,可用空間為較小的那個磁盤,較大的磁盤多出來的空間也可以分區成一個區來使用,不會造成浪費??捎每臻g:1*min(S1,S2,…)
RAID 2[編輯]

這是RAID 0的改良版,以漢明碼(Hamming Code)的方式將數據進行編碼后分區為獨立的比特,并將數據分別寫入硬盤中。因為在數據中加入了錯誤修正碼(ECC,Error Correction Code),所以數據整體的容量會比原始數據大一些,RAID2最少要三臺磁盤驅動器方能運作。
RAID 3[編輯]

采用Bit-interleaving(數據交錯存儲)技術,它需要通過編碼再將數據比特分割后分別存在硬盤中,而將同比特檢查后單獨存在一個硬盤中,但由于數據內的比特分散在不同的硬盤上,因此就算要讀取一小段數據資料都可能需要所有的硬盤進行工作,所以這種規格比較適于讀取大量數據時使用。
RAID 4[編輯]

它與RAID 3不同的是它在分區時是以區塊為單位分別存在硬盤中,但每次的數據訪問都必須從同比特檢查的那個硬盤中取出對應的同比特數據進行核對,由于過于頻繁的使用,所以對硬盤的損耗可能會提高。(塊交織技術,Block interleaving)
RAID 5[編輯]

RAID Level 5是一種儲存性能、數據安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬盤分區)技術。RAID 5至少需要三塊硬盤,RAID 5不是對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,并且奇偶校驗信息和相對應的數據分別存儲于不同的磁盤上。當RAID5的一個磁盤數據發生損壞后,可以利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供數據安全保障,但保障程度要比鏡像低而磁盤空間利用率要比鏡像高。RAID 5具有和RAID 0相近似的數據讀取速度,只是因為多了一個奇偶校驗信息,寫入數據的速度相對單獨寫入一塊硬盤的速度略慢,若使用“回寫緩存”可以讓性能改善不少。同時由于多個數據對應一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較便宜??捎每臻g:(N-1)*min(S1,S2,…)
混合RAID
JBOD[編輯]

JBOD( Just a Bunch Of Disks)在分類上,JBOD并不是RAID的檔次。由于并沒有規范,市場上有兩類主流的做法使用單獨的鏈接端口如SATA、USB或1394同時控制多個各別獨立的硬盤,使用這種模式通常是較高級的設備,還具備有RAID的功能,不需要依靠JBOD達到合并邏輯扇區的目的。只是將多個硬盤空間合并成一個大的邏輯硬盤,沒有錯誤備援機制。數據的存放機制是由第一顆硬盤開始依序往后存放,即操作系統看到的是一個大硬盤(由許多小硬盤組成的)。但如果硬盤損毀,則該顆硬盤上的所有數據將無法救回。若第一顆硬盤損壞,通常無法作救援(因為大部分文件系統將磁盤分區表(partition table)存在磁盤前端,即第一顆),失去磁盤分區表即失去一切數據,若遭遇磁盤陣列數據或硬盤出錯的狀況,危險程度較RAID 0更劇。它的好處是不會像RAID,每次訪問都要讀寫全部硬盤。但在部分的JBOD數據恢復實踐中,可以恢復未損毀之硬盤上的數據。同時,因為每次讀寫操作只作用于單一硬盤,JBOD的傳輸速率與I/O表現均與單顆硬盤無異。
RAID 10/01[編輯]


RAID 10是先鏡射再分區數據,再將所有硬盤分為兩組,視為是RAID 0的最低組合,然后將這兩組各自視為RAID 1運作。
RAID 01則是跟RAID 10的程序相反,是先分區再將數據鏡射到兩組硬盤。它將所有的硬盤分為兩組,變成RAID 1的最低組合,而將兩組硬盤各自視為RAID 0運作。
當RAID 10有一個硬盤受損,其余硬盤會繼續運作。RAID 01只要有一個硬盤受損,同組RAID 0的所有硬盤都會停止運作,只剩下其他組的硬盤運作,可靠性較低。如果以六個硬盤建RAID 01,鏡射再用三個建RAID 0,那么壞一個硬盤便會有三個硬盤離線。因此,RAID 10遠較RAID 01常用,零售主板絕大部分支持RAID 0/1/5/10,但不支持RAID 01。
RAID 50[編輯]

RAID 50
RAID 5與RAID 0的組合,先作RAID 5,再作RAID 0,也就是對多組RAID 5彼此構成Stripe訪問。由于RAID 50是以RAID 5為基礎,而RAID 5至少需要3顆硬盤,因此要以多組RAID 5構成RAID 50,至少需要6顆硬盤。以RAID 50最小的6顆硬盤配置為例,先把6顆硬盤分為2組,每組3顆構成RAID 5,如此就得到兩組RAID 5,然后再把兩組RAID 5構成RAID 0。RAID 50在底層的任一組或多組RAID 5中出現1顆硬盤損壞時,仍能維持運作,不過如果任一組RAID 5中出現2顆或2顆以上硬盤損毀,整組RAID 50就會失效。RAID 50由于在上層把多組RAID 5構成Stripe,性能比起單純的RAID 5高,容量利用率比RAID5要低。比如同樣使用9顆硬盤,由各3顆RAID 5再組成RAID 0的RAID 50,每組RAID 5浪費一顆硬盤,利用率為(1-3/9),RAID 5則為(1-1/9)。
RAID 60[編輯]

raid 60
RAID 6與RAID 0的組合:先作RAID 6,再作RAID 0。換句話說,就是對兩組以上的RAID 6作Stripe訪問。RAID 6至少需具備4顆硬盤,所以RAID 60的最小需求是8顆硬盤。
由于底層是以RAID 6組成,所以RAID 60可以容許任一組RAID 6中損毀最多2顆硬盤,而系統仍能維持運作;不過只要底層任一組RAID 6中損毀3顆硬盤,整組RAID 60就會失效,當然這種情況的概率相當低。
比起單純的RAID 6,RAID 60的上層通過結合多組RAID 6構成Stripe訪問,因此性能較高。不過使用門檻高,而且容量利用率低是較大的問題。
五、創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128k;
~]# mdadm -C /dev/md0 -a yes -n 2 -l 1 -x 1 -c 128 /dev/sd{b,c,d}
6、創建一個大小為4G的RAID5設備,chunk大小為256k,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能
# mdadm -C /dev/md0 -n 3 -l 5 -c 256 /dev/sd{b,c,d}
# mkfs.ext4 /dev/md0
# mkdir -p /backup
7、寫一個腳本
(1) 接受一個以上文件路徑作為參數;
(2) 顯示每個文件擁有的行數;
(3) 總結說明本次共為幾個文件統計了其行數;
#!/bin/bash
#description:Count the number of files
#date:2017-08-29
#Author:Ronny
if [ $# -lt 1 ] ;then
echo “Wrong is numher of parameter.”
exit 1
else
for i in $*;do
wc -l $i
done fi
echo “Counts the number of rows for $# files.
~]# chmod u+x fileLines_sum.sh
~]# ./fileLines_sum.sh “/tmp/mmio” “/tmp/grub2.cfg” “/tmp/crontab.hxy509”
45 /tmp/mmio
12 /tmp/grub2.cfg
3 /tmp/crontab.hxy509
“Counts the number of rows for 3 files.
#路徑參數:
#A.輸入的路徑參數必須是絕對地址;
#B.路徑參數不能以斜杠結束;
#C.路徑參數中不能含有非法字符;
#D.路徑是否存在;
#E.路徑是否有讀寫權限。
8、寫一個腳本
(1)傳遞兩個以上字符串當作用戶名;
(2)創建這些用戶;且密碼同用戶名;
(3)總結說明共創建了幾個用戶;
#!/bin/bash
#description:
#date:
#Author:
declare -i sum=0
for i in $*;do
if [ $# -lt 2 ];then
echo “Please ensure two or more than two username”
exit 1
elif id $i &> /dev/null;then
echo “The user already exist”
exit 2
else
useradd $i
echo “$i” | passwd –stdin $i
let sum++
fi
done
echo “Total add user $sum”
9、寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和
#!/bin/bash
#
declare -i idsum=0
for i in $(seq 1 20);do
useradd visitor$i
id=$(id -u visitor$i)
idsum=$[$idsum+$id]
done
echo “vistor1-vistor20 idsum:$idsum”
~]# chmod u+x sum_Id.sh
~]# ./sum_Id.sh
vistor1-vistor20 idsum:80510
原創文章,作者:N27_ronny,如若轉載,請注明出處:http://www.www58058.com/86251