Linux加强篇-存储结构与管理硬盘(三)

目录

 ⛳️推荐

磁盘容量配额

VDO虚拟数据优化

软硬方式链接


 ⛳️推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

磁盘容量配额

使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。可以使用quota技术进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota技术还有软限制和硬限制的功能。

软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。

硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。

手动编辑配置文件并重启一次系统,让系统中的启动目录(/boot)能够支持quota磁盘配额技术

[root@localhost ~]# vim /etc/fstab  

UUID=147464a6-27ee-477f-8dfd-0c157a0aabc7 /                       xfs     defaults        0 0

UUID=b7107860-5e6f-4ff5-abb3-880ab7e6caca /boot                   xfs     defaults,uquota        0 0

UUID=1396ecbf-4d87-4e65-898b-28048721d05e none                    swap    defaults        0 0

/dev/cdrom /media/cdrom iso9660 defaults 0 0

/dev/nvme0n2p1 /newfile xfs defaults 0 0

/dev/nvme0n2p2 swap swap defaults 0 0

[root@localhost ~]# reboot

在重启系统后使用mount命令查看,即可发现/boot目录已经支持quota磁盘配额技术了:

[root@localhost ~]# mount | grep boot

/dev/nvme0n1p1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,usrquota)

创建一个用于检查quota磁盘容量配额效果的用户tom,并针对/boot目录增加其他人的写权限,保证用户能够正常写入数据:

[root@localhost ~]# useradd tom

[root@localhost ~]# chmod -R o+w /boot

xfs_quota命令用于管理设备的磁盘容量配额,语法格式为“xfs_quota [参数] 配额 文件系统”

针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令。其中,-c参数用于以参数的形式设置要执行的命令;-x参数是专家模式,让运维人员能够对quota服务进行更多复杂的配置。接下来使用xfs_quota命令来设置用户tom对/boot目录的quota磁盘容量配额。具体的限额控制包括:硬盘使用量的软限制和硬限制分别为3MB和6MB;创建文件数量的软限制和硬限制分别为3个和6个

