一、磁盘阵列RAID

1.1 概述

  • RAID:(Redundant Array of Independent Disk )独立冗余磁盘阵列
  • RAID最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。
  • RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。
  • RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,能够确保数据安全性,易于管理,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。

1.2 常见RAID级别

1.2.1 RAID0

  • 至少需要两块磁盘
  • 数据条带化分布到磁盘(如果说需要存储的数据是12345678,那么可能是1357存储在disk1上面,2468存储在disk2上面)
  • 高的读写性能,100%高存储空间利用率
  • 没有数据冗余性,一块磁盘故障,数据将无法恢复
  • 应用于:对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储

1.2.2 RAID1

  • 至少需要两块磁盘
  • 数据镜像备份写到磁盘上(工作盘和镜像盘)
  • 可靠性高,磁盘利用率为50%
  • 一块磁盘故障,不会影响数据的读写
  • 读性能可以,但写性能不佳
  • 应用于:对数据安全可靠要求较高的场景,比如邮件系统、交易系统等。

1.2.3 RAID5

  • 至少需要3块磁盘
  • 数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
  • 以奇偶校验(分散)做数据冗余
  • 一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
  • 是目前综合性能最佳的数据保护解决方案,兼顾了存储性能、数据安全和存储成本等各方面因素
  • 适用于大部分的应用场景

1.2.4 RAID6

  • 至少需要4块磁盘
  • 数据条带化存储在磁盘,读取性能好,容错能力强
  • 采用双重校验方式保证数据的安全性
  • 如果2块磁盘同时故障,可以通过两个校验数据来重建两个磁盘的数据
  • 成本要比其他等级高,并且更复杂
  • 一般用于对数据安全性要求非常高的场合

1.2.5 RAID10

  • RAID10raid1+raid0的组合
  • 至少需要4块磁盘
  • 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
  • 磁盘利用率为50%,成本较高

1.2.6 RAID01

  • RAID10raid0+raid1的组合
  • 至少需要4块磁盘
  • 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
  • 磁盘利用率为50%,成本较高

1.2.7 总结

类型 读性能 写性能 可靠性 磁盘利用率 成本
RAID0 最好 最好 最低 100% 较低
RAID1 正常 两份数据 50%
RAID5 近似RAID0 多了校验 介于RAID0RAID1之间 (n-1)/n 介于RAID0RAID1之间
RAID6 近似RAID0 多了双重校验 大于RAID5 (n-2)/n 大于RAID1
RAID10 等于RAID0 等于RAID1 50% 最高
RAID01 等于RAID0 等于RAID1 50% 最高

1.3 软硬RAID

1.3.1 软RAID

  • RAID运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。

  • RAID有以下特点:

    • 占用内存空间

    • 占用CPU资源

    • 如果程序或者操作系统故障就无法运行

    • 现在企业很少用软RAID

1.3.2 硬RAID

  • 通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID
  • RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。
  • 不同的RAID卡支持的RAID功能不同。支持RAlD0、RAID1、RAID5、RAID10不等。

1.4 组件RAID阵列

1.4.1 环境准备

  • 添加一块磁盘(或者直接添加多块磁盘,不分区,直接使用)
  • 将一个大容量磁盘(20G)分区,形成多个小分区
[root@server1 ~]# fdisk /dev/sdc
[root@server1 ~]# partprobe /dev/sdc
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
└─sdb1            8:17   0    2G  0 part
sdc               8:32   0   20G  0 disk
├─sdc1            8:33   0    2G  0 part
├─sdc2            8:34   0    2G  0 part
├─sdc3            8:35   0    2G  0 part
├─sdc4            8:36   0    1K  0 part
├─sdc5            8:37   0    2G  0 part
├─sdc6            8:38   0    2G  0 part
├─sdc7            8:39   0    2G  0 part
├─sdc8            8:40   0    2G  0 part
├─sdc9            8:41   0    2G  0 part
├─sdc10           8:42   0    2G  0 part
└─sdc11           8:43   0    2G  0 part
sr0              11:0    1  973M  0 rom
  • 安装mdadm工具
[root@server1 ~]# yum install -y mdadm
参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列
-x 指定热备盘数量

1.4.2 组建RAID0

