raid+linux脚本,磁盘管理、RAID及Shell脚本练习

c0f97892ba71e7d0505e7448282bcad7.png

一、创建一个10G分区,并格式为ext4文件系统;

(1)、 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;

(2)、挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

[root@N1 ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=MYDATA

OS type: Linux

块大小=2048 (log=1)

分块大小=2048 (log=1)

Stride=0 blocks, Stripe width=0 blocks

655360 inodes, 5242880 blocks

104857 blocks (2.00%) reserved forthe superuser

***个数据块=0

Maximum filesystem blocks=273678336

320 block groups

16384 blocks per group, 16384 fragments pergroup

2048 inodes per group

Superblock backups stored onblocks:

16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,

2048000, 3981312

Allocating grouptables: 完成

正在写入inode表: 完成

Creating journal (32768 blocks): 完成

Writing superblocks andfilesystem accounting information: 完成

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

tune2fs 1.42.9 (28-Dec-2013)

[root@N1 ~]# mount -o noexec,noatime /dev/sdb1 /data/mydata

[root@N1 ~]# mount | grep /dev/sdb1

/dev/sdb1 on/data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered)

二、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;

[root@N1 ~]# mkswap /dev/sdb5

正在设置交换空间版本 1,大小 = 1048572 KiB

无标签,UUID=917fcaf4-68b7-415f-b48d-308eff4d7b9f

[root@N1 ~]# swapon /dev/sdb5

三、写一个脚本

(1)、获取并列出当前系统上的所有磁盘设备;

(2)、显示每个磁盘设备上每个分区相关的空间使用信息;

#!/bin/bash

disk=`fdisk -l | grep -o "/dev/sd[a-z][1-9]\+"`

echo -e "All disk:\n$disk\n"

foriin$disk

do

df -h $i

done

四、总结RAID的各个级别及其组合方式和性能的不同;

RAID级别介绍; 一般常用的RAID阶层,分别是RAID 0、RAID1、RAID 2、RAID 3、RAID 4以及RAID 5,再加上二合一型 RAID 0+1﹝或称RAID 10﹞。我们先把这些RAID级别的优、缺点做个比较:

1ea317d06312281deeca3e106353d91a.png

RAID 0 的特点;

也称为条带模式(striped),即把连续的数据分散到多个磁盘上存取。当系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。因为读取和写入是在设备上并行完成的,读取和写入性能将会增加,这通常是运行 RAID 0 的主要原因。但RAID 0没有数据冗余,如果驱动器出现故障,那么将无法恢复任何数据。

RAID 1 的特点;

RAID 1 又称为镜像(Mirroring),一个具有全冗余的模式。RAID 1可以用于两个或2xN个磁盘,并使用0块或更多的备用磁盘,每次写数据时会同时写入镜像盘。这种阵列可靠性很高,但其有效容量减小到总容量的一半,同时这些磁盘的大小应该相等,否则总容量只具有最小磁盘的大小。

RAID 5 的特点;

在希望结合大量物理磁盘并且仍然保留一些冗余时,RAID 5 可能是最有用的 RAID 模式。RAID 5可以用在三块或更多的磁盘上,并使用0块或更多的备用磁盘。就像 RAID 4一样,得到的 RAID5 设备的大小是(N-1)*S。

RAID 5其中一块磁盘出现故障,那么由于有校验信息,所以所有数据仍然可以保持不变。如果可以使用备用磁盘,那么在设备出现故障之后,将立即开始同步数据。如果两块磁盘同时出现故障,那么所有数据都会丢失。RAID5 可以经受一块磁盘故障,但不能经受两块或多块磁盘故障。

RAID 5也是采取独立存取模式,但是其Parity Data 则是分散写入到各个成员磁盘驱动器,因此,除了具备Overlapped I/O 多任务性能之外,同时也脱离如RAID 4单一专属Parity Disk的写入瓶颈。但是,RAI?D 5在座资料写入时,仍然稍微受到”读、改、写过程”的拖累。

RAID 01/RAID 10特点

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。

五、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;

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

mdadm: /dev/sdb1 appears tocontain an ext2fs file system

size=10485760K  mtime=Sun Aug 13 15:53:36 2017

mdadm: Note: this array has metadata atthe startand

may notbe suitableasa boot device.  If you planto

store '/boot'onthis device please ensure that

your boot-loader understands md/v1.x metadata, oruse

--metadata=0.90

mdadm: /dev/sdb3 appears tobe partofa raid array:

level=raid0 devices=0 ctime=Thu Jan  1 08:00:00 1970

mdadm: partition tableexistson/dev/sdb3 but will be lostor

meaningless aftercreating array

Continuecreating array? y

mdadm: Defaulting toversion 1.2 metadata

mdadm: array /dev/md0 started.

六、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;

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

mdadm: /dev/sdb1 appears tocontain an ext2fs file system

size=10485760K  mtime=Sun Aug 13 15:53:36 2017

mdadm: /dev/sdb1 appears tobe partofa raid array:

level=raid5 devices=3 ctime=Sun Aug 13 17:37:58 2017

Continuecreating array? y

mdadm: Defaulting toversion 1.2 metadata

mdadm: array /dev/md0 started.

[root@N1 ~]# mkfs.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

262144 inodes, 1047552 blocks

