Linux挂载新磁盘

警告
本文最后更新于 2022-07-01,文中内容可能已过时。

摘要

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

物理存储介质(PhysicalStorageMedia):指系统的物理存储设备:磁盘,如:/dev/sda、/dev/vda等,是存储系统最底层的存储单元。

物理卷(Physical Volume,PV):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

物理块(Physical Extent,PE):每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。

逻辑块(Logical Extent,LE):逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

检查系统中是否安装了LVM管理工具

1
rpm -qa|grep lvm2

如果未安装,则使用yum 方式安装

1
yum install -y lvm2

基本PV命令

pvcreate:用于将物理硬盘分区初始化为物理卷,以便被LVM使用。 pvs:用于输出格式化的物理卷信息报表。使用pvs命令仅能得到物理卷的概要信息,如果要得到更加详细的信息可以使用pvdisplaypvscan:扫描系统中连接的所有硬盘,列出找到的物理卷列表。 pvdisplay:用于显示物理卷的属性(大小,PE大小,被卷组描述符使用的空间)。 pvremove:用于删除一个存在的物理卷。

将整个磁盘创建为物理卷的命令为:

1
pvcreate /dev/vdb

将单个分区创建为物理卷的命令为:

1
pvcreate /dev/vdb1

创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:

创建名为data的卷组,使用/dev/vdb创建。

1
vgcreate data /dev/vdb

创建名为data的卷组,使用/dev/vdb1,/dev/vdb2和/dev/vdc1创建。

1
vgcreate data /dev/vdb1 /dev/vdb2 /dev/vdc1

创建一个名为docker 大小为使用全部卷组的逻辑卷。这个逻辑卷使用之前创建的卷组的空间。

1
2
lvcreate -L 100M -n docker data
lvcreate -L 100%VG -n docker data
1
2
3
4
5
mkfs.xfs /dev/data/docker
mkdir data
mount /dev/data/docker /data
echo "/dev/mapper/data-docker  /data  xfs  defaults  0 0" >> /etc/fstab
mount -a

mount -a是自动挂载/etc/fstab里面的东西

首先,取消挂载

1
umount /data

增加容量

1
2
lvextend -l +100%FREE /dev/data/docker
lvextend -L +10G /dev/data/docker

刷新磁盘信息与写入

resize2fs(增大和减小都支持)

1
resize2fs /dev/data/docker

xfs文件系统使用以下命令同步

xfs_growfs(只支持增大)

1
xfs_growfs /dev/data/docker

虽然xfs文件系统只支持增加,不支持减少。但并不是说在xfs系统文件下不能减小,只是减小后,需要重新格式化才能挂载上。这样原来的数据就丢失了!

在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态

首先,卸载掉逻辑卷

1
umount /dev/data/docker

减少容量

1
lvreduce -L -100G /dev/data/docker

刷新磁盘信息与写入,显然会失败

1
xfs_growfs /dev/data/docker

只能通过重新格式化这个分区,格式化后才能再次挂载

1
2
mkfs.xfs /dev/data/docker -f
mount /dev/data/docker /data

查看分区

1
fdisk -l

https://img.bwcxtech.com/img/20200928163807.png

其中sda是已经分好区的磁盘,sdb没有分区。

开始分区

1
fdisk /dev/sdb

https://img.bwcxtech.com/img/20200928163812.png

输入m获取帮助

https://img.bwcxtech.com/img/20200928163817.png

输入p 查看当前硬盘分区,目前没有分区。

https://img.bwcxtech.com/img/20200928163820.png

输入n新建一个分区

https://img.bwcxtech.com/img/20200928163824.png

分区类型,“p”:为基本分区(默认);“e”:为扩展分区。在此我们选择"p",创建一个基本分区;

分区号,范围为1-4。(默认1,顺序累加);

起始扇区,默认为剩余未被分配的最小扇区,推荐选择默认(直接点击回车);

Last扇区,+扇区 or +size{K,M,G},默认为未被分配的最小扇区,此处推荐默认(直接点击回车)。

再次查看分区

https://img.bwcxtech.com/img/20200928163832.png

输入w保存分区

建立好的分区还不能用,还需要挂载才可以用。但是挂载之前,必须要格式化才行。

格式化命令

格式化成ext3

1
mkfs.ext3 /dev/sdb1

格式化成ext4

1
mkfs.ext4 /dev/sdb1

https://img.bwcxtech.com/img/20200928163855.png

格式化之后挂载分区

1
2
mkdir /data
mount /dev/sdb1 /data

这样就挂载成功,可以正常使用了。

https://img.bwcxtech.com/img/20200928163852.png

1
umount /dev/sdb1  

卸载之后数据不会丢失,还可以再次挂载

1
fdisk /dev/sdb

https://img.bwcxtech.com/img/20200928163900.png

输入w保存,这个时候分区已经删除了,可以重新创建。

开机直接挂载 编辑/etc/fstab文件 添加

1
/dev/sdb1               /data                   ext4    defaults        0 0

重启发现已经挂载上去。 0,0 表示开机不检查磁盘。 也可以通过磁盘UUID挂载 如果/dev/sdb1不行,可以试试用UUID进行挂载

查看UUID

1
ls -l /dev/disk/by-uuid/

https://img.bwcxtech.com/img/20200928163908.png

如果换了UUID还是不行,还有一个方法 手动是可以挂载的,那么把手动挂载的命令写入一个脚本,设置这个脚本开机自启动也是可以实现的

相关内容