# 创建raid0
[root@server1 ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sdc1 /dev/sdc2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@server1 ~]# mdadm -D /dev/md0
/dev/md0:Version : 1.2Creation Time : Thu Sep  2 23:25:16 2021Raid Level : raid0Array Size : 4188160 (3.99 GiB 4.29 GB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistentUpdate Time : Thu Sep  2 23:25:16 2021State : clean Active Devices : 2Working Devices : 2Failed Devices : 0Spare Devices : 0Chunk Size : 512KConsistency Policy : noneName : server1:0  (local to host server1)UUID : 2e5a48fa:87654810:3460dfd6:1d4951d5Events : 0Number   Major   Minor   RaidDevice State0       8       33        0      active sync   /dev/sdc11       8       34        1      active sync   /dev/sdc2# 格式化
[root@server1 ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0               isize=512    agcount=8, agsize=130944 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1047040, imaxpct=25=                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0# 挂载
[root@server1 ~]# mkdir /mnt/mnt_md0
[root@server1 ~]# mount /dev/md0 /mnt/mnt_md0/# 测试
#复制终端,用于监测
[root@server1 ~]# yum install -y sysstat
[root@server1 ~]# iostat -m -d /dev/sdc[12] 3
[root@server1 ~]# dd if=/dev/zero of=/mnt/mnt_md0/bigfile bs=1M count=1024Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdc1            156.00         0.00        77.84          0        233
sdc2            155.67         0.00        77.83          0        233Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdc1            140.33         0.00        70.17          0        210
sdc2            140.33         0.00        70.17          0        210Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdc1             45.33         0.00        22.67          0         68
sdc2             45.33         0.00        22.67          0         68# 永久保存RAID0信息
[root@server1 ~]# echo "/dev/md0 /mnt/mnt_md0 xfs defaults 0 0" >> /etc/fstab

1.4.3 组建RAID1

# 创建raid1
[root@server1 ~]# mdadm -C /dev/md1 -l 1 -n 2 /dev/sdc3 /dev/sdc5
mdadm: Note: this array has metadata at the start andmay not be suitable as a boot device.  If you plan tostore '/boot' on this device please ensure thatyour boot-loader understands md/v1.x metadata, or use--metadata=0.90
Continue creating array? y #输入y,同意即可
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.# 查看状态信息
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc5[1] sdc3[0]2094080 blocks super 1.2 [2/2] [UU]md0 : active raid0 sdc2[1] sdc1[0]4188160 blocks super 1.2 512k chunksunused devices: <none>
[root@server1 ~]# mdadm -D /dev/md1
/dev/md1:Version : 1.2Creation Time : Thu Sep  2 23:43:43 2021Raid Level : raid1Array Size : 2094080 (2045.00 MiB 2144.34 MB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistentUpdate Time : Thu Sep  2 23:43:54 2021State : clean Active Devices : 2Working Devices : 2Failed Devices : 0Spare Devices : 0Consistency Policy : resyncName : server1:1  (local to host server1)UUID : bc67728d:e1c60a3c:8d445c5d:67a55444Events : 17Number   Major   Minor   RaidDevice State0       8       35        0      active sync   /dev/sdc31       8       37        1      active sync   /dev/sdc5# 格式化
[root@server1 ~]# mkfs.xfs /dev/md1
meta-data=/dev/md1               isize=512    agcount=4, agsize=130880 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=523520, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0# 挂载
[root@server1 ~]# mkdir /mnt/mnt_md1
[root@server1 ~]# mount /dev/md1 /mnt/mnt_md1
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  899M     0  899M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.9G   16G   11% /
/dev/sda1               xfs      1014M  194M  821M   20% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/md0                xfs       4.0G   33M  4.0G    1% /mnt/mnt_md0
/dev/md1                xfs       2.0G   33M  2.0G    2% /mnt/mnt_md1# 测试(热插拔)
# 模拟数据
[root@server1 ~]# touch /mnt/mnt_md1/file{1..5}# 模拟故障
[root@server1 ~]# mdadm /dev/md1 -f /dev/sdc3
mdadm: set /dev/sdc3 faulty in /dev/md1
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc5[1] sdc3[0](F)     F表示失效2094080 blocks super 1.2 [2/1] [_U] _表示有一块盘失效md0 : active raid0 sdc2[1] sdc1[0]4188160 blocks super 1.2 512k chunksunused devices: <none>
[root@server1 ~]# mdadm -D /dev/md1
/dev/md1:Version : 1.2Creation Time : Thu Sep  2 23:43:43 2021Raid Level : raid1Array Size : 2094080 (2045.00 MiB 2144.34 MB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistentUpdate Time : Thu Sep  2 23:57:53 2021State : clean, degraded Active Devices : 1Working Devices : 1Failed Devices : 1Spare Devices : 0Consistency Policy : resyncName : server1:1  (local to host server1)UUID : bc67728d:e1c60a3c:8d445c5d:67a55444Events : 19Number   Major   Minor   RaidDevice State-       0        0        0      removed1       8       37        1      active sync   /dev/sdc50       8       35        -      faulty   /dev/sdc3# 移除失效盘
[root@server1 ~]# mdadm /dev/md1 -r /dev/sdc3
mdadm: hot removed /dev/sdc3 from /dev/md1
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc5[1]2094080 blocks super 1.2 [2/1] [_U]md0 : active raid0 sdc2[1] sdc1[0]4188160 blocks super 1.2 512k chunksunused devices: <none>
# 不影响读写数据
[root@server1 ~]# touch /mnt/mnt_md1/test1
[root@server1 ~]# ls /mnt/mnt_md1
file1  file2  file3  file4  file5  test1# 加入新磁盘(热插)
[root@server1 ~]# mdadm /dev/md1 -a /dev/sdc6
mdadm: added /dev/sdc6
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc6[2] sdc5[1]2094080 blocks super 1.2 [2/2] [UU]md0 : active raid0 sdc2[1] sdc1[0]4188160 blocks super 1.2 512k chunksunused devices: <none># 永久保存RAID1信息
[root@server1 ~]# echo "/dev/md1 /mnt/mnt_md1 xfs defaults 0 0" >> /etc/fstab

1.4.4 组建RAID5

# 创建RAID5(预留一块热备盘)
[root@server1 ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdc{7,8,9,10}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3](S) sdc8[1] sdc7[0]4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]md1 : active raid1 sdc6[2] sdc5[1]2094080 blocks super 1.2 [2/2] [UU]md0 : active raid0 sdc2[1] sdc1[0]4188160 blocks super 1.2 512k chunksunused devices: <none>
[root@server1 ~]# mdadm -D /dev/md5
/dev/md5:Version : 1.2Creation Time : Fri Sep  3 00:11:41 2021Raid Level : raid5Array Size : 4188160 (3.99 GiB 4.29 GB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistentUpdate Time : Fri Sep  3 00:11:54 2021State : clean Active Devices : 3Working Devices : 4Failed Devices : 0Spare Devices : 1 热备盘Layout : left-symmetricChunk Size : 512KConsistency Policy : resyncName : server1:5  (local to host server1)UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2Events : 18Number   Major   Minor   RaidDevice State0       8       39        0      active sync   /dev/sdc71       8       40        1      active sync   /dev/sdc84       8       41        2      active sync   /dev/sdc93       8       42        -      spare   /dev/sdc10# 格式化
[root@server1 ~]# mkfs.ext4 /dev/md5# 挂载
[root@server1 ~]# mount /dev/md5 /mnt/mnt_md5
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  899M     0  899M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.9G   16G   11% /
/dev/sda1               xfs      1014M  194M  821M   20% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/md0                xfs       4.0G   33M  4.0G    1% /mnt/mnt_md0
/dev/md1                xfs       2.0G   33M  2.0G    2% /mnt/mnt_md1
/dev/md5                ext4      3.9G   16M  3.7G    1% /mnt/mnt_md5# 测试
#模拟故障
[root@server1 ~]# mdadm /dev/md5 -f /dev/sdc7
mdadm: set /dev/sdc7 faulty in /dev/md5
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3] sdc8[1] sdc7[0](F)4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU][root@server1 ~]# mdadm -D /dev/md5
/dev/md5:Version : 1.2Creation Time : Fri Sep  3 00:11:41 2021Raid Level : raid5Array Size : 4188160 (3.99 GiB 4.29 GB)Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistentUpdate Time : Fri Sep  3 00:19:14 2021State : clean Active Devices : 3Working Devices : 3Failed Devices : 1Spare Devices : 0Layout : left-symmetricChunk Size : 512KConsistency Policy : resyncName : server1:5  (local to host server1)UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2Events : 37Number   Major   Minor   RaidDevice State3       8       42        0      active sync   /dev/sdc101       8       40        1      active sync   /dev/sdc84       8       41        2      active sync   /dev/sdc90       8       39        -      faulty   /dev/sdc7
# 移除失效盘
[root@server1 ~]# mdadm /dev/md5 -r /dev/sdc7
mdadm: hot removed /dev/sdc7 from /dev/md5
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3] sdc8[1]4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU][root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc9[4] sdc10[3] sdc8[1]4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
# 添加热备盘
[root@server1 ~]# mdadm /dev/md5 -a /dev/sdc3
mdadm: added /dev/sdc3
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdc3[5](S) sdc9[4] sdc10[3] sdc8[1]4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]# 永久保存RAID1信息
[root@server1 ~]# echo "/dev/md5 /mnt/mnt_md5 ext4 defaults 0 0" >> /etc/fstab

