8章Linux下的磁盘和文件系统管理

基本磁盘管理 

Linux下的文件系统管理

Linux下的交换分区

磁盘配额的管理 

LVM管理

磁盘分区表示 

Linux中将硬盘、分区等设备均表示为文件

硬盘和分区的结构

确认系统中的磁盘设备 

fdisk命令

格式:

fdisk -l [磁盘设备]

[root@centos7 ~]# fdisk -l

磁盘 /dev/sda21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x000bbb04

设备 Boot Start End Blocks Id System

/dev/sda1 * 2048 2099199 1048576 83 Linux

/dev/sda2 2099200 41943039 19921920 8e Linux LVM

例如:

查看添加的硬盘,查看磁盘分区

另一种方式

另一种方式

还有一种方法

规划硬盘中的分区 

fdisk命令

用途:在交互式的操作环境中管理磁盘分区

格式:fdisk [磁盘设备] p

交互模式中的常用指令

⚫ a:标记启动分区

⚫ p:列表查看分区信息

⚫ n:新建分区

⚫ d:删除分区

⚫ t:变更分区类型

⚫ w:保存分区设置并退出

⚫ q:放弃分区设置并退出

例如:

对磁盘进行分区

 

p查看

添加容量

查看

写入分区

Linux下文件系统 

文件系统:

操作系统用来管理和存储文件的办法。

从系统角度讲,文件系统对文件存储空间进行组织和分配,并对文件的存储进行保护和检查。

从用户角度来讲,文件系统可以帮助用户建立文件,并对文件的读,写和删除操作提供保护和控制。

Linux的文件系统

⚫ Linux中的一切都是文件。目录只是特殊类型的文件。硬件设备驱动程序和分区也用文件表示。

⚫ Linux支持的文件系统类型

◆ ext2/3/4xfsfatiso9660cramfs

例如:

显示文件系统类型

显示 i节点

查看磁盘合并命令(最清晰)文件系统类型,容量大小

查看文件系统类型

除了x  xfs的其他文件类型

Linux下的文件系统 

查看所有的文件系统类型

[root@centos7 ~]# parted -l

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sda: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

Number Start End Size Type File system 标志

1 1049kB 1075MB 1074MB primary xfs 启动

2 1075MB 21.5GB 20.4GB primary lvm

例如:

显示分区(每个磁盘分别显示)

Linux的文件系统 

Ext2/Ext3/Ext4(Extended File System)

⚫ Ext2GNU/Linux系统中标准的文件系统。这是Linux中使用最多的一种文件系统,它是专 门为Linux设计的,拥有极快的速度和极小的CPU占用率。

⚫ Ext3Ext2的下一代,也就是保有Ext2的格式之下再加上日志功能。

⚫ Ext4Linux系统下的日志文件系统,是Ext3文件系统的后继版本。

Linux的文件系统

XFS

⚫ XFS一种高性能的日志文件系统,XFS是一个64位文件系统,最大支持 8exbibytes 1字节 的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32Linux系统, 文件和文件系统的大小会被限制在 16tebibytes

◆ XFS最初被合并到Linux 2.4主线中,这使得XFS几乎可以被用在任何一个Linux系统上。Arch, Debian, Fedora, openSUSE, Gentoo, Kate OS, Mandriva,Slackware, Ubuntu, VectorLinuxZenwalk的安装程序中都可选择 XFS作为文件系统,但由于默认的启动管理器GRUB中存在bug,以上发行版中只有少数几个允许用户在 /boot 挂 载点(引导目录)上使用XFS文件系统。

◆ FreeBSD200512月获得了对XFS的只读支持,并在次年6月引入了试验性的写支持。不过这些只是为了方便 用户从Linux上迁移到FreeBSD上,并不是为了把XFS作为主打文件系统使用。Red Hat Enterprise Linux 5.4 64 位版的内核完整支持XFS,但未包含创建和使用XFS的命令行工具(CentOS正在进行这方面的尝试),原因是这 些软件包还不够稳定。

Linux支持的其他文件系统 

FAT(FAT16、FAT32) 

提供对MS-DOS的文件系统的支持

iso9660

标准CD-ROM文件系统

cramfs

一个只读文件系统,在嵌入式系统中应用很广

NTFS

⚫ New Technology File System,是 Windows NT 环境的文件系统。

文件系统管理 

磁盘分区格式化

格式化成Ext4类型

◆ mkfs.ext4 磁盘分区

格式化vFAT格式

