RAID & LVM基础 &磁盘配额

各raid简单介绍,更详细 http://blog.jobbole.com/83808/

RAID0模式 
    读写速度快,无冗余,应用场景:mysql slave,集群节点RS等。性能高,不存在校验,不会占用太多CPU资源,长用于数据不重要的生产环境
    在RAID 0状态下,存储数据被分割成两部分,分别存储在两块硬盘上,此时移动硬盘的理论存储速度是单块硬盘的2倍,实际容量等于两块硬盘中较小一块硬盘的容量的2倍。
    RAID0称为条带化(Striping)存储,将数据分段存储于 各个磁盘中,读写均可以并行处理。因此其读写速率为单个磁盘的N倍(N为组成RAID0的磁盘个数),但是却没有数据冗余,
    单个磁盘的损坏会导致数据的不可修复。
    缺点:任何一块硬盘发生故障,整个RAID上的数据将不可恢复。
    备注:至少2块硬盘,存储高清电影比较适合。


RAID1模式   
    50%冗余,成本高。单独的,数据重要,且不能宕机的业务,监控,系统分区
    优点:此模式下,两块硬盘互为镜像。当一个硬盘受损时,换上一块全新硬盘(大于或等于原硬盘容量)替代原硬盘即可自动恢复资料和继续使用,移动硬盘的实际容量等于较小一块硬盘的容量,
      存储速度与单块硬盘相同。RAID 1的优势在于任何一块硬盘出现故障是,所存储的数据都不会丢失。理论上提供2倍读取效率,写性能不提高
    缺点:该模式可使用的硬盘实际容量比较小,仅仅为两颗硬盘中最小硬盘的容量。容量损失
    备注:非常重要的资料,如数据库,个人资料,是万无一失的存储方案。


RAID 0+1模式  读写速度快 100%冗余,成本高
    RAID 0+1是磁盘分段及镜像的结合,采用2组RAID0的磁盘阵列互为镜像,它们之间又成为一个RAID1的阵列。硬盘使用率只有50%,但是提供最佳的速度及可靠度。

 


 


    
RAID 3模式
    RAID3是把数据块分成多个更小“块”,按照一定的容错算法,并行存放在N+1个硬盘上,实际数据占用的有效空间为N个硬盘的空间总和,而第N+1个硬盘存储的数据是校验容错信息,当这N+1个硬盘中的其中一个硬盘出现故障时,从其它N个硬盘中的数据也可以恢复原始数据。

RAID 5模式 
  具备一定的性能和冗余,最多坏一块,读性能较高,损失一块盘。写入因奇偶校验,写入性能不高。一般的业务都可用。坏一块性能下降。
    RAID5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。
  当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。需要3块以上,可以提供热备盘,自动重建。
 
RAID 10模式 
  读写速度快 100%冗余,成本高,性能和冗余要求都很高的业务,数据库主库和存储主节点
    RAID10最少需要4块硬盘才能完成。把2块硬盘组成一个RAID1,然后两组RAID1组成一个RAID0。虽然RAID10方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性。另外,在同组镜像内不能2块同时坏。

 


 

 
硬RAID与软RAID 
  什么是硬RAID?
        通过用硬件来实现RAID功能的就是硬RAID,比如:各种RAID卡,还有主板集成能够做的RAID的都是硬RAID。
  什么是软RAID?
        通过用操作系统md(Multi Devices)模块来完成RAID功能的就是软RAID, 依赖于CPU。设备名/dev/md0,dev/md1....等编号。 

热备份盘(hotspare or hot standby driver)
  为了加强容错的功能以及使系统在磁盘故障的情况下能迅速的重建数据,以维持系统的性能,一般的磁盘阵列系统都可使用热备份功能。

Chunk (块): raid存储数据时每个数据段的大小,centos6默认256
  若chunk过大,可能一块磁盘上的带区空间就可以满足大部分的I/O操作的数据的读写只局限与一块硬盘上,这便不能充分发挥Raid并发的优势;
  如果chunk设置过小,任何很小的I/O指令都可能引发大量的读写操作,不能良好的发挥并发性能,占用过多的控制器总线带宽,也影响了阵列的整体性能。所以,在创建带区时,我们应该根据实际应用的需要,合理的选择带区的大小



 

