postgresql|数据库|LVM快照热备冷恢复数据库的思考

一,

LVM快照备份的意义

数据库备份一直是数据库运维工作中的重点,一个完备的备份不仅仅是仅有后悔药的功能,还可能有迁移数据库的作用。

那么,数据库备份系统我们需要的,也就是看重的是四个点,甚至更多的点

第一个是备份的范围准确,例如,物理备份数据库文件,但数据库运行的几十个G日志也跟着备份出来了,这无疑是增加了备份的负担,毕竟无效的数据,没谁愿意保存管理,

第二个是备份的速度,例如某个比较大的数据库,数据量达到几个T,利用SQL转储方式备份一两天才能完成,这无疑是错误的,毕竟,除了备份,我们还需要使用数据库,而转储可能会有锁表的情况发生,导致停库的时间不可计划,进而数据库部分或者全部不可使用。那么,调整备份策略,使用其它的工具提高备份的效率,无疑会减少停库锁表这样的风险了。

第三个是备份后的恢复还原操作的复杂性,例如,某个数据库我们顺利完成了备份,但恢复还原的操作非常复杂,有着各种的先后顺序,一步错就可能导致前功尽弃或者毁掉整个数据库,那么,无疑的,这种备份是失败的

第四个是备份后的恢复还原效率,例如,某种数据库备份后,由于数据库是非常庞大的,恢复还原还是需要十几个小时,甚至几天,这无疑是不可接受的备份还原,我们应该认为这是一种错误的备份恢复策略。

而lvm快照备份和还原系统是可以满足我们的备份效率的,还原效率可能是有待商榷的,毕竟lvm快照备份的根本底层是建立在操作系统的文件系统下,但,据我估计,还原只是取决于硬盘的读写速度而已了,因为,lvm快照基本是没有什么逻辑的,类似于dd命令,只是要求IO读写速度而已。

从备份范围来说,LVM快照基本是整分区备份,当然也就是全库备份,目前没有什么增量备份策略,需要注意到的是,lvm快照恢复是需要数据库停机,也就是冷恢复的,对于冷恢复方式比较介意的同学就不需要看下面的内容了(冷恢复,指的是恢复还原的时候,数据库完全停止,lvm快照的恢复方式决定了在恢复的时候必须要卸载源分区,数据库自然就停掉了)

下面将在VMware里模拟一个在虚拟机内运行的postgresql数据库,利用lvm快照备份和还原的例子

二,

lvm快照使用前的一些基本概念

1,什么是LVM

LVM是 Logical Volume Manager(逻辑卷管理)的简写,该技术使得动态管理磁盘成为一个可能

那么,何谓动态磁盘管理?

我们知道操作系统有运行和关闭两种状态,动态的意思就是操作系统一直是运行状态,在对磁盘做扩缩容等等调整的时候,不会影响操作系统的运行,也不影响硬盘内的每个分区的数据,反之,静态的磁盘管理就是跑到机箱跟前,关闭操作系统,然后把某个硬盘拿掉,或者直接在操作系统内把某个分区格式化掉,数据清理掉,这无疑的操作效率是低效的,不安全的。

2,

根分区和其它分区的概念

这个不需要我多说了,Linux的一切都要从 /  也就是根开始,一个硬盘可以有四个主分区以及N个逻辑分区,而根分区毫无疑问是不可以格式化的,而其它分区,比如主分区,逻辑分区是可以格式化的,如果这些其它分区内的数据你确定不需要的时候。因此,有的时候,硬件运维工程师会直接一个硬盘只划分一个根分区,这个时候安装的Linux是仍然可以运行的。简单的理解根分区就好像Windows的C盘,也就是当你打开了一个Windows的电脑,虽然你可以格式化C盘,但无疑的,操作系统会报废(Windows低版本好像是可以)。

3,

新磁盘的挂载方式

有四种挂载方式,第一种,loop整盘挂载,也就是直接按自己的需求格式化后,创建一个挂载点挂载,这种方式是可以随时取消挂载的。卸载的时候,新磁盘的内容不会丢失,但分区无法动态扩展

