第8章Linux下的磁盘和文件系统管理
基本磁盘管理
Linux下的文件系统管理
Linux下的交换分区
磁盘配额的管理
LVM管理
磁盘分区表示
Linux中将硬盘、分区等设备均表示为文件
硬盘和分区的结构
确认系统中的磁盘设备
fdisk命令
⚫ 格式:
fdisk -l [磁盘设备]
[root@centos7 ~]# fdisk -l
磁盘 /dev/sda:21.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/4,xfs,fat,iso9660,cramfs
例如:
显示文件系统类型
显示 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)
⚫ Ext2是GNU/Linux系统中标准的文件系统。这是Linux中使用最多的一种文件系统,它是专 门为Linux设计的,拥有极快的速度和极小的CPU占用率。
⚫ Ext3是Ext2的下一代,也就是保有Ext2的格式之下再加上日志功能。
⚫ Ext4是Linux系统下的日志文件系统,是Ext3文件系统的后继版本。
Linux的文件系统
XFS
⚫ XFS一种高性能的日志文件系统,XFS是一个64位文件系统,最大支持 8exbibytes 减1字节 的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32位Linux系统, 文件和文件系统的大小会被限制在 16tebibytes。
◆ XFS最初被合并到Linux 2.4主线中,这使得XFS几乎可以被用在任何一个Linux系统上。Arch, Debian, Fedora, openSUSE, Gentoo, Kate OS, Mandriva,Slackware, Ubuntu, VectorLinux和Zenwalk的安装程序中都可选择 XFS作为文件系统,但由于默认的启动管理器GRUB中存在bug,以上发行版中只有少数几个允许用户在 /boot 挂 载点(引导目录)上使用XFS文件系统。
◆ FreeBSD在2005年12月获得了对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 10月 17 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 10月 17 23:10 /fsdir/
[root@centos7 fsdir]# chmod 1777 /fsdir/
[root@centos7 fsdir]# ll -d /fsdir/
drwxrwxrwt 3 root root 4096 10月 17 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 10月 17 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 10月 15 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/sdb:2147 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 10月 19 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 10月 19 16:21 initrd.img
-rw-r--r--. 1 root root 100M 10月 19 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 10月 19 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