添加sdb分区,并将分区格式标记为fd格式,不进行格式化
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        3263    26210016    5  Extended
/dev/sdb5               1         128     1028097   fd  Linux raid autodetect
/dev/sdb6             129         256     1028128+  fd  Linux raid autodetect
/dev/sdb7             257         384     1028128+  fd  Linux raid autodetect
/dev/sdb8             385         512     1028128+  fd  Linux raid autodetect
/dev/sdb9             513         640     1028128+  fd  Linux raid autodetect
/dev/sdb10            641         768     1028128+  fd  Linux raid autodetect

管理软raid工具mdadm
mdadm 参数:
命令常用参数如下:
-C或--creat 建立一个新阵列
-a (yes|no) 是否为新建的raid设备自动创建设备文件/dev/md#
-l 指定raid级别
-n 指定用于raid的块设备的个数,不包括备盘
-x 指定用于备盘的个数
Device...
-r 移除设备
-A 激活磁盘阵列
-l 或--level= 设定磁盘阵列的级别
-D或--detail 打印阵列设备的详细信息
-n或--raid-devices= 指定阵列成员(分区/磁盘)的数量
-s或--scan 扫描配置文件或/proc/mdstat得到阵列缺失信息
-x或--spare-devicds= 指定阵列中备用盘的数量
-f 将设备状态定为故障
-c或--chunk= 设定阵列的块chunk大小 ,单位为KB
-a或--add 添加设备到阵列
-G或--grow 改变阵列大小或形态
-v --verbose 显示详细信息

 

raid0 创建实例
# mdadm -C -v /dev/md0  -l  0  -n 2 /dev/sdb{5,6}
  mdadm: chunk size defaults to 512K
  mdadm: Defaulting to version 1.2 metadata
  mdadm: array /dev/md0 started.

# cat /proc/mdstat   查看raid设备
Personalities : [raid0] 
md0 : active raid0 sdb6[1] sdb5[0]
      2054144 blocks super 1.2 512k chunks     
unused devices: <none>    

#cat /dev/md/md-device-map md0 1.2 f180de0b:3c0a714d:5ba6ec0f:cb580cd9 /dev/md0 格式化后挂载 # mkfs.ext4 /dev/md0 # mkdir /raid0 # mount /dev/md0 /raid0 # mdadm -Ds > /etc/mdadm.conf #生成配置文件
# blkid | grep md0      #md0设备的UUID
/dev/md0: UUID="5c0f1df0-d8b9-40de-884c-db1f1830d377" TYPE="ext4"
# mdadm
-Ds 查看阵列信息 ARRAY /dev/md0 metadata=1.2 name=node83:0 UUID=0bde80f1:4d710a3c:0feca65b:d90c58cb # mdadm -D /dev/md0 查看阵列详细信息 /dev/md0: Version : 1.2 Creation Time : Mon Jan 30 05:31:29 2017 Raid Level : raid0 Array Size : 2054144 (2006.34 MiB 2103.44 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Mon Jan 30 05:31:29 2017 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Chunk Size : 512K Name : node83:0 (local to host node83) UUID : 0bde80f1:4d710a3c:0feca65b:d90c58cb Events : 0 Number Major Minor RaidDevice State 0 8 21 0 active sync /dev/sdb5 1 8 22 1 active sync /dev/sdb6 # Major 主设备号,用于标记设备类别 # Minor 次设备号,用于标记同一种类别下不同事务具体设备

 

RAID1创建实例

