树莓派3+centos7拓展存储空间(LVM学习)

首先下载镜像并烧写安装:

http://mirror.centos.org/altarch/7/isos/armhfp/


安装基本库:

yum groupinstall base


利用df -h命令(列出文件系统的使用量)查看挂载的空间,也就是可用的空间大小:

[root@centos-rpi3 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/root       2.0G  974M  861M   54% /
devtmpfs        460M     0  460M    0% /dev
tmpfs           464M     0  464M    0% /dev/shm
tmpfs           464M   12M  452M    3% /run
tmpfs           464M     0  464M    0% /sys/fs/cgroup
/dev/mmcblk0p1  500M   45M  455M    9% /boot
tmpfs            93M     0   93M    0% /run/user/0
[root@centos-rpi3 ~]# 

可用空间太小,本人用的是一个16G内存卡,还有很多空间没有用。

利用fdisk -l命令(磁盘分区)查询:

磁盘 /dev/mmcblk0:15.6 GB, 15636365312 字节,30539776 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c3c9b

        设备 Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     1026047      512000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2         1026048     2074623      524288   82  Linux swap / Solaris
/dev/mmcblk0p3         2074624     6268927     2097152   83  Linux


可以看到磁盘mmcblk0也就是sd卡,容量有15.6G,但实际只挂载了1.5G左右,还有很大的空间。


那么如何拓展存储空间,简单而言就是将物理设备挂载到操作系统,使其能够识别并使用这些空间。



先介绍基础知识:

LVM(Logical Volume Manager)逻辑卷管理器

LVM的重点在于可以弹性调整文件系统的容量。可以整合多个物理分区。LVM中几个不同的概念


PV(physical volume):物理卷

实际的分区需要调整系统标识符(system ID)成为8e(LVM的标识符),然后通过pvcreate命令将其转成LVM的最底层的物理卷PV,然后再进行处理。


VG (Volume Group)卷用户组

LVM大磁盘就是将许多PV整合为一个VG,每个VG最多包含65534个PE,也就是VG最多为256GB


PE(physical extend)物理拓展块

LVM默认使用4M的PE,PE是LVM中最小的存储块,也就是文件数据都是由写入PE完成的


LV(logical volume)逻辑卷

最终的VG会被切成LV。就是最终可被格式化使用的分区。LV的设备名通常指定为/dev/vgname/lvname


实现流程


通过PV,VG,LV的规划,最后利用mkfs命令将LV格式化成可利用的文件系统。


树莓派3+centos7拓展存储空间(LVM学习)_第1张图片



实际操作:


一。新建物理分区

首先利用fdisk将mmcblk0再分一个区出来用,也就是物理上的分区操作。

fdisk /dev/mmcblk0
m
显示可以执行的操作如下:

命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)


然后输入n,添加新分区,输入p选择添加主分区。然后不断回车:

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
已选择分区 4
起始 扇区 (6268928-30539775,默认为 6268928):
将使用默认值 6268928
Last 扇区, +扇区 or +size{K,M,G} (6268928-30539775,默认为 30539775):
将使用默认值 30539775
分区 4 已设置为 Linux 类型,大小设为 11.6 GiB

最后w保存退出。


但这个时候的分区id不是8e,也就是不是LVM的,因此要再利用fdisk更改id:

fdisk /dev/mmcblk0


命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):4
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!


结果:

       设备 Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     1026047      512000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2         1026048     2074623      524288   82  Linux swap / Solaris
/dev/mmcblk0p3         2074624     6268927     2097152   83  Linux
/dev/mmcblk0p4         6268928    30539775    12135424   8e  Linux LVM


最后利用partprobe让kernel读取更新后的信息

partprobe


使用fdisk工具只是将分区信息写到磁盘,如果需要mkfs磁盘分区则需要重启系统,
而使用partprobe则可以使kernel重新读取分区 信息,从而避免重启系统


二。PV阶段


创建新的pv:

pvcreate /dev/mmcblk0p4

