Linux下非逻辑卷扩容之创建逻辑卷pvcreate是否会损坏原数据测试
导语
我们都知道使用lv逻辑卷可以方便的扩容。
但是当原盘不是逻辑卷且其上有数据的时候,如何扩容呢?
因为扩容只能是磁盘type为逻辑卷lvm才可以。
那么将有数据的盘直接pvcreate为虚拟卷lvm以后,是否对数据有损害?
我们今天就来测试一下。
添加硬盘
- 虚拟机添加一个5G的磁盘作为实验用
查看当前分区情况
lsblk
- 可以看到新加的5G磁盘sdb已经可以用了
[root@C8-196 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part ├─cl-root 253:0 0 70G 0 lvm /├─cl-swap 253:1 0 2G 0 lvm [SWAP]└─cl-home 253:2 0 127G 0 lvm /home
sdb 8:16 0 5G 0 disk
使用传统方式分区
fdisk /dev/sdb
- 创建一个主分区
[root@C8-196 ~]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.32.1).
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.
Created a new DOS disklabel with disk identifier 0x53b270c9.Command (m for help): n
Partition typep primary (0 primary, 0 extended, 4 free)e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): Created a new partition 1 of type 'Linux' and of size 5 GiB.Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
- 再次查看分区情况,sdb被分成了一个主分区,TYPE为part,大小为5G
[root@C8-196 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part ├─cl-root 253:0 0 70G 0 lvm /├─cl-swap 253:1 0 2G 0 lvm [SWAP]└─cl-home 253:2 0 127G 0 lvm /home
sdb 8:16 0 5G 0 disk
└─sdb1 8:17 0 5G 0 part
在新创建的分区上创建文件系统
- 使用xfs格式化sdb1
[root@C8-196 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327616 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1
data = bsize=4096 blocks=1310464, 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
创建挂载点并挂载新建分区
- 在根下创建目录data并挂载新分区到这个目录上
[root@C8-196 ~]# mkdir -v /data&& mount /dev/sdb1 /data&&df -Th
mkdir: created directory '/data'
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 896M 0 896M 0% /dev/shm
tmpfs tmpfs 896M 17M 879M 2% /run
tmpfs tmpfs 896M 0 896M 0% /sys/fs/cgroup
/dev/mapper/cl-root xfs 70G 2.3G 68G 4% /
/dev/mapper/cl-home xfs 127G 939M 126G 1% /home
/dev/sda1 xfs 1014M 197M 818M 20% /boot
tmpfs tmpfs 180M 0 180M 0% /run/user/0
/dev/sdb1 xfs 5.0G 68M 5.0G 2% /data
创建测试文件在新建磁盘分区上
- 写100个文件到磁盘上做数据测试
for i in {1..100};do $(time dd if=/dev/zero of=/data/testw$i.db bs=4k count=10000);done&&ll /data&&df -Th
[root@C8-196 ~]# for i in {1..100};do $(time dd if=/dev/zero of=/data/testw$i.db bs=4k count=10000);done&&ll /data&&df -Th
10000+0 records in
10000+0 records out
40960000 bytes (41 MB, 39 MiB) copied, 0.0162844 s, 2.5 GB/s## 中间的省略……
real 0m0.016s
user 0m0.002s
sys 0m0.014s
10000+0 records in
10000+0 records out
40960000 bytes (41 MB, 39 MiB) copied, 0.0153671 s, 2.7 GB/sreal 0m0.017s
user 0m0.001s
sys 0m0.015s
total 4000000
## 磁盘中已经有写入的文件了
-rw-r--r-- 1 root root 40960000 Mar 2 21:15 testw100.db
-rw-r--r-- 1 root root 40960000 Mar 2 21:15 testw10.db
-rw-r--r-- 1 root root 40960000 Mar 2 21:15 testw11.db
## …… 中间的省略
-rw-r--r-- 1 root root 40960000 Mar 2 21:15 testw99.db
-rw-r--r-- 1 root root 40960000 Mar 2 21:15 testw9.db
## 分区已经占了78%了
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 896M 0 896M 0% /dev/shm
tmpfs tmpfs 896M 17M 879M 2% /run
tmpfs tmpfs 896M 0 896M 0% /sys/fs/cgroup
/dev/mapper/cl-root xfs 70G 2.3G 68G 4% /
/dev/mapper/cl-home xfs 127G 939M 126G 1% /home
/dev/sda1 xfs 1014M 197M 818M 20% /boot
tmpfs tmpfs 180M 0 180M 0% /run/user/0
/dev/sdb1 xfs 5.0G 3.9G 1.2G 78% /data
直接对有数据的分区做pvcreate
- 很显然,处于安全考虑,已经mount的分区不能直接pvcreate
[root@C8-196 ~]#
[root@C8-196 ~]# type pvcreate
pvcreate is /usr/sbin/pvcreate
[root@C8-196 ~]# pvcreate /dev/sdb1Can't open /dev/sdb1 exclusively. Mounted filesystem?Can't open /dev/sdb1 exclusively. Mounted filesystem?
umount以后再次pvcreate
- umount掉以后做pvcreate居然成功了,虽然提示了有xfs文件系统在分区上
[root@C8-196 ~]# umount /dev/sdb1
[root@C8-196 ~]# pvcreate /dev/sdb1
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: yWiping xfs signature on /dev/sdb1.Physical volume "/dev/sdb1" successfully created.
- 但是感觉pvcreate已经摧毁了已有的文件系统
创建逻辑卷
[root@C8-196 ~]# vgcreate vg_data /dev/sdb1Volume group "vg_data" successfully created
[root@C8-196 ~]# lvcreate -l 100%FREE -n data_lv vg_dataLogical volume "data_lv" created.
[root@C8-196 ~]# pvs&&vgs&&lvsPV VG Fmt Attr PSize PFree/dev/sda2 cl lvm2 a-- <199.00g 0 /dev/sdb1 vg_data lvm2 a-- <5.00g 0 VG #PV #LV #SN Attr VSize VFreecl 1 3 0 wz--n- <199.00g 0 vg_data 1 1 0 wz--n- <5.00g 0 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Converthome cl -wi-ao---- 126.96g root cl -wi-ao---- 70.00g swap cl -wi-ao---- 2.03g data_lv vg_data -wi-a----- <5.00g
再次尝试挂载/dev/sdb1
- 很显然已经挂载不上了
[root@C8-196 ~]# mount /dev/sdb1 /data
mount: /data: unknown filesystem type 'LVM2_member'.
尝试直接挂载新创建的lvm逻辑卷
- 很显然,没有文件系统是挂在不上的
[root@C8-196 ~]# ll /dev/mapper/vg_data-data_lv
lrwxrwxrwx 1 root root 7 Mar 2 21:28 /dev/mapper/vg_data-data_lv -> ../dm-3
[root@C8-196 ~]# ll /dev/vg_data/
total 0
lrwxrwxrwx 1 root root 7 Mar 2 21:28 data_lv -> ../dm-3
[root@C8-196 ~]# mount /dev/mapper/vg_data-data_lv /data
mount: /data: wrong fs type, bad option, bad superblock on /dev/mapper/vg_data-data_lv, missing codepage or helper program, or other error.[root@C8-196 ~]# mount /dev/vg_data/data_lv /data
mount: /data: wrong fs type, bad option, bad superblock on /dev/mapper/vg_data-data_lv, missing codepage or helper program, or other error.
在新逻辑卷上创建文件系统
- 使用xfs格式化新创建的逻辑卷,格式化嘛,你懂的
[root@C8-196 ~]# mkfs.xfs /dev/mapper/vg_data-data_lv
meta-data=/dev/mapper/vg_data-data_lv isize=512 agcount=4, agsize=327424 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1
data = bsize=4096 blocks=1309696, 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
挂载逻辑卷到曾经的data目录
mount /dev/mapper/vg_data-data_lv /data
[root@C8-196 ~]# mount /dev/mapper/vg_data-data_lv /data
[root@C8-196 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 896M 0 896M 0% /dev/shm
tmpfs tmpfs 896M 17M 879M 2% /run
tmpfs tmpfs 896M 0 896M 0% /sys/fs/cgroup
/dev/mapper/cl-root xfs 70G 2.3G 68G 4% /
/dev/mapper/cl-home xfs 127G 939M 126G 1% /home
/dev/sda1 xfs 1014M 197M 818M 20% /boot
tmpfs tmpfs 180M 0 180M 0% /run/user/0
/dev/mapper/vg_data-data_lv xfs 5.0G 68M 5.0G 2% /data
查看目录下是否有文件
- 见证奇迹的时刻到了!
/dev/mapper/vg_data-data_lv xfs 5.0G 68M 5.0G 2% /data
[root@C8-196 ~]# ll /data
total 0
- 很显然,毛线都没有了。
- 这目录下要是有生产数据,你就可以走人了!
- 又是一种删库跑路的新方法!
结论
- 使用pvcreate对已经挂载的分区不能直接创建pv
- 使用pvcreate对有数据且已解挂载的分区可以直接创建pv,会提示文件系统存在
使用pvcreate对有数据的分区创建pv会摧毁文件系统,文件就无啦~
使用pvcreate对有数据的分区创建pv会摧毁文件系统,文件就无啦~
使用pvcreate对有数据的分区创建pv会摧毁文件系统,文件就无啦~
Linux下非逻辑卷扩容之创建逻辑卷pvcreate是否会损坏原数据测试相关推荐
- Linux下安装Weblogic10.3.6并创建简单集群测试
Linux下安装Weblogic10.3.6并创建简单集群进行测试 一.卸载随系统安装的openjdk 1.先查看安装的jdk信息,常用命令有rpm -qa | grep java, rpm -qa ...
- Linux下C语言编程-进程的创建
Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...
- linux 文件复制 剪切,linux下文件或文件夹的创建、复制、剪切、重命名、清空和删除等命令总结...
linux下文件或文件夹的创建.复制.剪切.重命名.清空和删除等命令总结 linux下文件或文件夹的创建.复制.剪切.重命名.清空和删除等命令总结. 一.目录创建 在/home/wwwroot目录下新 ...
- linux装软件需要root用户,Linux下非root用户安装软件的一般流程:
1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可 3. 切换到解压后的目录, ...
- Linux下非交互式sshpass登录
摘要 在命令行 非交互的SSH登录的时候,一般我们可以借助于生成用户的公钥私钥对,然后把公钥添加到远程主机的authorized_keys文件,可以实现非交互无密码登录. 其实这里也可以有另外一种方式 ...
- C++笔记之linux下非阻塞多线程运行多个系统shell命令(popen方法)
参考博文:C++ linux 睡眠函数sleep和std::this_thread::sleep_for 参考博文:C++笔记之linux下运行系统shell命令(popen方法)函数封装 参考博文: ...
- LINUX下ORACLE表空间及用户创建
LINUX下ORACLE表空间及用户创建 记录详细过程以备使用(https://www.cnblogs.com/csyd/p/10370544.html) Connected to Oracle Da ...
- linux是不是在根目录下安装的软件其它用户就可以使用,[转载]Linux下非root用户如何安装软件...
[转载]Linux下非root用户如何安装软件 这是本人遇到的实际问题,之前用到的所有机器,无论是自己的PC还是云服务器,root权限都是妥妥的,但是现在发现实验室的服务器原来自己并没有root权限2 ...
- Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示
(首发地址:学习日记 https://www.learndiary.com/2022/06/metaboanalystr/ ) 前些天演示了一下 Linux 下非 root 用户 Conda 安装生 ...
最新文章
- c#对oracle操作时候 出现的乱码问题。
- JAVA总结之数组篇
- idea怎么更改推到github的路径_IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版...
- 线程池参数到底要怎么配?
- 国外ipv6服务器网站,国外 ipv6 服务器地址
- 计算机网络校园网网络设计报告,计算机网络课程设计报告-校园网的组建和应用...
- 数学建模 CUMCM2018年A题真题(本文由西南民族大学白白不加糖、薄荷CC糖原创)
- 信锐(SUNDRAY)无线控制器wifi无线上网短信认证设置流程
- 晶体管放大电路与Multisim仿真学习笔记
- 李飞飞、吴恩达、Bengio等人的15大顶级深度学习课程(转)
- java super是什么意思_Java中super是什么意思?
- 欢迎使JMKAJL KAJLKFJD
- GCC汇编源码中的.rept关键字
- 愿天下有情人都是失散多年的兄妹(25 分)
- 小伙伴面试之成都创宇知道
- 面对低谷,企业如何走出困境?
- 云服务器和共享主机,共享虚拟主机、独享虚拟主机还是云服务器?
- Java导出Excel解决乱码及导出文件打开不可读需修复的问题
- 如何实现分库分表?怎么配置?
- 景安虚拟主机SSL证书导入教程