# mdadm -C -v /dev/md1  -l 1  -n 2  /dev/sdb{7,8}       
##[ mdadm
-C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdb{7,8,9} ]创建时增加热备盘 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: size set to 1027584K Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started. # cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdb8[1] sdb7[0] 1027584 blocks super 1.2 [2/2] [UU] md0 : active raid0 sdb6[1] sdb5[0] 2054144 blocks super 1.2 512k chunks unused devices: <none> 格式化后挂载 # mkfs.ext4 /dev/md1 # mkdir /raid1 # mount /dev/md1 /raid1 # df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 5.7G 1.4G 4.0G 26% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 36M 145M 20% /boot /dev/md1 972M 1.3M 921M 1% /raid1   /dev/md0 1.9G 3.0M 1.8G 1% /raid0 # mdadm /dev/md1 -f /dev/sdb8 模拟损坏 mdadm: set /dev/sdb8 faulty in /dev/md1 # mdadm -D /dev/md1 | tail -5 Number Major Minor RaidDevice State 0 8 23 0 active sync /dev/sdb7 2 0 0 2 removed 1 8 24 - faulty /dev/sdb8 # mdadm /dev/md1 -r /dev/sdb8 移除故障设备 # mdadm /dev/md1 -a /dev/sdb8 增加设备 # mdadm /dev/md1 -a /dev/sdb9 再增加一块,自动设置为spare设备

 

清除raid设备
#umount /raid0
#umount /raid1
# mdadm -Ss   停止所有md设备    #mdadm -As 激活所有md设备
=======#擦除设备中的MD超级块==========
#mdadm --misc --zero-superblock /dev/sdb5
#mdadm --misc --zero-superblock /dev/sdb6

# mdadm -Ds
# mdadm -As    可以看到已经没有md0的信息
mdadm: /dev/md1 has been started with 2 drives and 1 spare.
接着把md1也清除

 

RAID5创建实例
 
# mdadm -C -v /dev/md5  -l 5 -n 3 -c 256 -x 1 /dev/sdb{5,6,7,8}
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: size set to 1027328K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started. 

# mdadm -Ds > /etc/mdadm.conf
# cat /etc/mdadm.conf
ARRAY /dev/md5 metadata=1.2 spares=1 name=node83:5 UUID=ebc7f228:63c29401:c1e17131:48fad932停止md5  

 
# mdadm -S /dev/md5
mdadm: stopped /dev/md5
# mdadm -A /dev/md5
mdadm: /dev/md5 has been started with 3 drives and 1 spare. 

# mdadm /dev/md5 -a /dev/sdb9
mdadm: added /dev/sdb9
# mdadm -D /dev/md5 | tail -8
    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       4       8       23        2      active sync   /dev/sdb7

       3       8       24        -      spare   /dev/sdb8
       5       8       25        -      spare   /dev/sdb9 
#mdadm -G /dev/md5  -n 4    #从3块扩充到4块
 
重新生成配置文件
#mdadm -Ds > /etc/mdadm.conf 

 

建立RAID 1+0双层架构的方法
  方法,先创建raid1,再使用创建的raid1设备创建raid0
 
#首先创建两个底层RAID1
#mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sdb{5,6}
#mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sdb{7,8}

# mdadm -Ds  查看信息
ARRAY /dev/md11 metadata=1.2 name=node83:11 UUID=916e47db:9780b284:8e2d05e2:3337104d
ARRAY /dev/md12 metadata=1.2 name=node83:12 UUID=3dca769f:1b9877d6:b97217ac:d90f79bc

#再创建上层RAID0
# mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md1{1,2}
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started. 

# mdadm -D /dev/md10 | tail -3
    Number   Major   Minor   RaidDevice State
       0       9       11        0      active sync   /dev/md11
       1       9       12        1      active sync   /dev/md12
 

 

LVM========================================================================

逻辑卷管理(Logical Volume Manager)
  LVM是linux环境下对底层磁盘的一种管理机制,通过dm模块实现。可以整合多个实体磁盘,使这些磁盘看起来像是一个磁盘,
  并且在未来还可以新增或者移除这些磁盘,使得磁盘空间的使用具有弹性。   即两大特性:便捷调整文件系统大小和LVM快照

 

LVM管理的基本术语
1、PE(physical extent)
    每一个物理卷被划分为称为PE的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB,创建vg时可指定
2、PV (physical volume)
    LVM最底层的实体卷轴,称为物理卷(PV)。制作PV就是将物理磁盘划分成PE。
3、VG (Volume Group)
    逻辑卷组,由PV整合而成。
