1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux17-磁盘分区 文件系统 逻辑卷管理LVM

Linux17-磁盘分区 文件系统 逻辑卷管理LVM

时间:2022-04-13 06:08:20

相关推荐

Linux17-磁盘分区 文件系统 逻辑卷管理LVM

目录

一、磁盘分区、文件系统、永久挂载

1.1、MBR分区方案

1.2、使用fdisk、mkfs、partprobe、blkid、lsblk等命令管理MBR分区

1.3、swap分区

1.4、GPT分区方案、使用gdisk管理GPT分区

二、逻辑卷LVM(LogicalVolumeManagement)

2.1、物理卷PV、卷组VG、逻辑卷LV

2.2、使用vgextend、lvextend、xfs_growfs、resize2fs扩展逻辑卷

2.3、虚拟机上使用pvresize扩充磁盘

一、磁盘分区、文件系统、永久挂载

磁盘分区可以将磁盘分为多个逻辑存储单元,这些单元称为分区。通过将磁盘划分为多个分区,系统管理员可以使用不同的分区执行不同的任务。主要有

MBR(Master Boot Recorder)分区方案,主引导记录分区方案。

GPT(GUID Partition Table)分区方案,全局唯一标识分区表分区方案。

1.1、MBR分区方案

由于历史原因MBR存在诸多限制。

MBR分区方案可以将磁盘分为主分区和扩展分区(合计不超过4个),扩展分区上再建立逻辑分区。

主分区+扩展分区 最多分4个分区,这是历史原因造成的。

因此,3个主分区 + 1个扩展分区 + 在扩展分区之上逻辑分区 = 最多15个分区。

由于分区大小数据以32位存储,每个块大小不超过512字节,单个分区和单块磁盘的大小不能超过2TB。

1.2、使用fdisk、mkfs、partprobe、blkid、lsblk等命令管理MBR分区

fdisk-l查看分区表。fdisk /dev/vdb 键入m查看帮助。

fdisk /dev/vdbCommand (m for help): mCommand action……m print this menu # 帮助菜单n add a new partition# 新建分区o create a new empty DOS partition tablep print the partition table # 列出分区q quit without saving changes # 退出不保存s create a new empty Sun disklabelt change a partition's system id # 修改分区类型,进入后键入L可以列出所有分区类型u change display/entry unitsv verify the partition tablew write table to disk and exit# 保存并退出x extra functionality (experts only)

分区的流程:fdisk分区→mkfs格式化xfs、ext4→mount挂载→写入/etc/fstab。

用fdisk给/dev/vdb建立2个主分区/dev/vdb1和/dev/vdb2、1个扩展分区/dev/vdb3。在扩展分区上建立几个逻辑分区,逻辑分区从/dev/vdb5开始。

fdisk建立分区,定义好分区大小和类型。

以相应的文件系统mkfs进行格式化。

运行partprobe命令,将磁盘设备作为参数,强制重新读取其分区表。

不要忘记写入/etc/fstab文件永久生效,使用blkid命令查看分区的UUID,因为UUID不会因重启而发生变化。查看/etc/fstab各字段含义直接man 5 fstab。

如果/etc/fstab内容错误可能导致系统无法启动。应使用mount -a读取/etc/fstab进行挂载,确认无误。