[root@localhost ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot

[root@localhost ~]# xfs_quota -x -c report /boot

User quota on /boot (/dev/nvme0n1p1)

                              Blocks                      

User ID          Used       Soft       Hard    Warn/Grace      

---------- --------------------------------------------------  

root           179368          0          0     00 [--------]

tom                 0       3072       6144     00 [--------]

使用的参数分为两组,分别是isoft/ihard与bsoft/bhard,isoft和ihard就是通过限制系统最大使用的inode个数来限制了文件数量。bsoft和bhard则是代表文件所占用的block大小,也就是文件占用的最大容量的总统计。

soft是软限制,超过该限制后也只是将操作记录写到日志中,不对用户行为进行限制。而hard是硬限制,一旦超过系统就会马上禁止,用户再也不能创建或新占任何的硬盘容量。

尝试切换到一个普通用户,然后分别尝试创建一个体积为5MB和8MB的文件,但是我实验起来并没有发现有限制,之前的命令也没什么问题,可能是系统问题

edquota命令用于管理系统的磁盘配额,语法格式为“edquota [参数] 用户名”

用户设置了quota磁盘容量配额限制后,可以使用edquota命令按需修改限额的数值。-u参数表示要针对哪个用户进行设置;-g参数表示要针对哪个用户组进行设置

 edquota命令中可用参数及作用

参数 作用
-u 对某个用户进行设置
-g 对某个用户组进行设置
-p 复制原有的规则到新的用户/组
-t 限制宽限期限

edquota命令会调用Vi或Vim编辑器来让root管理员修改要限制的具体细节,试一下改小能不能行

[root@localhost ~]# edquota -u tom  

Disk quotas for user tom (uid 8889):

 Filesystem                   blocks       soft       hard     inodes     soft     hard

 /dev/nvme0n1p1                 4096       3072       3072          1        3        6

终于生效了,可能是我写的hard太大了

[tom@localhost boot]$ dd if=/dev/zero of=/boot/tom bs=8M count=2

dd: error writing '/boot/tom': Disk quota exceeded

1+0 records in

0+0 records out

0 bytes copied, 0.00387253 s, 0.0 kB/s

[tom@localhost boot]$ dd if=/dev/zero of=/boot/tom bs=8M count=1

dd: error writing '/boot/tom': Disk quota exceeded

1+0 records in

0+0 records out

0 bytes copied, 0.00278153 s, 0.0 kB/s

VDO虚拟数据优化

VDO(Virtual Data Optimize,虚拟数据优化)是一种通过压缩或删除存储设备上的数据来优化存储空间的技术,VDO针对各种类型文件的压缩效果

对各种类型文件压缩效果汇总表

文件名 描述 类型 原始大小(KB) 实际占用空间(KB)
dickens 狄更斯文集 英文原文 9953 9948
mozilla Mozilla的1.0可执行文件 执行程序 50020 33228
mr 医用resonanse图像 图片 9736 9272
nci 结构化的化学数据库 数据库 32767 10168
ooffice Open Office.org 1.01 DLL 可执行程序 6008 5640
osdb 基准测试用的MySQL格式示例数据库 数据库 9849 9824
reymont 瓦迪斯瓦夫·雷蒙特的书 PDF 6471 6312
samba samba源代码 src源码 21100 11768
sao 星空数据 天文格式的bin文件 7081 7036
webster 辞海 HTML 40487 40144
xml XML文件 HTML 5220 2180
x-ray 透视医学图片 医院数据 8275 8260

VDO技术支持本地存储和远程存储,可以作为本地文件系统、iSCSI或Ceph存储下的附加存储层使用。

司服务器上已有的dm-crypt之类的技术是可以与VDO技术兼容的,但记得要先对卷进行加密再使用VDO。因为加密会使重复的数据变得有所不同,因此删重操作无法实现。

image

VDO技术不可叠加使用,1TB的物理存储提升成10TB的逻辑存储没问题,但是再用10TB翻成100TB就不行

把虚拟机关闭,添加一块容量为20GB的新硬盘进来,开机后就能看到这块名称为/dev/nvme0n3的新硬盘了:

[root@localhost ~]# ll /dev/nvme0n3

brw-rw----. 1 root disk 259, 7 Nov 21 16:45 /dev/nvme0n3

RHEL/CentOS 8系统中默认已经启用了VDO技术

[root@localhost ~]# dnf install kmod-kvdo vdo

Last metadata expiration check: 2:19:07 ago on Tue 21 Nov 2023 02:29:37 PM CST.

Package kmod-kvdo-6.2.5.72-81.el8.x86_64 is already installed.

Package vdo-6.2.5.74-14.el8.x86_64 is already installed.

Dependencies resolved.

Nothing to do.

Complete!

创建一个全新的VDO卷,新添加进来的物理设备就是使用vdo命令来管理的,其中name参数代表新的设备卷的名称;device参数代表由哪块磁盘进行制作;vdoLogicalSize参数代表制作后的设备大小,20GB硬盘将翻成200GB的逻辑存储:

[root@localhost ~]# vdo create --name=storage --device=/dev/nvme0n3 --vdoLogicalSize=200G

Creating VDO storage

     The VDO volume can address 16 GB in 8 data slabs, each 2 GB.

     It can grow to address at most 16 TB of physical storage in 8192 slabs.

     If a larger maximum size might be needed, use bigger slabs.

Starting VDO storage

Starting compression on VDO storage

VDO instance 0 volume is ready at /dev/mapper/storage

在创建成功后,使用status参数查看新建卷的概述信息:

[root@localhost ~]# vdo status --name=storage

VDO status:

 Date: '2023-11-21 16:51:21+08:00'

 Node: localhost.localdomain

Kernel module:

 Loaded: true

 Name: kvdo

 Version information:

   kvdo version: 6.2.5.72

Configuration:

 File: /etc/vdoconf.yml

 Last modified: '2023-11-21 16:50:47'

输出信息中包含了VDO卷创建的时间、主机名、版本、是否压缩(Compression)及是否删重(Deduplication)等

对新建卷进行格式化操作并挂载使用,新建的VDO卷设备会被乖乖地存放在/dev/mapper目录下,并以设备名称命名,对它操作就行。另外,挂载前可以用udevadm settle命令对设备进行一次刷新操作,避免刚才的配置没有生效:

[root@localhost mapper]# mkfs.xfs /dev/mapper/storage

meta-data=/dev/mapper/storage    isize=512    agcount=4, agsize=13107200 blks

        =                       sectsz=4096  attr=2, projid32bit=1

        =                       crc=1        finobt=1, sparse=1, rmapbt=0

        =                       reflink=1

data     =                       bsize=4096   blocks=52428800, imaxpct=25

        =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0, ftype=1

log      =internal log           bsize=4096   blocks=25600, version=2

        =                       sectsz=4096  sunit=1 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

Discarding blocks...Done.

[root@localhost mapper]# udevadm settle

[root@localhost mapper]# mkdir /storage

[root@localhost mapper]# mount /dev/mapper/storage /storage

查看设备的实际使用情况,使用vdostats命令即可。human-readable参数的作用是将存储容量自动进位,以人们更易读的方式输出(比如,显示20G而不是20971520K):

[root@localhost mapper]# vdostats --human-readable

Device                    Size      Used Available Use% Space saving%

/dev/mapper/storage      20.0G      4.0G     16.0G  20%           99%

显示的Size是实际物理存储的空间大小(即20.0GB是硬盘的大小),如果想看逻辑存储空间,使用df命令进行查看:

[root@localhost mapper]# df -h

Filesystem           Size  Used Avail Use% Mounted on

devtmpfs             878M     0  878M   0% /dev

tmpfs                896M     0  896M   0% /dev/shm

tmpfs                896M  9.4M  886M   2% /run

tmpfs                896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3        18G  7.1G   11G  41% /

/dev/nvme0n1p1       295M  193M  102M  66% /boot

/dev/sr0              11G   11G     0 100% /media/cdrom

/dev/nvme0n2p1       2.0G   78M  2.0G   4% /newfile

tmpfs                179M   12K  179M   1% /run/user/42

tmpfs                179M     0  179M   0% /run/user/0

/dev/mapper/storage  200G 1.5G  199G   1% /storage

复制一个大文件过来,看看占用了多少容量,以及空间节省率(Space saving)是多少:

[root@localhost mapper]# ls -lh /media/cdrom/images/install.img

-r--r--r--. 1 root root 681M Nov 13  2021 /media/cdrom/images/install.img

[root@localhost mapper]# cp /media/cdrom/images/install.img /storage/

[root@localhost mapper]# vdostats --human-readable

Device                    Size      Used Available Use% Space saving%

/dev/mapper/storage      20.0G      4.7G     15.3G  23%           12%

再复制一份相同的文件过来,看看这次占用了多少空间,空间节省率也从12%提升到了55%,用了不到100M:

[root@localhost mapper]# cp /media/cdrom/images/install.img /storage/rhel.img

[root@localhost mapper]# vdostats --human-readable

Device                    Size      Used Available Use% Space saving%

/dev/mapper/storage      20.0G      4.7G     15.3G  23%           53%

VDO设备卷在创建后会一直存在,但需要手动编辑/etc/fstab文件后才能在下一次重启后自动挂载生效

/dev/mapper/storage: UUID="debbe4ed-97e0-410c-bde4-441ac474c3ff" BLOCK_SIZE="4096" TYPE="xfs"

[root@localhost storage]# vim /etc/fstab

UUID=147464a6-27ee-477f-8dfd-0c157a0aabc7 /                       xfs     defaults        0 0

UUID=b7107860-5e6f-4ff5-abb3-880ab7e6caca /boot                   xfs     defaults,uquota        0 0

UUID=1396ecbf-4d87-4e65-898b-28048721d05e none                    swap    defaults        0 0

/dev/cdrom /media/cdrom iso9660 defaults 0 0

/dev/nvme0n2p1 /newfile xfs defaults 0 0

/dev/nvme0n2p2 swap swap defaults 0 0

UUID=debbe4ed-97e0-410c-bde4-441ac474c3ff /storage      xfs        defaults,_netdev   0 0 

相关推荐

  1. Linux加强-用户身份

    2024-04-25 17:04:07       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 17:04:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 17:04:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 17:04:07       82 阅读
  4. Python语言-面向对象

    2024-04-25 17:04:07       91 阅读

热门阅读

  1. B树(B-Tree)

    2024-04-25 17:04:07       23 阅读
  2. Android apk打包有so,运行没有so

    2024-04-25 17:04:07       24 阅读
  3. SQL BETWEEN AND 语句

    2024-04-25 17:04:07       31 阅读
  4. Netty在游戏开发中的用途

    2024-04-25 17:04:07       27 阅读
  5. 【WEEK9】学习目标及总结【Spring Boot】【中文版】

    2024-04-25 17:04:07       34 阅读
  6. 后端面试---分布式&&微服务

    2024-04-25 17:04:07       31 阅读
  7. 【CCF推荐-C类】计算机学术会议截稿信息2条

    2024-04-25 17:04:07       37 阅读
  8. Android Binder——数据传输限制(二十三)

    2024-04-25 17:04:07       33 阅读
  9. Hive安装与配置实战指南

    2024-04-25 17:04:07       35 阅读
  10. 自動重啟Debian

    2024-04-25 17:04:07       30 阅读