对于磁盘和文件系统来说还是比较重要的,因为所有的数据都存在于磁盘中,对于磁盘的正确分区以及文件系统的管理下面是我自己的笔记总结,还望大家多多支持。
一. 磁盘及分区管理工具
- 硬盘表示方法
例如:/dev/sdb2
/dev是用来存放所有硬件信息的目录
sd代表了SCSI接口的磁盘/USB设备(hd表示IDE接口/SATA接口的磁盘)
b代表了磁盘数,表示第二块磁盘
2表示第几个分区,2为第二个分区. 主分区为1,2,3,4 逻辑分区从5开始编号,5 为第一个逻辑分区
fdisk -l #查看系统磁盘信息
[root@localhost ~]# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000cefb
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 6528 51915776 8e Linux LVM
Disk /dev/mapper/VolGroup-lv_root: 49.0 GB, 48964304896 bytes
255 heads, 63 sectors/track, 5952 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/VolGroup-lv_swap: 4194 MB, 4194304000 bytes
255 heads, 63 sectors/track, 509 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
- 规划硬盘 分区
fdisk 设备名
fdisk /dev/sda2
交互界面下重要的参数:
p 列出硬盘中分区情况
n 新建分区 P 主分区,E 扩展分区,L逻辑分区
d 删除分区
t 改变分区的类型 ext3 ----83 , SWAP------82, fat32-----b, lvm-----8e
l 查看分区类型代号列表
w 保存退出
q 退出不保存
- 重新探测磁盘分区变化:
partprobe 设备名 #parparobe /dev/sda2
partx –a 设备名 #partx -a /dev/sda1
如果没有生成设备文件,最后的方法是重新启动系统。
- 格式化:
mkfs -t 文件系统类型 分区名称
Mkfs –t ext3 /dev/sdb1
Mkfs.ext3 /dev/sdb1
mkswap 格式化交换分区(swap分区)
- 挂载:
A.手动挂载
mount -t 文件系统类型 设备名 挂载点(必须是文件夹)
mount -o loop 挂载iso镜像文件
mount -t iso9660 挂载光盘 可以不写 设备名:/dev/cdrom 或者
/dev/hdc
B.开机自动挂载:编辑/etc/fstab文件
这个文件的6个字段的含义,必需写清楚
第一列为设备号或该设备的卷标 第二列为挂载点
第三列为文件系统 第四列为文件系统参数
第五列为是否可以用demp命令备份。0:不备份,1:备份,2:备份,但比1重要性小。设置了该参数后,Linux中使用dump命令备份系统的时候就可以备份相应设置的挂载点了。
第六列为是否在系统启动的时候,用fsck检验分区。因为有些挂载点是不需要检验的,比如:虚拟内存swap、/proc等。0:不检验,1:要检验,2要检验,但比1晚检验,一般根目录设置为1,其他设置为2就可以了。
mount -a 来检查是否更改正确【如果正确会自动挂载,不正确会报错】
df -hT 查看磁盘使用情况 h易读,T显示对应文件系统的类型
- 启用或停用swap分区
swapon 分区名 启用交换分区
swapoff 分区名 停用交换分区
验证过程,先使用 free 查看系统内存使用情况 然后启用,再查看使用情况或者cat /proc/meminfo
- 补充内容:
在Linux中,挂载NTFS分区,FAT16和FAT32的,只要用mount挂载即可。NTFS需要安装NTFS支持软件。
操作步骤:
Tar zxf tar包 –C /usr/src
Cd /usr/src/ntfs
./configure
Make && make install
ln -s /bin/ntfs-3g /sbin/mount.ntfs #创建符号链接
挂载个已有的ntfs分区,检查分区,挂载即可
Fdisk –l
mount
对于磁盘以及文件系统管理也就写了这么多,以后还会慢慢更新。
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-06/132402p2.htm
对于linux系统的使用者来说如何正确的来进行系统的分区,如何当初对系统评估不准确的话,那么一旦系统分区不够用了,那么不得不备份,删除相关数据,重要的时候被迫还得重新规划分区并装系统来满足需求。今天我们来写一下如何在linux下进行LVM逻辑卷的使用,让我们自由调整分区容量。
一. LVM逻辑卷管理
- 概述
LVM:(逻辑卷管理Logical Volume Manager)就是可以自由调整分区大小 作用:动态调整磁盘容量,从而提高磁盘管理的灵活性
需要注意:/boot分区用于存放引导文件,不能基于LVM创建
图形界面:system-config-lvm
- LVM的管理命令
PV(Physical Volume,物理卷)
整个硬盘,或使用fdisk等工具建立的普通分区
包括许多默认4MB大小的PE(Physical Extent,基本单元)
VG(Volume Group,卷组)
一个或多个物理卷组合而成的整体
LV(Logical Volume,逻辑卷)
从卷组中分割出的一块空间,用于建立文件系统
- LVM应用实例
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
Scan 扫描 | pvscan | vgscan | lvscan |
Create 建立 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | vgextend | lvextend | |
Reduce 减少 | vgreduce | lvreduce |
首先我在系统上添加了两块硬盘 /dev/sdb /dev/dbc来为下面的LVM做准备,你也可以先进行fdisk工具分完区然后再做PV,此处我们直接拿新添加的硬盘来做PV
1.物理卷【PV】的创建、删除.
- 创建物理卷【pvcreate 设备名/设备名2….】
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
[root@localhost ~]# pvscan
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- 49.51g 0
/dev/sdb lvm2 a-- 100.00g 100.00g
/dev/sdc lvm2 a-- 50.00g 50.00g
[root@localhost ~]# pvdisplay
--- Physical volume ---
"/dev/sdb" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID su9PDS-jtXa-SKWH-n4Pf-TM0j-w8SW-swgd6d
"/dev/sdc" is a new physical volume of "50.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 50.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID AASOe8-1yje-2rjn-O33d-0y27-PmIw-YoYCpF
- 删除物理卷【pvremove 设备名/设备名2….】前提是下面没有分配VG
[root@localhost ~]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg_new lvm2 a-- 100.00g 50.00g
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sdb
VG Name vg_new
PV Size 100.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 25599
Free PE 12799
Allocated PE 12800
PV UUID su9PDS-jtXa-SKWH-n4Pf-TM0j-w8SW-swgd6d
2.卷组【VG】创建、扩展、减少、删除、
- 创建卷组【vgcreate 卷组名 物理卷名1 物理卷名2 】
[root@localhost ~]# vgcreate vg_new /dev/sdb /dev/sdc
Volume group "vg_new" successfully created
[root@localhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_new" using metadata type lvm2
Found volume group "VolGroup" using metadata type lvm2
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg_new
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 149.99 GiB
PE Size 4.00 MiB
Total PE 38398
Alloc PE / Size 0 / 0
Free PE / Size 38398 / 149.99 GiB
VG UUID qZmTmm-g2fV-La4E-vzcN-yN9S-giyQ-eWra2G
- 扩展卷组【vgextend 卷组名 物理卷名】
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_new 1 0 0 wz--n- 50.00g 50.00g
[root@localhost ~]# vgextend vg_new /dev/sdb
Volume group "vg_new" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_new 2 0 0 wz--n- 149.99g 149.99g
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg_new
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 149.99 GiB
PE Size 4.00 MiB
Total PE 38398
Alloc PE / Size 0 / 0
Free PE / Size 38398 / 149.99 GiB
VG UUID 31tIMa-ldzd-caOd-0lsl-tZnY-QN47-H6mYO9
- 缩减卷组【vgreduce 卷组名 物理卷】
[root@localhost ~]# vgreduce vg_new /dev/sdb
Removed "/dev/sdb" from volume group "vg_new"
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_new 1 0 0 wz--n- 50.00g 50.00g
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg_new
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 50.00 GiB
PE Size 4.00 MiB
Total PE 12799
Alloc PE / Size 0 / 0
Free PE / Size 12799 / 50.00 GiB
VG UUID 31tIMa-ldzd-caOd-0lsl-tZnY-QN47-H6mYO9
- 删除卷组【vgremove 卷组名 】
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- 49.51g 0
vg_new 1 0 0 wz--n- 50.00g 50.00g
[root@localhost ~]# vgremove vg_new
Volume group "vg_new" successfully removed
3.逻辑卷【LV】创建、扩展、缩减、删除
- 创建逻辑卷【lvcreate -L 大小 -n 逻辑卷名 卷组名 】
[root@localhost ~]# lvcreate -L 50G -n lv_new vg_new
Logical volume "lv_new" created
[root@localhost ~]# lvscan
ACTIVE '/dev/vg_new/lv_new' [50.00 GiB] inherit
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_new/lv_new
LV Name lv_new
VG Name vg_new
LV UUID wxH3Nn-GKXH-UrRX-Xotl-1bVi-GWUC-VQejzZ
LV Write Access read/write
LV Creation host, time localhost, 2016-04-17 13:17:13 -0400
LV Status available
# open 0
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
- 扩展逻辑卷【lvextend -L +大小 /dev/卷组名/逻辑卷名】
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_new vg_new -wi-a---- 50.00g
[root@localhost ~]# lvextend -L +20G /dev/vg_new/lv_new
Extending logical volume lv_new to 70.00 GiB
Logical volume lv_new successfully resized
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_nw/lv_new
LV Name lv_new
VG Name vg_new
LV UUID 1JAHRk-JShy-jsqE-IpOL-Bzbq-VGOS-0HhVtz
LV Write Access read/write
LV Creation host, time localhost, 2016-04-17 13:56:42 -0400
LV Status available
# open 0
LV Size 70.00 GiB
Current LE 17920
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
- 缩减逻辑卷空间【注意:必须按以下几步操作】
1、 先卸载逻辑卷lv_new 【逻辑卷只在挂载目录使用】
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 45G 3.2G 40G 8% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 485M 38M 423M 9% /boot
/dev/mapper/vg_new-lv_new
ext4 69G 180M 66G 1% /date
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# umount /date
2、 然后通过e2fsck命令检测逻辑卷上空余的空间。
[root@localhost ~]# e2fsck -f /dev/vg_new/lv_new
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/vg_new/lv_new: 139/4587520 files (0.0% non-contiguous), 334336/18350080 blocks
3、 使用resize2fs将文件系统减少到50G。
[root@localhost ~]# resize2fs /dev/mapper/vg_new-lv_new 50G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg_new-lv_new to 13107200 (4k) blocks.
The filesystem on /dev/mapper/vg_new-lv_new is now 13107200 blocks long.
4、 再使用lvreduce命令将逻辑卷减少到50G。
[root@localhost ~]# lvreduce -L 50G /dev/vg_new/lv_new
WARNING: Reducing active logical volume to 50.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_new? [y/n]: Y
Reducing logical volume lv_new to 50.00 GiB
Logical volume lv_new successfully resized
[root@localhost ~]# mount /dev/vg_new/lv_new /date
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 45G 3.2G 40G 8% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 485M 38M 423M 9% /boot
/dev/mapper/vg_new-lv_new
ext4 50G 182M 47G 1% /date
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了
- 删除逻辑卷【lvremove /dev/vg_new/lv_new】
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_new vg_new -wi-a---- 50.00g
[root@localhost ~]# lvremove /dev/vg_new/lv_new
Do you really want to remove active logical volume lv_new? [y/n]: Y
Logical volume "lv_new" successfully removed
如果某一个块物理磁盘或者分区故障了,如何将数据转移到其他卷组空间中。
1、通过pvmove命令转移空间数据
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- 49.51g 0
/dev/sdb vg0 lvm2 a-- 100.00g 100.00g
/dev/sdc vg0 lvm2 a-- 50.00g 50.00g
[root@localhost ~]# pvmove /dev/sdb /dev/sdc
2、通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。
[root@localhost ~]# vgreduce lv_new /dev/sdb
3、通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。
[root@localhost ~]# pvremove /dev/sdb
4、手工拆除硬盘或者通过一些工具修复分区。
二.设置磁盘配额
- 实现磁盘限额的条件
1.需要Linux内核支持
2.安装quota软件包
- Linux磁盘限额的特点
作用范围:针对指定的文件系统(分区)
限制对象:用户帐号、组帐号
限制类型:
磁盘容量(默认单位为KB)
文件数量
限制方法:
软限制:一个用户在一定时间范围内(默认为一周,可以使用命令“edquota -t”重新设置,时间单位可以为天、小时、分 钟、秒)超过其限制的额度,在不超出硬限制的范围内可以继续使用空间,系统会发出警告(警告信息设置文件为“/etc/warnquota.conf”),但如果用户达到时间期限仍未释放空间到限制的额度下,系统将不再允许该用户使用更多的空间。
硬限制:一个用户可拥有的磁盘空间或文件的绝对数量,绝对不允许超过这个限制。
- 启用文件系统的配额支持
添加usrquota、grpquota挂载参数
-
检测磁盘配额并创建配额文件
使用quotacheck命令创建配额文件
quotacheck -ugcv 文件系统
quotacheck -augcv
-u、-g:检测用户、组配额
-c:创建配额数据文件
-v:显示执行过程信息
-a:检测所有可用的分区
- 编辑用户和组帐号的配额设置
使用edquota命令编辑配额设置
edquota -u 用户名
edquota -g 组名
- 启用、关闭文件系统的配额功能
使用quotaon、quotaoff命令
- 验证磁盘配额功能
必须切换到设置配额的分区(挂载目录)
创建指定数量的文件:使用touch命令,或cp命令
创建指定容量的文件:使用dd命令,或cp命令
- 查看配额使用情况
侧重用户、组帐号角度:使用quota命令
quota -u 用户名
quota -g 组名
侧重文件系统角度:使用repquota
1. 练习步骤:
- 创建用户hunter,并设置为此用户进行磁盘配额
[root@localhost ~]# useradd hunter
[root@localhost ~]# passwd hunter
Changing password for user hunter.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
- 创建一个逻辑分区,对此分区设置配额。
[root@localhost ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 4
First cylinder (1-13054, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054):
Using default value 13054
Command (m for help):
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb8d88355
Device Boot Start End Blocks Id System
/dev/sdb4 1 13054 104856223+ 5 Extended
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (1-13054, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054):
Using default value 13054
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb8d88355
Device Boot Start End Blocks Id System
/dev/sdb4 1 13054 104856223+ 5 Extended
/dev/sdb5 1 13054 104856192 83 Linux
Command (m for help): w
[root@localhost ~]# ls /dev/sdb*
/dev/sdb /dev/sdb4 /dev/sdb5
[root@localhost ~]# partx -a /dev/sdb
sdb sdb4 sdb5
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5
[root@localhost ~]# ls /dev/sdb*
/dev/sdb /dev/sdb4 /dev/sdb5
- 创建挂载点,并格式化分区和文件系统
[root@localhost ~]# mkdir /quota
[root@localhost ~]# mkfs.ext4 /dev/sdb5
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214048 blocks
1310702 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
修改配置文件,设置挂载位置永久生效。
[root@localhost date]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 45G 3.2G 40G 8% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 485M 38M 423M 9% /boot
/dev/sdb5 ext4 99G 188M 94G 1% /quota
[root@localhost date]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jun 15 08:16:31 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=1773339b-7194-409d-872d-6a850058e748 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
[root@localhost date]# mount -a
[root@localhost date]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 49G 3.5G 43G 8% /
tmpfs tmpfs 515M 0 515M 0% /dev/shm
/dev/sda1 ext4 508M 39M 443M 9% /boot
/dev/sdb5 ext4 106G 197M 101G 1% /quota
- 使用quotacheck命令生成配置磁盘配置的数据库文件,如果出现以下权限不够的情况,通过setenforce 0临时关掉selinux就可以了,quotacheck执行成功可以看到/quota/下面多了两个文件。然后通过quotaon /quota/启动对应文件系统上的磁盘配额功能。
[root@localhost date]# quotacheck -cug /quota
quotacheck: Cannot create new quotafile /quota/aquota.user.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
quotacheck: Cannot create new quotafile /quota/aquota.group.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
[root@localhost date]# setenforce 0 ---> 将selinux进行关闭
[root@localhost date]# quotacheck -cug /quota
[root@localhost date]# ls -ltr
total 0
[root@localhost date]# ls -ltr /quota
total 32
drwx------. 2 root root 16384 Apr 17 16:39 lost+found
-rw-------. 1 root root 6144 Apr 17 18:46 aquota.user
-rw-------. 1 root root 6144 Apr 17 18:46 aquota.group
- 通过edquota -u hunter配置用户hunter对这个磁盘分区的使用配额。还可以通过edquota -g groupname 对groupname这个组设定配额
[root@localhost date]# edquota -u hunter
Disk quotas for user hunter (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb5 2 10240 20480 2 5 10
Filesystem 文件系统
blocks 已经使用的块数(块的单位为1K)
soft 块数软限制,0表示禁用
hard 块数硬限制,0表示禁用
inodes 已经创建的文件个数,如果后面有*表示已经超出软限制
soft 创建的文件个数的软限制,0表示禁用
hard 创建的文件个数的硬限制,0表示禁用
edquota -p user1 user2 把user1用户的设定复制给user2用户
这里对hunter这个用对该分区磁盘的容量软限制为10M,硬限制为20M(即使该分区有50M的空间),对文件个数的软限制为5个,硬限制为10个。
下面进行测试,测试之前要给hunter这个用户对/quota目录写权限。
进入实战测试,看刚才我给hunter用户做的磁盘限额是否生效
[root@localhost date]# su - hunter #切换到hunter用户
[hunter@localhost ~]$ cd /quota/
[hunter@localhost quota]$ touch user{1..5} #创建5个空文件
[hunter@localhost quota]$ ls -ltr
total 32
drwx------. 2 root root 16384 Apr 17 16:39 lost+found
-rw-------. 1 root root 7168 Apr 17 19:59 aquota.user
-rw-rw-r--. 1 hunter hunter 0 Apr 17 20:06 user5
-rw-rw-r--. 1 hunter hunter 0 Apr 17 20:06 user4
-rw-rw-r--. 1 hunter hunter 0 Apr 17 20:06 user3
-rw-rw-r--. 1 hunter hunter 0 Apr 17 20:06 user2
-rw-rw-r--. 1 hunter hunter 0 Apr 17 20:06 user1
-rw-------. 1 root root 7168 Apr 17 20:06 aquota.group
[hunter@localhost quota]$ touch user6 #此处触发了软限制
sdb5: warning, user file quota exceeded.
[hunter@localhost quota]$ ls
aquota.group aquota.user lost+found use6 user1 user2 user3 user4 user5
[hunter@localhost quota]$ touch user{7..15} #此处真正到了硬限制
sdb5: write failed, user file limit reached.
touch: cannot touch `user11': Disk quota exceeded
touch: cannot touch `user12': Disk quota exceeded
touch: cannot touch `user13': Disk quota exceeded
touch: cannot touch `user14': Disk quota exceeded
touch: cannot touch `user15': Disk quota exceeded
[hunter@localhost quota]$ rm -rf user* #删除之后我们再来试验一下容量的限制
[hunter@localhost quota]$ ls -ltr
total 32
drwx------. 2 root root 16384 Apr 17 16:39 lost+found
-rw-------. 1 root root 7168 Apr 17 19:59 aquota.user
-rw-------. 1 root root 7168 Apr 17 20:06 aquota.group
[hunter@localhost quota]$ dd if=/dev/zero of=text.txt bs=1M count=11
sdb5: warning, user block quota exceeded. #此处已经触发了容量10M的软限制,不过还能进行写入
11+0 records in
11+0 records out
11534336 bytes (12 MB) copied, 0.373587 s, 30.9 MB/s
hunter@localhost quota]$ dd if=/dev/zero of=text.txt bs=1M count=21
sdb5: warning, user block quota exceeded.#此处已经触发了20M的硬限制,现已经写不进去了,看来做的对用户的磁盘限额没有问题。
sdb5: write failed, user block limit reached.
dd: writing `text.txt': Disk quota exceeded
21+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.351462 s, 59.7 MB/s
- 切换root用户使用repquota -a来查看当前各磁盘配额的使用情况。从下图可以看出hunter用户已经达到了磁盘使用的最大容量限制
[root@localhost date]# repquota -a
*** Report for user quotas on device /dev/sdb5
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
hunter +- 11264 10240 20480 6days 1 5 10
需要注意的是,当用户触发软限制时,grace time就会倒计时,在这个时间(默认是7天)没有耗尽之前,若用户还不清理磁盘使之符合软限制的要求,则软限制就会变成硬限制,这个时间叫宽限期。可以通过edquota -t设置这个时间,分别设置容量和文件数量的宽限期。
[root@localhost date]# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sdb5 7days 7days
对于LVM逻辑卷和磁盘配额还是比较重要的,请各位大神多多指教!!!
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132402.htm