然后利用pvscan查询。

[root@centos-rpi3 ~]# pvcreate /dev/mmcblk0p4
  Physical volume "/dev/mmcblk0p4" successfully created.
[root@centos-rpi3 ~]# pvscan
  PV /dev/mmcblk0p4                      lvm2 [11.57 GiB]
  Total: 1 [11.57 GiB] / in use: 0 [0   ] / in no VG: 1 [11.57 GiB]


pvdisplay更详细地列出信息:

[root@centos-rpi3 ~]# pvdisplay 
  "/dev/mmcblk0p4" is a new physical volume of "11.57 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/mmcblk0p4
  VG Name               
  PV Size               11.57 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               krnqiN-Sxyu-Y2Jj-D4UE-LLYl-2Aw1-u0TwtF



三。VG阶段


将设备新建为一个VG,并指定PE大小为16M

[root@centos-rpi3 ~]# vgcreate -s 16M vbirdvg /dev/mmcblk0p4
  Volume group "vbirdvg" successfully created

卷组名称为vbirdvg


利用vgscan和vgdisplay显示:

[root@centos-rpi3 ~]# vgdisplay 
  --- Volume group ---
  VG Name               vbirdvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               11.56 GiB
  PE Size               16.00 MiB
  Total PE              740
  Alloc PE / Size       0 / 0   
  Free  PE / Size       740 / 11.56 GiB
  VG UUID               1TmRni-22Kd-6I0V-BEr2-hzOG-kZLr-UL1inx

可以看出PE size 16M,共有740PE,其中free的有740,因为尚未切出LV,所有PE都可使用。



四。LV阶段


为vbirdvg这个VG进行分区,利用LV。

lvcreate -l 740 -n vbirdlv vbirdvg
-l后面跟的PE的个数,这里选740,。

也可以换成-L,L大写,后面接容量,单位可以是M,G,T,,比如-L 11.56G
-n后面接的是LV的名称,这里是vbirdlv

[root@centos-rpi3 ~]# lvcreate -l 740 -n vbirdlv vbirdvg
WARNING: ext3 signature detected on /dev/vbirdvg/vbirdlv at offset 1080. Wipe it? [y/n]: y
  Wiping ext3 signature on /dev/vbirdvg/vbirdlv.
  Logical volume "vbirdlv" created.


利用lvdisplay显示结果:

[root@centos-rpi3 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vbirdvg/vbirdlv
  LV Name                vbirdlv
  VG Name                vbirdvg
  LV UUID                8Acqkx-8QjT-08iV-gK0B-vyRi-l5mh-H02gRz
  LV Write Access        read/write
  LV Creation host, time centos-rpi3, 2017-12-28 09:09:50 +0000
  LV Status              available
  # open                 0
  LV Size                11.56 GiB
  Current LE             740
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0




五。文件系统阶段

格式化,然后挂载LV

先格式化文件系统:

mkfs -t ext3 /dev/vbirdvg/vbirdlv

选择ext3文件系统类型

[root@centos-rpi3 ~]# mkfs -t ext3 /dev/vbirdvg/vbirdlv
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
758880 inodes, 3031040 blocks
151552 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=3103784960
93 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成


最后就是挂载了:

[root@centos-rpi3 ~]# mkdir /mnt/lvm
[root@centos-rpi3 ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm
[root@centos-rpi3 ~]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
/dev/root                    2.0G  972M  862M   54% /
devtmpfs                     460M     0  460M    0% /dev
tmpfs                        464M     0  464M    0% /dev/shm
tmpfs                        464M   12M  452M    3% /run
tmpfs                        464M     0  464M    0% /sys/fs/cgroup
/dev/mmcblk0p1               500M   45M  455M    9% /boot
tmpfs                         93M     0   93M    0% /run/user/0
/dev/mapper/vbirdvg-vbirdlv   12G   30M   11G    1% /mnt/lvm





你可能感兴趣的:(Linux)