52377 blocks (5.00%) reserved forthe superuser

***个数据块=0

Maximum filesystem blocks=1073741824

32 block groups

32768 blocks per group, 32768 fragments pergroup

8192 inodes per group

Superblock backups stored onblocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating grouptables: 完成

正在写入inode表: 完成

Creating journal (16384 blocks): 完成

Writing superblocks andfilesystem accounting information: 完成

[root@N1 ~]# mkdir /backup

[root@N1 ~]# blkid /dev/md0

/dev/md0: UUID="16e3c761-3b8a-40d0-9bb2-c8f5af081504"TYPE="ext4"

[root@N1 ~]# vim /etc/fstab

# /etc/fstab

# Created byanacondaonFri Jul 14 17:51:07 2017

#

# Accessible filesystems, byreference, are maintained under'/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/orblkid(8)formore info

#

/dev/mapper/centos-root /   xfs defaults0 0

UUID=ee8161b1-a9d1-4c9f-a2f5-3ba9200eab5f /boot   xfs defaults0 0

/dev/mapper/centos-swap swapswapdefaults0 0

UUID=16e3c761-3b8a-40d0-9bb2-c8f5af081504 /backup  ext4 defaults,acl,noatime 0 0

七、写一个脚本

(1) 接受一个以上文件路径作为参数;

(2) 显示每个文件拥有的行数;

(3) 总结说明本次共为几个文件统计了其行数;

#!/bin/bash

foriin$@;

do

echo "lines :`wc -l $i`"

done

echo "Count for $# files"

八、写一个脚本

(1) 传递两个以上字符串当作用户名;

(2) 创建这些用户;且密码同用户名;

(3) 总结说明共创建了几个用户;

#!/bin/bash

if [ $# -lt 2 ];then

echo "Error,Please input more."

fi

foriin$@;

do

useradd $i

echo $i | passwd --stdin $i

done

echo "Create $# users."

九、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;

#!/bin/bash

sum=0

foriin`seq 1 20`;

do

useradd visitor$i

uid=`id -u visitor$i`

let sum=$uid+$sum

done

echo "Sum of UID:$sum"

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,让我来简单介绍一下如何创建一个shell脚本Shell脚本是一种文本文件,其中包含一系列的命令和控制结构。它们被用来自动化任务,或者是批处理一些命令。以下是一些创建shell脚本的基本步骤: 1. 选择一个文本编辑器,例如Vim、Emacs或Nano。 2. 打开文本编辑器,并创建一个新文件。 3. 在文件的第一行添加shebang,它告诉系统使用哪种shell来运行脚本。例如,使用bash作为shell,可以在第一行添加: #!/bin/bash 4. 接下来,添加你要运行的命令和控制结构。例如,以下是一个简单的shell脚本,它在终端中输出“Hello, World!”: ``` #!/bin/bash echo "Hello, World!" ``` 5. 保存文件,并将其命名为一个有意义的名称。通常,shell脚本的文件扩展名是.sh。例如,可以将上面的脚本保存为helloworld.sh。 6. 在终端中,使用chmod命令为脚本添加可执行权限。例如,可以使用以下命令为helloworld.sh添加可执行权限: chmod +x helloworld.sh 7. 最后,在终端中执行脚本。例如,可以使用以下命令运行helloworld.sh: ./helloworld.sh 这就是创建一个简单的shell脚本的基本步骤。当然,随着你学习更多的命令和控制结构,你可以编写更复杂的脚本来执行更多的任务。 ### 回答2: shell脚本用于自动化任务的脚本编程语言,可以用来创建Raid0。Raid0是一种在多块磁盘上同时写入数据的磁盘阵列模式。下面是一个可以创建Raid0的shell脚本示例: ```bash #!/bin/bash # 检查是否有足够的磁盘设备 if [ $# -lt 2 ]; then echo "请提供至少两个磁盘设备路径" exit 1 fi # 检查是否已经安装了mdadm工具 if ! command -v mdadm &> /dev/null; then echo "未找到mdadm工具,请先安装" exit 1 fi # 创建Raid0 disks="" for disk in "$@"; do # 检查磁盘是否存在 if [ ! -e "$disk" ]; then echo "磁盘 $disk 不存在" exit 1 fi # 检查磁盘是否被占用 if mountpoint -q "$disk" || grep -qs "$disk" /proc/mdstat; then echo "磁盘 $disk 已被占用" exit 1 fi disks+="$disk " done # 创建Raid0设备 mdadm --create /dev/md0 --force --level=0 --raid-devices=$(echo "$disks" | wc -w) $disks # 确认创建成功 if [ $? -eq 0 ]; then echo "Raid0 创建成功" else echo "Raid0 创建失败" fi ``` 上述脚本需要在命令行中使用至少两个磁盘设备路径作为参数来执行,例如: ```bash $ ./create_raid0.sh /dev/sdb /dev/sdc ``` 脚本会先检查是否提供了足够的磁盘设备路径,然后检查mdadm工具是否已安装。接着会逐个检查磁盘是否存在和是否已被占用。最后,使用mdadm命令来创建Raid0设备,设备名称为/dev/md0。 如果Raid0创建成功,脚本会输出"Raid0 创建成功",否则输出"Raid0 创建失败"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值