4、LV(logical volume)
    从逻辑卷组(PV)中划分的逻辑分区,可以被格式化使用。

 

添加sdb分区,并将分区格式标记为8e格式,不进行格式化
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        3263    26210016    5  Extended
/dev/sdb5               1         128     1028097   8e  Linux LVM
/dev/sdb6             129         256     1028128+  8e  Linux LVM
/dev/sdb7             257         384     1028128+  8e  Linux LVM
/dev/sdb8             385         512     1028128+  8e  Linux LVM
/dev/sdb9             513         640     1028128+  8e  Linux LVM
/dev/sdb10            641         768     1028128+  8e  Linux LVM

 

 LVM相关命令

  PV VG LV
查找(scan) pvs  pvscan vgs  vgscan lvs  lvscan
新建(create) pvcreate   vgcreate lvcreate
显示(display) pvdisplay vgdisplay lvdisplay
增加(extend)   vgextend lvextend  (lvresize)
减少(reduce)   vgreduce lvreduce   (lvresize )
删除(remove) pvremove vgremove lvremove
改变容量(resize)     lvresize
改变属性(attribute) pvchange vgchange lvchange

 

 

 

 

 

 

 

 

 

创建LV实例

1、制作pv
# pvcreate /dev/sdb{5,6,7}
Physical volume "/dev/sdb5" successfully created
Physical volume "/dev/sdb6" successfully created
Physical volume "/dev/sdb7" successfully created

# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb5 lvm2 --- 1004.00m 1004.00m
/dev/sdb6 lvm2 --- 1004.03m 1004.03m
/dev/sdb7 lvm2 --- 1004.03m 1004.03m

2、制作vg
# vgcreate testvg /dev/sdb{5,6,7}        # -指定PE大小
Volume group "testvg" successfully created

# vgs
VG #PV #LV #SN Attr VSize VFree
testvg 3 0 0 wz--n- 2.93g 2.93g

# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb5 testvg lvm2 a-- 1000.00m 1000.00m
/dev/sdb6 testvg lvm2 a-- 1000.00m 1000.00m
/dev/sdb7 testvg lvm2 a-- 1000.00m 1000.00m

3、制作lv
# lvcreate -n testvg_lvm01 -L 1.5G testvg
Logical volume "testvg_lvm01" created.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testvg_lvm01 testvg -wi-a----- 1.50g
# lvscan
ACTIVE '/dev/testvg/testvg_lvm01' [1.50 GiB] inherit
# ls /dev/mapper
control testvg-testvg_lvm01

4、使用lv
#mkfs.ext4 /dev/testvg/testvg_lvm01
# mkdir /lvmdir
# mount /dev/testvg/testvg_lvm01 /lvmdir/
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5916420 1430452 4178768 26% /
tmpfs 502384 0 502384 0% /dev/shm
/dev/sda1 194241 35987 148014 20% /boot
/dev/mapper/testvg-testvg_lvm01
1515376 2304 1434432 1% /lvmdir

# lvdisplay
--- Logical volume ---
LV Path /dev/testvg/testvg_lvm01
LV Name testvg_lvm01
VG Name testvg
LV UUID AhBwXf-UiwD-hOwf-HL35-P5DY-X3h0-wXR741
LV Write Access read/write
LV Creation host, time node83, 2017-05-26 20:15:23 +0800
LV Status available
# open 1
LV Size 1.50 GiB
Current LE 384
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

5、动态扩容
VG扩展
# vgs
  VG     #PV #LV #SN Attr   VSize VFree
  testvg   3   1   0 wz--n- 2.93g 1.43g
# pvcreate /dev/sdb8
  Physical volume "/dev/sdb8" successfully created
# vgextend testvg /dev/sdb8
  Volume group "testvg" successfully extended
# vgs
  VG     #PV #LV #SN Attr   VSize VFree
  testvg   4   1   0 wz--n- 3.91g 2.41g

VG缩减
  确定要移除的PV,并将此pv上的数据移至其他pv: pvmove /path/to/pv
  从卷组中移除:vgreduce vgname /path/to/pv
