Linux菜鸟成长日记 (Linux中设备管理(二):磁盘配额,LVM:逻辑卷管理器)

Linux中设备管理(二):磁盘配额,LVM:逻辑卷管理器

1. 磁盘配额

linux系统中,由于是多用户、多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量占掉了硬盘空间的话,会影响到其他用户的使用权限。因此系统管理员用该适当限制硬盘的空间给用户,以妥善分配系统资源。

下面就来介绍如何限制系统中的用户对磁盘的使用

1.1 首先建立一个新的磁盘分区,作为系统用户的公用磁盘

 [root@station ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
........(中间省略)........
Command (m for help): p

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
........(中间省略)........
Disk label type: dos
Disk identifier: 0x000a6cc4

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     2099199     1048576   83  Linux

1.2 对新建分区的文件系统进行格式化(可以选择常规的xfsext文件系统类型)

 [root@localhost ~]# mkfs.xfs /dev/vdb1

这里写图片描述

 [root@localhost ~]# mount /dev/vdb1 /mnt 
 [root@localhost ~]# chmod 777 /mnt       #修改权限作为公共磁盘

这里写图片描述

 [root@localhost ~]# mkfs.ext3 /dev/vdb2

这里写图片描述

 [root@localhost ~]# mount /dev/vdb2 /mnt
 [root@localhost ~]# chmod 777 /mnt       #修改权限作为公共磁盘

这里写图片描述

1.3.进行配额激活

文件系统为xfs的无需进行手动激活,在执行挂载命令后自动激活;
文件系统为ext的,需要执行以下命令进行手动激活。
  • quotacheck -u /dev/vdb2 #quotacheck:扫描文件系统并新建quota的配置文件
    #-u:针对用户扫描文件与目录使用情况
  • quotaon -u /dev/vdb2 #启动quota服务;
    #-u:针对用户启动quota
  • xfs文件系统
 [root@localhost ~]# mount -o usrquota /dev/vdb1 /mnt 
                    -o usrquota #以此方式进行挂载才能被quota识别
 [root@localhost ~]# edquota -u student 
                    edquota #用来编辑用户或用户组的限额命令

 Disk quotas for user student (uid 1000):
  Filesystem              blocks       soft       hard     inodes     soft     hard
  /dev/vdb1                    0          0       200M          0        0        0
~  
              blocks  #在磁盘上已经用的大小
              soft    #软件限额 磁盘容量的软件容限,单位为KB
              hard    #硬件限额 用了多少后就不能再应使用,单位为KB 修改此处
              inodes  #文件已有的个数
              soft    #建立多少个文件后会受到警告
              hard    #建立多少文件后就不会建立了

执行如下:
这里写图片描述
这里写图片描述

  • ext3文件系统
 [root@localhost ~]# mount -o usrquota /dev/vdb2 /mnt
 [root@localhost ~]# quotacheck /dev/vdb2    #扫描文件系统
 [root@localhost ~]# quotaon /dev/vdb2       #启动quota服务
 [root@localhost ~]# edquota -u linux        #用来编辑用户linux的限额命令
Disk quotas for user linux (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/vdb2                         0          0       200M          0        0        0
~                                                                          

执行如下:
这里写图片描述
这里写图片描述

以上就完成了用户对磁盘的配额,可通过dd指令进行验证配额是否成功

在设定了设定配额用户下进行(切换到已配额用户下)

[root@localhost ~]# su - linux     #切换到已配额用户
[linux@localhost ~]$ dd if=/dev/zero of=/mnt/linuxfile bs=1M count=201
                  #从无限零设备中截取201块,每块大小为1M,作为/mnt/linuxfile
                  dd:截取命令
                  if:inputfile
                  of:outfile
                  bs:截取快的大小
                  count:块
报错: vdb2: write failed, user block limit reached.  #写入失败,用户块限制到达。
dd: error writing ‘/mnt/linuxfile’: Disk quota exceeded #错误写入/mnt/linuxfile:超过了磁盘配额
200+0 records in
199+0 records out
209506304 bytes (210 MB) copied, 0.170388 s, 1.2 GB/s

这样就可以验证上面对linux用户进行的磁盘可用大小为200M的限额命令
执行如下:
这里写图片描述

想要开机自动激活配额存在
  • 编辑:vim /etc/fstab
    内容:/dev/vdb1 /mnt xfs(ext3) defaults,usrquota 0 0

2. LVM(Logical Volume Manager)逻辑卷管理器

我们在进行服务器或者主机建立时,规划给服务器或者主机的用户家目录(/home)一定的内存,但是经过一段时间的运行,用户越来越多,服务器或/home目录内存不够用,想解决这个问题,将服务器或者/home下的内容全部进行复制然后移动到另一个更大的服务器或目录中,完成扩容,这样太过于麻烦,耗费时间,者和死后就需要LVM了。
LVM可以整合多个物理分区在一起,让这些分区看起来就像是一个磁盘一样,而且还可以在将来其他物理分区或将其从这个LVM管理的磁盘中删除,十分方便。
  • LVM的作法是将几个实体的分区(或磁盘)通过软件组合成为一块看起来是独立的大磁盘(VG) ,然后将这块大磁盘再经过分区成为可使用分区(LV),最终就能够挂载使用了。
下面介绍一下pv,vg,pe,lv这几个重要概念
  • PV:( Physical Volume )物理卷
    通过 fidsk 将实际的分区(或磁盘)的系统识别码(system ID)调整为为 8e (LVM 的识别
    码),然后再经过 pvcreate 的指令将他转成 LVM 最底层的物理卷轴(PV),之后才能够将
    这些 PV 加以利用。
  • VG:( Volume Group )物理卷组
    所谓的 LVM 大磁盘就是将许多 PV 整合成 VG 。所以 VG 就是 LVM 组合起来的大磁盘。
  • PE:(Physical Extent)实体范围区块
    LVM 默认使用 4MB 的 PE 区块,他是整个 LVM 最小的储存区块,也就是说,其实我们的文件数据都是借由写入 PE 来处理的。简单的说,这个 PE 类似于文件系统里面的 block 大小。
  • LV:(Logical Volume)逻辑卷
    最终的VG 会被切成 LV, LV 就是最后可以被格式化使用的类似分区的东西。LV不可以随意指定大小。 PE 是整个 LVM 的最小储存单位,那么 LV 的大小就与在此 LV 内的 PE 总数有关。

下面就来进行LVM的建立删除,扩大与缩减
注:可通过监控命令:watch -n 1 ‘pvs;vgs;lvs;df -h’来进行观测对于LVM的建立

2.1 新建分区修改ID 8e

[root@localhost ~]# fdisk /dev/vdb

Command (m for help): n
......(省略创建过程)......
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     2099199     1048576   8e  Linux LVM
/dev/vdb2         2099200     4196351     1048576   8e  Linux LVM
/dev/vdb3         4196352     6293503     1048576   8e  Linux LVM

2.2 建立LVM

 [root@localhost ~]# pvcreate /dev/vdb1   #初始化一个磁盘或分区供LVM使用
 [root@localhost ~]# vgcreate vg0 /dev/vdb1  #创建一个名为vg0的卷组
 [root@localhost ~]# lvcreate -L 300M -n lv0 vg0  #在现有卷组中创建逻辑卷
                   -L:表示创建的大小
                   -n:逻辑卷名称

2.3 格式化分区

注:xfs 文件系统只支持拉伸不支持缩减,而ext类型则可以进行拉神与缩减
对逻辑卷进行分区格式化

 [root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 

这里写图片描述

2.4 进行挂载使用

 [root@localhost ~]# mount /dev/vg0/lv0 /mnt

这里写图片描述

2.5 进行扩展LVM

 [root@localhost ~]# pvcreate /dev/vdb2      #添加物理卷
 [root@localhost ~]# vgextend vg0 /dev/vdb2  #将物理卷添加到已有卷组中
 [root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0  #扩展逻辑卷的大小
                     注意:-L是将原有物理卷扩展到1800M而不是加上1800M

执行如下:
这里写图片描述
直接扩展后lv的实际可用内存还是原来的大小,需要将文件系统也进行扩展

这里写图片描述

 [root@localhost ~]# xfs_growfs /dev/vg0/lv0       #扩展xfs文件系统
 [root@localhost ~]# resize2fs /dev/vg0/lv0 1800M  #扩展ext文件系统

这里写图片描述

2.6 缩减LVM大小(ext文件系统)

 [root@localhost ~]# umount /mntt  #先保证LVM空闲
 [root@localhost ~]# e2fsck -f /dev/vg0/lv0 #检查Linux ext文件系统
 [root@localhost ~]# resize2fs /dev/vg0/lv0 1000M  #调整文件系统
 [root@localhost ~]# mount /dev/vg0/lv0 /mnt  #挂载设备,查看效果
 [root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0   #减小逻辑卷的大小

执行如下:
卸载并检查文件系统
这里写图片描述
调整文件系统大小并挂载查看效果
这里写图片描述
减小逻辑卷的大小
这里写图片描述

  • 缩减vg,移除pv
当需要移除的pv设备未闲置时执行:
 [root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2  #移动物理区段,将需要移除的物理卷中
                                                 #的内容转移到另一个闲置物理卷中
 [root@localhost ~]# vgreduce vg0 /dev/vdb1      #减少一个卷组
 [root@localhost ~]# pvremove /dev/vdb1          #删除一个物理卷

2.7 LVM快照

所谓快照就是将当时的系统信息记录下来,就好像照相记录一样,未来若有任何数据更动了,则原始数据会被搬移到快照区,没有被更动的区域则由快照区与文件系统共享。

将l原来的lv0进行挂载然后创建文件,以此点建立快照

 [root@localhost ~]# touch /mnt/test{1..5}   #创建文件
 [root@localhost ~]# ls /mnt/      
 [root@localhost ~]# lvcreate -L 50M -n lv0snapshot -s /dev/vg0/lv0  #建立LVM快照
 [root@localhost ~]# umount /mnt             #卸载原LVM
 [root@localhost ~]# mount /dev/vg0/lv0snapshot /mnt    #挂载快照
 [root@localhost ~]# ls /mnt                 #查看原LVM内容是否存在

执行如下:
建立文件,并建立快照
这里写图片描述
挂载快照,查看原文件是否被被保存
这里写图片描述

若是不小心对进行了错误操作,可通过重新创建快照来恢复到进行快照的点。
如:不小心删除了上面建立的文件test{1..5}就可以通过如下操作进行恢复

 [root@localhost ~]# umount /mnt       #卸载快照
 [root@localhost ~]# lvremove /dev/vg0/lv0snapshot   #删除快照
 [root@localhost ~]# lvremove /dev/vg0/lv0snapshot   #重新创建快照
 [root@localhost ~]# mount /dev/vg0/lv0 /mnt  #挂载
 [root@localhost ~]# ls /mnt #检查文件是否存在

执行如下:
删除文件,并查看是否删除,后卸载快照
这里写图片描述
删除快照,重新建立快照,挂载后,查看文件是否存在
这里写图片描述

2.8 删除LVM

可以通过以下指令来删除不需要的LVM

 [root@localhost ~]# umount /mnt  #卸载LVM
 [root@localhost ~]# lvremove /dev/vg0/lv0snapshot  #删除LVM快照
 [root@localhost ~]# lvremove /dev/vg0/lv0    #删除LVM
 [root@localhost ~]# vgremove vg0   #删除一个卷组
 [root@localhost ~]# pvremove /dev/vdb2  #删除一个物理卷

执行如下:
卸载LVM后,删除快照,删除LVM,删除VG卷组,删除PV
这里写图片描述

猜你喜欢

转载自blog.csdn.net/buster_zr/article/details/80227747