RAID:
级别:仅代表磁盘组织方式不同,没有上下之分;
0: 条带 只有条带,存在不同的磁盘上性能提升4倍
性能提升: 读,写
冗余能力(容错能力): 无
空间利用率:nS
至少2块盘
1: 镜像 多存几份数据
性能表现:写性能下降,读性能提升
冗余能力:有
空间利用率:1/2
至少2块盘
2
3
4 5加了轮流加校验盘
5: 3份条带加一份校验码 坏了两块就不行了
性能表现:读,写提升
冗余能力:有
空间利用率:(n-1)/n
至少需要3块
3条带 + 3镜像 坏一块盘动全身 先条带再镜像01
先镜像,再条带 2(镜像)+3(条带)坏在局部10 同组不能坏
10:
性能表现:读、写提升
冗余能力:有
空间利用率:1/2
至少需要4块
01:
性能表现:读、写提升
冗余能力:有
空间利用率:1/2
至少需要4块
50:
性能表现:读、写提升
冗余能力:有
空间利用率:(n-2)/n
至少需要6块
jbod: 叠加多个盘
性能表现:无提升
冗余能力:无
空间利用率:100%
至少需要2块
逻辑RIAD:
/dev/md0
/dev/md1
fd 存了附加信息
创建2G的raid0
fdisk /dev/sda
n
+1G
n
+1G
t
5
L
fd
t
6
fd
p
w
partprobe /dev/sda
cat /proc/partitions
mdadm -C /dev/md0 -a yes -l 0 -n 2/dev/sda{5,6}
y
cat /proc/mdstat
mke2fs -j /dev/md0
fdisk -l
mount /dev/md0 /mnt
ls /mnt
看到lost加find成功
RAID1 2G
2个2g
fdisk /dev/sda
n
+2G
n
+2G
t
6
L
fd
t
8
fd
p
w
partprobe /dev/sda
cat /proc/partitions
mdadm -C /dev/md1 -a yes -l 1 -n 2/dev/sda{7,8}
cat /proc/mdstat
mke2fs -j /dev/md1
mke2fs -j /dev/md1 -E stride=16 -b 4096 /dev/md0
fdisk -l
mount /dev/md0 /mnt
md: 内核模块
mdadm: 将任何块设备做成RAID md管理器
模式化的命令:
创建模式
-C
专用选项:
-l:级别
-n#: 设备个数
-a{yes|no}: 是否自动为其创建设备文件
-c:CHUNK大小, 2^n,默认为64KB
-x#: 指定空闲盘个数 x+n=后面跟的设备个数
管理模式
--add,--remove, --fail
mdadm/dev/md# --fail /dev/sda7 模拟成坏的
监控模式
-F
增长模式
-G
装配模式
-A
查看RAID阵列的详细信息
mdadm -D /dev/md#
--detail
停止阵列:
mdadm-S /dev/md#
--stop
创建一个空间大小为10G的RAID5设备;其chuck大小为32k;要求此设备开机时可以自动挂载至/backup目录;
RAID0
2G:
4:512MB
2:1G
RAID1
2G
2:2G
watch: 周期性地执行指定命令,并以全屏方式显示结果
-n#:指定周期长度,单位为秒,默认为2
格式: watch -n # 'COMMAND'
将当前RAID信息保存至配置文件,以便以后进行装配:
mdamd -D --scan > /etc/mdadm.conf
RAID5:
2G:3, 1G
归档
--xattrs
文件系统类型:
ext2
ext3
cat /proc/filesystems : 查看当前内核所支持文件系统类型
RAID: 独立冗余磁盘阵列
Linux:硬件,软件
/dev/md#
MD: Multi Device, 多设备
lsmod 列出模块类型
lsmod 命令:是一个小程序,用来显示文件、proc/modules的信息,也就是显示当前内核模块装载的模块。
mdadm:用户空间工具,管理工具 真正实现在内核
创建
-C
管理
--add,--remove, --fail
-a,-r, -f
监控
增长
装配
-A
-S
-D
RAID0, RAID1
RAID01, RAID10
RAID0+1:
MD, DM 作raid
/dev/md#
metadevice
DM: Device Mapper
逻辑设备
RAID,LVM2
DM: LVM2
快照
多路径
LVlogic volume
VGvolume Group
PVphysical Volume
管理物理卷
pvpvcreate pvremove pvscan pvdisplay pvmove
fdisk /dev/sda
n
+7G
n
+5G
t
10
8e
t
10
8e
w
partprobe/dev/sda
cat/proc/partiestion
fdisk不能超过15个
创建物理卷
pvcreate/dev/sda{10,11}
pvs查看当前系统的pv
pvdisplay显示详细信息
pvscan扫描识别pv
创建卷组
vgcreatevgremove vgextend vgreduce vgs vgdispaly
vgscan
vgcreatemyvg /dev/sda{10,11} -s指定物理盘区(PE)大小
vgs
vgdisplay/dev/sda10
vgremovemyvg
vgcreate-s 8M myvg /dev/sda{10,11}
移除一个pv
pvs查看
pvmove先移动数据
pvmove/dev/sda11
vgreduce
vgreducemyvg/dev/sda11
vgs
pvs
LVlogic volume
lvcreatelvremove lvextend lvs
lvdisplay
lvcreate-n name -L 大小 VG名字
lvcreate-L 50M -n testlv myvg
lvs
lvdisplay/dev/myvg/testly
mke2fs-j /dev/myvg/testly
mount/dev/myvg/testlv /mnt
ls/mnt
mount
ls-l /dev/mapper
ls-l /dev/myvg
umount/mnt
lvremove/dev/myvg/testly
lvs
扩展逻辑卷
先扩展物理边界,再扩展逻辑边界
lvextend
-L[+]#扩展到 +5G扩建了【5】
resize2fs-p /path/to/l
df-lh 显示的是文件系统的大小
lvs
任务计划
10G, VG
vgcreate VG_NAME /PATH/TO/PV
-s#: PE大小,默认为4MB
lvcreate -n LV_NAME -L #G VG_NAME
创建pv pvcreate /dev/sda{10,11}
练习:创建一个由两个物理卷组成的大小为20G的卷组myvg,要求其PE大小为16M;而后在此卷组中创建一个大小为5G的逻辑卷lv1,此逻辑卷要能在开机后自动挂载至/users目录,且支持ACL功能;
缩减前面创建的逻辑卷lv1的大小至2G;
一、扩展逻辑卷;
先扩展物理边界
lvextend
-L[+]# /PATH/TO/LV
lvextend -L 2G -n testly myvg
mke2fs -j /dev/myvg/testlv
mkdir /users
vim /etc/fstab
加一行开机自动挂载文件
/dev/myvg/testly /users ext3 defaults,acl 0,0
mount -a
cd /users
ls
看到lost加found成功挂载
cp /etc/inittab .
ls
cat ./inittab
cd
df -lh
lvextend -L 5G /dev/myvg/testlv
df -lh 显示文件系统的大小而不是逻辑卷的大小
lvs
先扩展物理成功
扩展逻辑边界
resize2fs -p /dev/myvg/testlv
df -lh
cd /usr/
cd /users
cat inittab 文件依然可以使用
缩减逻辑卷
df -ls
resize2fs /
确保缩减后不会小于
2G, +3G
5G
再扩展逻辑边界
resize2fs
resize2fs-p /PATH/TO/LV 能有多大扩展多大
二、缩减逻辑卷;
注意:1、不能在线缩减,得先卸载;
2、确保缩减后的空间大小依然能存储原有的所有数据;
3、在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态;
df -lh
umount /users
e2fsck -f dv/myvg/testlv
resize2fs
resize2fs/PATH/TO/PV 3G
lvreduce -L [-]# /PATH/TO/LV
重新挂载
三、快照卷
1、生命周期为整个数据时长;在这段时长内,数据的增长量不能超出快照卷大小;
2、快照卷应该是只读的;
3、跟原卷在同一卷组内;
lvcreate
-s创建快照卷
-pr|w 制定权限
lvcreate -L # -n SLV_NAME -p r /PATH/TO/LV
lvcreate -L 50M -n testlv-sanp -s -p r/dev/myvg/testlv
lvs
mount /dev/myvg/testlv-snap /mnt
cd /mnt
ls
看见lost+found表示成功挂载
cp /etc/inittab ./
cp /etc/issuse ./
ls
cd
lvcreate -s -L 20M -p r -n testlv-snap/dev/myvg/testlv
cd /users
ls
cp /var/log/messages ./
ls
vim issuse
mount /dev/myvg/testlv-snap /mnt
cd /mnt
tar -jcf /tmp/usrers.tar.bz2 inittab issuse
cd
umount /mnt
lvremove /dev/myvg/testlv-snap
y
cd /users
ls
cd /users
ls
rm inittab issuse messages
y
y
y
ls
tar -xf /tmp/users.tar.bz2 -C ./
ls
脚本编程控制结构:
顺序
选择
if
case
循环
for
while
until
while CONDITION; do
statment
done
进入循环:条件满足
退出循环:条件不满足
until CONDITION; do
statement
...
done
进入循环:条件不满足
退出循环:条件满足
for 变量 in 列表; do
循环体
done
for (( expr1 ; expr2 ; expr3 )); do
循环体
done
写一个脚本:
1、通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线,
如果在线,就显示"ipis up.",其中的IP要换为真正的IP地址,且以绿色显示;
如果不在线,就显示"ipis down.",其中的IP要换为真正的IP地址,且以红色显示;
要求:分别使用while,until和for(两种形式)循环实现。
ping
-c
-W
awk 'PATTERN{ACTION}' file
print$1
df-Ph | awk '{print $2}'
df-Ph | awk '{print $1,$3}'
df-Ph | awk '{print $0}'显示所有的行
df-Ph | awk '{print $NF}'最后一个字段
awk -F: '{print $1,$3}' /etc/passwd -F 指定分隔符
写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区:
1、列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择;
2、当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,n就退出;否则,让用户重新选择;
3、抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区);并为其创建三个主分区,第一个为20M,第二个为512M, 第三个为128M,且第三个为swap分区类型;(提示:将分区命令通过echo传送给fdisk即可实现)
#!/bin/bash
#
echo "Initial a disk"
echo -e "\033[31mWarning:\033[0m"
fdisk -l 2>/dev/null | grep -o"^Disk /dev/[sh]d[a-z]"
read -p "your choice" PARTDISH
if [ $PARTDISH=='quit' ]; then
echo "quit"
exit 7
fi
util fdisk -l 2>/dev/null | grep -o"^Disk /dev/[sh]d[a-z]" | grep "^ Disk $PARTDISH" ;do
read-p "Wrong option,Your choice aging:" PARTDISK
done
read -p "will destroy all data,continue:" CHOICE
util [ $CHOICE == 'y' -o $CHOICE];do
read -p "will destroy all data,continue:"CHOICE
done
if [ $CHOICE == 'n' ]; then
echo "Quit"
exit 9;
else
dd if=/dev/zero of=/dev/sdb bs=512 count=1
sync
sleep 3
echo 'n
p
1
+20M
n
p
2
+512M
n
p
3
+128M
t
3
82
w'| fdisk $PARTDISH &>/dev/null
sync
partprobe $PARTDISH
mke2fs -j $(PARTDISH)1 $>/dev/null
mke2fs -j $(PARTDISH)2 $>/dev/null
mkswap $(PARTDISH)3 $>/dev/null
fi
fdisk -l |grep "
dd if=/dev/zero of=/dev/sdb bs=512 count=1
sync
sleep 3
RAID
LVM:
逻辑卷的缩减
扩展
快照卷
while CONDITION; do
循环体
done
while [ $VAR != 'quit' ];do
done
#!/bin/bash
#
for I in `mount | grep "/dev/sda"| awk '{print $1}'`;
fuser -km $I
umount $I
echo "$I unmount ok."
done