# pvs

  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sdb5  testvg lvm2 a--  1000.00m       0
  /dev/sdb6  testvg lvm2 a--  1000.00m  464.00m
  /dev/sdb7  testvg lvm2 a--  1000.00m 1000.00m
  /dev/sdb8  testvg lvm2 a--  1000.00m 1000.00m
# pvmove /dev/sdb5  #将数据移至卷组其他pv
  /dev/sdb5: Moved: 1.6%
  /dev/sdb5: Moved: 77.2%
  /dev/sdb5: Moved: 100.0%
# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sdb5  testvg lvm2 a--  1000.00m 1000.00m
  /dev/sdb6  testvg lvm2 a--  1000.00m  464.00m
  /dev/sdb7  testvg lvm2 a--  1000.00m       0
  /dev/sdb8  testvg lvm2 a--  1000.00m 1000.00m
# vgreduce testvg /dev/sdb5  #缩减vg
  Removed "/dev/sdb5" from volume group "testvg"
# pvremove /dev/sdb5  #在卷组中移除pv
  Labels on physical volume "/dev/sdb5" successfully wiped


LV扩展
  确定逻辑卷所在物理卷有足够空闲空间
  扩展
    lv边界:lvextend -L +SIZE /path/to/lvname
    文件系统逻辑边界:resize2fs /path/to/lvname

# lvs
  LV           VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  testvg_lvm01 testvg -wi-ao---- 1.50g                                                    
# vgs
  VG     #PV #LV #SN Attr   VSize VFree
  testvg   3   1   0 wz--n- 2.93g 1.43g

# lvextend -L +300M /dev/testvg/testvg_lvm01 #+300M 为逻辑卷增加300M,此时扩展的是lv边界大小,文件系统没有被扩
  Size of logical volume testvg/testvg_lvm01 changed from 1.50 GiB (384 extents) to 1.79 GiB (459 extents).
  Logical volume testvg_lvm01 successfully resized

# resize2fs /dev/testvg/testvg_lvm01  #lvextend后需要使用此命令,扩展文件系统大小
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/testvg/testvg_lvm01 is mounted on /lvmdir; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/testvg/testvg_lvm01 to 470016 (4k) blocks.
The filesystem on /dev/testvg/testvg_lvm01 is now 470016 blocks long.

LV缩减
  确定数据大小
  卸载文件系统并强行检测文件系统
  1、缩减文件系统逻辑边界 resize /path/to/device SIZE
  2、缩减lv边界 lvreduce -L -SIZE /path/to/lv #-SIZE 缩减多少

# umount /lvmdir
# e2fsck -f /dev/testvg/testvg_lvm01
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/testvg/testvg_lvm01: 11/122880 files (9.1% non-contiguous), 16490/470016 blocks
# resize2fs /dev/testvg/testvg_lvm01 1G   #缩减文件系统逻辑边界至1G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/testvg/testvg_lvm01 to 262144 (4k) blocks.
The filesystem on /dev/testvg/testvg_lvm01 is now 262144 blocks long.

# lvreduce -L 1G /dev/testvg/testvg_lvm01   缩减lv大小至1G
  WARNING: Reducing active logical volume to 1.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testvg_lvm01? [y/n]: y
  Size of logical volume testvg/testvg_lvm01 changed from 1.79 GiB (459 extents) to 1.00 GiB (256 extents).
  Logical volume testvg_lvm01 successfully resized
# mount /dev/testvg/lvmdir


快照卷
  lvcreate
    -s: snapshot快照卷
    -p r : 限制快照卷为只读访问
# lvcreate -L 100M -s -p r -n testvg_lvm01_snap /dev/testvg/testvg_lvm01
  Logical volume "testvg_lvm01_snap" created.
# lvs
  LV                VG     Attr       LSize   Pool Origin       Data%  Meta%  Move Log Cpy%Sync Convert
  testvg_lvm01      testvg owi-aos---   1.00g                                                          
  testvg_lvm01_snap testvg sri-a-s--- 100.00m      testvg_lvm01 0.01    
