Linux 运维知识梳理(3)磁盘管理

磁盘分区

对于硬盘通常有两种分区方式 MBR 分区、GPT 分区。

区别 MBR GPT
适用硬盘大小 小于 2TB 大于 2TB
分区工具 fdisk gdisk
可分区数量 4 个主分区或 3 个主分区 + 1 个拓展分区(N 个逻辑分区) 128 个主分区

一、MBR 分区实战

1、列出存储设备

[root@localhost ~]# lsblk -a
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   10G  0 disk 
sr0              11:0    1  4.4G  0 rom
  • sda:第一块磁盘,sda1 第一个分区,sda2 第二个分区
  • sdb:第二块磁盘,未分区的磁盘
  • sr0:光驱设备

2、给磁盘分区

接下来使用 fdisk 工具给 sdb 硬盘进行分区,要求:

  • sdb1 分区 3G 空间
  • sdb2 分区 2G 空间
  • sdb3 分区获得剩下的硬盘空间
[root@localhost ~]# fdisk /dev/sdb 

命令(输入 m 获取帮助):n # 新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p # 创建主分区
分区号 (1-4,默认 1):1	# 分区号
起始 扇区 (2048-20971519,默认为 2048):2048 # 起始扇区的大小,默认
Last 扇区, +扇区 or +size{
    
    K,M,G} (2048-20971519,默认为 20971519):+3G # 该分区的空间大小
分区 1 已设置为 Linux 类型,大小设为 3 GiB


命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (6293504-20971519,默认为 6293504):6293504
Last 扇区, +扇区 or +size{
    
    K,M,G} (6293504-20971519,默认为 20971519):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB


命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (10487808-20971519,默认为 10487808):10487808
Last 扇区, +扇区 or +size{
    
    K,M,G} (10487808-20971519,默认为 20971519):20971519
分区 3 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

分区结束后,查看查看分区结果

[root@localhost ~]# lsblk -a
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   10G  0 disk 
├─sdb1            8:17   0    3G  0 part 
├─sdb2            8:18   0    2G  0 part 
└─sdb3            8:19   0    5G  0 part 
sr0              11:0    1  4.4G  0 rom 

3、格式化分区

Linux 下使用 ext4 格式

