您的位置:首页 > 运维架构 > Shell

linux笔记 第九天 软raid、bash循环进阶、lvm详解、压缩和归档工具

2015-12-06 16:53 696 查看
1、 raid基本概念及mdadm实现软raid
2、mdadm命令及bash循环进阶
3、linux管理之lvm详解
4、压缩解压及归档工具的使用 一、RAID:Redundant Array Inexpensive Disks 廉价冗余磁盘阵列。 1.1 硬盘通过IDE接口和线缆连接至主板,用户或者系统如何才能把多个磁盘看成是一个整体,我们需要用软件来模拟成一个磁盘(RAID)或者将线缆接入一个板卡上,板卡插在主板上(硬RAID).后随scsi硬盘的使用,磁盘成本较高,不再廉价,故名Redundant Array Independent Disks独立磁盘冗余阵列。
RAID level:
RAID Level读性能写性能
容错磁盘利用率至少磁盘数备注
raid0提升提升n*disk2块
raid1提升略下降
1*disk2块
raid4提升提升有(固定盘)(n-1)disk3块异或运算
raid5提升提升有(轮流)(n-1)disk3块raid5+0
raid10提升提升n/2disk4块用的多
raid0+1提升提升n/2disk4块
raid6提升提升(n-2)disk4块2块校验盘
注:由于raid4 固定的校验盘,校验盘压力大,性能差,故产生raid5;raid5几块磁盘轮流校验,容错,性能好;raid4、raid5都只能坏一块盘。
1.2 linux 2.6推出mdadm,md做软raid,dm(device mappen)用于LVM. mdadm工具的使用:md支持将任何设备组织成raid,如磁盘和分区,如果sda1 sda2 sda3 三个分区做成raid5,其中一个分区损坏整个磁盘损坏,所以同一块磁盘不同分区做raid没有意义。
mdadm:模式化命令
-A:装配模式,用于重新识别此前实现的Raid
-C:创建模式,用于创建Raid
-F:监控模式,邮件监控
管理模式:-f,-r ,-a
-C 创建模式中专用的选项:
-n #:用于创建RAID设备的磁盘个数
-l #:raid级别
-a yes:自动为创建的raid生成设备文件
-c Chunk_Size:软raid自己制定的块大小
md设备的设备文件,一般在/dev目录下以md开头,后面跟一个数字; cat /proc/mdstat 查看当前系统以启用的raid信息 mdadm -D /dev/md# 查看md#的详细信息
例如:创建一个10G的raid0.
1、创建2个分区,并分别改ID为fd 2、mdadm -C /dev/md0 -a yes -n 2 -l 0 /dev/sd{b,c}1
3、格式化e2fs -t ext4 /dev/md0 4、挂载试用,如果想开机挂载/dev/fstab,mount -a查看,df -lh 查看raid空间
例如:创建一个10G的raid5 mdadm -C /dev/md1 -a yes -n 3 -l 5 /dev/sda /dev/sdb /dev/sdc
二、RAID:组织多块硬盘当一个设备来使用 1.1 硬件raid:创建raid通过bios进行,在os中看到的仅是一个单独的设备
软件raid:无需任何硬件的raid设备,仅需多个块设备,在os中看到的是多个基本的磁盘设备。磁盘分区等,而后这多个设备可以组织成一个设备使用。
mdadm 命令行工具:
mdadm -D /dev/md# 显示指定的软Raid的详细信息
mdadm /dev/md# -f /dev/some_device 将/dev/md#中的/dev/some_device手动设置损坏
mdadm /dev/md# -r /dev/some_device 将/dev/md#中损坏状态的/dev/some_device删除
mdadm /dev/md# -a /dev/some_device 新增设备
watch -n1'cat /proc/mdstat' 新增设备后,数据校验,显示同步raid信息,如果raid上没有磁盘损坏而又新增磁盘,此磁盘会显示为空闲磁盘;一旦有一块磁盘损坏,这个空闲磁盘会顶替工作。
1.2 练习:实验模拟raid5,磁盘损坏,添加新磁盘等!


