导语

我们都知道使用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是否会损坏原数据测试相关推荐

  1. Linux下安装Weblogic10.3.6并创建简单集群测试

    Linux下安装Weblogic10.3.6并创建简单集群进行测试 一.卸载随系统安装的openjdk 1.先查看安装的jdk信息,常用命令有rpm -qa | grep java, rpm -qa  ...

  2. Linux下C语言编程-进程的创建

    Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...

  3. linux 文件复制 剪切,linux下文件或文件夹的创建、复制、剪切、重命名、清空和删除等命令总结...

    linux下文件或文件夹的创建.复制.剪切.重命名.清空和删除等命令总结 linux下文件或文件夹的创建.复制.剪切.重命名.清空和删除等命令总结. 一.目录创建 在/home/wwwroot目录下新 ...

  4. linux装软件需要root用户,Linux下非root用户安装软件的一般流程:

    1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可 3. 切换到解压后的目录, ...

  5. Linux下非交互式sshpass登录

    摘要 在命令行 非交互的SSH登录的时候,一般我们可以借助于生成用户的公钥私钥对,然后把公钥添加到远程主机的authorized_keys文件,可以实现非交互无密码登录. 其实这里也可以有另外一种方式 ...

  6. C++笔记之linux下非阻塞多线程运行多个系统shell命令(popen方法)

    参考博文:C++ linux 睡眠函数sleep和std::this_thread::sleep_for 参考博文:C++笔记之linux下运行系统shell命令(popen方法)函数封装 参考博文: ...

  7. LINUX下ORACLE表空间及用户创建

    LINUX下ORACLE表空间及用户创建 记录详细过程以备使用(https://www.cnblogs.com/csyd/p/10370544.html) Connected to Oracle Da ...

  8. linux是不是在根目录下安装的软件其它用户就可以使用,[转载]Linux下非root用户如何安装软件...

    [转载]Linux下非root用户如何安装软件 这是本人遇到的实际问题,之前用到的所有机器,无论是自己的PC还是云服务器,root权限都是妥妥的,但是现在发现实验室的服务器原来自己并没有root权限2 ...

  9. Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示

    (首发地址:学习日记 https://www.learndiary.com/2022/06/metaboanalystr/  ) 前些天演示了一下 Linux 下非 root 用户 Conda 安装生 ...

最新文章

  1. c#对oracle操作时候 出现的乱码问题。
  2. JAVA总结之数组篇
  3. idea怎么更改推到github的路径_IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版...
  4. 线程池参数到底要怎么配?
  5. 国外ipv6服务器网站,国外 ipv6 服务器地址
  6. 计算机网络校园网网络设计报告,计算机网络课程设计报告-校园网的组建和应用...
  7. 数学建模 CUMCM2018年A题真题(本文由西南民族大学白白不加糖、薄荷CC糖原创)
  8. 信锐(SUNDRAY)无线控制器wifi无线上网短信认证设置流程
  9. 晶体管放大电路与Multisim仿真学习笔记
  10. 李飞飞、吴恩达、Bengio等人的15大顶级深度学习课程(转)
  11. java super是什么意思_Java中super是什么意思?
  12. 欢迎使JMKAJL KAJLKFJD
  13. GCC汇编源码中的.rept关键字
  14. 愿天下有情人都是失散多年的兄妹(25 分)
  15. 小伙伴面试之成都创宇知道
  16. 面对低谷,企业如何走出困境?
  17. 云服务器和共享主机,共享虚拟主机、独享虚拟主机还是云服务器?
  18. Java导出Excel解决乱码及导出文件打开不可读需修复的问题
  19. 如何实现分库分表?怎么配置?
  20. 景安虚拟主机SSL证书导入教程

热门文章

  1. javax.servlet.ServletException: Servlet执行抛出一个异常 有没有人知道呀,看一晚上了,没看出来了
  2. selenium修改readonly属性的方法
  3. 相对路径的当前目录、上级目录、下级目录怎么表示?
  4. CVPR'23|打破CAM局限性!ToCo:激发ViT在弱监督分割的潜力
  5. 面试前端岗,你被要求手写源码了吗?
  6. 用上帝的恋爱公式讲线性回归-下
  7. Unity中Array数组知识点总结
  8. centos7重启nginx
  9. 前端工程化研究之npm私服
  10. 转发:C++中GB2312字符串和UTF-8之间的转换