[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb2
[root@localhost ~]# mkfs.ext4 /dev/sdb3

查看每个分区的信息

[root@localhost ~]# blkid /dev/sdb*
/dev/sdb1: UUID="a11591fd-94d0-4315-9068-d2e194de8c66" TYPE="ext4" 
/dev/sdb2: UUID="5943c953-7b66-47f2-8e74-96676c8dce74" TYPE="ext4" 
/dev/sdb3: UUID="6ccf4814-e34a-4d2a-a857-cc6af19a8a77" TYPE="ext4"

4、将分区挂载到目录

挂载磁盘有三个方式:手动挂载、开机自动挂载、自动挂载

sdb1sdb2sdb3 分区挂载到 /data/ 目录下的 db1(手动挂载)db2(开机自动挂载)db3(自动挂载)

[root@localhost ~]# mkdir -p /data/db{1..3}
  • 手动挂载

特点:系统重启后需要重新挂载,手动卸载后,需要手动挂载

# 挂载命令
[root@localhost ~]# mount /dev/sdb1 /data/db1/
# 查看挂载后的分区信息
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.5G   16G    9% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               ext4      2.9G  9.0M  2.8G    1% /data/db1
  • 开机自动挂载

特点:系统重启后自动挂载,手动卸载后,重启也会自动挂载。

# 编辑配置文件 /etc/fstab,追加内容
# 第一列:要挂载的设备,设备的文件名、卷标或者 UUID
# 第二列:挂载点,建议是一个空目录
# 第三列:文件系统类型
# 第四列:挂载选项,default 同时拥有 rw、dev、exec、acl、async、nouser 参数
# 第五列:dump 备份支持, 0 不 dump 备份,1 每天 dump 备份
# 第六列:是否使用 fsck 进行文件系统检测,0 不检验,1 检验
/dev/sdb2	/data/db2	ext4	defaults	0	0

查看分区信息

[root@localhost data]# mount -a
[root@localhost data]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.5G   16G    9% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               ext4      2.9G  9.0M  2.8G    1% /data/db1
/dev/sdb2               ext4      2.0G  6.0M  1.8G    1% /data/db2
  • 自动挂载

安装命令

[root@localhost ~]# yum install -y autofs
[root@localhost ~]# systemctl start autofs && systemctl enable autofs
Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.

特点:挂载是由访问产生的,卸载是由访问延迟产生的,需要安装 autofs 服务

需求1:让系统自动挂载 /dev/sdb3 设备,3 分钟没有使用,则自动卸载

主配置文件 /etc/auto.master 声明哪个目录支持自动挂载

/data/db3 /etc/db3.misc --timeout 180

子配置文件 /etc/db3.misc 支持自动挂载的目录激活自动挂载的条件

# 第一列:挂载目录
# 第二列:挂载文件类型及权限
# 第三列::设备名称
db3             -fstype=ext4,rw            :/dev/sdb3

重启服务

[root@localhost ~]# systemctl restart autofs

二、GPT 分区实战

GPT 分区除了使用分区工具不同,其他流程都是一样的

1、列出存储设备

[root@localhost ~]# lsblk -a
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   20G  0 disk 
sr0              11:0    1  4.4G  0 rom
  • sda:第一块磁盘,sda1 第一个分区,sda2 第二个分区
  • sdb:第二块磁盘,未分区的磁盘
  • sr0:光驱设备

2、给磁盘分区

接下来使用 gdisk 工具给 sdb 硬盘进行分区

[root@localhost ~]# gdisk /dev/sdb 

Command (? for help): n # 新建一个分区
Partition number (1-128, default 1): 1 # 分区编号
First sector (34-41943006, default = 2048) or {
    
    +-}size{
    
    KMGTP}: 2048 # 起始扇区,默认
Last sector (2048-41943006, default = 41943006) or {
    
    +-}size{
    
    KMGTP}: +10G # 容量大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8300 # 8300 代码为 Linux filesystem
Changed type of partition to 'Linux filesystem'

Command (? for help): w # 保存,退出

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

分区结束后,查看查看分区结果

[root@localhost ~]# lsblk -a
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   20G  0 disk 
└─sdb1            8:17   0   10G  0 part 
sr0              11:0    1  4.4G  0 rom

3、格式化分区

Linux 下使用 ext4 格式

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

查看每个分区的信息

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="965c743e-2069-4750-9fc2-5d4f718242d7" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="9f050b2f-5ca3-475c-a23b-5a6486e6021c"

4、将分区挂载到目录

# 挂载命令
[root@localhost ~]# mount /dev/sdb1 /mnt/
# 查看挂载后的分区信息
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.4G   16G    8% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               ext4      9.8G   37M  9.2G    1% /mnt

逻辑卷

逻辑卷(LVM):它是 Linux 环境下对磁盘分区进行管理的一种机制,它是建立在物理设备之上的一个抽象层,优点在于灵活管理。
特点

  1. 动态在线扩容
  2. 逻辑卷条带化
  3. 逻辑卷快照
  4. 数据镜像
  5. 离线裁剪

在这里插入图片描述

  • 物理卷(Physical Volume,PV)

物理卷是底层提供存储的物理设备,它可以是整个硬盘或硬盘上的一个分区

  • 卷组(Volume Group,VG)

卷组建立在物理卷之上,它是由一个或多个物理卷组成。即:把物理卷整合起来提供容量分配。
一个 LVM 系统中,可以有多个卷组。

  • 逻辑卷(Logic Volume,LV)

逻辑卷建立在卷组之上,它是从卷组中划出的一块空间。它是用户最终使用的逻辑设备。逻辑卷创建之后,其大小可以伸缩。

一、基本使用

1、创建物理卷 PV

列出存储设备

# sdb、sdc 为服务器的硬盘,大小 20g,未分区
[root@localhost ~]# 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   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sr0              11:0    1  4.4G  0 rom

将这两个硬盘创建成物理卷

[root@localhost ~]# pvcreate /dev/sdb 
  Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.

查看物理卷

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   20.00g 20.00g
  /dev/sdc          lvm2 ---   20.00g 20.00g

2、创建卷组 VG

/dev/sdb /dev/sdc 物理卷组合成卷组 vg01

[root@localhost ~]# vgcreate vg01 /dev/sdb /dev/sdc 
  Volume group "vg01" successfully created

查看创建的 vg01

[root@localhost ~]# vgs 
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <19.00g     0 
  vg01     2   0   0 wz--n-  39.99g 39.99g

3、创建逻辑卷 LV

# 从 vg01 创建一个逻辑卷 lv01 容量为 5G
[root@localhost ~]# lvcreate -n lv01 -L 5G vg01
  Logical volume "lv01" created.

# 将 vg01 剩余的空间创建 lv02
[root@localhost ~]# lvcreate -n lv02 -l 100%free vg01
  Logical volume "lv02" created.

查看创建的逻辑卷

[root@localhost ~]# 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-----   5.00g                                                    
  lv02 vg01   -wi-a-----  34.99g

4、格式化逻辑卷

[root@localhost ~]# mkfs.ext4 /dev/vg01/lv01
[root@localhost ~]# mkfs.ext4 /dev/vg01/lv02

5、挂载到目录

[root@localhost ~]# mkdir -p /db1 /db2
[root@localhost ~]# mount /dev/vg01/lv01 /db1/
[root@localhost ~]# mount /dev/vg01/lv02 /db2/

查看挂载情况

[root@localhost ~]# df -Th | grep lv
/dev/mapper/vg01-lv01   ext4      4.8G   20M  4.6G    1% /db1
/dev/mapper/vg01-lv02   ext4       35G   49M   33G    1% /db2

6、删除逻辑卷

删除 lv01 逻辑卷

# 先卸载已挂载的逻辑卷
[root@localhost ~]# umount /dev/vg01/lv01
# 删除逻辑卷
[root@localhost ~]# lvremove /dev/vg01/lv01 
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
  Logical volume "lv01" successfully removed

再次查看只剩 lv02

[root@localhost ~]# 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                                                    
  lv02 vg01   -wi-ao----  34.99g

再次查看 vg01 剩余空间,多出了 5G

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
  vg01     2   1   0 wz--n-  39.99g 5.00g

二、动态在线扩容

1、卷组扩容

给卷组新添加一个物理卷,完成扩容

# 查看硬盘,sdd 为新添加的硬盘
[root@localhost ~]# 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   20G  0 disk 
└─vg01-lv02     253:2    0   35G  0 lvm  
sdc               8:32   0   20G  0 disk 
└─vg01-lv02     253:2    0   35G  0 lvm  
sdd               8:48   0   20G  0 disk 
sr0              11:0    1  4.4G  0 rom

将新硬盘直接添加到 vg01 卷组中,系统会自动将硬盘创建为物理卷

[root@localhost ~]# vgextend vg01 /dev/sdd 
  Physical volume "/dev/sdd" successfully created.
  Volume group "vg01" successfully extended

查看扩容后的 vg01 容量

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n- <19.00g      0 
  vg01     3   1   0 wz--n- <59.99g <25.00g

2、逻辑卷扩容

lv02 逻辑卷扩容至 50G,它会自动从 vg01 获取容量,所以要保证卷组容量充足。

[root@localhost ~]# lvextend /dev/vg01/lv02 --size 50G
  Size of logical volume vg01/lv02 changed from 34.99 GiB (8958 extents) to 50.00 GiB (12800 extents).
  Logical volume vg01/lv02 successfully resized.

重新同步文件系统

[root@localhost ~]# resize2fs /dev/vg01/lv02 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv02 is mounted on /db2; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 7
The filesystem on /dev/vg01/lv02 is now 13107200 blocks long.  

查看扩容后的目录

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   12M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.3G   16G    8% /
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    378M     0  378M    0% /run/user/0
/dev/mapper/vg01-lv02     50G   52M   47G    1% /db2

三、逻辑卷条带化

逻辑卷除了动态扩容的优点,还有一个功能就是可以实现条带化读写,加快读写速度。这样的缺点就是,任何一个物理卷出现故障,数据都会丢失。
在这里插入图片描述

1、创建条带化逻辑卷

# 查看当前的物理卷
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb   vg01   lvm2 a--  <20.00g  5.00g
  /dev/sdc   vg01   lvm2 a--  <20.00g     0 
  /dev/sdd   vg01   lvm2 a--  <20.00g <4.99g
# 从 sdb sdd 两个物理卷创建一个 lv03 的条带化逻辑卷,容量 2G
[root@localhost ~]# lvcreate -n lv03 -L 2G -i 2 vg01 /dev/sdb /dev/sdd
  Using default stripesize 64.00 KiB.
WARNING: ext4 signature detected on /dev/vg01/lv03 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/vg01/lv03.
  Logical volume "lv03" created.

2、挂载到目录

# 格式化 lv03
[root@localhost ~]# mkfs.ext4 /dev/vg01/lv03
# 挂载到 db3
[root@localhost ~]# mkdir /db3
[root@localhost ~]# mount /dev/vg01/lv03 /db3/

3、写入测试

  • 写入条带化逻辑卷
[root@localhost ~]# time dd if=/dev/zero of=/db3/file3 bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,8.86603 秒,121 MB/秒

real	0m8.869s
user	0m0.000s
sys	0m8.865s
  • 写入常规逻辑卷
[root@localhost ~]# time dd if=/dev/zero of=/db2/file2 bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,9.04438 秒,119 MB/秒

real	0m9.047s
user	0m0.000s
sys	0m9.042s

四、逻辑卷快照

1、创建快照

:逻辑卷的快照也是存储在相同的卷组中,要保证卷组有足够的空间来存放快照。

# 给 lv02 创建一个名为 lv02_snap 的快照,容量 100M,此容量为真实设备的允许数据变化量。
[root@localhost ~]# lvcreate -n lv02_snap -L 100M -s /dev/vg01/lv02 
  Logical volume "lv02_snap" created.

查看逻辑卷,可以看到 lv02_snap 逻辑卷,属于 vg01 卷组,容量为 100M,源是 lv02,使用量为 0.03%

[root@localhost ~]# 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                                                    
  lv02      vg01   owi-aos---  50.00g                                                    
  lv02_snap vg01   swi-a-s--- 100.00m      lv02   0.03                                   
  lv03      vg01   -wi-ao----   2.00g

2、还原快照

直接将快照逻辑卷挂载到 /snap 目录,即可还原快照

[root@localhost ~]# mkdir /snap
[root@localhost ~]# mount /dev/vg01/lv02_snap /snap/

查看挂载后的目录

[root@localhost ~]# df -Th
文件系统                   类型      容量  已用  可用 已用% 挂载点
devtmpfs                   devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                      tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                      tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                      tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root    xfs        17G  1.3G   16G    8% /
/dev/sda1                  xfs      1014M  151M  864M   15% /boot
tmpfs                      tmpfs     378M     0  378M    0% /run/user/0
/dev/mapper/vg01-lv02      ext4       50G  1.4G   46G    3% /db2
/dev/mapper/vg01-lv03      ext4      2.0G  1.3G  528M   72% /db3
/dev/mapper/vg01-lv02_snap ext4       50G  1.4G   46G    3% /snap

db02 写入 50M 的数据测试

[root@localhost ~]# dd if=/dev/zero of=/db2/bigfile2 bs=1M count=50

查看快照的使用量,已经增加了 50%

[root@localhost ~]# 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                                                    
  lv02      vg01   owi-aos---  50.00g                                                    
  lv02_snap vg01   swi-aos--- 100.00m      lv02   50.29                                  
  lv03      vg01   -wi-ao----   2.00g

那么,如果快照的使用量已经满了怎么办呢,可以测试一下,再给 db2 目录写入一个文件

[root@localhost ~]# dd if=/dev/zero of=/db2/bigfile3 bs=1M count=100

查看快照的使用量,已经 100%

[root@localhost ~]# 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                                                    
  lv02      vg01   owi-aos---  50.00g                                                    
  lv02_snap vg01   swi-I-s--- 100.00m      lv02   100.00                                 
  lv03      vg01   -wi-ao----   2.00g 

查看挂载的目录,发现 lv02_snap 逻辑卷已经自动卸载了

[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.3G   16G    8% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/mapper/vg01-lv02   ext4       50G  1.6G   46G    4% /db2
/dev/mapper/vg01-lv03   ext4      2.0G  1.3G  528M   72% /db3

重新挂载也会失败

[root@localhost ~]# mount /dev/vg01/lv02_snap /snap/
mount: /dev/mapper/vg01-lv02_snap:不能读超级块

解决方案:快照自动扩容!!!

3、快照自动扩容

修改配置文件 /etc/lvm/lvm.conf,找到 snapshot 配置项

# 当容量达到 70% 时
snapshot_autoextend_threshold = 70
# 自动扩容 20% 的容量
snapshot_autoextend_percent = 20

验证

删除 lv02_snap

[root@localhost ~]# lvremove /dev/vg01/lv02_snap 
Do you really want to remove active logical volume vg01/lv02_snap? [y/n]: y
  Logical volume "lv02_snap" successfully removed

重新给 lv02 创建一个名为 lv02_snap_auto 的快照,容量 100M

[root@localhost ~]# lvcreate -n lv02_snap_auto -L 100M -s /dev/vg01/lv02 
  Logical volume "lv02_snap_auto" created.

查看快照

[root@localhost ~]# 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                                                    
  lv02           vg01   owi-aos---  50.00g                                                    
  lv02_snap_auto vg01   swi-a-s--- 100.00m      lv02   0.01                                   
  lv03           vg01   -wi-ao----   2.00g 

将快照逻辑卷挂载到 /snap 目录

[root@localhost ~]# mount /dev/vg01/lv02_snap_auto /snap/

db02 写入 80M 的数据测试

[root@localhost ~]# dd if=/dev/zero of=/db2/bigfile4 bs=1M count=80

查看快照已经自动扩容了 20%

[root@localhost ~]# 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                                                    
  lv02           vg01   owi-aos---  50.00g                                                    
  lv02_snap_auto vg01   swi-aos--- 120.00m      lv02   67.03                                  
  lv03           vg01   -wi-ao----   2.00g

磁盘 RAID

RAID 就是一种由多块廉价磁盘构成的冗余阵列,在操作系统中作为一个独立的大型存储设备出现。
RAID 可以充分发挥出多块硬盘的优势,可以提升磁盘速度,增大容量,提供容错功能,确保数据安全,易于管理。

一、常见的 RAID 级别

1、RAID 0

在这里插入图片描述

  • 至少需要两块硬盘
  • 数据条带化分布到磁盘,高的读写性能, 100% 空间使用率
  • 数据没有冗余策略,一块硬盘故障,数据无法恢复
  • 应用场景:对读写性能要求高,但对数据安全可靠性要求不高的场景

2、RAID 1

在这里插入图片描述

  • 至少需要两块磁盘
  • 数据镜像备份写到另一块磁盘上,可靠性高,磁盘利用率为 50%
  • 一块磁盘故障,不会影响数据的读写
  • 应用场景:对数据安全可靠要求高的场景

3、RAID 5

在这里插入图片描述

  • 至少需要三块硬盘
  • 数据条带化存储在磁盘,读写性能好,磁盘利用率为 (n-1)/n
  • 以奇偶校验位(p)做数据冗余,可允许一块硬盘故障
  • 一块磁盘故障,可通过其他数据块和对应的校验数据重构损坏的数据(消耗性能)
  • 适用大部分场景

4、RAID 6

在这里插入图片描述

  • 至少需要四块硬盘
  • 数据条带化存储,读写性能好容错能力强
  • 采用双重校验方式保证数据的安全性
  • 可以允许两块硬盘故障
  • 适用于对数据安全要求非常高的场景

5、RAID 1 0

  • RAID 1 0 是 RAID 1 和 RAID 0 的组合
  • 两组 RAID 1 ,组合成 RAID 0
  • 至少需要四块硬盘
  • 兼顾条带化读写(RAID 0),与数据冗余(RAID 1)
  • 磁盘利用率 50%

Guess you like

Origin blog.csdn.net/qq_39680564/article/details/120968844