linux下存储管理之三

三、存储管理(3)

1、磁盘阵列RAID

RAID
RAID:廉价磁盘冗余阵列 作 用:容错、提升读写速率
========================================================
RAID类型 个数 利用率 优缺点
---------------------------------------------
RAID0 条带集 2+ 100% 读写速率快,不容错
RAID1 镜像集 2 50% 读写速率一般,容错
RAID5 带奇偶校验条带集 3+ (n-1)/n 读写速率快,容错,允许坏一块
RAID6 带奇偶校验条带集双校验 4+ (n-2)/n 读写快,容错,允许坏两块
RAID01
RAID10 RAID1的安全+RAID0的高速 4 50% 读写速率快,容错
RAID50 RAID5的安全+RAID0的高速 6 (n-2)/n 读写速率快,容错
RAID60 RAID6的安全+RAID0的高速 8 (n-4)/n 读写速率快,容错
---------------------------------------------

---------------------------------------------

file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/1.png
file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/2.png
file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/3.png
file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/4.png

file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/5.png
file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/6.png
file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/7.png
file://C:\Users\zjyh\AppData\Local\Temp\ct_tmp/1.png

一、不同场景RAID的使用
RAID 实现方式
硬RAID: 需要RAID卡,有自己的CPU,处理速度快
软RAID: 通过操作系统实现,比如Windows、Linux