重新读取分区表[root@server0 ~]# partprobe /dev/vdb列出所有分区[root@server0 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda253:0 0 10G 0 disk└─vda1 253:1 0 10G 0 part /vdb253:16 0 10G 0 disk├─vdb1 253:17 0 2G 0 part├─vdb2 253:18 0 2G 0 part├─vdb3 253:19 0 1K 0 part├─vdb5 253:21 0 100M 0 part├─vdb6 253:22 0 100M 0 part├─vdb7 253:23 0 100M 0 part├─vdb8 253:24 0 100M 0 part├─vdb9 253:25 0 100M 0 part├─vdb10 253:26 0 100M 0 part├─vdb11 253:27 0 100M 0 part├─vdb12 253:28 0 100M 0 part├─vdb13 253:29 0 100M 0 part├─vdb14 253:30 0 100M 0 part└─vdb15 253:31 0 100M 0 part创建文件系统[root@server0 ~]# mkfs.xfs /dev/vdb1[root@server0 ~]# mkfs.xfs /dev/vdb2[root@server0 ~]# mkfs.xfs /dev/vdb5[root@server0 ~]# mkfs.xfs /dev/vdb6读取分区UUID,用于挂载[root@server0 ~]# blkid/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"/dev/vdb1: UUID="52038709-8194-4900-af39-521ccb528bdc" TYPE="xfs"/dev/vdb2: UUID="4e40127c-7105-4806-948b-30e0a177dbd2" TYPE="xfs"/dev/vdb5: UUID="dba17f96-198f-4383-9cb6-47c368a28108" TYPE="xfs"/dev/vdb6: UUID="8b1bea51-f910-4cf2-8374-db5b0653a04b" TYPE="xfs"挂载点[root@server0 ~]# mkdir /data_vdb{1,2,5,6}写入/etc/fstab[root@server0 ~]# vim /etc/fstabUUID=52038709-8194-4900-af39-521ccb528bdc /data_vdb1 xfsdefaults 1 1UUID=4e40127c-7105-4806-948b-30e0a177dbd2 /data_vdb2 xfsdefaults 2 2UUID=dba17f96-198f-4383-9cb6-47c368a28108 /data_vdb5 xfsdefaults 3 3UUID=8b1bea51-f910-4cf2-8374-db5b0653a04b /data_vdb6 xfsdefaults 4 4使用mount -a读取/etc/fstab进行挂载[root@server0 ~]# mount -a[root@server0 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda253:0 0 10G 0 disk└─vda1 253:1 0 10G 0 part /vdb253:16 0 10G 0 disk├─vdb1 253:17 0 2G 0 part /data_vdb1├─vdb2 253:18 0 2G 0 part /data_vdb2├─vdb3 253:19 0 1K 0 part├─vdb5 253:21 0 100M 0 part /data_vdb5├─vdb6 253:22 0 100M 0 part /data_vdb6├─vdb7 253:23 0 100M 0 part├─vdb8 253:24 0 100M 0 part├─vdb9 253:25 0 100M 0 part├─vdb10 253:26 0 100M 0 part├─vdb11 253:27 0 100M 0 part├─vdb12 253:28 0 100M 0 part├─vdb13 253:29 0 100M 0 part├─vdb14 253:30 0 100M 0 part└─vdb15 253:31 0 100M 0 part

1.3、swap分区

linux特殊的一个分区swap分区,也就是交换分区。swap相当于windows虚拟内存。swap分区实际是内存的一个临时的补充,把暂时不用的数据写到swap上,把内存空间腾出来给其他程序使用。交换分区没有挂载点,mount和mount-a不适用于swap。

创建swap分区流程:fdisk→修改分区类型为82 Linux Swap→mkswap→swapon→/etc/fstab

[root@server0 ~]# partprobe /dev/vdb[root@server0 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda 253:0 0 10G 0 disk└─vda1 253:1 0 10G 0 part /vdb 253:16 0 10G 0 disk├─vdb1 253:17 0 2G 0 part /data_vdb1├─vdb2 253:18 0 2G 0 part /data_vdb2├─vdb3 253:19 0 1K 0 part├─vdb5 253:21 0 100M 0 part /data_vdb5├─vdb6 253:22 0 100M 0 part /data_vdb6└─vdb7 253:23 0 256M 0 part[root@server0 ~]# mkswap /dev/vdb7Setting up swapspace version 1, size = 262140 KiBno label, UUID=a77184ff-cb43-44cf-96f4-d445fc9f065f[root@server0 ~]# blkid/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"/dev/vdb1: UUID="52038709-8194-4900-af39-521ccb528bdc" TYPE="xfs"/dev/vdb2: UUID="4e40127c-7105-4806-948b-30e0a177dbd2" TYPE="xfs"/dev/vdb5: UUID="bcdc178e-d05b-4ad7-ab41-f40f9b12f22d" TYPE="xfs"/dev/vdb6: UUID="43708e5f-f04b-4ccc-bf16-716d980d3764" TYPE="xfs"/dev/vdb7: UUID="a77184ff-cb43-44cf-96f4-d445fc9f065f" TYPE="swap"[root@server0 ~]# vim /etc/fstabUUID=a77184ff-cb43-44cf-96f4-d445fc9f065f swapswap defaults 0 0[root@server0 ~]# free -mtotal used freeshared bufferscachedMem:1841 767 1073 162 287-/+ buffers/cache: 478 1362Swap: 000[root@server0 ~]# swapon /dev/vdb7[root@server0 ~]# free -mtotal used freeshared bufferscachedMem:1841 768 1072 162 287-/+ buffers/cache: 478 1362Swap:2550 255

使用命令swapon -s可以看到swap分区的优先级。优先级越高,越优先使用这个分区。用户定义的优先级是正数,内核定义的优先级是负数。

