核心内容摘要
探寻“秘”的万千气象:从未知到无限的奇妙旅程
提示本文原创作品良心制作干货为主简洁清晰一看就会文章目录
磁盘基础知识
1 磁盘种类
2 磁盘命名
3 磁盘分区方式
传统磁盘分区
1 添加磁盘
2 制作分区
2.
1 MBR分区
2.
2 GPT分区
3 创建文件系统格式化
4 挂载
逻辑卷LVM
1 什么是LVM
2 创建逻辑卷
3.
1 添加磁盘
3.
2 创建pv
3.
3 创建vg
3.
4 创建lv
3.
5 创建文件系统
3.
6 挂载
2 逻辑卷扩容
3.
1 vg有剩余空间
3.
2 vg没剩余空间
磁盘基础知识
1 磁盘种类磁盘主要分为机械硬盘HDD和固态硬盘SSD两类固态硬盘的读写速度整体远优于机械硬盘
2 磁盘命名# 物理硬盘 /dev/sd[a-z] #第一块盘叫sda 第二块sdb第三块sdc.....rootubuntu:~# ls /dev/sd*/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 如果是KVM虚拟化: /dev/vd[a-z]半虚拟化驱动 /dev/sd[a-z]全虚拟化驱动
3 磁盘分区方式磁盘分区方式分为两种MBR和GPTMBR分区主引导扇区基于MSDOS分区表实现分区仅支持容量2TB的磁盘专用分区工具为fdisk单块硬盘最多可创建4个主分区也可按「3主分区1扩展分区」划分扩展分区内可创建多个逻辑分区总计最多支持14个分区GPT分区无容量限制2TB和2TB的磁盘均支持常用分区工具为gdisk单块硬盘最多可创建128个主分区无需划分扩展/逻辑分区MBR与GPT分区格式互转时会导致磁盘上的所有数据全部丢失操作前需做好数据备份
传统磁盘分区传统磁盘分区需经过四步添加磁盘→创建分区→制作文件系统→挂载为什么是这种顺序添加磁盘给书桌加一个新的空抽屉柜解决书桌抽屉不够用的问题磁盘分区把新抽屉柜分成多个独立小抽屉按用途划分方便分类放东西创建文件系统给每个小抽屉制定收纳规则如书籍怎么摆、文件怎么放定好规则才好整理挂载把分好的小抽屉装到书桌的指定位置给抽屉一个可打开的入口才能正常使用
1 添加磁盘rootubuntu:~# lsblk #查看磁盘设备可以看到目前只有一个硬盘设备sdaNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop07:
0
9M1loop /snap/core20/2318 loop17:1087M1loop /snap/lxd/29351 loop27:
2
8M1loop /snap/snapd/21759 loop37:
3
1M1loop /snap/snapd/25935 loop47:
4
8M1loop /snap/core20/2686 loop57:
5
4M1loop /snap/lxd/36918 sda8:0020G0disk|-sda18:101M0part|-sda28:
2
8G0part /boot-sda38:
3
2G0part-ubuntu--vg-ubuntu--lv253:0010G0lvm / sr011:012G0rom添加磁盘这里选择你想增加磁盘的主机然后点击“添加”选中“硬盘”然后一直一下步想新增多少G的磁盘就写多少点击“下一步”然后点击“完成”这里我一共添加了两个5G的硬盘和6G的硬盘rootubuntu:~# reboot #添加磁盘后最好重启一下rootubuntu:~# lsblk #查看磁盘设备可以看到多了两个磁盘sdb和sdcNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop07:
0
9M1loop /snap/core20/2318 loop17:
1
8M1loop /snap/core20/2686 loop27:
2
4M1loop /snap/lxd/36918 loop37:3087M1loop /snap/lxd/29351 loop47:
4
8M1loop /snap/snapd/21759 loop57:
5
1M1loop /snap/snapd/25935 sda8:0020G0disk|-sda18:101M0part|-sda28:
2
8G0part /boot-sda38:
3
2G0part-ubuntu--vg-ubuntu--lv253:0010G0lvm / sdb8:1605G0disk#新增的磁盘sdc8:3206G0disk#新增的磁盘sr011:012G0rom
2 制作分区在上面我们已经添加好了磁盘接下来我们可以做分区了
2.
1 MBR分区这里我对/dev/sdb做MBR分区MBR分区的工具是fdisk#先做个主分区rootubuntu:~# fdisk /dev/sdbCommand(mforhelp): m#输m可以查看帮助文档Command(mforhelp): n Partitiontypep primary(0primary,0extended,4free)#设置主分区输入pe extended(containerforlogical partitions)#设置扩展分区输入eSelect(default p): p#我这里设置的主分区Partition number(
, default
:#
编号这里直接回车就是按默认的编号1开始First sector(
, default
:#分区开始位置建议这里直接回车不要自己填写Last sector, /-sectors or /-size{K,M,G,T,P}(
, default
: 2G#分2G给该主分区Created a new partition1oftypeLinuxand of size2GiB. Command(mforhelp): w#保存并退出The partition table has been altered. Calling ioctl()to re-read partition table. Syncing disks. rootubuntu:~# lsblk /dev/sdb #查看/dev/sdb的磁盘分区NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdb8:1605G0disk -sdb18:1702G0part#可以看到出现了/dev/sdb1大小是2G#添加扩展分区rootubuntu:~# fdisk /dev/sdbCommand(mforhelp): n#新增分区直接输nPartitiontypep primary(1primary,0extended,3free)e extended(containerforlogical partitions)Select(default p): e#设置扩展分区Partition number(
, default
:#选中分区号这里建议直接回车First sector(
, default
:#选择扩展分区起始位置建议直接回车Last sector, /-sectors or /-size{K,M,G,T,P}(
, default
: 2G#设置扩展分区为2GCreated a new partition2oftypeExtendedand of size2GiB. Command(mforhelp): w#保存并退出The partition table has been altered. Calling ioctl()to re-read partition table. Syncing disks. rootubuntu:~# lsblk /dev/sdb #查看/dev/sdb磁盘分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdb8:1605G0disk|-sdb18:1702G0part -sdb28:1801K0part#这里/dev/sdb2大小为1k是因为扩展分区里面是由逻辑分区填充的如果没有设置逻辑分区扩展分区就是个壳子之后设置逻辑分区最大的值就是2G#添加逻辑分区rootubuntu:~# fdisk /dev/sdbCommand(mforhelp): n#设置分区Partitiontypep primary(1primary,1extended,2free)#创建主分区输入Pl logical(numbered from
#创建逻辑分区输入lSelect(default p): l#由于扩展分区只能创建一个所以这里只有在创建逻辑分区Adding logical partition5#主分区和扩展分区编号为
逻辑分区只能从5开始First sector(
, default
:#逻辑分区起始位置直接回车Last sector, /-sectors or /-size{K,M,G,T,P}(
, default
: 1G#如果想把/dev/sdb2分完就直接回车我这里只分1GCreated a new partition5oftypeLinuxand of size1GiB. Command(mforhelp): w The partition table has been altered. Calling ioctl()to re-read partition table. Syncing disks. rootubuntu:~# lsblk /dev/sdbNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdb8:1605G0disk|-sdb18:1702G0part|-sdb28:1801K0part -sdb58:2101G0part#刚才创建的逻辑分区为1G
2.
2 GPT分区这里我对/dev/sdc做GPT分区GPT分区的工具是gdisk由于GPT不分主分区和扩展分区所以操作起来比MBR分区简单rootubuntu:~# gdisk /dev/sdcCommand(?forhelp): n#新增分区Partition number(
, default
:#选择分区号建议直接回车First sector(
, default
or{-}size{KMGTP}:#分区起始位置建议直接回车Last sector(
, default
or{-}size{KMGTP}: 3G#分区大小这里我分3GCurrenttypeis8300(Linux filesystem)Hex code or GUID(L to show codes, Enter
: Changedtypeof partition toLinux filesystemCommand(?forhelp): w#保存并退出The operation has completed successfully. rootubuntu:~# lsblk /dev/sdc #查看/dev/sdc的分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdc8:3206G0disk -sdc18:3303G0part
3 创建文件系统格式化目前常用的文件系统有两种ETX4Ubuntu、Debian 等系统的默认文件系统XFSRHEL7/CentOS
Rocky Linux 等系统的默认文件系统rootubuntu:~# mkfs.ext4 /dev/sdb1 #格式化成ext4格式的文件系统rootubuntu:~# mkfs.xfs /dev/sdc1 #格式化成xfs格式的文件系统
4 挂载刚才我们把/dev/sdb1和/dev/sdc1已经格式化过了现在需要把它们挂载到不同目录下rootubuntu:~# df -Th #查看磁盘挂载情况Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M
6M 387M1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext
4
8G
4G
9G37% / tmpfs tmpfs
9G
0
9G0% /dev/shm tmpfs tmpfs
0M
0
0M0% /run/lock /dev/sda2 ext
4
8G 130M
5G8% /boot tmpfs tmpfs 388M
0K 388M1% /run/user/1000 rootubuntu:~# ls /mnt/ #一般我们都会把磁盘挂载这个目录下rootubuntu:~# mkdir /mnt/sdb1rootubuntu:~# mkdir /mnt/sdc1rootubuntu:~# mount /dev/sdb1 /mnt/sdb1/ #将/dev/sdb1挂载/mnt/sdb1/rootubuntu:~# mount /dev/sdc1 /mnt/sdc1/ #将/dev/sdc1挂载/mnt/sdc1/rootubuntu:~# df -Th #查看磁盘挂载情况Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M
6M 387M1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext
4
8G
4G
9G37% / tmpfs tmpfs
9G
0
9G0% /dev/shm tmpfs tmpfs
0M
0
0M0% /run/lock /dev/sda2 ext
4
8G 130M
5G8% /boot tmpfs tmpfs 388M
0K 388M1% /run/user/1000 /dev/sdc1 xfs
0G 54M
0G2% /mnt/sdc1#新挂载的文件/dev/sdb1 ext
4
0G 28K
8G1% /mnt/sdb1#新挂载的文件至此一个磁盘的添加到正常使用就完成了接下来就可以像正常目录一样使用/mnt/sdc1或/mnt/sdb1#补充rootubuntu:~# echo 1 /mnt/sdb1/
txt #创建一个文件rootubuntu:~# cat /mnt/sdb1/
txt1rootubuntu:~# umount /dev/sdb1 #取消挂载rootubuntu:~# ls /mnt/sdb1/ #取消挂载后/mnt/sdb1/下会没有内容因为内容是在/dev/sdb1下rootubuntu:~# mount /dev/sdb1 /mnt/sdb1/ #挂载回去rootubuntu:~# ls /mnt/sdb1/
txt lostfound rootubuntu:~# cat /mnt/sdb1/
txt #显示文件1#用mount挂载的文件开机后挂载会失效我们需要在/etc/fstab中设置开机自动挂载rootubuntu:~# blkid /dev/sdb1 #查看uuid和文件系统类型/dev/sdb1:UUIDac45a645-b8c
c-a43b-c8dbcdaab172BLOCK_SIZE4096TYPEext4PARTUUIDf4a1b
rootubuntu:~#rootubuntu:~# vim /etc/fstab #开机自动挂载添加一下内容#挂载设备或UUID 挂载点 文件系统类型 文件系统属性 是否对文件系统进行磁带备份:0不备份 是否检查文件系统:1检查/dev/sdb1 /mnt/sdb1 ext4 defaults01#UUIDac45a645-b8c
c-a43b-c8dbcdaab172 /mnt/sdb1 ext4 defaults 0 1 #或者这样写/dev/sdc1 /mnt/sdc1 xfs defaults01rootubuntu:~# reboot #重启rootubuntu:~# df -ThFilesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M
6M 387M1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext
4
8G
4G
9G37% / tmpfs tmpfs
9G
0
9G0% /dev/shm tmpfs tmpfs
0M
0
0M0% /run/lock /dev/sda2 ext
4
8G 130M
5G8% /boot /dev/sdb1 ext
4
0G 28K
8G1% /mnt/sdb1#开启自动挂载/dev/sdc1 xfs
0G 54M
0G2% /mnt/sdc1#开启自动挂载tmpfs tmpfs 388M
0K 388M1% /run/user/1000 rootubuntu:~# cat /mnt/sdb1/
txt1
逻辑卷LVM
1 什么是LVMlvm概念LVM是Linux环境中对磁盘分区进行管理的一种机制是建立在硬盘和分区之上、文件系统之下的一个逻辑层可提高磁盘分区管理的灵活性前文介绍了传统磁盘分区的制作方法但其存在明显短板分区挂载后若空间耗尽无法直接扩容若需更大存储空间需重新创建大分区并挂载再迁移原有数据不仅操作繁琐还极易造成数据丢失而采用LVM逻辑卷管理则可解决该问题支持在线无缝扩容无需卸载分区、不丢失原有数据操作简单高效
2 创建逻辑卷
3.
1 添加磁盘首先准备磁盘可以是/dev/sdb这种没有分区的也可以是/dev/sdb1这种已经分区了的不会添加磁盘的可以参考
1这里不再演示rootubuntu:~# lsblk #查看磁盘设备NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop07:
0
9M1loop /snap/core20/2318 loop17:
1
8M1loop /snap/core20/2686 loop27:2087M1loop /snap/lxd/29351 loop37:
3
4M1loop /snap/lxd/36918 loop47:
4
8M1loop /snap/snapd/21759 loop57:
5
1M1loop /snap/snapd/25935 sda8:0020G0disk|-sda18:101M0part|-sda28:
2
8G0part /boot-sda38:
3
2G0part-ubuntu--vg-ubuntu--lv253:0010G0lvm / sdb8:1605G0disk#新增磁盘sdc8:3206G0disk sr011:012G0rom
3.
2 创建pvrootubuntu:~# pvcreate /dev/sdb #创建pvrootubuntu:~# pvs ##查看pvPV VG Fmt Attr PSize PFree /dev/sda3 ubuntu-vg lvm2 a--
1
22g
22g /dev/sdb lvm2 ---
00g
00g
3.
3 创建vgrootubuntu:~# vgcreate vg1 /dev/sdb #创建一个名为vg1的vgrootubuntu:~# vgsVG#PV #LV #SN Attr VSize VFreeubuntu-vg110wz--n-
1
22g
22g vg1100wz--n-
00g
00g rootubuntu:~# vgdisplay vg1 #查看vg1详细信息--- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas1Metadata Sequence No1VG Access read/write VG Status resizable MAX LV0Cur LV0Open LV0Max PV0Cur PV1Act PV1VG Size
00GiB PE Size
00MiB#一个PE为4MBTotal PE1279Alloc PE / Size0/0Free PE / Size1279/
00GiB#还有1279个PEVG UUID wQ5dGp-NtlI-keZ2-mAGA-2ueT-ZX85-hVj2gS
3.
4 创建lv-L 指定lv的大小 -n 给创建的lv起一个名字 -l 指定PE rootubuntu:~# lvcreate -L 2G -n lv1 vg1 #创建名为lv1的lvrootubuntu:~# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao----
1
00g lv1 vg1 -wi-a-----
00g rootubuntu:~# vgdisplay vg1--- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas1Metadata Sequence No2VG Access read/write VG Status resizable MAX LV0Cur LV1Open LV0Max PV0Cur PV1Act PV1VG Size
00GiB PE Size
00MiB Total PE1279Alloc PE / Size512/
00GiB Free PE / Size767/
00GiB VG UUID wQ5dGp-NtlI-keZ2-mAGA-2ueT-ZX85-hVj2gS rootubuntu:~# lvcreate -l 500 -n lv2 vg1 #用PE创建lvrootubuntu:~# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao----
1
00g lv1 vg1 -wi-a-----
00g#lv1 2Glv2 vg1 -wi-a-----
95g#lv2
95Grootubuntu:~# vgdisplay vg1--- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas1Metadata Sequence No11VG Access read/write VG Status resizable MAX LV0Cur LV2Open LV0Max PV0Cur PV1Act PV1VG Size
00GiB PE Size
00MiB Total PE1279Alloc PE / Size1012/
95GiB Free PE / Size267/
04GiB#vg1还剩267个PEVG UUID wQ5dGp-NtlI-keZ2-mAGA-2ueT-ZX85-hVj2gS rootubuntu:~# lsblk #查看磁盘分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop07:0087M1loop /snap/lxd/29351 loop17:
1
9M1loop /snap/core20/2318 loop27:
2
8M1loop /snap/snapd/21759 loop37:
3
4M1loop /snap/lxd/36918 sda8:0020G0disk|-sda18:101M0part|-sda28:
2
8G0part /boot-sda38:
3
2G0part-ubuntu--vg-ubuntu--lv253:0010G0lvm / sdb8:1605G0disk|-vg1-lv1253:102G0lvm -vg1-lv2253:202G0lvm sdc8:3206G0disk sr011:012G0rom
3.
5 创建文件系统rootubuntu:~# mkfs.ext4 /dev/vg1/lv1 #制作成ext4文件系统rootubuntu:~# mkfs.xfs /dev/vg1/lv2 #制作成xfs文件系统
3.
6 挂载rootubuntu:~# mkdir /mnt/lv1rootubuntu:~# mkdir /mnt/lv2rootubuntu:~# mount /dev/vg1/lv1 /mnt/lv1 #挂载rootubuntu:~# mount /dev/vg1/lv2 /mnt/lv2 #挂载rootubuntu:~# df -Th #查看挂载情况Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M
6M 387M1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext
4
8G
3G
0G36% / tmpfs tmpfs
9G
0
9G0% /dev/shm tmpfs tmpfs
0M
0
0M0% /run/lock /dev/sda2 ext
4
8G 130M
5G8% /boot tmpfs tmpfs 388M
0K 388M1% /run/user/1000 /dev/mapper/vg1-lv1 ext
4
0G 24K
8G1% /mnt/lv1 /dev/mapper/vg1-lv2 xfs
0G 47M
9G3% /mnt/lv
2
2 逻辑卷扩容如果/dev/vg1/lv1或者/dev/vg1/lv2用完了空间不足这时候就需要扩容扩容一般分为两种情况vg有剩余空间和vg无剩余空间
3.
1 vg有剩余空间这是我们上面所操作的步骤可以看到 vg还有剩余接下来我们试着对lv1进行扩容rootubuntu:~# vgdisplay vg1--- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas1Metadata Sequence No11VG Access read/write VG Status resizable MAX LV0Cur LV2Open LV2Max PV0Cur PV1Act PV1VG Size
00GiB PE Size
00MiB Total PE1279Alloc PE / Size1012/
95GiB Free PE / Size267/
04GiB#vg1还剩267个PEVG UUID wQ5dGp-NtlI-keZ2-mAGA-2ueT-ZX85-hVj2gS rootubuntu:~# lvextend -l 267 /dev/vg1/lv1 #用PE来扩容可以精确把握vg1的剩余空间rootubuntu:~# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao----
1
00g lv1 vg1 -wi-ao----
04g#lv1增加了lv2 vg1 -wi-ao----
95g rootubuntu:~# vgdisplay vg1--- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas1Metadata Sequence No12VG Access read/write VG Status resizable MAX LV0Cur LV2Open LV2Max PV0Cur PV1Act PV1VG Size
00GiB PE Size
00MiB Total PE1279Alloc PE / Size1279/
00GiB Free PE / Size0/0#目前vg1已经没有空间VG UUID wQ5dGp-NtlI-keZ2-mAGA-2ueT-ZX85-hVj2gS rootubuntu:~# resize2fs /dev/vg1/lv1 #ext4扩容rootubuntu:~# df -ThFilesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M
6M 387M1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext
4
8G
3G
0G36% / tmpfs tmpfs
9G
0
9G0% /dev/shm tmpfs tmpfs
0M
0
0M0% /run/lock /dev/sda2 ext
4
8G 130M
5G8% /boot tmpfs tmpfs 388M
0K 388M1% /run/user/1000 /dev/mapper/vg1-lv1 ext
4
0G 24K
8G1% /mnt/lv1#/mnt/lv1空间增加了/dev/mapper/vg1-lv2 xfs
0G 47M
9G3% /mnt/lv2 rootubuntu:~#至此/dev/vg1/lv1逻辑卷扩容完毕
3.
2 vg没剩余空间经过上面的操作现在vg已经没有空间了如果我们现在要对lv2扩容的话只能重新增加磁盘rootubuntu:~# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop07:0087M1loop /snap/lxd/29351 loop17:
1
9M1loop /snap/core20/2318 loop27:
2
8M1loop /snap/snapd/21759 loop37:
3
4M1loop /snap/lxd/36918 sda8:0020G0disk|-sda18:101M0part|-sda28:
2
8G0part /boot-sda38:
3
2G0part-ubuntu--vg-ubuntu--lv253:0010G0lvm / sdb8:1605G0disk|-vg1-lv1253:103G0lvm /mnt/lv1 -vg1-lv2253:202G0lvm /mnt/lv2 sdc8:3206G0disk#这里有一个还未开始用的/dev/sdc 6Gsr011:012G0rom#由于我/dev/sdc没有使用现在我用它来进行扩容不需要额外增加磁盘rootubuntu:~# pvcreate /dev/sdc #创建pvrootubuntu:~# vgextend vg1 /dev/sdc #给vg1扩容rootubuntu:~# vgsVG#PV #LV #SN Attr VSize VFreeubuntu-vg110wz--n-
1
22g
22g vg1220wz--n-
1
99g
00g#vg1剩余空间约6Grootubuntu:~# lvextend -L 3G /dev/vg1/lv2 #给lv2增加3Grootubuntu:~# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao----
1
00g lv1 vg1 -wi-ao----
04g lv2 vg1 -wi-ao----
95g rootubuntu:~# xfs_growfs /dev/vg1/lv2 #xfs扩容rootubuntu:~# df -ThFilesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M
6M 387M1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext
4
8G
3G
0G36% / tmpfs tmpfs
9G
0
9G0% /dev/shm tmpfs tmpfs
0M
0
0M0% /run/lock /dev/sda2 ext
4
8G 130M
5G8% /boot tmpfs tmpfs 388M
0K 388M1% /run/user/1000 /dev/mapper/vg1-lv1 ext
4
0G 24K
8G1% /mnt/lv1 /dev/mapper/vg1-lv2 xfs
0G 68M
9G2% /mnt/lv2操作完后示意图如下至此/dev/vg1/lv2逻辑卷扩容完毕注文中若有疏漏欢迎大家指正赐教。
本文为100%原创转载请务必标注原创作者尊重劳动成果。
求赞、求关注、求评论你的支持是我更新的最大动力评论区等你