# mount -o ro /dev/testvg/testvg_lvm01_snap /mnt    #挂载作为访问入口



  
清理lv及vg(先umount)
# lvremove /dev/testvg/testvg_lvm01_snap
Do you really want to remove active logical volume testvg_lvm01_snap? [y/n]: y
  Logical volume "testvg_lvm01_snap" successfully removed
# lvremove /dev/testvg/testvg_lvm01
Do you really want to remove active logical volume testvg_lvm01? [y/n]: y
  Logical volume "testvg_lvm01" successfully removed
# vgremove testvg
  Volume group "testvg" successfully removed

#pvremove /dev/sdb{6,7,8}
  Labels on physical volume "/dev/sdb6" successfully wiped
  Labels on physical volume "/dev/sdb7" successfully wiped
  Labels on physical volume "/dev/sdb8" successfully wiped


 

快照卷
  lvcreate
    -s: snapshot快照卷
    -p r : 限制快照卷为只读访问

# lvcreate -L 100M -s -p r -n testvg_lvm01_snap /dev/testvg/testvg_lvm01
  Logical volume "testvg_lvm01_snap" created.
# lvs
  LV                VG     Attr       LSize   Pool Origin       Data%  Meta%  Move Log Cpy%Sync Convert
  testvg_lvm01      testvg owi-aos---   1.00g                                                          
  testvg_lvm01_snap testvg sri-a-s--- 100.00m      testvg_lvm01 0.01    
# mount -o ro /dev/testvg/testvg_lvm01_snap /mnt    #挂载作为访问入口

 

 

磁盘配额

启用quota磁盘配额功能
# fdisk /dev/sdb        #格创建一个新的分区
# mkfs.ext4 /dev/sdb5      #格式化该分区
# mkdir /sdb5          #创建挂载点
# mount /dev/sdb5  /sdb5/       #挂载分区
# mount -o remount,usrquota,grpquota /sdb5/    #启用quota磁盘配额功能
# vim /etc/fstab                 #设置开机自动启动
/dev/sdb5/sdb5   ext4   defaults,usrquota,grpquota   0  0
# quotacheck -cugv /tmp/sdb5/     #检测磁盘配额,并生成配额文件
# c 创建配额文件
# u 扫描磁盘空间,计算每个用户所占用的目录和文件数目
# g 扫描磁盘空间,计算每个群组所占用的目录和文件数目
# v 显示指令执行过程

# ll /sdb5/
总用量 32
-rw------- 1 root root  6144 9月  11 22:10 aquota.group
-rw------- 1 root root  6144 9月  11 22:10 aquota.user
drwx------ 2 root root 16384 9月  11 22:05 lost+found


用户和组账号的磁盘配额设置
# useradd mk
# edquota -g mk
Disk quotas for group mk (gid 500):
Filesystem blocks soft hard    inodes soft hard
/dev/sdb5   0    50    80      0     0    0
#配额的作用范围;已经使用的磁盘容量;磁盘容量的软限制数值;磁盘容量的硬限制数值;用户拥有的文件数量;文件数量的软限制;文件数量的硬限制
# g 设置群组的配额

# quotaon -ugv /tmp/sdb5/ #激活配额设置 /dev/sdb5 [/sdb5]: group quotas turned on /dev/sdb5 [/sdb5]: user quotas turned on # u 开启用户配额 # g 开启群组配额 验证磁盘配额 # mkdir /sdb5/test # chmod 777 / sdb5/test/ $ dd if=/dev/zero of=mk.txt bs=1K count=70 #大于 50K 报警 sdb3: warning, group block quota exceeded. 70+0 records in 70+0 records out 71680 bytes (72 kB) copied, 0.00388255 s, 18.5 MB/s $ rm -rf mk.txt $ dd if=/dev/zero of=mk.txt bs=1K count=90 #大于 80 报错 sdb5: write failed, group block limit reached. dd: writing `mk.txt': Disk quota exceeded $ ll -h total 80K -rw-rw-r-- 1 mk mk 80K Feb 2 22:30 mk.txt

 

 

 

posted @ 2017-05-27 16:38  黑色月牙  阅读(795)  评论(0编辑  收藏  举报