[root@server0 ~]# swapon -sFilenameTypeSizeUsedPriority/dev/vdb7partition2621400-1

1.4、GPT分区方案、使用gdisk管理GPT分区

由于MBR方案有诸多限制,需要一个新的工具,这就是GPT。

GPT默认情况下支持最多128个分区,按照块大小不超过512字节计算,GPT支持8ZB分区和磁盘。

块大小转为4096字节计算,GPT支持64ZB分区和磁盘。

gdisk的用法和fdisk用法类似。

二、逻辑卷LVM(LogicalVolumeManagement)

2.1、物理卷PV、卷组VG、逻辑卷LV

前面提到的MBR、GPT等分区方案实现的是静态的磁盘分区管理。有一种更牛逼的方式——动态磁盘:逻辑卷通过软件的方式来实现,让你的分区看似是活动的。

逻辑卷产生的三个过程PVVGLV

PV:物理卷,是构成LVM的最小化的最基本的单位pvcreate。

VG:把物理卷变成卷组的过程 vgcreate,PV + PV + PV …… = 虚拟的大磁盘 = VG。

LV:卷组,从VG上切蛋糕lvcreate,提供使用。

PE:物理区块,一个数据块的大小,LV管理数据的时候,是以PE为单位的,默认大小4M,用2的n次方。

创建和使用LVM的过程是:创建分区,修改分区类型为8e LVM类型→pvcreate创建物理卷→vgcreate创建卷组→lvcreate创建逻辑卷→mkfs文件系统→/etc/fstab和mount -a挂载。

举例

创建两个500M大小的物理卷/dev/vdb5和/dev/vdb6

将这两个物理卷组成卷组vg_data

从vg_data上切片一个300M大小的逻辑卷datafile和另一个400M大小的逻辑卷archivelog,注意-n选项指定逻辑卷名字,-L选项指定逻辑卷大小

[root@server0 ~]# fdisk /dev/vdbDevice BootStart EndBlocks Id System/dev/vdb1 2048 20971519 10484736 5 Extended/dev/vdb5 40961028095512000 8e Linux LVM/dev/vdb6 10301442054143512000 8e Linux LVM[root@server0 ~]# pvcreate /dev/vdb5 /dev/vdb6Physical volume "/dev/vdb5" successfully createdPhysical volume "/dev/vdb6" successfully created[root@server0 ~]# pvsPV VG Fmt Attr PSize PFree/dev/vdb5 lvm2 a-- 500.00m 500.00m/dev/vdb6 lvm2 a-- 500.00m 500.00m[root@server0 ~]# vgcreate vg_data /dev/vdb5 /dev/vdb6Volume group "vg_data" successfully created[root@server0 ~]# vgsVG#PV #LV #SN Attr VSize VFreevg_data 2 0 0 wz--n- 992.00m 992.00m[root@server0 ~]# lvcreate -n datafile -L 300M vg_dataLogical volume "datafile" created[root@server0 ~]# lvcreate -n archivelog -L 400M vg_dataLogical volume "archivelog" created[root@server0 ~]# lvsLV VGAttr LSize Pool Origin Data% Move Log Cpy%Sync Convertarchivelog vg_data -wi-a----- 400.00mdatafile vg_data -wi-a----- 300.00m[root@server0 ~]# mkfs.xfs /dev/vg_data/datafile[root@server0 ~]# mkfs.xfs /dev/vg_data/archivelog[root@server0 ~]# blkid/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"/dev/vdb5: UUID="8SrLUK-Dk3Y-uZqH-GWQv-3Q1s-3SEm-PmonIe" TYPE="LVM2_member"/dev/vdb6: UUID="4lgBt3-TAqF-Yh0S-3Ta5-dFnZ-4mVb-e39f5B" TYPE="LVM2_member"/dev/mapper/vg_data-datafile: UUID="51f84323-139d-44da-9c0f-c520b61cbdd2" TYPE="xfs"/dev/mapper/vg_data-archivelog: UUID="46a29911-059c-48bb-8958-fa40b40b09f9" TYPE="xfs"[root@server0 ~]# mkdir /datafile /archivelog[root@server0 ~]# vim /etc/fstabUUID=51f84323-139d-44da-9c0f-c520b61cbdd2 /datafilexfsdefaults 2 2UUID=46a29911-059c-48bb-8958-fa40b40b09f9 /archivelog xfsdefaults 3 3[root@server0 ~]# mount -a[root@server0 ~]# df -hTFilesystem TypeSize Used Avail Use% Mounted on/dev/vda1 xfs 10G 3.0G 7.1G 30% /devtmpfs devtmpfs 906M0 906M 0% /devtmpfstmpfs921M 80K 921M 1% /dev/shmtmpfstmpfs921M 17M 904M 2% /runtmpfstmpfs921M0 921M 0% /sys/fs/cgroup/dev/mapper/vg_data-datafile xfs 297M 16M 282M 6% /datafile/dev/mapper/vg_data-archivelog xfs 397M 21M 377M 6% /archivelog