创建一个10G的RAID10
创建一个可用空间为10G的RAID5设备,要求其chunk大小为256K,文件系统为ext4,开机可自动挂载至/backup目录,支持acl功能;有一个空闲盘;
创建一个可用空间为10G的RAID1设备,chunk大小为1024k,有一个空闲盘,开机自动挂载至/users目录,不支持dev设备文件;

停止软件RAID:
mdadm -S /dev/md#
重新启用RAID:
mdadm -A /dev/md# /dev/DEVICE...
mdadm的配置文件/etc/mdadm.conf
watch: watch -n # <command> 阶段性执行制定的命令
如:watch -n 1 'ifconfig' ###1秒的频率全屏显示

三、 bash编程之循环

循环: 循环次数已知:(遍历for)
循环次数未知:(while、until)

for格式:
for 变量名 in 列表; do
循环体
done

循环体:依赖于调用变量来实现其变化;
循环可以嵌套;
退出条件:遍历列表完成

while格式:
while 测试条件; do
循环体
done

测试条件为真,进入循环;测试条件为假,退出循环;
测试条件一般通过变量来描述,需要在循环体不变量地改变变量的值,以确保某一时刻 测试条件为假,进而结束循环;

until格式:
until 测试条件; do
循环体
done

测试条件为假,进入循环;测试条件为真,退出循环;
测试条件一般通过变量来描述,需要在循环体不变量地改变变量的值,以确保某一时刻测 试条件为真,进而结束循环;

for的第二种使用格式 :
for ((初始条件;测试条件;修改表达式)); do
循环体
done

求100以内所有正整数之和:
while的实现:
#!/bin/bash
declare -i counter=1
declare -i sum=0

while [ $counter -le 100 ]; do
let sum+=$counter
let counter++
done

echo $sum

for的实现:
#!/bin/bash
declare -i sum=0

for ((counter=1;$counter <= 100; counter++)); do
let sum+=$counter
done

echo $sum

练习:求100以内所有偶数之和;

declare -i evensum=0
for ((counter=2; $counter <=100; counter+=2)); do
let evensum+=$counter
done

while循环:遍历文本文件

格式:
while read 变量名; do
循环体
done < /path/to/somefile

变量名,每循环一次,记忆了文件中一行文本

练习:显示其ID号为偶数的用户的用户名、ID号和SHELL

#!/bin/bash
#
while read line; do
userID=`echo $line | cut -d: -f3`
if [ $[$userID%2] -eq 0 ];then
echo $line | cut -d: -f1,3,7
fi
done < /etc/passwd

练习:显示ID号为偶数,且ID号同GID的用户的用户名、ID和SHELL;
while read line; do
userID=`echo $line | cut -d: -f3`
groupID=`echo $line | cut -d: -f4`
if [ $[$userID%2] -eq 0 -a $userID -eq $groupID ]; then
echo $line | cut -d: -f1,3,7
fi
done < /etc/passwd

练习:显示当前系统上所有挂载的文件系统中空间使用百分比大于10的设备和空间使用百分比;使用while循环实现;提示:此题目可以使用管道。



四、Logical volume manager 逻辑卷管理
Dm:device mapper 设备映射将一个或多个底层设备(块设备、raid)组织成一个逻辑设备的工具

