一、创建一个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相当。可用空间:N*min(S1,S2,…)
RAID 1[编辑]
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。如果用两个不同大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费。可用空间: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高,存储成本相对较便宜。可用空间:(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.178linux.com/86251