磁盘配额、Raid及逻辑卷LVS
磁盘配额
Linux是多用户的操作系统,同一时间可能有多个用户登录到系统上进行操作,某些用户可能会写入很多数据,占用大量磁盘空间,导致其他用户没有磁盘空间可用。如何限定某个用户对磁盘的使用空间大小,以及可使用的inode多少,也就是限定可创建多少个文件,这就是磁盘配额管理的作用。
磁盘配额特点
在内核中执行;
以文件系统为单位启用;
对不同组或者用户的策略不同;
可根据块或者节点进行限制;
可执行软限制(soft limit)或硬限制(hard limit)
磁盘配额管理的设定
1、在/etc/fstab中启用文件系统挂载选项usrquota、grpquota,根据需要,只针对用户启用或只针对组启用,也可以两个都启用;一般对/home目录做配额,下面以/home为例。
注:目录内的内容需先备份出来;刚设置时需要重新挂载文件系统才能使用。
2、初始化数据库
quotacheck -cug /home
使用quotacheck命令后会在目录内生产两个数据文件。分别为用户或组配额的数据库文件。
注:在直接使用quotacheck命令时,系统可能会提示权限不足,这是selinux的缘故。setenforce 0可临时更改selinux安全模式。如下图:
3、开启或关闭配额功能
quotaon /home
查看配额开启状态
quotaon -p /home
关闭配额功能
quotaoff /home
4编辑用户具体配额信息
edquota user_name
可根据大小或inodes节点数进行设定,大小默认单位为Bytes;
edquota -p username1 username2 命令可设定用户1的配额方案与用户2的一样。
此外还可以用非交互式的命令来设定;
setquota USERNAME 软容量 硬容量 软数量 硬数量 /DIR
4、查看用户配额情况;
quota username 查看某用户的配额情况;
或repquota /dir 查看某目录所有进行了配额限制的用户的情况;
注意:只有目录中已存在某用户的文件此时此用户的配额限制才会有效。
RAID管理
RAID(Redundant Array of Independent Disks独立磁盘冗余阵列)是一个使用多个硬盘,在几块硬盘上分散存储或者重复存储数据的系统。RAID不仅有助于避免数据丢失,还能把因为硬件故障造成的停机时间减少到最小(通常能降低到0),同时还有可能提高性能。RAID可以使用硬件来实现,也可以由软件来实现。
RAID特点:
提高IO能力:磁盘并行读写;
提高耐用性;磁盘冗余来实现;
RAID级别:多块磁盘组织在一起的工作方式有所不同;
RAID实现的方式:
外接式磁盘阵列:通过扩展卡提供适配能力;
内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置;
Software RAID:利用软件实现RAID功能;
RAID工作原理
RAID能做两件基本的事情。
首先,raid通过把数据分散到多块硬盘上,因而能让多个硬盘同时工作或读取一条数据流,所以提供性能。
其次,RAID在多个硬盘上复制或者镜像数据,降低了由于一块硬盘发生故障带来的风险。
RAID级别
RAID0:只提高性能。这个模式使用两个或者多个容量相同的硬盘来缩短写数据和访问时间;
RAID1:只提供冗余性。它同时在两个或者多个硬盘上复制数据。这个模式镜像数据但却可能会降低性能,因为必须不止一次写数据。
RAID4:这个模式把数据分片存储,但是需要用一个硬盘保存校验信息,因此会花些时间等待写校验盘。除非有非常正当的理由使用RAID4,否则一般选则RAID5。
RAID5:通过把数据和校验信息都分片存储,这个模式既创建了一个冗余结构,同时又降低了读写时间。RAID5至少需要3块硬盘,允许一块硬盘损坏。
RAID6:采用两块硬盘分片存储校验信息,因此更加提高了冗余性。至少需要4快硬盘,允许2快硬盘损坏。
RAID7:可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式。
混合类型级别
RAID50:先做RAID5,再做RAID0,性能冗余皆有提升,空间利用率(n-2)/2,至少6快硬盘;
RAID01:先做RAID0,再做RAID1,性能提升冗余都有,至少4块硬盘,空间利用率1/2;
RAID10:先做RAID1,再做RAID0,性能提升冗余都有,至少4块硬盘,空间利用率1/2;
JBOD(Just a Bunch Of Disks)将多块磁盘的空间合并一个大的连续空间使用.不提升读写速率,也不提供冗余。
常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
配置RAID
Linux使用mdadm来管理软RAID,可以将任何块设备做成RAID,支持将磁盘的某个分区、也支持整个磁盘创建为RAID设备。利用分区创建的时候,需要将分区类型修改为fd,利用整个磁盘创建时,则直接指定磁盘即可。
Linux软raid支持的RAID级别:LINEAR, RAID0, RAID1, RAID4,RAID5, RAID6, RAID10
madadm命令用法:
mdadm [mode] <raiddevice> [options] <component-devices>
常用mode:
-A, –assemble:装配已存在的磁盘阵列;
-C, –create:创建新的磁盘阵列;
-I, –incremental:增加单个设备到磁盘阵列;
-G, –grow:改变盘阵的大小;
常用options(in create,build,or grow mode):
-n, –raid-devices=#:指定RAID中活动的设备数量;
-x, –spare-devices=#:指明空闲盘的个数;
-c, –chunk=:指明块大小,2^n,单位K,默认为512K;
-l, –level=:指明要创建的RAID的级别;
-a, –auto{=yes|no}:指明如何创建设备文件,yes表示按标准方式。
范例:创建RAID 使用mdadm创建一个10G的RAID5,分别使用四块同样大小的硬盘。
1、创建
mdadm -C /dev/md0 -a yes -l5 -n3 -x1 /dev/sd{b,c,d,e}
在创建raid的时候,/proc/mdstat文件显示出进度信息;这个文件总是反映raid当前的状态,在添加硬盘或者替换故障硬盘的时候,观察这个文件非常有用(watch cat /proc/mdstat)
使用mdadm -D /dev/md0 可以查看详细信息
使用mdadm -Ds /dev/md0 >> /etc/mdadm.conf 可以生成raid的配置文件/etc/mdadm.conf,mdadm命令在启动或停止的时候会读到这个文件,此时可以用配置文件重新启用raid;
2、格式化 创建好raid后接着进行格式化
mkfs.ext4 /dev/md0
3、挂载 格式化后进行挂载就可以使用了,同理要每次系统启动时自动挂载,须在/etc/fstab中配置好(建议用UUID配置,设备名重启后可能会变动);
管理测试RAID
模拟磁盘故障
mdadm /dev/md0 -f /dev/sda1
移除磁盘
mdadm /dev/md0 –r /dev/sda1
移除认为损坏的设备,添加新的设备
mdadm /dev/md0 -a /dev/sda1
其他管理命令
增加raid设备的磁盘数量(增长模式)
mdadm -G /dev/md# -n # -a /DEVICE
-n指定要增长到几块磁盘,-a指定增加进去的磁盘
停用RAID设备(先取消挂载)
mdadm -S /dev/md#
重新启用之前停用的RAID设备(前提是导出过配置文件)
mdadm -As /dev/md#
完全删除停止RAID设备
1、停用RAID设备:mdadm -S /dev/md#
2、删除保存过的RAID配置文件:rm -f /etc/mdadm.conf
3、删除创建过RAID分区:fdisk 命令
4、如果发现无法完全删除分区信息,利用mdadm –zero-superblock /DEVICE 将每个分区信息删除
LVM
LVM(Logical Volume Manager,逻辑卷管理器)是一种可选的子系统,他提供了硬盘分区的一种超强版本.
它可以将多个单独的物理硬盘指定成物理卷PV(Physical volume,由PE组成),再在物理卷上组成"卷组”(volume group).卷组的总容量接着可以分配给逻辑卷(logical volume),后者按照普通的块设备来访问.
逻辑卷的管理机制能让实现:
更高效的使用和分配存储空间;
在不同的物理设备之间移动逻辑卷;
随时扩大和缩小逻辑卷的大小;
保存整个文件系统的“快照”
不必中断设备就能替换联机设备。
PV管理工具
创建pv(利用分区创建pv时,需要将分区类型改为8e)
pvcreate /dev/DEVICE
显示pv信息
pvs [PhysicalVolume… 简要显示pv信息;
pvdisplay [PhysicalVolume…] 显示pv详细信息;
将指定的设备从pv中移除
pvremove /dev/DEVICE
移动pv
pvmove /dev/DEVICE
当缩减VG大小时,需要先将被缩减的设备上的文件移动到同一个VG上面的其他设备上,此时需要用pvmove来实现数据的转移。
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
重设文件系统大小
fsadm[options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
范例1:创建逻辑卷/dev/vg0/lv0,使用硬盘/dev/sdb(20G)和分区/dev/sdd1(10G)
1、创建pv
pvcreate /dev/sdb /dev/sdd1
2创建卷组vg
vgcreate vg0 /dev/sdb /dev/sdd1
创建了一个30G的卷组,默认PE大小4M,空闲30G。
3、创建lv
lvcreate -n lv0 -L 10G vg0
从vg0中创建了一个10G的逻辑卷/dev/vg0/lv0,名称为lv0;
此时的/dev/vg0/lv0其实是软链接指向/dev/dm-0
4、格式化
mkfs.ext4 /dev/vg0/lv0
此时使用blkid命令已经可以看到lv0文件系统了。
5、挂载lv–使用mount命令手动挂载或写入配置文件/etc/fstab就可以使用了。
mount /dev/vg0/lv0 /mnt/lvm
范例2:扩展逻辑卷
1)lvextend -L +5G /dev/vg0/lv0 增加5个G
2)resize2fs /dev/vg0/lv0 更新文件系统大小;
步骤一也可以使用-r选项表示同时更新文件系统,此时第二步可省略eg. lvextend -L +5G -r /dev/vg0/lv0
可直接在线扩展不需要先umount文件系统
可使用lvextend -l +100%FREE /dev/vg0/lv0将所有空闲vg扩展到逻辑卷lv。
范例3:增加硬盘至卷组
1)pvcreate /dev/sdd2
2)vgextend vg0 /dev/sdd2
增加一个10G的分区/dev/sdd2,增加完后卷组vg0由30G变成40G.
范例4:缩减逻辑卷(须确保缩减后的逻辑卷能容纳缩减前lv内的数据,不然数据会丢失)
1、取消挂载
umount /dev/vg0/lv0
2、强制检查文件系统
e2fsck -f /dev/vg0/lv0
3、缩减文件系统,例如至10G
resize2fs /dev/vg0/lv0 10G
4、缩减lv大小
lvreduce -L 10G /dev/vg0/lv0
5、重新挂载mount -a
范例5:删除某块磁盘,如删除/dev/sdd2(不需要取消挂载)
1、将此块磁盘上的PE移动到同卷组内其他磁盘上(其他磁盘剩余空间须足够)
pvmove /dev/sdd2
2、缩减vg大小
vgreduce vg0 /dev/sdd2
3、删除pv
pvremove /dev/sdd2
范例6:删除整个逻辑卷
1、取消挂载umount
2、删除逻辑卷(逻辑卷内容会清空)
lvremove /dev/vg0/lv0
3、删除卷组
vgremove vg0
4、删除物理卷
pvremove device…
逻辑卷管理器快照
快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
快照将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享。
由于快照区与原本的LV共用很多PE的区块,因此快照须与被快照的LV在同一个VG上!系统恢复的时候的文件数量不能高于快照区的实际容量。
对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择。
在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间,所以快照中只含有原来的逻辑卷中更改的数据,建立快照的卷大小一般只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend放大快照。
快照管理命令
为现有逻辑卷创建快照
#lvcreate -L 1G -s -n snap-data -p r /dev/vg0/data
挂载快照
#mkdir -p /mnt/snap
#mount -o ro /dev/vg0/data /mnt/snap
删除快照
#umount /mnt/snap
#lvremove /dev/vg0/data
范例:创建快照
lvcreate -L 2G -s -n lv0_snapshot -p r /dev/vg0/lv0
说明:给逻辑卷/dev/vg0/lv0创建一个2G的快照lv0_snapshot;-s 表明逻辑卷类型为快照,”-p r”表明为只读。此时快照可直接挂载,不需要格式化了。
原创文章,作者:beyond,如若转载,请注明出处:http://www.178linux.com/47120