栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

七、Linux磁盘管理(二)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

七、Linux磁盘管理(二)

一、磁盘阵列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
  • RAID10是raid1+raid0的组合
  • 至少需要4块磁盘
  • 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
  • 磁盘利用率为50%,成本较高

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

1.2.7 总结
类型读性能写性能可靠性磁盘利用率成本
RAID0最好最好最低100%较低
RAID1正常两份数据高50%高
RAID5近似RAID0多了校验介于RAID0和RAID1之间(n-1)/n介于RAID0和RAID1之间
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.2
     Creation Time : Thu Sep  2 23:25:16 2021
        Raid Level : raid0
        Array Size : 4188160 (3.99 GiB 4.29 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Sep  2 23:25:16 2021
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : server1:0  (local to host server1)
              UUID : 2e5a48fa:87654810:3460dfd6:1d4951d5
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       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=1024

Device:            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        233

Device:            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        210

Device:            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 and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your 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 chunks
      
unused devices: 
[root@server1 ~]# mdadm -D /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Thu Sep  2 23:43:43 2021
        Raid Level : raid1
        Array Size : 2094080 (2045.00 MiB 2144.34 MB)
     Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Sep  2 23:43:54 2021
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : server1:1  (local to host server1)
              UUID : bc67728d:e1c60a3c:8d445c5d:67a55444
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       35        0      active sync   /dev/sdc3
       1       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 chunks
      
unused devices: 
[root@server1 ~]# mdadm -D /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Thu Sep  2 23:43:43 2021
        Raid Level : raid1
        Array Size : 2094080 (2045.00 MiB 2144.34 MB)
     Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Sep  2 23:57:53 2021
             State : clean, degraded 
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 1
     Spare Devices : 0

Consistency Policy : resync

              Name : server1:1  (local to host server1)
              UUID : bc67728d:e1c60a3c:8d445c5d:67a55444
            Events : 19

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       37        1      active sync   /dev/sdc5

       0       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 chunks
      
unused devices: 
# 不影响读写数据
[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 chunks
      
unused devices: 

# 永久保存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 chunks
      
unused devices: 
[root@server1 ~]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Fri Sep  3 00:11:41 2021
        Raid Level : raid5
        Array Size : 4188160 (3.99 GiB 4.29 GB)
     Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Sep  3 00:11:54 2021
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1 热备盘

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : server1:5  (local to host server1)
              UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       39        0      active sync   /dev/sdc7
       1       8       40        1      active sync   /dev/sdc8
       4       8       41        2      active sync   /dev/sdc9

       3       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.2
     Creation Time : Fri Sep  3 00:11:41 2021
        Raid Level : raid5
        Array Size : 4188160 (3.99 GiB 4.29 GB)
     Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Sep  3 00:19:14 2021
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : server1:5  (local to host server1)
              UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2
            Events : 37

    Number   Major   Minor   RaidDevice State
       3       8       42        0      active sync   /dev/sdc10
       1       8       40        1      active sync   /dev/sdc8
       4       8       41        2      active sync   /dev/sdc9

       0       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 MB。 PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。
  • 逻辑区域:logical extent (LE),一个逻辑卷可被划分为多个LE,也是LVM寻址的最小单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

2.3 逻辑卷管理 2.3.1 常用命令
功能/命令物理卷管理卷组管理逻辑卷管理
扫描pvscanvgscanlvscan
建立pvcreatevgcreatelvcreate
显示pvsvgslvs
详细显示pvdisplayvgdisplaylvdisplay
删除pvremovevgremovelvremove
扩展vgextendlvextend
缩小vgreducelvreduce
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/sdb2
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
[root@server1 ~]# pvs
  PV         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/sdb2
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV 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/sdb1
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               O0FhDl-4USu-DBGD-skhu-zFVA-rEiZ-JVC3T3

# 创建卷组
[root@server1 ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
  Volume group "vg01" successfully created
[root@server1 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   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 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root 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]: y
  Logical volume "lv01" successfully removed

# 删除卷组
[root@server1 ~]# vgremove vg01
  Volume 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 ~]# pvs
  PV         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/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@server1 ~]# vgcreate vg01 /dev/sdb1
  Volume group "vg01" successfully created
[root@server1 ~]# lvcreate -n lv01 -L 0.5G vg01
  Logical 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 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv01 vg01   -wi-ao---- 512.00m       

# 查看vg01的剩余空间
[root@server1 ~]# vgs
  VG     #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/sdb2
  Physical volume "/dev/sdb2" successfully created.
  Volume group "vg01" successfully extended
[root@server1 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   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 +2G
  Size 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 vg01
  VG   #PV #LV #SN Attr   VSize VFree
  vg01   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         33

Device:            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/sdb3
  Physical volume "/dev/sdb3" successfully created.

# sdb3加入vg01卷组
[root@server1 ~]# vgextend vg01 /dev/sdb3
  Volume 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/lv01
  Logical volume "lv01_snap" created.
[root@server1 ~]# lvs
  LV        VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root      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 -h
            total      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 -h
            total      used      free    shared  buff/cache   available
Mem:         1.8G      149M       72M      9.6M        1.6G        1.5
Swap:        5.0G        0B      5.0G

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

  • 案例要求:

    • 创建3个用户user1,user2,user3,密码和用户名相同,初始组为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: 7days
                        Space 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": 超出磁盘限额
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号