概念:PE(Pysical Extent):固定大小如4M 8MPV physical volume,pvcreate,pvs,pvdisplay,pvremove,pvmoveVG volume group卷组LV logical volume逻辑卷存储空间边界分物理边界和逻辑边界;扩展时先扩展物理边界再扩展逻辑边界,缩小时先缩小逻辑边界再缩小物理边界。缩减不能少于已经存储的所有数据空间的大小。快照:snapshot, 快照卷也能挂载,它是访问原数据卷的另一个路劲,访问快照卷时实际是访问了原数据卷的数据;如果原数据卷发生数据更改,那么在数据更改前会复制一份到快照卷,使得快照某一时刻为快照前的数据。pv:pvcreate, pvs, pvdisplay, pvremove, pvmove, pvscanvg:vgcreate, vgs, vgdisplay, vgremove, vgextend, vgreduce, vgscanlv: lvcreate, lvs, lvdisplay, lvremove, lvextend, lvreduce, lvscan创建逻辑卷过程:物理磁盘disk-->物理卷pv-->卷组vg-->逻辑卷lv 1、创建pv(pvcreate /dev/sdb{1,2,3}),可以通过pvs或pvdisplay显示pv, pvremove /dev/sdb1 删除pv上的分区,pvreate还可以把新分区添加到pv中2、创建vg(vgcreate myvg /dev/sdb{1,2}), 添加新分区到myvg卷组(vgextend myvg /dev/sdb3),vg缩减卷组层(vgreduce myvg /dev/sdb1)在缩减时要确保分区上无数据(pvmove /dev/sdb1) -s指定pe大小默认4m当指定大小后将不能修改。3、创建lv(lvcreate -n名称、-L指定大小、指定在那个vg上创建举例:lvcreate -L 2G -n mylv myvg),创建lv之后就相当于一个独立的物理设备,它有对应的设备文件在/dev/mapper/myvg-mylv或/dev/myvg/mylv下,格式化后挂载到节点上就可以使用了mke2fs -j -b 1024 -m 2 /dev/mapper/myvg-mylv,mount /dev/myvg/mylv /mnt/text。扩展物理边界lvextend -L +4g /dev/myvg/mylv扩展后需要扩展逻辑边界resize2fs /dev/myvg/mylv ,缩减lv([b]缩减很危险需要慎重必须要先卸载文件系统)umount /mnt/text,并强制检测e2fsck -f /dev/myvg/mylv之后缩减逻辑边界resize2fs /dev/myvg/mylv 5g在缩减物理边界lvreduce -L 5g /dev/myvg/mylv,卸载lv(lvremove -f /dev/myvg/mylv.[/b]
4、 创建快照卷: lvcreate -L -n -s -p r(只读) 注意:快照卷是对某逻辑卷进行的,因此必须跟目标逻辑卷在同一个卷组中;无须指明卷组;创建快照卷时要保证卷组有足够创建快照卷的空间大小,创建完快照卷做数据备份,备份完后卸载lvremove移除快照卷。例如:创建快照卷格式:lvcreate –L 512M –n mylv-snap –p r –s /dev/myvg/mylv #fuser /data 查看原数据卷是否有进程访问#mount –o remount,ro /dev/myvg/mylv /date 阻止进程访问原数据卷# lvcreate –L 512M –n mylv-snap –p r –s /dev/myvg/mylv 创建快照卷#mount –o remount,rw /dev/myvg/mylv /date 恢复数据访问#mkdir /snap ,mount /dev/myvg/mylv-snap /snap 挂载查看原卷和快照卷的数据变换,并做备份cp 操作#umount /snap#lvremove /dev/myvg/mylv-snap 练习: 1、创建一个由至少两个物理卷组成的大小为10G的卷组;要求,PE大小8M;而后在卷组中创建大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录; #fdisk /dev/sdb,提示需要把分区格式设置为lvm逻辑卷格式 #pvcreate /dev/sdb{1,2,3} #vgcreate -s 8m myvg /dev/sdb{1,2}
#lvcreate -L 5G -n mylv myv/ #/etc/fstab下添加UUID="b69b4b54-5c91-4fd8-bc36-757597b6eb14" /users ext3 defaults 0 0 2、新建用户mageedu,其家目录为/users/mageedu,而后su至mageedu用户,复制/etc/fstab文件至自己的家目录; #useradd -d /users/mageedu mageedu #su - mageedu 3、cp /etc/fstab 3、扩展mylv1至7G,确保/users/mageedu的数据不受影响;而后su至mageedu用户,验正数据可正常访问; #lvextend -L +2G /dev/myvg/mylv #resize2fs /dev/myvg/mylv 4、缩减mylv1至4G,确保/users/mageedu的数据不受影响;而后su至mageedu用户,验正数据可正常访问; #resize2fs /dev/myvg/mylv 4G 5、对mylv1创建快照卷snap-mylv1,并通过其cp内部的数据至/backups/目录中,要求保留原有属主属组等信息; #lvcreate -L 1G -n snap-mylv1 -p r -s /dev/myvg/mylv, #mkdir /snap,3、mount /dev/myvg/snap-mylv1 /snap/ 移除卷组和逻辑卷:umount -àlvremove myvgàvgremove myvgàpvremove /dev/sdb* 逻辑卷dd if=/path/to/src_file of=/path/to/dest_file bs=256K count=# 100例如 dd if=/dev/zero of=/dev/sdb bs=512 count=1 /dev/null: 吞进所有数据,直接丢弃 /dev/zero: 泡泡机,吐零 dd if=/dev/sdb of=/backup/mbr.backup bs=1 count=512 dd if=/backup/mbr.backup of=/dev/sdb bs=512 count=1 如:#dd if=/etc/fstab of=/tmp/fstab #cat /tmp/fstab #dd if= /etc/fstab of=/tmp/fstab.2 bs=4 count=20 复制80字节 如:swap空间吃紧,创建新的swap设备,不购买新磁盘的情况下,利用其它磁盘的空间来实现. #free –m 查看当前swap空闲情况 #df –lh 查看当前磁盘空闲情况 #dd if=/dev/zero of=/var/swap.file bs=1M count=256 将0在var下填充一个swap.file文件,大小为256M #ls –l /var/swap.file –h 查看var下swap文件大小 #mkswap /var/swap.file 创建swap文件 #swapon #free -m启用swap并查看此时swap空间信息。 四、linux压缩、解压缩和归档工具 压缩是根据一定的算法将一些文件用某个文件替换的过程,一般压缩的对象为文本文件。 Compress/uncompress .Z 基本不用了,压缩后很后赘 gzip/bzip2/xz linux通用对文件压缩,gzip是最早的压缩工具,没有bzip2压缩比例大,xz压缩比例最大contos6以上支持。 zip 通用linux和Windows,支持目录压缩 gzip/gunzip:压缩后删除源文件,后缀.gz -#: 压缩比,默认是6,范围1—9 -d: gunzip解压缩 -c: 将压缩后的结果输出至标准输出,压缩后保留源文件gzip –c messages > messages.gz zcat: zcat somefile.gz ,不解压查看gzip压缩的文件内容bzip/bunzip2:压缩后删除原文件,后缀.bz2 -#:压缩比,默认6,范围1—9 -d:bunzip2 -k:压缩后,保留源文件 bzcat:不解压查看文件内容,bzcat somefile.bz2xz/unxz:压缩后保留源文件,后缀.xz -#:压缩比,默认6,范围0—9 -d:unxz -k:压缩后,保留源文件 Xzcat:不解压,查看压缩文件内容。Zip/unzip 格式:zip file.zip file 例如:zip haha.zip haha1 haha2对目录压缩或者归档的时候,要对其目录下的文件进行归档,如下:#zip http.zip http/* 将http目录下的所有文件压缩成http.zip 归档工具:tar 能实现将多个文件打包成单个文件,即为归档文件 tar [options] …-f tarfile.tar src_file… 创建归档:tar ( -c:create,-f:file.tar 指定归档后的文件,-v:显示执行过程) 展开归档:tar(-x:extract,-v,显示过程-f:file.tar) 查看归档后的文件中包含了哪些原文件,tar –tf FILE.tar Tar可直接通过选项调用压缩工具执行压缩或解压。 -z:gzip ,-j:bzip2,-J:xz ,-t 不解压查看归档文件内容 例如:tar –zcf httpd.tar.gz httpd 既归档又压缩 Cpio:归档工具,特殊情况使用,以后讲解。光盘挂载:mount /dev/cdrom /media/cdrom ,eject 弹出光盘。光盘文件系统:ISO9660 U盘挂载:一般服务器系统不支持NTFS,U盘系统格式为vfat,可以fdisk –l查看一般为/dev/sdc等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: