LVM和RAID
RAID: Redundant Arrays of Inexpensive Disks Independent Berkeley: A case for Redundent Arrays of Inexpensive Disks RAID 提高IO能力: 磁盘并行读写; 提高耐用性; 磁盘冗余来实现 级别:多块磁盘组织在一起的工作方式有所不同; RAID实现的方式: 外接式磁盘阵列:通过扩展卡提供适配能力 内接式RAID:主板集成RAID控制器 Software RAID: 级别:level RAID-0:0, 条带卷,strip; RAID-1: 1, 镜像卷,mirror; RAID-2 .. RAID-5: RAID-6 RAID10 RAID01 RAID-0: 以条带形式将数据均匀分布在阵列的各个磁盘上; 读、写性能提升; 可用空间:N*min(S1,S2,...) 无容错能力 最少磁盘数:2, 2+ 适用领域:视频生成和编辑、图形编辑,其它需要大的传输带宽的操作; RAID-1:以镜像为冗余方式,对虚拟磁盘上的数据做多份拷贝,放在成员磁盘上 读性能提升、写性能略有下降; 可用空间:1*min(S1,S2,...) 有冗余能力 最少磁盘数:2, 2+ 适用领域:财务、金融等高可用、高安全的数据存储环境 RAID-4:数据交叉存储在2块硬盘中,再由第3块硬盘存储数据的校验码; 1101, 0110, 1011 RAID-5:采用独立存取的阵列方式,校验信息被均匀的分散到阵列的各个磁盘上; 读、写性能提升 可用空间:(N-1)*min(S1,S2,...) 有容错能力:1块磁盘 最少磁盘数:3, 3+ 适用领域:文件服务器、email服务器、web服务器等环境,数据库应用 RAID-6:用2块盘做校验盘,校验码存两次; 读、写性能提升 可用空间:(N-2)*min(S1,S2,...) 有容错能力:2块磁盘 最少磁盘数:4, 4+ 混合类型 RAID-10:结合RAID1和RAID0,先镜像,再条带化; 读、写性能提升 可用空间:N*min(S1,S2,...)/2 有容错能力:每组镜像最多只能坏一块; 磁盘数:2n(n>=2) 优点:读性能很高,写性能比较好,数据安全性好,允许同时有N个磁盘失效; 缺点:利用率只有50%,开销大; 适用领域:多用于要求高可用性和高安全性的数据库应用; RAID-01:先分成两组做成RAID-0,再把组成的RAID-0做成RAID-1;不符合常用方法,每一组有一块坏的硬盘可能性大; RAID-50、RAID7 适用领域:大型数据库服务器、应用服务器、文件服务器等应用; JBOD:Just a Bunch Of Disks 功能:将多块磁盘的空间合并一个大的连续空间使用; 可用空间:sum(S1+S2+,...) 常用级别: RAID-0 性能最好 RAID-1 冗余度最高,开销高 RAID-5 RAID-10 开销高 RAID-50 JBOD 实现方式: 硬件实现方式 软件实现方式 CentOS 6上的软件RAID的实现: 结合内核中的md(multi devices) mdadm:模式化的工具 命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices> 支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10; 模式: 创建:-C 装配: -A 监控: -F 管理:-f, -r, -a <raiddevice>: /dev/md# <component-devices>: 任意块设备 -C: 创建模式 -n #: 使用#个块设备来创建此RAID; -l #:指明要创建的RAID的级别; -a {yes|no}:自动创建目标RAID设备的设备文件; -c CHUNK_SIZE: 指明块大小;(默认512k) -x #: 指明空闲盘的个数; 例如:创建一个#G可用空间的RAID5; [root@study ~]# mdadm -C /dev/md0 -n 3 -x 1 -a yes -l 5 /dev/sdb{5,6,7,8} [root@study ~]# mke2fs -t ext4 /dev/md0 [root@study /]# mount /dev/md0 /mydata [root@study /]# mdadm -D /dev/md0 -D:显示raid的详细信息; mdadm -D /dev/md# 管理模式: -f: 标记指定磁盘为损坏; -a: 添加磁盘 -r: 移除磁盘 观察md的状态: cat /proc/mdstat -S: 停止md设备 mdadm -S /dev/md# watch命令: -n #: 刷新间隔,单位是秒; watch -n# 'COMMAND' 练习1:创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录; 练习2:创建一个可用空间为10G的RAID10设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录; 博客作业:raid各级别特性; LVM2: LVM: Logical Volume Manager, Version: 2 dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块; /dev/dm-# /dev/mapper/VG_NAME-LV_NAME /dev/mapper/vol0-root /dev/VG_NAME/LV_NAME /dev/vol0/root pv管理工具: pvs:简要pv信息显示 pvdisplay:显示pv的详细信息 pvcreate /dev/DEVICE: 创建pv vg管理工具: vgs vgdisplay vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 先做pvmove vgremove lv管理工具: lvs lvdisplay lvcreate -L #[mMgGtT] -n NAME VolumeGroup lvremove /dev/VG_NAME/LV_NAME 扩展逻辑卷: # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME 缩减逻辑卷: # umount /dev/VG_NAME/LV_NAME # e2fsck -f /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] # lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME # mount 快照:snapshot lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name 练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录; 练习2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录; 练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失; 练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失; 练习5:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能; 文件系统挂载使用: 挂载光盘设备: 光盘设备文件: IDE: /dev/hdc SATA: /dev/sr0 符号链接文件: /dev/cdrom /dev/cdrw /dev/dvd /dev/dvdrw mount -r /dev/cdrom /media/cdrom umount /dev/cdrom dd命令:convert and copy a file 用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=#:block size, 复制单元大小; count=#:复制多少个bs; 磁盘拷贝: dd if=/dev/sda of=/dev/sdb 备份MBR dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1 破坏MBR中的bootloader: dd if=/dev/zero of=/dev/sda bs=256 count=1 两个特殊设备: /dev/null: 数据黑洞; /dev/zero:吐零机; 博客作业:lvm基本应用,扩展及缩减实现; 回顾:lvm2, dd lvm: 边界动态扩展或收缩;快照; pv --> vg --> lv PE: LE: dd: 复制