◆ mkfs.vfat 磁盘分区

例如:

进行格式化

文件系统的挂载与卸载 

挂载

⚫ mount 磁盘分区(包含文件系统) 挂载点(目录名

卸载

⚫ umount 挂载点(目录名)

文件系统的挂载与卸载——开机自动挂载 

更改系统开机自动加载文件

[root@centos7 ~]# mkfs.xfs /dev/sdb1

[root@centos7 ~]# mkdir /fsdir

[root@centos7 ~]#vi /etc/fstab 添加一列

12 /dev/sdb1 /fsdir xfs defaults 0 0 

测试

方法1:不重新启动

[root@centos7 ~]# mount -a

[root@centos7 ~]# df -h

方法2:重新启动计算机

[root@centos7 ~]# df -h

例如:

进行格式化分区

创建目录

将其挂载在这上

检查是否挂载成功

查看mount输出  显示最后一行

查看文件系统类型

进入目录

添加

vim   /etc/fstab

验证

卸载分区并查看

fdisk

删除第二分区

 

 

更新硬盘分区表

 

文件系统的挂载与卸载—— 按需加载 2-1 

准备条件

[root@centos7 ~]# yum install -y autofs

[root@centos7 ~]# mkfs.xfs /dev/sdb2

[root@centos7 ~]# mkdir /autodir 

修改主配置文件

[root@centos7 ~]# vi /etc/auto.master 增加一行

29 /autodir /etc/auto.misc --timeout=20 

修改挂载配置信息文件

[root@centos7 ~]# vi /etc/auto.misc 增加一行

16 test -fstype=xfs :/dev/sdb2

文件系统的挂载与卸载—— 按需加载 2-2 

启动服务进行测试

[root@centos7 ~]# systemctl start autofs

[root@centos7 ~]# cd /autodir/test

[root@centos7 test]# df –h

文件系统 容量 已用 可用 已用% 挂载点 ……

/dev/sdb2 1.1G 33M 1005M 4% /autodir/test

例如:

创建一个G的分区

sdb3

分区格式化

编辑两个文件

vim /etc/auto.master

第一个:

进入修改

第二个:

vim /etc/auto.misc

添加:

启动服务

将服务设置为开机自动启动

在另一个终端

进入test目录

df -hT

查看一下test挂载情况

退出test

查看是否自动卸载

df -hT

发现已经自动卸载

Linux下的交换分区 

SWAP分区

⚫ SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用 的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设 计目的是为了解决真实物理内存不足的问题。但由于交换分区毕竟是通过硬盘设备读写数据 的,速度肯定要比物理内存慢,所以只有当真实的物理内存耗尽后才会调用交换分区的资源。

⚫ 在生产环境中,交换分区的大小一般为真实物理内存的2倍

Linux下的交换分区 

创建swap分区

[root@centos7 ~]# fdisk -l /dev/sdb

设备 Boot Start End Blocks Id System ……

/dev/sdb10 16791552 20971519 2089984 83 Linux

[root@centos7 ~]# mkswap /dev/sdb10

正在设置交换空间版本 1,大小 = 2089980 KiB

无标签,UUID=5edcdbb5-edfd-4ae8-9074-5366d640ca98

Linux下的交换分区 

启用swap分区并测试

[root@centos7 ~]# free -m

total used free shared buff/cache available

Mem: 972 140 728 7 103 706 Swap: 2047 0 2047

[root@centos7 ~]# swapon /dev/sdb10

[root@centos7 ~]# free -m

total used free shared buff/cache available

Mem: 972 141 726 7 103 705

Swap: 4088 0 4088

[root@centos7 ~]# tail -1 /etc/fstab

/dev/sdb10 swap swap defaults 0 0

练习

sdb下创建swap分区

 

 

 

 

修改类型

L查看磁盘代码

小写p查看

 

检查硬盘分区情况

格式化分区

报错

更新

格式化

添加swap

查看当前系统内存

swap加入swap分区中

查看

Vi /etc/fstab

更改fstab文件

重启

进行

查看当前系统内存

制作和使用ISO镜像文件 

制作ISO镜像文件

[root@centos7 ~]# dd if=/dev/cdrom of=/root/centos7.7.iso

记录了9109504+0 的读入

记录了9109504+0 的写出

4664066048字节(4.7 GB)已复制,61.2967 秒,76.1 MB/

[root@centos7 ~]# ll centos7.7.iso

-rw-r--r-- 1 root root 4664066048 1017 22:15 centos7.7.iso 

使用ISO镜像文件

[root@centos7 ~]# mount -o loop centos7.7.iso /dvd/

mount: /dev/loop0 写保护,将以只读方式挂载

[root@centos7 ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

 /dev/loop0 4.4G 4.4G 0 100% /dvd

例如:

挂载文件

 

 

配置用户磁盘配额 

进入配额目录检查配额文件系统,生成配额文件

[root@centos7 ~]# cd /fsdir/

[root@centos7 fsdir]# quotacheck -avug

quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to

avoid running quotacheck after an unclean shutdown.

quotacheck: Scanning /dev/sdb1 [/fsdir] done

quotacheck: Cannot stat old user quota file /fsdir/aquota.user: 没有那个文件或目录. Usage will not be subtracted.

quotacheck: Cannot stat old group quota file /fsdir/aquota.group: 没有那个文件或目录. Usage will not be subtracted.

quotacheck: Cannot stat old user quota file /fsdir/aquota.user: 没有那个文件或目录. Usage will not be subtracted.

quotacheck: Cannot stat old group quota file /fsdir/aquota.group: 没有那个文件或目录. Usage will not be subtracted.

quotacheck: Checked 3 directories and 0 files

quotacheck: Old file not found.

quotacheck: Old file not found.

[root@centos7 fsdir]# ls aquota.group

aquota.user lost+found

例如:

格式化为ex4

重新加载

vim /etc/fstab

df -hT挂载情况

运行,扣他。

添加用户

配置用户磁盘配额 

设置用户磁盘配额

[root@centos7 fsdir]# edquota -u rose

1 Disk quotas for user rose (uid 1000):

2 Filesystem blocks soft hard inodes soft hard

3 /dev/sdb1 0 8M 10M 0 2 3 

例如:

进入fsdir

通过命令进入rose的磁盘配额

修改文件

 

设置宽限时间

[root@centos7 fsdir]# edquota –t

1 Grace period before enforcing soft limits for users:

2 Time units may be: days, hours, minutes, or seconds

3 Filesystem Block grace period Inode grace period

4 /dev/sdb1 7days 7days

例如:

查看宽限期

配置用户磁盘配额 

设置配额目录适当的权限

[root@centos7 fsdir]# ll -d /fsdir/

drwxr-xr-x 3 root root 4096 1017 23:10 /fsdir/

[root@centos7 fsdir]# chmod 1777 /fsdir/

[root@centos7 fsdir]# ll -d /fsdir/

drwxrwxrwt 3 root root 4096 1017 23:10 /fsdir/

例如:

查看权限

 

激活配额

[root@centos7 fsdir]# quotaon /fsdir/

启用磁盘配额

磁盘配额测试 

使用rose登陆进行测试

[rose@centos7 ~]$ cd /fsdir/

[rose@centos7 fsdir]$ ll -h

总用量 8.9M

-rw-r--r-- 1 root root 8.9M 1017 23:24 httpd-2.4.41.tar.gz

……

[rose@centos7 fsdir]$ cp httpd-2.4.41.tar.gz rose1

sdb1: warning, user block quota exceeded.

[rose@centos7 fsdir]$ cp httpd-2.4.41.tar.gz rose2

sdb1: write failed, user block limit reached.

cp: 写入"rose2" 出错: 超出磁盘限额

cp: 扩展"rose2" 失败: 超出磁盘限额

例如:

rose身份登录

 

再创建一个

 

 

 

 

 

XFS文件系统下的磁盘配额 

xfs_quota命令

⚫ xfs_quota命令是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令。

格式为“xfs_quota [参数] 配额 文件系统

◆ -c 参数用于以参数的形式设置要执行的命令

◆ -x 参数是专家模式,让运维人员能够对quota服务进行更多复杂的配置 p 启用配额功能

[root@centos7 ~]# tail -1 /etc/fstab

/dev/sdb1 /xfsqt xfs defaults,uquota,gquota 0 0

例如:

Xfs磁盘分区

Xfs分区

 

 

重启

检查磁盘

XFS文件系统下的磁盘配额 

查看配额信息

[root@centos7 ~]# xfs_quota -x -c report /xfsqt/

User quota on /xfsqt (/dev/sdb1)

Blocks

User ID Used Soft Hard Warn/Grace

---------- --------------------------------------------------

root 0 0 0 00 [--------]

Group quota on /xfsqt (/dev/sdb1)

Blocks

Group ID Used Soft Hard Warn/Grace

---------- --------------------------------------------------

root 0 0 0 00 [--------]

报告磁盘信息

添加用户

XFS文件系统下的磁盘配额 

配置磁盘配额

[root@centos7 ~]# xfs_quota -x -c 'limit bsoft=8M bhard=10M isoft=2 ihard=3 tom' /xfsqt/

[root@centos7 ~]# xfs_quota -x -c report /xfsqt/

User quota on /xfsqt (/dev/sdb1)

Blocks

User ID Used Soft Hard Warn/Grace

---------- --------------------------------------------------

root 0 0 0 00 [--------]

tom 0 8192 10240 00 [--------]

Group quota on /xfsqt (/dev/sdb1)

Blocks

Group ID Used Soft Hard Warn/Grace

---------- --------------------------------------------------

root 0 0 0 00 [--------]

磁盘配额报告

XFS文件系统下的磁盘配额 

配额测试

[root@centos7 xfsqt]# chmod 1777 /xfsqt/

[root@centos7 xfsqt]# su tom

[tom@centos7 xfsqt]$ ll

总用量 9052

-rw-r--r-- 1 root root 9267917 1015 21:30 httpd-2.4.41.tar.gz [tom@centos7 xfsqt]$ cp httpd-2.4.41.tar.gz tom1

[tom@centos7 xfsqt]$ cp httpd-2.4.41.tar.gz tom2

cp: 写入"tom2" 出错: 超出磁盘限额

cp: 扩展"tom2" 失败: 超出磁盘限额

[tom@centos7 xfsqt]$ touch tom3

touch: 无法创建"tom3": 超出磁盘限额

更改目录权限

验证

 

 

查看文件

删除文件

通过以上磁盘和文件系统管理的截图实验,另配一个实验(以及实验相关的命令)供自己检测

1,添加 10G 硬盘,为硬盘分三个分区:
分区1:1G ext4 挂载至 /part-ext4
分区2:2G xfs 挂载至 /part-xfs
分区3:2G swap (代码82)
分别设置分区1,分区2 可以开机自动挂载,启用swap分区3
[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# partprobe
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.xfs /dev/sdb2
[root@localhost ~]# mkswap /dev/sdb3
[root@localhost ~]# mkdir /part-ext4
[root@localhost ~]# mkdir /part-xfs
[root@localhost ~]# mount /dev/sdb1 /part-ext4
[root@localhost ~]# mount /dev/sdb2 /part-xfs
[root@localhost ~]# free -m
[root@localhost ~]# swapon /dev/sdb3
[root@localhost ~]# free -m

[root@localhost ~]# vim /etc/fstab

添加下面三行
/dev/sdb1 /part-ext4 ext4 defaults 0 0
/dev/sdb2 /part-xfs xfs defaults 0 0
/dev/sdb3 swap swap defaults 0 0
[root@localhost ~]# reboot
[root@localhost ~]# df -hT

2,创建一个逻辑分区 /dev/sdb5 分区5:2G
配置 autofs 自动挂载至目录 /autodir/test 并设置目录20秒不被使用时自动卸载

[root@localhost ~]# fdisk /dev/sdb
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
/dev/sdb3 6293504 10487807 2097152 82 Linux swap / Solaris
/dev/sdb4 10487808 20971519 5241856 5 Extended
/dev/sdb5 10489856 14684159 2097152 83 Linux

[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# mkfs.xfs /dev/sdb5

[root@localhost ~]# rpm -q autofs

[root@localhost ~]# vim /etc/auto.master
修改第七行
/autodir /etc/auto.misc --timeout=20

[root@localhost ~]# vim /etc/auto.misc
在文尾添加一行
test -fstype=xfs :/dev/sdb5

[root@localhost ~]# systemctl start autofs
[root@localhost ~]# systemctl enable autofs

[root@localhost ~]# df -hT
[root@localhost ~]# cd /autodir/test
[root@localhost test]# df -hT
[root@localhost test]# cd
等20秒后
[root@localhost ~]# df -hT

3,将 Centos 7 光盘制作成 iso 镜像文件,并将镜像文件挂载至 /dvd 目录

[root@localhost ~]# dd if=/dev/cdrom of=/root/centos7.iso
[root@localhost ~]# mkdir /dvd
[root@localhost ~]# mount -o loop centos7.iso /dvd
[root@localhost ~]# mount | tail -1
/root/centos7.iso on /dvd type iso9660 (ro,relatime)

4,为 /part-ext4 目录配置磁盘配额,设置用户 li 的磁盘软配额为 8M 硬配额为 10M
i节点软配额 2 硬配额 3 ,并经过验证

[root@localhost ~]# vim /etc/fstab
修改 /part-ext4 自动挂载行
/dev/sdb1 /part-ext4 ext4 defaults,usrquota,grpquota 0 0
[root@localhost ~]# mount -o remount,usrquota,grpquota /dev/sdb1 /part-ext4

[root@localhost ~]# useradd li
[root@localhost ~]# passwd li

[root@localhost ~]# quotacheck -avug
[root@localhost ~]# cd /part-ext4
[root@localhost part-ext4]# ls -a
. .. aquota.group aquota.user lost+found

[root@localhost part-ext4]# edquota -u li
/dev/sdb1 0 8M 10M 0 2 3

[root@localhost part-ext4]# cd
[root@localhost ~]# ll -d /part-ext4
[root@localhost ~]# chmod 1777 /part-ext4
[root@localhost ~]# quotaon /part-ext4

验证:
[root@localhost ~]# su - li
[li@localhost ~]$ dd if=/dev/zero of=/part-ext4/test bs=1M count=9
成功,有警告
[li@localhost ~]$ dd if=/dev/zero of=/part-ext4/test2 bs=1M count=2
失败,超过磁盘硬配额
[li@localhost ~]$ cd /part-ext4
[li@localhost part-ext4]$ rm -rf test*
[li@localhost part-ext4]$ touch test1 test2
[li@localhost part-ext4]$ touch test3
成功,有警告
[li@localhost part-ext4]$ ls
aquota.group aquota.user lost+found test1 test2 test3
[li@localhost part-ext4]$ touch test4
失败,超过磁盘硬配额
[li@localhost part-ext4]$ ls
aquota.group aquota.user lost+found test1 test2 test3
[li@localhost part-ext4]$ quota -u li
[li@localhost part-ext4]$ logout

5,为 /part-xfs 目录配置磁盘配额,设置用户 li 的磁盘软配额为 20M 硬配额为 30M
i节点软配额 2 硬配额 3,并经过验证

[root@localhost ~]# vim /etc/fstab
/dev/sdb2 /part-xfs xfs defaults,usrquota,grpquota 0 0
[root@localhost ~]# reboot //必须重启生效

[root@localhost ~]# chmod 1777 /part-xfs
[root@localhost ~]# xfs_quota -x -c report /part-xfs
[root@localhost ~]# xfs_quota -x -c "limit bsoft=20M bhard=30M isoft=2 ihard=3 li" /part-xfs
[root@localhost ~]# xfs_quota -x -c "report -ubih" /part-xfs

验证:
[root@localhost ~]# su - li
[li@localhost ~]$ dd if=/dev/zero of=/part-xfs/test1 bs=1M count=25
成功,没有警告
[li@localhost ~]$ dd if=/dev/zero of=/part-xfs/test2 bs=1M count=10
失败,超过磁盘硬配额

[li@localhost part-xfs]$ rm -rf *
[li@localhost part-xfs]$ touch test1 test2
[li@localhost part-xfs]$ touch test3
成功,没有警告
[li@localhost part-xfs]$ touch test4
touch: cannot touch ‘test4’: Disk quota exceeded
失败,超过磁盘硬配额
[li@localhost part-xfs]$ logout

LVM(逻辑卷管理器)

逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建 初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。 p LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组, 可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和 布局,就可以实现对硬盘分区的动态调整。

 

LVM(逻辑卷管理器) 

LVM基本概念

⚫ PV(Physical Volume) 物理卷:物理卷处于LVM的最底层,可以是整个物理磁盘,也可以 是硬盘中的分区。

⚫ VG(Volume Group) 卷组:可以看成单独的逻辑磁盘,建立在PV之上,是PV的组合。一 个卷组中至少要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。

⚫ LV(Logical Volume) 逻辑卷:相当于物理分区的/dev/sdaX。逻辑卷建立在卷组之上,卷 组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展或缩小空间。系 统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

LVM(逻辑卷管理器) 

LVM基本概念

⚫ PE(Physical Extent) 物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区 域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷 组中的所有物理卷的物理区域大小需要一致。当多个PV组成一个VG时,LVM会在所有PV上 做类似格式化的动作,将每个PV切成一块块的空间,这一块块的空间就称为PE, 通常是4MB。

⚫ LE(Logical Extent) 逻辑区域:逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区 域的大小取决于逻辑卷所在卷组中的物理区域大小。LE的大小为PE的倍数(通常为1:1)

LVM(逻辑卷管理器) 

LVM的基本概念

⚫ VGDA(Volume Group Descriptor Area)卷组描述区域:存在于每个物理卷中,用于描述 该物理卷本身、物理卷所属卷组、卷组中的逻辑卷以及逻辑卷中物理区域的分配等所有的信 息,卷组描述区域是在使用pvcreate命令建立物理卷时建立的。

LVM(逻辑卷管理器) 

LVM的管理方法

LVM进行逻辑卷的管理时,创建顺序是pv->vg->lv。

⚫ 首先创建一个物理卷(对应一个物理硬盘分区或者一个物理硬盘),然后把这些分区或者硬 盘加入到一个卷组中(相当于一个逻辑上的大硬盘),再在这个大硬盘上划分分区lv(逻辑 上的分区,就是逻辑卷),最后,把lv逻辑卷格式化以后,就可以像使用一个传统分区那样, 把它挂载到一个挂载点上,需要的时候,这个逻辑卷可以被动态缩放。

⚫ LVM进行逻辑卷的管理时,删除的顺序是lv->vg- >pv。

LVM(逻辑卷管理器) 

LVM 的管理命令

 

LVM(逻辑卷管理器)配置 

添加硬盘并且分区

[root@centos7 ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb2147 MB, 2147483648 字节,4194304 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xf9a95869

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 1026047 512000 83 Linux

/dev/sdb2 1026048 2050047 512000 83 Linux

/dev/sdb3 2050048 4194303 1072128 83 Linux

练习:

添加硬盘

进行分区

fdisk /dev/sdb

第2个

 

第3个

 

查看

LVM(逻辑卷管理器)配置 

将分区类型改为lvm

[root@centos7 ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)

命令(输入 m 获取帮助)t

分区号 (1-3,默认 3)1

Hex 代码(输入 L 列出所有代码)8e

已将分区“Linux”的类型更改为“Linux LVM”

……

命令(输入 m 获取帮助)w

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

例如:

更改类型

 

 

LVM(逻辑卷管理器)配置 

创建PV

[root@centos7 ~]# pvcreate /dev/sdb1 /dev/sdb2

WARNING: xfs signature detected on /dev/sdb2 at offset 0. Wipe it? [y/n]: y

Wiping xfs signature on /dev/sdb2.

WARNING: xfs_external_log signature detected on /dev/sdb2 at offset 16384. Wipe it? [y/n]: y

Wiping xfs_external_log signature on /dev/sdb2.

Physical volume "/dev/sdb1" successfully created.

Physical volume "/dev/sdb2" successfully created.

例如:

pv创建

LVM(逻辑卷管理器)配置 

查看PV

[root@centos7 ~]# pvdisplay /dev/sdb1

"/dev/sdb2" is a new physical volume of "500.00 MiB"

--- NEW Physical volume ---

PV Name /dev/sdb2

VG Name

PV Size 500.00 MiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID uVZvFP-VhKk-UWmo-SsvT-S7p8-J490-foncKC

LVM(逻辑卷管理器)配置

创建并查看VG

 例如:

查看并创建卷组

LVM(逻辑卷管理)配置

查看加入卷组后的pv

 

LVM(逻辑卷管理器)配置 

创建LV

[root@centos7 ~]# lvcreate -n lv1 -L 496M vg1

WARNING: xfs signature detected on /dev/vg1/lv1 at offset 0. Wipe it? [y/n]: y

Wiping xfs signature on /dev/vg1/lv1.

Logical volume "lv1" created.

例如:

创建LV

LVM(逻辑卷管理器)配置 

 查看LV

LVM(逻辑卷管理器)配置 

查看创建LV后的VG

 

 例如:

查看LV

另一种写法

LVM(逻辑卷管理器)配置 

使用LV

[root@centos7 ~]# mkfs.xfs /dev/vg1/lv1

[root@centos7 ~]# mount /dev/vg1/lv1 /disk1/

[root@centos7 ~]# df -TH 文件系统 类型 容量 已用 可用 已用% 挂载点 ………

/dev/mapper/vg1-lv1 xfs 517M 27M 491M 6% /disk1

例如:

格式化lv

创建目录

挂载

查看

LVM(逻辑卷管理器)配置 

扩容VG

 

例如:

给卷组扩容

查看vg

vgdisplay vg1

LVM(逻辑卷管理器)配置 

扩容LV

例如:

给逻辑卷扩容

查看

lvdisplay /dev/vg1/lv1

查看卷组信息

vgdisplay lv1

LVM(逻辑卷管理器)配置 

测试扩容

[root@centos7 ~]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/vg1-lv1 xfs 493M 67M 427M 14% /disk1

[root@centos7 ~]# xfs_growfs /dev/vg1/lv1

[root@centos7 ~]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/vg1-lv1 xfs 893M 67M 827M 8% /disk1

例如:

查看

Xfs文件系统的扩容

查看

Ext4文件系统扩容(看文件系统再执行)

LVM(逻辑卷管理器)配置 

创建LV的快照

首先给vg扩容下空间,快照的空间占用vg的空闲空间

[root@centos7 ~]# pvcreate /dev/sdb3

Physical volume "/dev/sdb3" successfully created.

[root@centos7 ~]# vgextend vg1 /dev/sdb3

Volume group "vg1" successfully extended

[root@centos7 ~]# vgdisplay vg1

………

Alloc PE / Size 224 / 896.00 MiB

Free PE / Size 285 / 1.11 GiB

 ………

例如:

如何做快照

lv1做快照

查看vg容量是否可以创建快照

vgdisplay vg1

发现不够,进行扩容

 

 

创建测试文件

LVM(逻辑卷管理器)配置 

lv1创建1个大小为500M,名称为LV1SP的快照

[root@centos7 ~]# ll -h /disk1/

总用量 42M

-rw-r--r--. 1 root root 42M 1019 16:21 initrd.img

[root@centos7 ~]# lvcreate -L 500M -s -n LV1SP /dev/vg1/lv1

Using default stripesize 64.00 KiB.

Logical volume "LV1SP" created.

[root@centos7 ~]# lvs                       //查看LV1SP的使用量

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root cl -wi-ao---- 13.39g

swap cl -wi-ao---- 1.60g

LV1SP vg1 swi-a-s--- 500.00m lv1 0.00

lv1 vg1 owi-aos--- 896.00m

 例如:

查看

创建快照

查看快照

LVM(逻辑卷管理器)配置 

创建一个大小为100M的空文件进行测试

[root@centos7 ~]# dd if=/dev/zero of=/disk1/test.file count=1 bs=100M

记录了1+0 的读入

记录了1+0 的写出

104857600字节(105 MB)已复制,0.149937 秒,699 MB/

[root@centos7 ~]# ll -h /disk1/

总用量 142M

-rw-r--r--. 1 root root 42M 1019 16:21 initrd.img

-rw-r--r--. 1 root root 100M 1019 16:30 test.file

 例如:

在创建文件

lv1中写一个数据变化量

查看

LVM(逻辑卷管理器)配置 

再次检查LV1SP的使用量

[root@centos7 ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root cl -wi-ao---- 13.39g

swap cl -wi-ao---- 1.60g

LV1SP vg1 swi-a-s--- 500.00m lv1 20.09

lv1 vg1 owi-aos--- 896.00m

 例如:

查看lv情况

LVM(逻辑卷管理器)配置 

卸载文件系统,然后恢复快照

[root@centos7 ~]# umount /disk1/

[root@centos7 ~]# lvconvert --merge /dev/vg1/LV1SP

Merging of volume vg1/LV1SP started.

lv1: Merged: 80.32%

lv1: Merged: 100.00%

快照使用一次后会自动删除

[root@centos7 ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root cl -wi-ao---- 13.39g

swap cl -wi-ao---- 1.60g

lv1 vg1 -wi-a----- 896.00m

 例如:

恢复快照先卸载再回复

恢复

 

LVM(逻辑卷管理器)配置 

验证快照恢复结果

[root@centos7 ~]# ll -h /disk1 /    总用量 0

[root@centos7 ~]# mount /dev/vg1/lv1 /disk1/

[root@centos7 ~]# ll -h /disk1 /     总用量 42M

-rw-r--r--. 1 root root 42M 1019 16:21 initrd.img

例如:

证明数据被恢复

 

拓展:

删除快照:

不用恢复直接删除快照

通过以上LVM的截图实验,另配一个实验(以及实验相关的命令)供自己检测

1,创建三个逻辑分区 sdb6 sdb7 sdb8 分别为 500M 500M 1G 设置分区类型为 8e

[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# fdisk -l /dev/sdb
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
/dev/sdb3 6293504 10487807 2097152 82 Linux swap / Solaris
/dev/sdb4 10487808 20971519 5241856 5 Extended
/dev/sdb5 10489856 14684159 2097152 83 Linux
/dev/sdb6 14686208 15710207 512000 8e Linux LVM
/dev/sdb7 15712256 16736255 512000 8e Linux LVM
/dev/sdb8 16738304 18835455 1048576 8e Linux LVM
[root@localhost ~]# partprobe /dev/sdb

2,将 sdb6 sdb7 转化为 pv, 并将 sdb6 加入卷组 vg1 中,将卷组 vg1 中的全部空间划分给逻辑卷 vg1
将逻辑卷 vg1 格式化为 xfs 文件系统挂载至 /mailbox 上

[root@localhost ~]# pvcreate /dev/sdb6 /dev/sdb7
[root@localhost ~]# pvdisplay
[root@localhost ~]# vgcreate vg1 /dev/sdb6
[root@localhost ~]# vgdisplay vg1
[root@localhost ~]# lvcreate -n lv1 -L 496M vg1
[root@localhost ~]# lvdisplay /dev/vg1/lv1

[root@localhost ~]# mkfs.xfs /dev/vg1/lv1
[root@localhost ~]# mkdir /mailbox
[root@localhost ~]# mount /dev/vg1/lv1 /mailbox

3,将 sdb7 加入卷组 vg1 中,为 lv1 扩容 400M,并验证扩展的空间对于目录 /mailbox 可用

[root@localhost ~]# vgextend vg1 /dev/sdb7
[root@localhost ~]# vgdisplay vg1
[root@localhost ~]# lvextend -L +400M /dev/vg1/lv1
[root@localhost ~]# lvdisplay /dev/vg1/lv1
[root@localhost ~]# df -hT
[root@localhost ~]# xfs_growfs /dev/vg1/lv1
[root@localhost ~]# df -hT

4,创建快照
为卷组 vg1 扩容,将 sdb8 转化为 pv 并加入卷组 vg1 中,
在逻辑卷中创建文件 file 大小为 20M
为逻辑卷 lv1 创建快照 LV1SP 大小为 500M,使用 lvs 查看快照逻辑卷
在 /mailbox 中创建新文件 new 大小为 100M,使用 lvs 查看快照逻辑卷变化

[root@localhost ~]# fdisk -l /dev/sdb
[root@localhost ~]# pvcreate /dev/sdb8
[root@localhost ~]# vgextend vg1 /dev/sdb8
[root@localhost ~]# vgdisplay vg1

[root@localhost ~]# dd if=/dev/zero of=/mailbox/file bs=10M count=2
[root@localhost ~]# ll -h /mailbox
total 20M
-rw-r--r--. 1 root root 20M Oct 29 15:20 file
[root@localhost ~]# lvcreate -L 500M -s -n LV1SP /dev/vg1/lv1
[root@localhost ~]# lvs
[root@localhost ~]# dd if=/dev/zero of=/mailbox/new bs=100M count=1
[root@localhost ~]# ll -h /mailbox
total 120M
-rw-r--r--. 1 root root 20M Oct 29 15:20 file
-rw-r--r--. 1 root root 100M Oct 29 15:26 new
[root@localhost ~]# lvs

5,恢复快照 LV1SP 并验证

[root@localhost ~]# umount /mailbox
特别注意:要先卸载分区再恢复快照。
[root@localhost ~]# lvconvert --merge /dev/vg1/LV1SP
[root@localhost ~]# lvs
[root@localhost ~]# mount /dev/vg1/lv1 /mailbox
[root@localhost ~]# ll -h /mailbox
total 20M
-rw-r--r--. 1 root root 20M Oct 29 15:20 file

6,为逻辑卷 lv1 创建快照 LV1SP2 大小为 500M,使用 lvs 查看快照逻辑卷
在 /mailbox 中创建新文件 new2 大小为 50M,使用 lvs 查看快照逻辑卷变化
移除快照

[root@localhost ~]# lvcreate -L 500M -s -n LV1SP2 /dev/vg1/lv1
[root@localhost ~]# lvs
[root@localhost ~]# dd if=/dev/zero of=/mailbox/new2 bs=10M count=5
[root@localhost ~]# ll -h /mailbox
total 70M
-rw-r--r--. 1 root root 20M Oct 29 15:20 file
-rw-r--r--. 1 root root 50M Oct 29 15:50 new2
[root@localhost ~]# lvs

[root@localhost ~]# lvremove /dev/vg1/LV1SP2
[root@localhost ~]# lvs