2.2、使用vgextend、lvextend、xfs_growfs、resize2fs扩展逻辑卷

如果存储空间不够了,就需要扩展。从PV、VG、LV到文件系统一层一层的扩展。

新建物理卷

[root@server0 ~]# pvcreate /dev/vdb7Physical volume "/dev/vdb7" successfully created[root@server0 ~]# pvsPV VGFmt Attr PSize PFree/dev/vdb5 vg_data lvm2 a-- 496.00m 196.00m/dev/vdb6 vg_data lvm2 a-- 496.00m 96.00m/dev/vdb7lvm2 a-- 500.00m 500.00m

扩展卷组,将新的物理卷加入既有卷组。

[root@server0 ~]# vgextend vg_data /dev/vdb7Volume group "vg_data" successfully extended[root@server0 ~]# vgsVG#PV #LV #SN Attr VSize VFreevg_data 3 2 0 wz--n- 1.45g 788.00m

扩展逻辑卷,先扩展软件层,再扩展文件系统层。

lvextend -L +200M /dev/vg_data/datafile 扩大200M

lvextend -L 600M /dev/vg_data/archivelog 扩大到600M

[root@server0 ~]# lvsLV VGAttr LSize Pool Origin Data% Move Log Cpy%Sync Convertarchivelog vg_data -wi-ao---- 400.00mdatafile vg_data -wi-ao---- 300.00m[root@server0 ~]# lvextend -L +200M /dev/vg_data/datafileExtending logical volume datafile to 500.00 MiBLogical volume datafile successfully resized[root@server0 ~]# lvextend -L 600M /dev/vg_data/archivelogExtending logical volume archivelog to 600.00 MiBLogical volume archivelog successfully resized[root@server0 ~]# lvsLV VGAttr LSize Pool Origin Data% Move Log Cpy%Sync Convertarchivelog vg_data -wi-ao---- 600.00mdatafile vg_data -wi-ao---- 500.00m

扩展文件系统,这样才是真正把空间扩展了。

需要根据文件系统的类型来选择不同的命令

xfs_growfs /dev/vg_data/archivelog 适用于xfs

resize2fs /dev/vg0/lv0 适用于ext3/ext4

[root@server0 ~]# df -hTFilesystem TypeSize Used Avail Use% Mounted on/dev/vda1 xfs 10G 3.0G 7.1G 30% /devtmpfs devtmpfs 906M0 906M 0% /devtmpfstmpfs921M 80K 921M 1% /dev/shmtmpfstmpfs921M 17M 904M 2% /runtmpfstmpfs921M0 921M 0% /sys/fs/cgroup/dev/mapper/vg_data-datafile xfs 297M 16M 282M 6% /datafile/dev/mapper/vg_data-archivelog xfs 397M 21M 377M 6% /archivelog[root@server0 ~]# xfs_growfs /dev/vg_data/datafile[root@server0 ~]# xfs_growfs /dev/vg_data/archivelog[root@server0 ~]# df -hTFilesystem TypeSize Used Avail Use% Mounted on/dev/vda1 xfs 10G 3.0G 7.1G 30% /devtmpfs devtmpfs 906M0 906M 0% /devtmpfstmpfs921M 80K 921M 1% /dev/shmtmpfstmpfs921M 17M 904M 2% /runtmpfstmpfs921M0 921M 0% /sys/fs/cgroup/dev/mapper/vg_data-datafile xfs 497M 16M 482M 4% /datafile/dev/mapper/vg_data-archivelog xfs 597M 21M 577M 4% /archivelog

2.3、虚拟机上使用pvresize扩充磁盘

虚拟机从模板上生成,因为模板的/dev/sdb只有50G,但是做出的虚拟机/dev/sdb磁盘是500G,怎么使用者500G呢?

用pvs、vgs、lvs查看,看到的/dev/sdb/、vg0、lv_data都是50G。

先扩充物理卷,物理卷扩充会让卷组自动扩充,再扩充逻辑卷,最后扩充文件系统。

pvresize /dev/sdbpvsvgslvextend -l +100%FREE /dev/vg0/lv_dataxfs_growfs /dev/vg0/lv_data

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。