二、RAID5 (3块硬盘) + 热备(1块硬盘)
1. 准备4块硬盘
[root@yangs ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 48 Jan 13 16:07 /dev/sdd
brw-rw---- 1 root disk 8, 64 Jan 13 16:07 /dev/sde
brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdf
brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdg

2. 创建RAID
[root@yangs ~]# yum -y install mdadm //确保mdadm命令可用
[root@yangs ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g}
mdadm: array /dev/md0 started.
-C 创建RAID
/dev/md0 第一个RAID设备
-l5 RAID5
-n RAID成员的数量
-x 热备磁盘的数量


3. 格式化,挂载
[root@yangs ~]# mkfs.ext4 /dev/md0
[root@yangs ~]# mkdir /mnt/raid5
[root@yangs ~]# mount /dev/md0 /mnt/raid5
[root@yangs ~]# cp -rf /etc /mnt/raid5/etc1

4. 查看RAID信息
[root@yangs ~]# mdadm -D /dev/md0 //-D 查看详细信息
/dev/md0:
Version : 1.2
Creation Time : Mon Jan 13 16:28:47 2014
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Mon Jan 13 16:34:51 2014
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 512K
Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
1 8 64 1 active sync /dev/sde
4 8 80 2 active sync /dev/sdf

3 8 96 - spare /dev/sdg

5. 模拟一块硬盘损坏,并移除
终端一:
[root@yangs ~]# watch -n 0.5 'mdadm -D /dev/md0' //watch持续查看
终端二:
[root@yangs ~]# mdadm /dev/md0 -f /dev/sde -r /dev/sde
//模拟坏了并移除 -f --fail -r --remove

6. 设置RAID开机生效
[root@yangs ~]# mdadm -D -s
ARRAY /dev/md0 metadata=1.2 name=sxl1.com:0 UUID=c6761621:8878498f:f5be209e
[root@yangs ~]# mdadm -D -s > /etc/mdadm.conf
========================================================
mdadm选项:
-s --scan
-S --stop
-D --detail
-C --create
-f --fail
-r --remove
-n --raid-devices=3
-x --spare-devices=1
-l --level=5
========================================================
直接读取/proc/mdstat就可以取得内核中所记录的多重磁盘设备的配置信息,不过,这是比较低级的方式,并不建议你使用
/etc/init.d/mdmonitor start

2、文件查找

文件的查找
========================================================
一、命令文件
which ls (echo $PATH)

二、任意文件
A. locate (查询的数据库: /var/lib/mlocate/mlocate.db)
计划任务:每天自动更新数据库
手动更新数据库: updatedb
它必须依赖locate数据库,该数据库中存储着文件与位置的信息(绝对路径)
数据库的更新可以使用updatedb命令来完成
locate -r '正则表达式' 例:locate -r '\.foo$' 搜索以.foo结尾的文件
-i为忽略大小写
-n X 仅列出前X 个匹配项
locate -n 5 passwd 仅搜索前5 个匹配项
-e dir1,dir2... 在指定的目录中搜索
[root@server ~]# updatedb 更新数据库
[root@server ~]# locate ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/networking/devices/ifcfg-eth0
/etc/sysconfig/networking/profiles/default/ifcfg-eth0

B. find
find [options] [path...] [expression]
如果没有指定目录,则代表当前位置。如果没有指定条件,则匹配所有文件
如果有多个条件,默认各条件为AND运算。
-a 为 "and" 运算
  -o 为"或"运算
  ! 为"非"运算
-not 为"非" 运算
-prune:不再当前指定的目录下查找
按文件名:
[root@master ~]# find /etc -name "ifcfg-eth0"
[root@master ~]# find /etc -iname "ifcfg-eth0" //-i忽略大小写
[root@master ~]# find /etc -iname "ifcfg-eth*"

按文件大小:
[root@master ~]# find /etc -size +5M //大于5M
[root@master ~]# find /etc -size 5M
[root@master ~]# find /etc -size -5M
[root@master ~]# find /etc -size +5M -ls //-ls找到的处理动作

指定查找的目录深度:
-maxdepth levels
[root@master ~]# find / -maxdepth 3 -a -name "ifcfg-eth0"

按时间找(atime,mtime,ctime):
[root@master ~]# find /etc -mtime +5 //修改时间超过5天
[root@master ~]# find /etc -mtime 5 //修改时间等于5天
[root@master ~]# find /etc -mtime -5 //修改时间5天以内

按文件属主、属组找:
[root@master ~]# find /home -user jack //属主是jack的文件
[root@master ~]# find /home -group hr //属组是hr组的文件
[root@master ~]# find /home -user jack -group hr
[root@master ~]# find /home -user jack -a -group hr
[root@master ~]# find /home -user jack -o -group hr
[root@master ~]# find /home -nouser
[root@master ~]# find /home -nogroup
[root@master ~]# find /home -nouser -o -nogroup

按文件类型:
[root@master ~]# find /dev -type f //f普通
[root@master ~]# find /dev -type d //d目录
[root@master ~]# find /dev -type l //l链接
[root@master ~]# find /dev -type b //b块设备
[root@master ~]# find /dev -type c //c字符设备
[root@master ~]# find /dev -type s //s套接字
[root@master ~]# find /dev -type p //p管道文件

根据inode查找:-inum n
[root@master ~]# find / -inum 31064284

按文件权限:
[root@master ~]# find . -perm 644 -ls
[root@master ~]# find . -perm -644 -ls
[root@master ~]# find . -perm -600 -ls
[root@master ~]# find /sbin -perm -4000 -ls //包含set uid
[root@master ~]# find /sbin -perm -2000 -ls //包含set gid
[root@master ~]# find /sbin -perm -1000 -ls //包含sticky

忽略指定的目录
find / \( -path /proc -prune \) -o \( -path /sys -prune \) -o \( -name "*eth0" -print \)
find / -path /proc -prune -o -path /sys -prune -o -name "*eth0" -print

find / \( -path /proc -o -path /sys \) -prune -o \( -name "*eth0" -print \)
find / \( -path /proc -o -path /sys \) -prune -o -name "*eth0" -print

当-prune前面的表达式成立的话,就不会执行-o后面的内容了,如果不成立,即0 || -print,那么将打印输出,
另外需要注意的是-path路径时不能加结尾的/ , 比如路径/vobs/gliethttp/signature,不能写成/vobs/gliethttp/signature/,这是硬性规定

如果find .那么后面-path的必须使用相对路径./gliethttp
除 find中.之外,其他所有查找,比如find tmp或者find /vobs等,-path都必须使用绝对路径


找到后处理的动作:
-print
-print0
-ls
-delete
-exec command {} \;
-exec command {} \+
-ok command {} \;

[root@master ~]# find /etc -name "ifcfg*" -print
[root@master ~]# find /etc -name "ifcfg*" -ls
[root@master ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@master ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;

[root@master ~]# find /etc -name "ifcfg*" -exec rm -rf {} \;
[root@master ~]# find /etc -name "ifcfg*" -delete

扩展知识:find结合xargs
[root@master ~]# find . -name "yang*.txt" |xargs rm -rf
[root@master ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /var/tmp

3、文件的打包及压缩

文件打包及压缩
========================================================
Demo: 复制未打包的文件到远程主机
[root@yangs ~]# du -sh /etc
39M /etc
[root@yangs ~]# rsync -va /etc/ 192.168.5.32:/tmp //将/etc下的所有文件...
[root@yangs ~]# rsync -va /etc 192.168.5.32:/tmp //将/etc目录...

方法一:
==打包
[root@yangs ~]# tar -cf etc1.tar /etc //c创建 v详细 f打包后文件名
[root@yangs ~]# tar -cf etc2.tar /etc
[root@yangs ~]# tar -cf etc3.tar /etc
[root@yangs ~]# ll -h etc*
-rw-r--r-- 1 root root 38M 09-02 07:13 etc1.tar
-rw-r--r-- 1 root root 38M 09-02 07:14 etc2.tar
-rw-r--r-- 1 root root 38M 09-02 07:15 etc3.tar
==压缩
[root@yangs ~]# gzip etc1.tar
[root@yangs ~]# bzip2 etc2.tar
[root@yangs ~]# xz etc3.tar
[root@yangs ~]# ll -h etc*
-rw-r--r-- 1 root root 9.3M 09-02 07:13 etc1.tar.gz
-rw-r--r-- 1 root root 8.0M 09-02 07:14 etc2.tar.bz2
-rw-r--r-- 1 root root 5.1M 09-02 07:15 etc3.tar.xz
==解压
[root@yangs ~]# gzip -d etc1.tar.gz
[root@yangs ~]# bzip2 -d etc2.tar.bz2
[root@yangs ~]# xz -d etc3.tar.xz
==解包
[root@yangs ~]# tar -xvf etc1.tar //解包到当前目录
[root@yangs ~]# tar -xf etc2.tar -C /var/tmp/ //-C重定向到/var/tmp目录

方法二:
===打包,压缩===
[root@yangs ~]# tar -czf etc1.tar.gz /etc //-z 调用gzip
[root@yangs ~]# tar -cjf etc2.tar.bz2 /etc //-j 调用bzip2
[root@yangs ~]# tar -cJf etc3.tar.bz2 /etc //-J 调用xz
===解包,解压===
[root@yangs ~]# tar -xzvf etc1.tar.gz
[root@yangs ~]# tar -xvf etc1.tar.gz //无需指定解压工具,tar会自动判断
[root@yangs ~]# tar -xvf etc2.tar.bz2 -C /tmp
[root@yangs ~]# tar xf etc1.tar.gz
==解压zip
[root@yangs ~]# unzip oracle.zip

归档:cpio (选讲内容)
cpio [参数] > 归档文件名 (*.img)
cpio [参数] < 归档文件名(*.img)
-o create创建一个归档文件
-c 以旧的ASCII码方式归档
-i 释放
-d 释放时如果需要的话,创建目录
例:
cd /etc/sysconfig/network-scripts/
find . | cpio -oc > /root/dir2/net_info.img 或
ls | cpio -oc > /root/dir2/net_info.img

cd /root/dir2
cpio -id < net_info.img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值