嵌入式linux使用lvm将磁盘分区映射成一个盘挂载到目标目录下

最近项目中遇到一个硬件磁盘大小设计错误的问题,需要将原有的两块小硬盘映射成一个大空间的盘。在网上查了好多资料,都是只言片语的,找了一圈竟然没有应用到嵌入式linux中的,所以才有了这一篇博客。

从源码开始搞起,到内核,到配置,到应用,总共花了4天的时间。

1.首先要搞定lvm,我使用的是嵌入式linux,先移植再说。

源码下载路径:我的下载

2.配置内核支持device mapper 和lvm

配置内核勾选以上选项。重新编译内核。

3交叉编译lvm

$ export CC=arm-linux-gnueabi-gcc	# replace with your cross compiler
$ ./configure --host=arm-linux-gnueabi \
      --prefix=/lvm --enable-static_link --disable-readline \
      --disable-selinux --with-pool=none --with-cluster=none \
      --with-confdir=/lvm/etc --with-default-run-dir=/data/lvm/run \
      --with-default-system-dir=/lvm/etc \
      --with-default-locking-dir=/data/lvm/lock \
      --with-optimisation="-Os -march=armv5te -mtune=cortex-a8 -mthumb"

make

make install

把生成的库和链接导入板卡内。

4.配置磁盘

a.使用fdisk工具将磁盘分区。

b.创建物理卷

[root@MYSQL-SERVER ~]#  pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@MYSQL-SERVER ~]#  pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.

c.创建卷组

[root@MYSQL-SERVER ~]#  vgcreate vgmysql /dev/sdb1
  Volume group "vgmysql" successfully created

d.添加新的物理卷到卷组中

[root@MYSQL-SERVER ~]#  vgextend vgmysql /dev/sdc1
  Volume group "vgmysql" successfully extended

e.查看卷组

[root@MYSQL-SERVER ~]#  vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  vgmysql   2   0   0 wz--n-  32.74t 32.74t
  vgroot    1   4   0 wz--n- 264.00g  4.00m

f.创建逻辑卷

创建逻辑卷的命令为lvcreate;用此命令将在使用vgcreate建立的卷组上创建逻辑卷;
在卷组vgmysql上创建一个名为lvmysql的逻辑卷,起大小为32.7T

-n:指定逻辑卷名

-L:指定逻辑卷大小

[root@MYSQL-SERVER ~]#  lvcreate -L 32.7T -n lvmysql vgmysql 
  Rounding up size to full physical extent 32.70 TiB
  Logical volume "lvmysql" created.

g.格式化逻辑卷

[root@MYSQL-SERVER ~]#  mkfs.ext4 /dev/vgmysql/lvmysql
meta-data=/dev/vgmysql/lvmysql   isize=512    agcount=33, agsize=268435328 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=8777839616, imaxpct=5
         =                       sunit=64     swidth=64 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

h.此时就可以挂载 /dev/vgmysql/lvmsql 到指定目录下了

5.重启设备后卷组丢失,使用命令扫描卷组

通过lvscan命令查看卷组,发现有卷组处于inactive状态

# ./lvscan
  Incorrect metadata area header checksum on /dev/sda1 at offset 4096
  Incorrect metadata area header checksum on /dev/sdb1 at offset 4096
  inactive          '/dev/vgmysql/lvmysql' [17.00 GiB] inherit

使用vgchange激活卷组

vgchange -a y vgmysql

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值