感谢支持
我们一直在努力

Linux磁盘和文件系统管理

对于磁盘和文件系统来说还是比较重要的,因为所有的数据都存在于磁盘中,对于磁盘的正确分区以及文件系统的管理下面是我自己的笔记总结,还望大家多多支持。

一. 磁盘及分区管理工具

  • 硬盘表示方法
例如:/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

赞(0) 打赏
转载请注明出处:服务器评测 » Linux磁盘和文件系统管理
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