1.4.5 RAID停止与启动

# 停止(以RAID0为例)
[root@server1 ~]# umount /mnt/mnt_md0
[root@server1 ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0# 启动
[root@server1 ~]# mdadm -A /dev/md0 /dev/sdc[12]
mdadm: /dev/md0 has been started with 2 drives.

1.4.6 RAID删除

# 以RAID1为例
# 解挂
[root@server1 ~]# umount /dev/md1# 停止运行
[root@server1 ~]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1# 删除/etc/fstab中的相关内容
[root@server1 ~]# vim /etc/fstab
#/dev/md1 /mnt/mnt_md1 ext4 defaults 0 0# 删除元数据
[root@server1 ~]# mdadm --zero-superblock /dev/sdc[56]

二、磁盘管理-逻辑卷

2.1 逻辑卷简介

  • LVM逻辑卷管理,在物理设备上进行一层抽象,允许生成逻辑存储卷,相比物理存储管理更加灵活

    • LVM将存储虚拟化,不受限于物理存储,屏蔽硬件相关存储参数,不需要卸载文件系统进行调整卷大小或数据迁移
  • 逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制

  • 理论性较强,创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。

  • 建立在物理存储设备之上的一个抽象层,优点在于灵活管理

  • 特点:

    • 动态在线扩容(重点)
    • 离线裁剪
    • 数据条带化
    • 数据镜像
    • 灵活的容器可伸缩的存储池
    • 方便的设备命令

2.2 工作原理

  • 物理卷Physical Volume (PV),处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列
  • 卷组Volume Group (VG),建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。一个LVM系统中可以只有一个卷组,也可以包含多个卷组
  • 逻辑卷Logical Volume (LV),逻辑卷建立在卷组之上,并且逻辑卷在建立后可以动态地扩展或缩小空间,是最终用户使用的逻辑设备
  • 物理区域physical extent (PE),一个物理卷可被划分为多个PE,具有唯一编号的PE是能被LVM寻址的最小单元。PE的大小可指定,默认为4 MBPE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。
  • 逻辑区域logical extent (LE),一个逻辑卷可被划分为多个LE,也是LVM寻址的最小单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

2.3 逻辑卷管理

2.3.1 常用命令

功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvs vgs lvs
详细显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce

2.3.2 逻辑卷创建

  • 物理设备——>物理卷(pv)——>卷组(vg)——>逻辑卷(lv)——>逻辑卷格式化——>挂载
# 物理设备:硬盘分区
[root@server1 ~]# fdisk /dev/sdb
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
├─sdb1            8:17   0    1G  0 part
└─sdb2            8:18   0    2G  0 part
sr0              11:0    1  973M  0 rom
[root@server1 ~]# partprobe /dev/sdb# 创建物理卷
[root@server1 ~]# pvcreate /dev/sdb1 /dev/sdb2Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdb2" successfully created.
[root@server1 ~]# pvsPV         VG     Fmt  Attr PSize   PFree/dev/sda2  centos lvm2 a--  <19.00g    0 /dev/sdb1         lvm2 ---    1.00g 1.00g/dev/sdb2         lvm2 ---    2.00g 2.00g
[root@server1 ~]# pvdisplay /dev/sdb*"/dev/sdb2" is a new physical volume of "2.00 GiB"--- NEW Physical volume ---PV Name               /dev/sdb2VG Name               PV Size               2.00 GiBAllocatable           NOPE Size               0   Total PE              0Free PE               0Allocated PE          0PV UUID               ogYeQh-kmXp-SguX-IE5I-VY1T-HFSE-mgVzh2"/dev/sdb1" is a new physical volume of "1.00 GiB"--- NEW Physical volume ---PV Name               /dev/sdb1VG Name               PV Size               1.00 GiBAllocatable           NOPE Size               0   Total PE              0Free PE               0Allocated PE          0PV UUID               O0FhDl-4USu-DBGD-skhu-zFVA-rEiZ-JVC3T3# 创建卷组
[root@server1 ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2Volume group "vg01" successfully created
[root@server1 ~]# vgsVG     #PV #LV #SN Attr   VSize   VFreecentos   1   2   0 wz--n- <19.00g    0 vg01     2   0   0 wz--n-   2.99g 2.99g# 创建逻辑卷
[root@server1 ~]# lvcreate -n lv01 -L 2.5G vg01
选项说明:
-n:指定逻辑卷名称
-L:直接指定逻辑卷大小
-l:间接指定逻辑卷大小(加PE个数/卷组剩余空间(VFree)百分比)
[root@server1 ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot centos -wi-ao---- <17.00g                                                    swap centos -wi-ao----   2.00g                                                    lv01 vg01   -wi-a-----   2.50g # 查看映射关系
[root@server1 ~]# ll /dev/vg01/lv01
lrwxrwxrwx 1 root root 7 8月  21 12:17 /dev/vg01/lv01 -> ../dm-2
[root@server1 ~]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 7 8月  21 12:17 /dev/mapper/vg01-lv01 -> ../dm-2# 格式化
[root@server1 ~]# mkfs.ext4 /dev/vg01/lv01
[root@server1 ~]# blkid /dev/vg01/lv01
/dev/vg01/lv01: UUID="acc1fc83-a64c-4d60-9f32-955169625ac1" TYPE="ext4" # 挂载
[root@server1 ~]# mkdir /mnt/lv01
[root@server1 ~]# mount /dev/vg01/lv01 /mnt/lv01/
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  899M     0  899M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.9G   16G   11% /
/dev/sda1               xfs      1014M  194M  821M   20% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/mapper/vg01-lv01   ext4      2.4G  7.5M  2.3G    1% /mnt/lv01

2.3.3 逻辑卷删除

# 解挂
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
├─sdb1            8:17   0    1G  0 part
│ └─vg01-lv01   253:2    0  2.5G  0 lvm  /mnt/lv01
└─sdb2            8:18   0    2G  0 part └─vg01-lv01   253:2    0  2.5G  0 lvm  /mnt/lv01
sr0              11:0    1  973M  0 rom
[root@server1 ~]# umount /dev/vg01/lv01# 删除逻辑卷
[root@server1 ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: yLogical volume "lv01" successfully removed# 删除卷组
[root@server1 ~]# vgremove vg01Volume group "vg01" successfully removed  # 删除物理卷
[root@server1 ~]# pvremove /dev/sdb[12]Labels on physical volume "/dev/sdb1" successfully wiped.Labels on physical volume "/dev/sdb2" successfully wiped.
[root@server1 ~]# pvsPV         VG     Fmt  Attr PSize   PFree/dev/sda2  centos lvm2 a--  <19.00g    0
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
├─sdb1            8:17   0    1G  0 part
└─sdb2            8:18   0    2G  0 part
sr0              11:0    1  973M  0 rom
  • 逻辑卷动态扩容
# 准备0.5G的逻辑卷
[root@server1 ~]# pvcreate /dev/sdb1Physical volume "/dev/sdb1" successfully created.
[root@server1 ~]# vgcreate vg01 /dev/sdb1Volume group "vg01" successfully created
[root@server1 ~]# lvcreate -n lv01 -L 0.5G vg01Logical volume "lv01" created.
[root@server1 ~]# ll /dev/vg01/lv01
lrwxrwxrwx 1 root root 7 8月  21 13:10 /dev/vg01/lv01 -> ../dm-2
[root@server1 ~]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 7 8月  21 13:10 /dev/mapper/vg01-lv01 -> ../dm-2
[root@server1 ~]# mkfs.ext4 /dev/vg01/lv01
[root@server1 ~]# mount /dev/vg01/lv01 /mnt/lv01/
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  899M     0  899M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.9G   16G   11% /
/dev/sda1               xfs      1014M  194M  821M   20% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/mapper/vg01-lv01   ext4      488M  780K  452M    1% /mnt/lv01# 查看/mnt/lv01属于哪个卷组
[root@server1 ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot centos -wi-ao---- <17.00g                                                    swap centos -wi-ao----   2.00g                                                    lv01 vg01   -wi-ao---- 512.00m       # 查看vg01的剩余空间
[root@server1 ~]# vgsVG     #PV #LV #SN Attr   VSize    VFree  centos   1   2   0 wz--n-  <19.00g      0 vg01     1   1   0 wz--n- 1020.00m 508.00m
#卷组空间不够:先扩容卷组,再扩容逻辑卷
#卷组空间够用,只需要扩容逻辑卷# 扩容卷组:直接将其他物理卷加入该卷组(如果没有空闲物理卷,可以通过物理设备创建物理卷)
[root@server1 ~]# vgextend vg01 /dev/sdb2Physical volume "/dev/sdb2" successfully created.Volume group "vg01" successfully extended
[root@server1 ~]# vgsVG     #PV #LV #SN Attr   VSize   VFreecentos   1   2   0 wz--n- <19.00g    0 vg01     2   1   0 wz--n-   2.99g 2.49g# 扩容逻辑卷
[root@server1 ~]# lvextend /dev/vg01/lv01 -L +2GSize of logical volume vg01/lv01 changed from 512.00 MiB (128 extents) to 2.50 GiB (640 extents).Logical volume vg01/lv01 successfully resized.
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  899M     0  899M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.9G   16G   11% /
/dev/sda1               xfs      1014M  194M  821M   20% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/mapper/vg01-lv01   ext4      488M  780K  452M    1% /mnt/lv01# 同步文件系统
[root@server1 ~]# resize2fs /dev/vg01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv01 is mounted on /mnt/lv01; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg01/lv01 is now 655360 blocks long.
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  899M     0  899M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.9G   16G   11% /
/dev/sda1               xfs      1014M  194M  821M   20% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/mapper/vg01-lv01   ext4      2.5G  1.5M  2.4G    1% /mnt/lv01

2.3.4 逻辑卷实现条带化

  • 条带化:把保存到逻辑卷的数据分成n等分,分别写到不同的物理卷,可以提高数据的读写效率;如果任何一个涉及到的物理卷出现故障,数据都会无法恢复。
# 创建分区
[root@server1 ~]# fdisk /dev/sdb
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
├─sdb1            8:17   0    2G  0 part
└─sdb2            8:18   0    2G  0 part
sr0              11:0    1  973M  0 rom  # 刷新分区表(不成功,可以尝试重启)
[root@server1 ~]# partprobe /dev/sdb# 创建物理卷
[root@server1 ~]# pvcreate /dev/sdb[12]Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdb2" successfully created.
[root@server1 ~]# pvs /dev/sdb[12]PV         VG Fmt  Attr PSize PFree/dev/sdb1     lvm2 ---  2.00g 2.00g/dev/sdb2     lvm2 ---  2.00g 2.00g# 创建卷组
[root@server1 ~]# vgcreate vg01 /dev/sdb[12]Volume group "vg01" successfully created
[root@server1 ~]# vgs vg01VG   #PV #LV #SN Attr   VSize VFreevg01   2   0   0 wz--n- 3.99g 3.99g# 创建逻辑卷,实现条带化
[root@server1 ~]# lvcreate -n lv01 -l 100%free vg01 -i 2 /dev/sdb[12]Using default stripesize 64.00 KiB.Logical volume "lv01" created.
# 选项说明: -i:指定条带化的数量
[root@server1 ~]# pvs /dev/sdb[12]PV         VG   Fmt  Attr PSize  PFree/dev/sdb1  vg01 lvm2 a--  <2.00g    0 /dev/sdb2  vg01 lvm2 a--  <2.00g    0# 格式化
[root@server1 ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01         isize=512    agcount=8, agsize=130800 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1046400, imaxpct=25=                       sunit=16     swidth=32 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=16 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0# 挂载
[root@server1 ~]# mkdir /mnt/lv01
[root@server1 ~]# mount /dev/vg01/lv01 /mnt/lv01# 测试
# 复制会话,用于监控
[root@server1 ~]# yum install -y sysstat.x86_64
[root@server1 ~]# iostat -m -d /dev/sdb[12] 3
# 选项说明:
# -d:查看磁盘
# -m:以什么速度显示,M/s
# 3:每隔3s显示一次
[root@server1 ~]# dd if=/dev/zero of=/mnt/lv01/dd_file bs=1M count=1000#监控显示
Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdb1            181.33         0.00        11.29          0         33
sdb2            180.33         0.00        11.27          0         33Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdb1            731.33         0.00        45.58          0        136
sdb2            729.33         0.00        45.58          0        136

2.3.5 逻辑卷快照

  • 快照大小远远小于逻辑卷实例大小,快照的空间也来自于卷组,当卷组的可用空间为0时,快照不能创建
# 环境:现打算为vg01-lv01逻辑卷拍摄快照,但卷组可用空间为0,拟采用sdb3扩容
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
├─sdb1            8:17   0    2G  0 part
│ └─vg01-lv01   253:2    0    4G  0 lvm  /mnt/lv01
├─sdb2            8:18   0    2G  0 part
│ └─vg01-lv01   253:2    0    4G  0 lvm  /mnt/lv01
└─sdb3            8:19   0 1023M  0 part
sr0              11:0    1  973M  0 rom  创建物理卷
[root@server1 ~]# pvcreate /dev/sdb3Physical volume "/dev/sdb3" successfully created.# sdb3加入vg01卷组
[root@server1 ~]# vgextend vg01 /dev/sdb3Volume group "vg01" successfully extended
[root@server1 ~]# dmsetup ls --tree
vg01-lv01 (253:2)├─ (8:18)└─ (8:17)
centos-swap (253:1)└─ (8:2)
centos-root (253:0)└─ (8:2)# 拍摄快照
[root@server1 ~]# lvcreate -n lv01_snap -L 50M -s /dev/vg01/lv01Logical volume "lv01_snap" created.
[root@server1 ~]# lvsLV        VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot      centos -wi-ao---- <17.00g                                                    swap      centos -wi-ao----   2.00g                                                    lv01      vg01   owi-aos---   3.99g                                                    lv01_snap vg01   swi-a-s---  50.00m      lv01   0.15
[root@server1 ~]# dmsetup ls --tree
vg01-lv01_snap (253:5)├─vg01-lv01_snap-cow (253:4) #保存原卷改变前的数据│  └─ (8:19)└─vg01-lv01-real (253:3) #真实的逻辑卷(原卷)├─ (8:18)└─ (8:17)
vg01-lv01 (253:2)└─vg01-lv01-real (253:3)├─ (8:18)└─ (8:17)
centos-swap (253:1)└─ (8:2)
centos-root (253:0)└─ (8:2)# 快照自动扩容
[root@server1 ~]# vim /etc/lvm/lvm.conf
snapshot_autoextend_threshold = 75#快照空间使用率(值设置为100,表示关闭自动扩容)
snapshot_autoextend_percent = 20 #快照使用率达到上述要求,自动扩容20%
  • 生产环境下常使用快照备份

    • 锁表–>创建快照–>解锁–>挂载快照–>备份到指定地方–>删除快照

三、扩容swap空间

3.1 添加磁盘扩容

  • 流程:新建分区–>刷新分区表–>格式化–>激活
# 查看信息
[root@server1 ~]# free -htotal      used      free    shared  buff/cache   available
Mem:         1.8G      147M      1.2G      9.6M        410M        1.5G
Swap:        2.0G        0B      2.0G
[root@server1 ~]# swapon -s
文件名             类型      大小   已用 权限
/dev/dm-1       partition 2097148  0  -2#新建分区(使用sdb2作为交换空间)
[root@server1 ~]# fdisk /dev/sdb
#欢迎使用 fdisk (util-linux 2.23.2)。# 更改将停留在内存中,直到您决定将更改写入磁盘。
# 使用写入命令前请三思。#命令(输入 m 获取帮助):n
Partition type:p   primary (1 primary, 0 extended, 3 free)e   extended
Select (default p): p
#分区号 (2-4,默认 2):
#起始 扇区 (4196352-10485759,默认为 4196352):
#将使用默认值 4196352
#Last 扇区, +扇区 or +size{K,M,G} (4196352-10485759,默认为 10485759):+2G
#分区 2 已设置为 Linux 类型,大小设为 2 GiB#命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
#正在同步磁盘。
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
├─sdb1            8:17   0    2G  0 part
└─sdb2            8:18   0    2G  0 part
sr0              11:0    1  973M  0 rom  # 刷新分区表
[root@server1 ~]# partprobe /dev/sdb# 格式化
[root@server1 ~]# mkswap /dev/sdb2
#正在设置交换空间版本 1,大小 = 2097148 KiB
#无标签,UUID=ce1f363b-a131-41d0-9123-345978b1e95e
[root@server1 ~]# blkid /dev/sdb2
/dev/sdb2: UUID="ce1f363b-a131-41d0-9123-345978b1e95e" TYPE="swap" # 临时激活swap分区(swapoff临时关闭)
[root@server1 ~]# swapon /dev/sdb2
[root@server1 ~]# swapon -s
文件名             类型      大小  已用  权限
/dev/dm-1        partition  2097148 0   -2
/dev/sdb2        partition  2097148 0   -3# 永久激活
[root@server1 ~]# vim /etc/fstab
# 追加
/dev/sdb2   swap    swap    defaults    0   0

3.2 模拟大文件来扩容

3.2.1 dd命令

  • 语法:dd if=源文件 of=目标文件 bs=复制数据的大小 count=复制的个数
  • 功能:一般结合吐零机生成一定大小的块设备文件
  • 常用示例
# 1.备份设备文件
[root@server1 ~]# dd if=/dev/sr0 of=/centos7.6.iso
记录了1992704+0 的读入
记录了1992704+0 的写出
1020264448字节(1.0 GB)已复制,31.5341 秒,32.4 MB/秒# 2.模拟大文件
#/dev/zero 特殊设备,一般用来模拟一个大文件,源源不断的二进制的bit流;
[root@server1 ~]# dd if=/dev/zero of=/tmp/swap_file bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,2.74676 秒,391 MB/秒# 3.损坏系统盘(不要作死)
[root@server1 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=512

3.2.2 模拟大文件扩容

# 模拟大文件
[root@server1 ~]# dd if=/dev/zero of=/tmp/swap_file bs=1M count=1024
#记录了1024+0 的读入
#记录了1024+0 的写出
#1073741824字节(1.1 GB)已复制,2.74676 秒,391 MB/秒# 格式化
[root@server1 ~]# mkswap /tmp/swap_file
#正在设置交换空间版本 1,大小 = 1048572 KiB
#无标签,UUID=b2d34da8-3388-4094-9a83-af6a6fe40cf3# 激活
[root@server1 ~]# swapon -p 1 /tmp/swap_file
swapon: /tmp/swap_file:不安全的权限 0644,建议使用 0600。
[root@server1 ~]# chmod 0600 /tmp/swap_file # 查看
[root@server1 ~]# free -htotal      used      free    shared  buff/cache   available
Mem:         1.8G      149M       72M      9.6M        1.6G        1.5
Swap:        5.0G        0B      5.0G

四、磁盘配额

  • 作用:限制用户或组对磁盘空间的使用,例如文件服务器,邮件服务器…

  • 案例要求:

    • 创建3个用户user1user2user3,密码和用户名相同,初始组为usergrp组。
    • 3个用户都可以取得500M的磁盘使用空间,超过400M,给予提示。文件数量不能多于5个,超过3个,给予提示
  • 准备工作

# 创建分区sdb1
[root@server1 ~]# fdisk /dev/sdb
#命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p):
Using default response p
#分区号 (1-4,默认 1):
#起始 扇区 (2048-10485759,默认为 2048):
#将使用默认值 2048
#Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
#分区 1 已设置为 Linux 类型,大小设为 2 GiB
#命令(输入 m 获取帮助):w
Calling ioctl() to re-read partition table.
#正在同步磁盘。# 刷新分区表
[root@server1 ~]# partprobe /dev/sdb
[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
└─sdb1            8:17   0    2G  0 part
sr0              11:0    1  973M  0 rom  # 格式化
[root@server1 ~]# mkfs.ext4 /dev/sdb1# 挂载
[root@server1 ~]# mkdir /mnt/mount_sdb1
[root@server1 ~]# mount /dev/sdb1 /mnt/mount_sdb1/
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  899M     0  899M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M  9.6M  901M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.9G   16G   11% /
/dev/sda1               xfs      1014M  194M  821M   20% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/sdb1               ext4      2.0G  6.0M  1.8G    1% /mnt/mount_sdb1# 创建用户
[root@server1 ~]# groupadd usergrp
[root@server1 ~]# useradd -g usergrp -b /mnt/mount_sdb1/ user01
[root@server1 ~]# useradd -g usergrp -b /mnt/mount_sdb1/ user02
[root@server1 ~]# useradd -g usergrp -b /mnt/mount_sdb1/ user03# 确保文件系统支持配额
[root@server1 ~]# mount |grep mount_sdb1
/dev/sdb1 on /mnt/mount_sdb1 type ext4 (rw,relatime,data=ordered
[root@server1 ~]# mount -o remount,usrquota,grpquota /mnt/mount_sdb1/
[root@server1 ~]# mount |grep mount_sdb1
/dev/sdb1 on /mnt/mount_sdb1 type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)# 永久支持
[root@server1 ~]# vim /etc/fstab
/dev/sdb1   /mnt/mount_sdb1 ext4 defaults,usrquota,grpquota  0   0
  • quotacheck命令

    • 主要参数

      • -a:扫描所有在/etc/mtab内含有quota参数的文件系统
      • -u:针对用户扫描文件与目录的使用情况,会新建一个aquota.user文件
      • -g:针对用户组扫描文件与目录的使用情况,会新增一个aquota.group文件
      • -v:显示扫描过程的信息
# 启动quota磁盘配额
[root@server1 ~]# yum install -y quota
[root@server1 ~]# quotacheck -avug
[root@server1 ~]# ll /mnt/mount_sdb1/
总用量 44
-rw------- 1 root   root     7168 8月  21 12:12 aquota.group
-rw------- 1 root   root     7168 8月  21 12:12 aquota.user
drwx------ 2 root   root    16384 8月  21 12:06 lost+found
drwx------ 2 user01 usergrp  4096 8月  21 12:07 user01
drwx------ 2 user02 usergrp  4096 8月  21 12:07 user02
drwx------ 2 user03 usergrp  4096 8月  21 12:07 user03
[root@server1 ~]# quotaon -a# 编辑限额配置
[root@server1 ~]# edquota -u user01
Disk quotas for user user01 (uid 1001):Filesystem    blocks     soft       hard    inodes   soft     hard/dev/sdb1      16       409600     512000     4        8       10# 注:空间限制是以k为单位的。
[root@server1 ~]# edquota -p user01 -u user02
[root@server1 ~]# edquota -p user01 -u user03

  • soft:又称软限制,当用户到达这个限制以后,系统会给予警告,但仍可写入。

  • hard:又称硬限制,到达这个限制,就完全禁止任何写入

  • 以下三个为磁盘空间的限制设置:

    • blocks:已使用空间,无需要设置
    • soft:用户空间使用限制,为软限制,需要设置
    • hard:用户空间使用限制,为硬限制,需要设置
  • 以下三个为总文件个数的限制:

    • inodes:已有文件总数,无需要设置
    • soft:文件总数限制,为软限制,需要设置
    • hard:文件总数限制,为硬限制,需要设置
  • 查看和测试

# 查看限制情况
[root@server1 ~]# repquota -as
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7daysSpace limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0
user01    +-    451M    400M    500M  7days       5     8    10
user02    --     16K    400M    500M              5     8    10
user03    --     16K    400M    500M              4     8    10  # 测试
[user01@server1 ~]$ dd if=/dev/zero of=bigfile bs=1M count=450
sdb1: warning, user block quota exceeded.
记录了450+0 的读入
记录了450+0 的写出
471859200字节(472 MB)已复制,7.2745 秒,64.9 MB/秒[user02@server1 ~]$ touch file{1..6}
sdb1: warning, user file quota exceeded.
[user02@server1 ~]$ touch file7
sdb1: write failed, user file limit reached.
touch: 无法创建"file7": 超出磁盘限额

七、Linux磁盘管理(二)相关推荐

  1. Linux 磁盘管理 二(Raid、LVM、Quota)

    6-3.停止磁盘阵列(--stop) [root@localhost ~]# mdadm -S /dev/md0 mdadm: stopped /dev/md0 注意:停止磁盘阵列前要从文件系统umo ...

  2. Linux命令-磁盘管理(二)

    Linux命令-磁盘管理(二) Linux mmount命令 Linux mmount命令用于挂入MS-DOS文件系统. mmount为mtools工具指令,可根据[mount参数]中的设置,将磁盘内 ...

  3. Linux磁盘管理——df、du、磁盘分区、格式化、挂载、LVM

    2019独角兽企业重金招聘Python工程师标准>>> Linux磁盘管理 一. df命令 df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间 ...

  4. linux磁盘管理系列一:磁盘配额管理

    磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...

  5. linux 磁盘管理上(分区操作,格式化文件,挂载和卸载)

    一:检测并确认新磁盘,规划磁盘分区 首先加硬盘进去,fdisk -l  查看磁盘分区 device     分区的设备文件名称 boot         是否是引导分区.是 则有*表示 start   ...

  6. linux 磁盘管理3板斧,Linux 磁盘管理的命令

    Linux   磁盘管理 磁盘分区及挂载: 先查询系统的使用情况: 使用fdisk -l语句 查询结果: 进行磁盘的新建:***添加磁盘时系统必须处于关机状态** 在进行对系统磁盘的使用情况的查询 查 ...

  7. Linux用户管理(六)Linux磁盘管理

    Linux磁盘管理 一.硬盘分区 1.外部存储器的表示方法 (1)硬盘 l IDE         /dev/hdxy l SCSI/USB   /dev/sdxy (2)软盘(/dev/fdx) ( ...

  8. linux磁盘相关命令,Linux磁盘管理常用操作命令

    原标题:Linux磁盘管理常用操作命令 本文汇总了Linux磁盘管理基础知识.其中包括存储设备的挂载和卸载常用操作命令.自动挂载操作命令和磁盘分区操作命令等. 一.存储设备的挂载和卸载 存储设备的挂载 ...

  9. Linux系列教程——1 Linux磁盘管理、2 Linux进程管理、3 Linux系统服务、 4 Linux计划任务

    文章目录 1 Linux磁盘管理 1.磁盘的基本概念 1.什么是磁盘 2.磁盘的基本结构 3.磁盘的预备知识 1.磁盘的接口类型 2.磁盘的基本术语 3.磁盘在系统上的命名方式 4.磁盘基本分区Fdi ...

  10. Linux磁盘管理4.12

    Linux磁盘管理4.12 一 blockbitmap(区块对照表): 新增文件时会用到block.选择空的block来记录新文件的数据,block bitmap来帮助实现查询block中哪个是空的, ...

最新文章

  1. 在symfony2项目中100%提升doctrine的性能
  2. 进程、应用程序域、程序集、对象上下文区别与联系
  3. python数据分析与挖掘 | 挖掘建模
  4. 什么标签用于在表单中构建复选框_UI/UX笔记之如何设计好表单
  5. java输出 4 7什么意思_Java学习4_一些基础4_输入输出_16.5.7
  6. Program Remote Key For 2014 Ford Mustang Via SKP-900
  7. 使用dom4j来解析相关的xml字符串
  8. Java17,有史以来最快 JDK!
  9. VS2010插件 - NuGet
  10. 测试显卡风扇的软件,让噪音远离,显卡风扇转速调节
  11. LeetCode答案大全题(java版)
  12. Linux查看最后一页日志,linux常用查看文件或日志命令
  13. 遇到数学问题《深度学习》“花书”读不下去了吗?给你支个招
  14. MySQL大表优化方案
  15. 「程序猿 DD」星球活动第一期正式开启!
  16. Vue中native的用法
  17. 数学中蕴含的人生哲理
  18. 油罐清洗抽吸系统设计
  19. infer的用法_使用 Infer 进行代码扫描
  20. Prefix-Tuning: Optimizing Continuous Prompts for Generation

热门文章

  1. html常用文本标签
  2. 秘密福利偷偷分享!!!就此一天!!!过后删!!!
  3. node cheerio
  4. 读书笔记 之《Thinking in Java》(对象、集合)
  5. 23考研机械复试面试 常见问答问题汇总,机械本科知识专业面试最全攻略!!
  6. js使用iframe引入youtube视频到页面中播放,解决跨域播放
  7. 微信公众号如何做好日常维护?
  8. 论文笔记--Deep contextualized word representations
  9. 某计算机系的小周,某大学计算机系的小周现在是大二的学生,现在回想起自己在大一时大手大脚花钱还是 - 问答库...
  10. 对于load方法的理解