第二种,新添加的磁盘作为根节点的扩容,这种方式无法取消挂载,新磁盘必须是lvm格式的,根节点同样是lvm格式的,可以在添加新磁盘扩展,但若其中一个硬盘损坏,整个服务器将不可用。

第三种,新添加的磁盘单独lvm,不作为任何其它的lvm扩容,这种方式是可以随时取消挂载的,前提是卸载相关的pv,vg,lv,卸载的时候,新磁盘的内容必定会丢失,分区可以动态扩展,新磁盘损坏不影响服务器运行

第四种,新添加的磁盘通过fdisk或者parted,划分普通分区,然后根据需要格式化为特定文件系统,例如,xfs,ext4等等,然后按自己需求挂载到指定挂载点。新磁盘的内容不会丢失,但分区无法动态扩展

那么,本文将只讨论第二种和第三种lvm形式的磁盘扩展管理

三,

新添加的磁盘作为根节点的扩容示例

计划使用VMware虚拟机进行演示,该VMware虚拟机最开始是是一个磁盘,lvm分区格式,后续添加一个新磁盘,新磁盘给根分区提供扩容空间。

两个磁盘,一个是100G,新磁盘是20G根分区扩容前:

[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 

可以看到,sdb没有任何使用,sda有20G没有使用,这个没有使用的20G我们暂且不管,主要使用sdb这个新增磁盘以lvm格式加入到sda2也就是根节点

根节点扩容,以sdb这个新磁盘为扩展源:

  • A,先使用fdisk工具,将sdb磁盘转化为lvm格式

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

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

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xd6585e20.

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd6585e20

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
  • B,查看磁盘状态,发现sdb1还没有加入centos-root:

[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
sr0              11:0    1  4.2G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
  • C,将sdb1加入centos-root :

####注:先查询现有的vg是哪些,确定库容对象,vgs命令查询出来,扩容对象是centos,该vg现在只有一个pv

####注:第二个命令可以理解为组合命令,创建PV的同时扩容VG

[root@centos5 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   1   0 wz--n- 80.00g    0 

[root@centos5 ~]# vgextend centos /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
  Volume group "centos" successfully extended
  • D,观察磁盘状态,可以看到名为centos的已扩展了一个PV,新磁盘sdb1也可以看到了

[root@centos5 ~]# vgs
  VG     #PV #LV #SN Attr   VSize    VFree
  centos   2   1   0 wz--n- <100.00g    0 

[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
sr0              11:0    1  4.2G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
/dev/sdb1: UUID="z2Rght-nYfZ-FxXe-Vc7H-WGoY-Raxk-JzTNa0" TYPE="LVM2_member" 
  • E开始扩容根分区:

####注:我这里偷懒了,懒得算什么pe的,直接让命令告诉我多少个pe,可以看到是5119个,一个pe是4M,第二个命令输出扩容结果,可以看到扩容成功

[root@centos5 ~]# lvextend -L +20G /dev/centos/root 
  Insufficient free space: 5120 extents needed, but only 5119 available
[root@centos5 ~]# lvextend -l +5119  /dev/centos/root 
  Size of logical volume centos/root changed from 80.00 GiB (20480 extents) to <100.00 GiB (25599 extents).
  Logical volume centos/root successfully resized.
  •  F,保存更改,同步磁盘更改到df命令:

####注,上面的blkid命令可以看到根分区是xfs格式的,因此,同步命令使用的是xfs_growfs 

[root@centos5 ~]# xfs_growfs /dev/centos/root 
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=5242880 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=20971520, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=10240, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 20971520 to 26213376
  •  G,检查是否扩容成功:

#####注,可以看到,扩容完美完成,一切都没有问题

[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0  100G  0 lvm  /
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
  └─centos-root 253:0    0  100G  0 lvm  /
sr0              11:0    1  4.2G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
/dev/sdb1: UUID="z2Rght-nYfZ-FxXe-Vc7H-WGoY-Raxk-JzTNa0" TYPE="LVM2_member" 
[root@centos5 ~]# df -ah
Filesystem               Size  Used Avail Use% Mounted on
sysfs                       0     0     0    - /sys
proc                        0     0     0    - /proc
devtmpfs                 2.0G     0  2.0G   0% /dev
securityfs                  0     0     0    - /sys/kernel/security
tmpfs                    2.0G     0  2.0G   0% /dev/shm
devpts                      0     0     0    - /dev/pts
tmpfs                    2.0G  9.0M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
cgroup                      0     0     0    - /sys/fs/cgroup/systemd
pstore                      0     0     0    - /sys/fs/pstore
cgroup                      0     0     0    - /sys/fs/cgroup/memory
cgroup                      0     0     0    - /sys/fs/cgroup/net_cls,net_prio
cgroup                      0     0     0    - /sys/fs/cgroup/hugetlb
cgroup                      0     0     0    - /sys/fs/cgroup/pids
cgroup                      0     0     0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                      0     0     0    - /sys/fs/cgroup/blkio
cgroup                      0     0     0    - /sys/fs/cgroup/perf_event
cgroup                      0     0     0    - /sys/fs/cgroup/devices
cgroup                      0     0     0    - /sys/fs/cgroup/freezer
cgroup                      0     0     0    - /sys/fs/cgroup/cpuset
configfs                    0     0     0    - /sys/kernel/config
/dev/mapper/centos-root  100G  1.4G   99G   2% /
systemd-1                   -     -     -    - /proc/sys/fs/binfmt_misc
mqueue                      0     0     0    - /dev/mqueue
hugetlbfs                   0     0     0    - /dev/hugepages
debugfs                     0     0     0    - /sys/kernel/debug
/dev/sr0                 4.3G  4.3G     0 100% /mnt
/dev/sda1               1014M  136M  879M  14% /boot
tmpfs                    396M     0  396M   0% /run/user/0
binfmt_misc                 0     0     0    - /proc/sys/fs/binfmt_misc

扩容后的总结

  • 优点:根分区可以持续扩展,当容量快耗尽的时候,可以增加新硬盘,按上面的方法继续的动态扩容
  • 缺点:无法创建lvm快照,因为lvm快照是对根分区快照,无法使用,强行使用的话,必须到服务器跟前进入应急模式后再使用快照,非常的危险,麻烦,其次,如果sdb磁盘损坏,无法卸载此磁盘,因为是根分区扩展形式,强行卸载的话,整个服务器将无法开机,总之,我们需要考虑新加磁盘的质量,例如,某个服务器根节点扩容了3 次,每次使用一个新磁盘,如果期间某个磁盘损坏,整个服务器的数据都将损坏

下面模拟MBR分区信息被覆盖导致磁盘故障的情形

###注:抹去sdb1的MBR信息

[root@centos5 ~]# dd if=/dev/zero of=/dev/sdb1 bs=446 count=1
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.000108516 s, 4.1 MB/s

此时,服务器已经无法读写数据,下面模拟的是写数据,可以看到写了334B数据就停止了,当然,重启服务器自然是进入紧急救援模式了,如何修复MBR本文就不在此讨论了 

[root@centos5 /]# dd if=/dev/random of=/testfile bs=100M count=200
dd: warning: partial read (93 bytes); suggest iflag=fullblock
^X^C0+41 records in
0+41 records out
334 bytes (334 B) copied, 1651.13 s, 0.0 kB/s
[root@centos5 /]# ls -al testfile 
-rw-r--r-- 1 root root 334 Dec 23 06:55 testfile

四,

第三种挂载方式的演示

挂载前的磁盘信息:
[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
sr0              11:0    1  4.4G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2019-09-11-18-50-31-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
新磁盘sdb利用fdisk转化成lvm格式:
[root@centos5 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

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

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x2cb32d47.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
转化后新增的sdb1信息:

可以看到sdb1转化成了LVM2_member了

[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
sr0              11:0    1  4.4G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2019-09-11-18-50-31-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
/dev/sdb1: UUID="uj3eg7-RN9e-u7Ev-OQqz-1F5b-AC5H-5Q4Dax" TYPE="LVM2_member" 
创建一个新的vg,名字就叫vg 
[root@centos5 ~]# vgcreate vg /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
  Volume group "vg" successfully created
创建一个全新的lv,名字叫testlv,注意,这里只使用sdb1的10G,最后一个vg 是上面vgs查询出来的名字 
[root@centos5 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   1   0 wz--n-  80.00g      0 
  vg       1   0   0 wz--n- <20.00g <20.00g

[root@centos5 ~]# lvcreate -n testlv -L 10G vg
  Logical volume "testlv" created.
lv创建完成后,查看sdb1的磁盘信息 
[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
  └─vg-testlv   253:1    0   10G  0 lvm  
sr0              11:0    1  4.4G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2019-09-11-18-50-31-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
/dev/sdb1: UUID="uj3eg7-RN9e-u7Ev-OQqz-1F5b-AC5H-5Q4Dax" TYPE="LVM2_member" 
格式化lv以准备使用,这里使用的是xfs文件系统 
[root@centos5 ~]# mkfs.xfs /dev/vg
vg/          vga_arbiter  
[root@centos5 ~]# mkfs.xfs /dev/vg/testlv 
meta-data=/dev/vg/testlv         isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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
创建挂载点,手动挂载,挂载完毕后查看磁盘信息,blkid可以看到新增了 /dev/mapper/vg-testlv,文件系统格式为xfs
[root@centos5 ~]# mkdir /data
[root@centos5 ~]# mount -t xfs /dev/vg/testlv /data/
[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
  └─vg-testlv   253:1    0   10G  0 lvm  /data
sr0              11:0    1  4.4G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2019-09-11-18-50-31-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
/dev/sdb1: UUID="uj3eg7-RN9e-u7Ev-OQqz-1F5b-AC5H-5Q4Dax" TYPE="LVM2_member" 
/dev/mapper/vg-testlv: UUID="a9506987-a65d-40a7-821a-638f3b3e2a22" TYPE="xfs" 
df命令可以看到挂载信息(最后一行),是符合我们的预期的,vg空余了10G,下面在从此vg里划分5G出来,扩展/dev/vg/testlv 这个lv,如果vgs查询,看不到剩余,将不可以库容
[root@centos5 ~]# df -ah
Filesystem               Size  Used Avail Use% Mounted on
sysfs                       0     0     0    - /sys
proc                        0     0     0    - /proc
devtmpfs                 2.0G     0  2.0G   0% /dev
securityfs                  0     0     0    - /sys/kernel/security
tmpfs                    2.0G     0  2.0G   0% /dev/shm
devpts                      0     0     0    - /dev/pts
tmpfs                    2.0G  9.0M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
cgroup                      0     0     0    - /sys/fs/cgroup/systemd
pstore                      0     0     0    - /sys/fs/pstore
cgroup                      0     0     0    - /sys/fs/cgroup/memory
cgroup                      0     0     0    - /sys/fs/cgroup/hugetlb
cgroup                      0     0     0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                      0     0     0    - /sys/fs/cgroup/pids
cgroup                      0     0     0    - /sys/fs/cgroup/cpuset
cgroup                      0     0     0    - /sys/fs/cgroup/net_cls,net_prio
cgroup                      0     0     0    - /sys/fs/cgroup/devices
cgroup                      0     0     0    - /sys/fs/cgroup/freezer
cgroup                      0     0     0    - /sys/fs/cgroup/blkio
cgroup                      0     0     0    - /sys/fs/cgroup/perf_event
configfs                    0     0     0    - /sys/kernel/config
/dev/mapper/centos-root   80G  1.4G   79G   2% /
systemd-1                   0     0     0    - /proc/sys/fs/binfmt_misc
mqueue                      0     0     0    - /dev/mqueue
debugfs                     0     0     0    - /sys/kernel/debug
hugetlbfs                   0     0     0    - /dev/hugepages
/dev/sr0                 4.4G  4.4G     0 100% /mnt
/dev/sda1               1014M  136M  879M  14% /boot
tmpfs                    396M     0  396M   0% /run/user/0
/dev/mapper/vg-testlv     10G   33M   10G   1% /data
[root@centos5 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   1   0 wz--n-  80.00g      0 
  vg       1   1   0 wz--n- <20.00g <10.00g
 扩容/dev/vg/testlv 并同步信息到df命令,最终查看sdb1的磁盘信息
[root@centos5 ~]# lvextend -L +5G /dev/vg/testlv 
  Size of logical volume vg/testlv changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume vg/testlv successfully resized.
[root@centos5 ~]# xfs_growfs /dev/vg/testlv 
meta-data=/dev/mapper/vg-testlv  isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621440 to 3932160
[root@centos5 ~]# df -ah
Filesystem               Size  Used Avail Use% Mounted on
sysfs                       0     0     0    - /sys
proc                        0     0     0    - /proc
devtmpfs                 2.0G     0  2.0G   0% /dev
securityfs                  0     0     0    - /sys/kernel/security
tmpfs                    2.0G     0  2.0G   0% /dev/shm
devpts                      0     0     0    - /dev/pts
tmpfs                    2.0G  9.0M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
cgroup                      0     0     0    - /sys/fs/cgroup/systemd
pstore                      0     0     0    - /sys/fs/pstore
cgroup                      0     0     0    - /sys/fs/cgroup/memory
cgroup                      0     0     0    - /sys/fs/cgroup/hugetlb
cgroup                      0     0     0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                      0     0     0    - /sys/fs/cgroup/pids
cgroup                      0     0     0    - /sys/fs/cgroup/cpuset
cgroup                      0     0     0    - /sys/fs/cgroup/net_cls,net_prio
cgroup                      0     0     0    - /sys/fs/cgroup/devices
cgroup                      0     0     0    - /sys/fs/cgroup/freezer
cgroup                      0     0     0    - /sys/fs/cgroup/blkio
cgroup                      0     0     0    - /sys/fs/cgroup/perf_event
configfs                    0     0     0    - /sys/kernel/config
/dev/mapper/centos-root   80G  1.4G   79G   2% /
systemd-1                   -     -     -    - /proc/sys/fs/binfmt_misc
mqueue                      0     0     0    - /dev/mqueue
debugfs                     0     0     0    - /sys/kernel/debug
hugetlbfs                   0     0     0    - /dev/hugepages
/dev/sr0                 4.4G  4.4G     0 100% /mnt
/dev/sda1               1014M  136M  879M  14% /boot
tmpfs                    396M     0  396M   0% /run/user/0
/dev/mapper/vg-testlv     15G   33M   15G   1% /data
binfmt_misc                 0     0     0    - /proc/sys/fs/binfmt_misc
[root@centos5 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   80G  0 part 
  └─centos-root 253:0    0   80G  0 lvm  /
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
  └─vg-testlv   253:1    0   15G  0 lvm  /data
sr0              11:0    1  4.4G  0 rom  /mnt
[root@centos5 ~]# blkid
/dev/sr0: UUID="2019-09-11-18-50-31-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="326cd1a2-713a-4a37-85d9-8f1606083297" TYPE="xfs" 
/dev/sda2: UUID="RoyB4E-tuJx-OSAn-uGvH-YOiH-rerF-51wkyI" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="81ad8aed-bf72-4bd9-b9f4-8743e1dc074d" TYPE="xfs" 
/dev/sdb1: UUID="uj3eg7-RN9e-u7Ev-OQqz-1F5b-AC5H-5Q4Dax" TYPE="LVM2_member" 
/dev/mapper/vg-testlv: UUID="a9506987-a65d-40a7-821a-638f3b3e2a22" TYPE="xfs" 

小结:

此种方式可以看到是vgcreate和lvcreate,sdb磁盘如果损坏,并不会影响服务器整体的运行,卸载掉 /data 这个挂载点就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/265313.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金蝶云星空打开应用报错‘D:\WorkSpace\XXXX\XXXX_k3Cloud‘ is already locked.

文章目录 金蝶云星空打开应用报错D:\WorkSpace\XXXX\XXXX_k3Cloud is already locked.报错界面报错内容原因分析解决方案工作空间下清除项目Clean up应用下-清除SVN锁定 重新打开应用就可以了 金蝶云星空打开应用报错’D:\WorkSpace\XXXX\XXXX_k3Cloud’ is already locked. 报…

IMX6Q平台下双通道LVDS屏幕linux驱动设备树调试笔记

一、 LVDS简单理解 LVDS粗略了解 LVDS Low-Voltage Differential Signaling 低电压差分信号&#xff0c;属于平衡传输信号。这种技术的核心是采用极低的电压摆幅高速差动传输数据&#xff0c;从而有以下特点&#xff1a;低功耗—低误码率—低串扰—低抖动—低辐射 良好的信号…

【linux】用grep或者pgrep查找进程ID

一、用grep ps aux|grep 字符串|awk {print $2} 像上面这样运行&#xff0c;还会同时显示grep的进程ID。 需要再添加grep的反向查找命令&#xff0c;即查找不含有 "grep" 字段的行&#xff1a;grep -v grep。 ps aux | grep 字符串 | grep -v grep | awk {print …

2015年第四届数学建模国际赛小美赛A题飞机上的细长座椅解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 A题 飞机上的细长座椅 原题再现&#xff1a; 航空公司座位是指在旅途中乘客可以乘坐的座位。一些航空公司现在推出了新的经济舱“超薄”座位。这些座椅除了重量较轻外&#xff0c;理论上还允许航空公司在不显著影响乘客舒适度的情况下增加运…

【Linux笔记】文件和目录操作

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 命令 ls (List): pwd (Print Working Directory): cp (Copy): mv (Move): rm (Remove): 结语 我的其他博客 前言 学习Linux命令…

JavaOOP篇----第十三篇

系列文章目录 文章目录 系列文章目录前言一、普通类与抽象类有什么区别?二、什么是接口?为什么需要接口?三、接口有什么特点?四、抽象类和接口的区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

在Windows11下安装完Ubuntu20.04双系统后屏幕亮度无法调节的问题

网络中常用的解决方式 第一种 sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt-get update sudo apt-get install brightness-controller-simple ubuntu20.04屏幕亮度无法调节&#xff08;亮度条调节无效&#xff09;的简单靠谱解决方案及踩坑历程 …

核心订单链路兜底方案之限流熔断降级实战

需求场景 对于很多电商系统而言&#xff0c;在诸如双十一这样的大流量的迅猛冲击下&#xff0c;都曾经或多或少发生过宕机的情况。当一个系统面临持续的大流量时&#xff0c;它其实很难单靠自身调整来恢复状态&#xff0c;你必须等待流量自然下降或者人为地把流量切走才行&…

Linux文件操作命令@touch、cat、more、cp、mv、rm

目录 命令touch语法形式作用 命令cat语法形式作用 命令more语法形式作用 命令cp语法形式作用复制文件复制文件夹 命令mv语法形式作用移动文件移动文件夹情况三 命令rm语法形式作用删除文件删除文件夹-f 选项通配符 * 总结 命令touch 语法形式 touch Linux路径 》touch命令无…

使用Guava轻松创建和管理不可变集合

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天&#xff0c;我们来聊聊一个在Java编程里超有用的话题&#xff1a;使用Guava创建和管理不可变集合。首先&#xff0c;咱们得明白&#xff0c;什么是不可变集合。简单来说&#xff0c;不可变集合就是一旦创建就不能被修…

STL体系结构概述

文章目录 STL是什么&#xff1f;STL的六大组件STL的实现版本额外补充一、容器范围区间二、容器结构与分类序列式容器关联容器有序关联容器不定序关联容器 参考 本文将是STL系列的第一篇文章&#xff0c;主要参考《STL源码剖析》&#xff0c;辅以网络博文&#xff0c;不定时更新…

DevC++ easyx实现图片拖动,一种悬浮窗实现原理与完整代码

翻出来之前写的代码&#xff0c; EasyxDevC开发地图编辑和游戏编辑代码工程文件附注释_哔哩哔哩_bilibili 每次把代码备份下来&#xff0c;等着有一天能够复用代码&#xff0c;产生新的价值。 结果最近这几天才来回顾记录emm “这是怎么搓出来的&#xff1f;”从10行代码到…

代码审查工具FishEye详细使用教程

1. Git代码仓库设置 1、登录并进入到FishEye主页面&#xff0c;点击Repositories进入仓库管理页面&#xff0c;如下图&#xff1a; 2、填写仓库信息&#xff0c;如下图&#xff1a; 3、填写Git地址 http://gitAccount:gitPwd118.24.231.166:8080/git/git/iot-lvdao/iot-dhcc.…

【小黑嵌入式系统第十二课】μC/OS-III程序设计基础(二)——系统函数使用场合、时间管理、临界区管理、使用规则、互斥信号量

上一课&#xff1a; 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础&#xff08;一&#xff09;——任务设计、任务管理&#xff08;创建&基本状态&内部任务&#xff09;、任务调度、系统函数 文章目录 一、系统函数使用场合1.1 时间管理1.1.1 控制任务的执行周期1…

自动生成数控加工的轨迹刀具轨迹阿基米德螺旋线(3D)

文章目录 1. 阿基米德螺旋线2. 生成步骤目标: 基于点云自动生成阿基米德螺旋线轨迹点 针对的是半球形模型效果 1. 阿基米德螺旋线 阿基米德螺旋线(Archimedean spiral)是一种数学曲线,由古希腊数学家阿基米德(Archimedes)在公元前225年左右首次研究和描述。这条曲线的方…

如何实现酷狗音乐pc页面点击播放时,打开多个歌曲播放时,始终在一个播放页面,(标签页的通讯)

大致有两种思路&#xff0c; 一种是通过wind.open()方法传第二个参数&#xff0c; A页面&#xff1a; //点击跳转播放页函数function toPlayPage(){window.open(path/xxxx/xxxx?name音乐名,music)//第二个参数写一个定值&#xff0c;代表跳转页面都为music标签页&#xff0…

计算机服务器中了halo勒索病毒如何解密,halo勒索病毒解密数据恢复

计算机技术的不断发展&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但也为网络安全埋下隐患&#xff0c;网络上的勒索病毒种类也在不断增加&#xff0c;给企业的数据安全带来了严重威胁。近日&#xff0c;云天数据恢复中心接到许多企业的求助&#xff0c;企业的计算…

Unity3D移动端实现摇一摇功能

手机摇一摇功能在平时项目开发中是很常见的需求&#xff0c;利用Unity的重力感应可以很方便的实现该功能。 Unity简化了重力感应的开发&#xff0c; 通过访问Input.acceleration属性&#xff0c;取回加速度传感器的值。首先我们看一下重力传感器的方向问题。Unity3D中重量的取…

【内存泄漏】内存泄漏及常见的内存泄漏检测工具介绍

内存泄漏介绍 什么是内存泄漏 内存泄漏是指程序分配了一块内存&#xff08;通常是动态分配的堆内存&#xff09;&#xff0c;但在不再需要这块内存的情况下未将其释放。内存泄漏会导致程序浪费系统内存资源&#xff0c;持续的内存泄漏还导致系统内存的逐渐耗尽&#xff0c;最…

【Linux】进程周边007之进程控制

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.进程创建 2.进程终止 2.…