一、磁盘配额
1、概念
Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况(先到先得),如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限。因此,系统管理员应该适当的开放磁盘的权限给用户,以妥善分配系统资源。
磁盘配额(Quota)是一种磁盘空间的管理机制,是 Linux 系统中用来限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的。
需要注意:
1)磁盘配额限制的用户和用户组,只能是普通用户和用户组。
2)磁盘配额限制只能针对分区,而不能针对某个目录,换句话说,磁盘配额仅能针对文件系统进行限制。比如:如果你的 /dev/sda5 是挂载在 /home 底下,那么,在 /home 下的所有目录都会受到磁盘配额的限制;
3)我们可以限制用户占用的磁盘容量大小(block),当然也能限制用户允许占用的文件个数(inode)。
2、用户的磁盘配额
用户配额是指针对用户个人的配额,而组配额是指针对整个用户组的配额,给组配额不怎么用。
需要注意:
1)磁盘容量限制和文件个数限制
可以通过限制用户可用的 block 数量来限制用户可用的磁盘容量,也可以通过限制用户可用的 inode 数量来限制用户可以上传或新建的文件个数。
2)软限制和硬限制
软限制可理解为警告限制,硬限制就是真正的限制了。
3)宽限时间
如果用户的空间占用数处于软限制和硬限制之间,那么系统会在用户登录时警告用户磁盘将满,这个时间就是宽限时间,默认是 7 天。如果到达宽限时间,用户的磁盘占用量还超过软限制,那么软限制就会升级为硬限制。
3、磁盘配额条件
使用磁盘配额的前提,是必须要内核以及文件系统支持才行。
1)内核必须支持磁盘配额,centos6和7默认就是支持的。
[root@centos7 ~]# grep "CONFIG_QUOTA" /boot/config-3.10.0-957.el7.x86_64
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y
2)系统中必须安装了 quota 工具,没找到就yum安装一下
这里顺便安装下 yum install -y bash-completion 加强tab键代码自动补全。
4、磁盘配额步骤
磁盘配额(Quota )仅针对文件系统(分区)进行限制,这里我们准备分区和用户
a)在/dev/sdc硬盘两个创建 5GB 的分区,分别格式化为ext4和xfs,并分别挂载到 /disk1ext4和、disk1xfs目录当中。
[root@centos7 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 9E2ECCE9-CBEC-40F8-B406-7397ED2C38DA
# Start End Size Type Name
1 2048 10487807 5G Linux filesyste Linux filesystem
2 10487808 20973567 5G Linux filesyste Linux filesystem
[root@centos7 ~]# mkfs.xfs /dev/sdc1
[root@centos7 ~]# mkfs.ext4 /dev/sdc2
[root@centos7 ~]# mkdir /disk1xfs
[root@centos7 ~]# mkdir /disk1ext4
[root@centos7 ~]# mount /dev/sdc1 /disk1xfs/
[root@centos7 ~]# mount /dev/sdc2 /disk1ext4/
# 查看
[root@centos7 ~]# mount
# 权限777
[root@centos7 ~]# chmod 777 /disk1ext4
[root@centos7 ~]# chmod 777 /disk1xfs
b)建立几个用户,做用户配额
[root@centos7 ~]# useradd ext1
[root@centos7 ~]# useradd ext2
[root@centos7 ~]# useradd xfs1
[root@centos7 ~]# useradd xfs2
[root@centos7 ~]# passwd ext1
[root@centos7 ~]# passwd ext2
[root@centos7 ~]# passwd xfs1
[root@centos7 ~]# passwd xfs2
(一)ext4文件系统做磁盘配额
1)在硬盘分区上启动磁盘配额
(1)临时生效
# 重新挂载
[root@centos7 ~]# mount -o remount,usrquota,grpquota /disk1ext4
[root@centos7 ~]# mount
...
/dev/sdc2 on /disk1ext4 type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)
(2)永久生效,则需要修改/etc/fstab 文件,需要重启才能起作用,
/dev/sdc2 /disk1ext4 xfs defaults,usrquota,grpquota 0 0
2)建立两个磁盘配额的配置文件: aquota.group 和 aquota.user
使用 quotacheck 命令建立
基本格式为:quotacheck [-avugfM] 文件系统
选项:在使用这些选项时,只需一起下达 -avug 即可
选项 | 功能 |
---|---|
-a | 扫瞄所有在 /etc/mtab 中,含有 quota 支持的 filesystem,加上此参数后,后边的文件系统可以不写; |
-u | 针对使用者扫瞄文件与目录的使用情况,会创建 aquota.user |
-g | 针对群组扫瞄文件与目录的使用情况,会创建 aquota.group |
-v | 显示扫瞄的详细过程; |
-f | 强制扫瞄文件系统,并写入新的 quota 记录文件 |
-M(大写) | 强制以读写的方式扫瞄文件系统,只有在特殊情况下才会使用。 |
通过执行 quotacheck 命令,就可以成功创建支持配额的记录文件,读者不要去手动编辑这两个文件,一方面,这两个文件是 Quota 自己的数据文件,并不是纯文本文件;并且在你对该文件系统进行操作时,操作的结果会同步到这两个文件中,因此文件中的数据会发生变化。
注意:需要关闭 SELinux,否则会报错,此命令不要反复的执行,因为若启动 Quota 后还执行此命令,会破坏原有的记录文件,同时产生一些错误信息。
生成的文件在挂载点下
[root@centos7 ~]# ll /disk1ext4/
总用量 32
-rw------- 1 root root 6144 4月 14 22:25 aquota.group
-rw------- 1 root root 6144 4月 14 22:25 aquota.user
3)设置用户配额限制
edquota 命令:用于修改用户和群组的配额限制参数,包括磁盘容量和文件个数限制、软限制和硬限制值、宽限时间,该命令的基本格式有以下 3 种:
[root@centos7 ~]# edquota [-u 用户名] [-g 群组名]
[root@centos7 ~]# edquota -t
[root@centos7 ~]# edquota -p 源用户名 -u 新用户名
选项 | 功能 |
---|---|
-u 用户名 | 进入配额的 Vi 编辑界面,修改针对用户的配置值; |
-g 群组名 | 进入配额的 Vi 编辑界面,修改针对群组的配置值; |
-t | 修改配额参数中的宽限时间; |
-p | 将源用户(或群组)的磁盘配额设置,复制给其他用户(或群组) |
给ext1用户配额,然后有它复制给我我ext2
[root@centos7 ~]# edquota -u ext1
[root@centos7 ~]# edquota -p ext1 -u ext2
4)开启和关闭磁盘配额限制
(1)开启
quotaon 命令用于启动 Quota 服务,此命令的基本格式为:
[root@centos7 ~]# quotaon [-avug]
[root@centos7 ~]# quotaon [-vug] 文件系统名称
-a | 根据 /etc/mtab 文件中对文件系统的配置,启动相关的Quota服务,如果不使用 -a 选项,则此命令后面就需要明确写上特定的文件系统名称 |
-u | 针对用户启动 Quota(根据记录文件 aquota.user) |
-g | 针对群组启动 Quota(根据记录文件 aquota.group) |
-v | 显示启动服务过程的详细信息 |
[root@centos7 ~]# quotaon -auv
/dev/sdc2 [/disk1ext4]: user quotas turned on
注意:quotaon -auvg 命令只需要在第一次启动 Quota 服务时才需要进行,因为下次重新启动系统时,系统的 /etc/rc.d/rc.sysinit 初始化脚本会自动下达这个命令。
(2)关闭
quotaoff 命令用于关闭 Quota 服务,此命令的基本格式同 quotaon 命令一样
[root@centos7 ~]# quotaoff [-avug]
[root@centos7 ~]# quotaoff [-vug] 文件系统名称
选项 | 功能 |
---|---|
-a | 根据 /etc/mtab 文件,关闭已启动的 Quota 服务,如果不使用 -a 选项,则此命令后面就需要明确写上特定的文件系统名称 |
-u | 关闭针对用户启动的 Quota 服务。 |
-g | 关闭针对群组启动的 Quota 服务。 |
-v | 显示服务过程的详细信息 |
5)查询已建立好的磁盘配额
查询磁盘配额有两种方法:
(1)使用 quota 命令查询用户或用户组的配额
基本格式为:[root@centos7 ~] # quota [选项] [用户名或组名]
选项:
- -u 用户名:查询用户配额;
- -g 组名:查询组配额;
- -v:显示详细信息;
- -s:以习惯单位显示容量大小,如M、G;
[root@centos7 ~]# quota -uvs ext1
Disk quotas for user ext1 (uid 1004):
Filesystem space quota limit grace files quota limit grace
/dev/sdc2 0K 4000K 5000K 0 5 8
(2)使用 repquota 命令查询整个分区的配额情况。
基本格式为:[root@centos7 ~] # repquota [选项] [分区名]
选项:
- -a:依据 /etc/mtab 文件查询配额。如果不加 -a 选项,就一定要加分区名;
- -u:查询用户配额;
- -g:查询组配额;
- -v:显示详细信息;
- -s:以习惯单位显示容量太小;
[root@centos7 ~]# quota -uvs ext1
Disk quotas for user ext1 (uid 1004):
Filesystem space quota limit grace files quota limit grace
/dev/sdc2 0K 4000K 5000K 0 5 8
[root@centos7 ~]# repquota -uvs ext2
repquota: Cannot stat() given mountpoint ext2: 没有那个文件或目录
Skipping...
repquota: No correct mountpoint specified.
repquota: Cannot initialize mountpoint scan.
[root@centos7 ~]# repquota -auvs
*** Report for user quotas on device /dev/sdc2
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20K 0K 0K 2 0 0
ext1 -- 0K 4000K 5000K 0 5 8
ext2 -- 0K 4000K 5000K 0 5 8
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000
6)测试磁盘配额是否生效
(1)文件个数测试
[root@centos7 ~]# su - ext1
[ext1@centos7 ~]$ cd /disk1ext4/
[ext1@centos7 disk1ext4]$ touch e1
[ext1@centos7 disk1ext4]$ touch e2
[ext1@centos7 disk1ext4]$ touch e3
[ext1@centos7 disk1ext4]$ touch e4
[ext1@centos7 disk1ext4]$ touch e5
[ext1@centos7 disk1ext4]$ touch e6
sdc2: warning, user file quota exceeded.
[ext1@centos7 disk1ext4]$ touch e7
[ext1@centos7 disk1ext4]$ touch e8
[ext1@centos7 disk1ext4]$ touch e9
sdc2: write failed, user file limit reached.
touch: 无法创建"e9": 超出磁盘限额
(2)磁盘容量测试
dd if=/dev/zero of=/disk1ext4/e2 bs=1M count=50 想/disk1ext4/e文件中写入指定大小 60MB的数据
[ext1@centos7 disk1ext4]$ rm -rf e1
[ext1@centos7 disk1ext4]$ dd if=/dev/zero of=/disk1ext4/e2 bs=1M count=30
sdc2: warning, user block quota exceeded.
sdc2: write failed, user block limit reached.
dd: 写入"/disk1ext4/e2" 出错: 超出磁盘限额
记录了5+0 的读入
记录了4+0 的写出
5120000字节(5.1 MB)已复制,0.0143578 秒,357 MB/秒
[ext1@centos7 disk1ext4]$ ll
总用量 5032
-rw------- 1 root root 6144 4月 14 22:25 aquota.group
-rw------- 1 root root 7168 4月 14 22:34 aquota.user
-rw-rw-r-- 1 ext1 ext1 5120000 4月 14 22:51 e2
-rw-rw-r-- 1 ext1 ext1 0 4月 14 22:45 e3
-rw-rw-r-- 1 ext1 ext1 0 4月 14 22:45 e4
-rw-rw-r-- 1 ext1 ext1 0 4月 14 22:45 e5
-rw-rw-r-- 1 ext1 ext1 0 4月 14 22:45 e6
-rw-rw-r-- 1 ext1 ext1 0 4月 14 22:45 e7
-rw-rw-r-- 1 ext1 ext1 0 4月 14 22:45 e8
(二)xfs文件系统做磁盘配额
1)在硬盘分区上启动磁盘配额
(1)临时生效
xfs系统分区重新挂载,开启时发现不起作用,这里我们挂载的时候就开启配额
# 重新挂载
[root@centos7 ~]# mount -o remount,uquota,gquota /disk1xfs
[root@centos7 ~]# mount
...
/dev/sdc1 on /disk1xfs type xfs (rw,relatime,attr2,inode64,noquota)
# 挂载是启动
[root@centos7 ~]# mount -o uquota,gquota /dev/sdc1 /disk1xfs
[root@centos7 ~]# mount
...
/dev/sdc2 on /disk1ext4 type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)
/dev/sdc1 on /disk1xfs type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
(2)永久生效,则需要修改/etc/fstab 文件,需要重启才能起作用,
/dev/sdc1 /disk1xfs xfs defaults,uquota,gquota 0 0
2)两个磁盘配额的配置文件: aquota.group 和 aquota.user
XFS文件系统时,配置后自动生成配置文件,不用做这步骤。
3)设置用户配额限制
[root@centos7 ~]# edquota -u xfs1
...
4)开启和关闭磁盘配额限制
xfs文件系统时,配置后自动生效,不用做这步骤。
5)查询已建立好的磁盘配额
xfs文件系统查询方法,quota 和 repquota 都可以查看,也可以通过 # xfs_quota -x -c report 挂载点 查看
[root@centos7 ~]# quota -uvs xfs1
Disk quotas for user xfs1 (uid 1006):
Filesystem space quota limit grace files quota limit grace
/dev/sdc2 0K 0K 0K 0 0 0
/dev/sdc1 0K 40000K 60000K 0 4 6
6)测试磁盘配额是否生效
[root@centos7 ~]# su - xfs1
[xfs1@centos7 ~]$ cd /disk1xfs
[xfs1@centos7 disk1xfs]$ touch x1
[xfs1@centos7 disk1xfs]$ touch x2
[xfs1@centos7 disk1xfs]$ touch x3
[xfs1@centos7 disk1xfs]$ touch x4
[xfs1@centos7 disk1xfs]$ touch x5
[xfs1@centos7 disk1xfs]$ touch x6
[xfs1@centos7 disk1xfs]$ touch x7
touch: 无法创建"x7": 超出磁盘限额
5、删除磁盘配额
(1)ext4配额删除
a)quotaoff -a 关闭配额功能
b)删除/disk下的配额配置文件
c)umount,卸载磁盘
d)fstab文件删除对应的自动挂载
(2)xfs删除配额,不需要quotaoff
方法一:使用xfs_quota命令将对应用户的软硬限制全部设置成0
# xfs_quota -x -c "limit bsoft=0 bhard=0 isoft=0 ihard=0 user1" /挂载点
方法二:编辑对应用户的quota配置,将软硬限制全部设置成0
# edquota -u xfs1
6、非交互设定用户磁盘配额,主要用于批量用户设置配额的时候,用在shell脚本中:
[root@centos7 ~] #setquota -u 用户名 容量软限制 容量硬限制 个数软限制 个数硬限制 分区名
二、LVM逻辑盘卷管理
1、概念
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。
LVM最大的特点就是可以对磁盘进行动态管理。使用了LVM管理分区,可以动态的调整分区的大小,标准分区是做不到的。LVM 适合于管理大存储设备,并允许用户动态调整文件系统的大小。
LVM 允许我们在逻辑卷在线的状态下将其复制到另一设备上,此成功被称为快照功能。快照允许我们在复制的同时,保证运行关键任务的 Web 服务器或数据库服务继续工作。
LVM 是在硬盘分区之上建立一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而大大提高了分区的灵活性。我们把真实的物理硬盘或分区称作物理卷(PV);由多个物理卷组成一块大的逻辑硬盘,叫作卷组(VG);将卷组划分成多个可以使用的分区,叫作逻辑卷(LV)。而在 LVM 中最小的存储单位不再是 block,而是物理扩展块(Physical Extend,PE)。如下图:
2、LVM逻辑盘卷管理包含的组件
1)物理卷(Physical Volume,PV)
物理卷在逻辑卷管理中处于最底层,它可以是真正的物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
2)卷组(Volume Group,VG)- 可以把卷组想象为一块逻辑硬盘
卷组是建立在物理卷之上,将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。
一个LVM逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
3)逻辑卷(Logical Volume,LV)- 可以把逻辑卷想象为分区
卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。
卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。
系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
4)物理扩展(Physical Extend,PE)
物理扩展是整个LVM 最小的储存区块,我们的数据实际上都是写入 PE 当中的。PE 的大小是可以配置的,默认大小是 4MB。
3、建立 LVM 的步骤
1)首先要有新的物理盘或者分区。
2)然后把物理分区/或整个硬盘建立成为物理卷(PV)
3)接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态地调整大小了,可以把逻辑卷加入卷组,也可以把逻辑卷从卷组中删除。
4) 最后把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻辑卷可以想象为分区,所以也需要格式化和挂载。
4、使用LVM的模式进行磁盘的分区,以及LVM的管理
1)磁盘准备
准备三个硬盘,一个硬盘分2个区,然后让一个硬盘和一个分区组成一个PV,PV组成VG,剩下的一个硬盘和分区用来扩容。
[root@centos7 ~]# fdisk -l
...
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 9E2ECCE9-CBEC-40F8-B406-7397ED2C38DA
# Start End Size Type Name
1 2048 20973567 10G Linux filesyste Linux filesystem
2 20973568 31459327 5G Linux filesyste Linux filesystem
检查系统中是否安装了LVM管理工具,如果未安装,则使用yum 方式安装
[root@centos7 ~]# rpm -qa | grep lvm
[root@centos7 ~]# yum -y install lvm*
2) 创建和查看PV
(1)创建PV:
基本格式为:[root@centos7 ~] # pvcreate [设备文件名]
一个10G分区和一个硬盘建立pv
[root@centos7 ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@centos7 ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
(2)查看PV:
查看物理卷的命令有两个:pvdisplay 命令和 pvscan 命令
pvdisplay命令:可以查看到更详细的物理卷状态
[root@centos7 ~]# pvdisplay
"/dev/sdc1" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID t5OaX0-kdcH-X6yZ-2X8N-JTUz-a4WX-CABME0
"/dev/sdd" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdd
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID flkV9g-2cdJ-hHQ6-PiC8-F10l-6olQ-ZqCzkd
pvscan/pvs命令:用来查询系统中哪些硬盘或分区是物理卷
[root@centos7 ~]# pvscan
PV /dev/sdc1 lvm2 [10.00 GiB]
PV /dev/sdd lvm2 [20.00 GiB]
Total: 2 [30.00 GiB] / in use: 0 [0 ] / in no VG: 2 [30.00 GiB]
3) 创建和查看VG
(1)创建VG:
基本格式为:[root@centos7 ~] # vgcreate [-s PE 大小] 卷组名 物理卷名
[-s PE 大小] 选项的含义是指定 PE 的大小,单位可以是 MB、GB、TB 等。如果不写,则默认 PE 大小是 4MB。
卷组名指的就是要创建的卷组的名称,
物理卷名则指的是希望添加到此卷组的所有硬盘区分或者整个硬盘。
PE 默认4MB,卷组名:vg1 , 物理卷名:上面两个添加进vg
[root@centos7 ~]# vgcreate vg1 /dev/sdc1 /dev/sdd
Volume group "vg1" successfully created
(2)查看VG:
查看卷组的命令同样有两个:vgdisplay 命令和 vgs 命令
vgdisplay 命令:用于查看卷组的详细状态
[root@centos7 ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 29.99 GiB
PE Size 4.00 MiB
Total PE 7678
Alloc PE / Size 0 / 0
Free PE / Size 7678 / 29.99 GiB
VG UUID NNGT2s-zu8m-CcV1-jwcG-syts-1F4g-whhjTY
vgs 命令:主要用于查看系统中是否有卷组
4) 创建和查看LV
(1)创建LV:
基本格式为:[root@centos7 ~] # lvcreate [选项] [-n 逻辑卷名] 卷组名
选项:
-L 容量:指定逻辑卷大小,单位为 MB、GB、TB 等;
-l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦;
-n 逻辑卷名:指定逻辑卷名;
创建两个LV:逻辑卷名:lv1 7G; 逻辑卷名:lv2 2G; 卷组名:是上面创建的vg1
[root@centos7 ~]# lvcreate -L 7G -n lv1 vg1
Logical volume "lv1" created.
[root@centos7 ~]# lvcreate -L 2G -n lv2 vg1
Logical volume "lv2" created.
(2)查看LV:
查看命令同样有两个:lvdisplay 命令 和 lvscan 命令
lvdisplay命令:可以看到逻辑卷的详细信息
lvscan/lvs 命令:只能看到系统中是否拥有逻辑卷
[root@centos7 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [7.00 GiB] inherit
ACTIVE '/dev/vg1/lv2' [2.00 GiB] inherit
5)格式化LV和挂载使用
(1)格式化LV和挂载
#格式化 lv1
[root@centos7 ~]# mkfs.xfs /dev/vg1/lv1
meta-data=/dev/vg1/lv1 isize=512 agcount=4, agsize=458752 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1835008, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
#挂载
[root@centos7 ~]# mkdir /lvmxfs
[root@centos7 ~]# mount /dev/vg1/lv1 /lvmxfs
(2)添加测试数据使用
[root@centos7 ~]# cd /lvmxfs
[root@centos7 lvmxfs]# touch f1.txt
[root@centos7 lvmxfs]# echo asdasda123456 > f2.txt
[root@centos7 lvmxfs]# ll
总用量 4
-rw-r--r-- 1 root root 0 4月 16 10:22 f1.txt
-rw-r--r-- 1 root root 14 4月 16 10:23 f2.txt
5、LVM的扩容操作
LVM最大的好处就是可以对磁盘进行动态管理,而且不会丢失现有的数据。
注意:一般情况下,都是对磁盘进行扩容,缩减没的什么实际意义,另外:xfs文件系统只支持增大分区空间的情况,不支持减小的情况(切记!)
如果,lv1的使用量达到了80%,需要扩容,那么就进行下面的操作,
1)先扩容VG
需要增加PV,然后将新的PV添加到VG中,实现扩容
[root@centos7 lvmxfs]# pvcreate /dev/sdc2 /dev/sdb
Physical volume "/dev/sdc2" successfully created.
Physical volume "/dev/sdb" successfully created.
[root@centos7 lvmxfs]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc1 vg1 lvm2 a-- <10.00g 1020.00m
/dev/sdc2 lvm2 --- 5.00g 5.00g
/dev/sdd vg1 lvm2 a-- <20.00g <20.00g
基本格式为:[root@centos7 ~] # vgextend 卷组名 物理卷名
[root@centos7 lvmxfs]# vgextend vg1 /dev/sdc2 /dev/sdb
Volume group "vg1" successfully extended
[root@centos7 lvmxfs]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 4 2 0 wz--n- 54.98g 45.98g
2)然后扩容LV
基本格式为:[root@centos7 ~] # lvresize [选项] 逻辑卷的设备文件名
选项:
-L 容量:安装容量调整大小,单位为 KB、GB、TB 等。使用 + 増加空间,- 代表减少空间。如果直接写容量,则代表设定逻辑卷大小为指定大小;
-l 个数:按照 PE 个数调整逻辑卷大小;
[root@centos7 lvmxfs]# lvextend -L +13G /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 7.00 GiB (1792 extents) to 20.00 GiB (5120 extents).
Logical volume vg1/lv1 successfully resized.
[root@centos7 lvmxfs]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 20.00g
lv2 vg1 -wi-a----- 2.00g
注意:使用 df -Th 命令查看实际的磁盘容量。 发现 lv1实际容量并没有变化,
因为我们的系统还不认识刚刚添加进来的磁盘的文件系统,所以还需要对文件系统进行扩容。
# resize2fs /dev/vg1/lv1 注意:resize2fs是属于ext4文件系统
# xfs_growfs /dev/vg1/lv1 注意:xfs_growfs是属于xfs文件系统
[root@centos7 lvmxfs]# xfs_growfs /dev/vg1/lv1
meta-data=/dev/mapper/vg1-lv1 isize=512 agcount=4, agsize=458752 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1835008, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 1835008 to 5242880
[root@centos7 lvmxfs]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 18G 1.5G 17G 9% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 12M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 iso9660 11G 11G 0 100% /mnt
/dev/sda1 xfs 197M 105M 93M 54% /boot
tmpfs tmpfs 394M 0 394M 0% /run/user/0
/dev/mapper/vg1-lv1 xfs 20G 33M 20G 1% /lvmxfs
3)查看lv1中的文件有没有丢失
[root@centos7 lvmxfs]# ll /lvmxfs
总用量 4
-rw-r--r-- 1 root root 0 4月 16 10:22 f1.txt
-rw-r--r-- 1 root root 14 4月 16 10:23 f2.txt
[root@centos7 lvmxfs]# cat /lvmxfs/f2.txt
asdasda123456
数据没有丢失,LVM中 lv1的动态扩容就搞定。
6、删除LVM,ext和xfs文件系统通用
如果想彻底的删除LVM,需要把建立 LVM 的步骤反过来操作。删除就是安装的反过程,每一步都不能跳过。这里就不演示了
1)卸载
基本格式为:[root@centos7 ~] # umount 设备文件名/挂载点
2)删除LV
删除了逻辑卷,其中的数据就会丟失,所以要确定你真的需要删除这个逻辑卷。
基本格式为:[root@centos7 ~] # lvremove 逻辑卷的设备文件名
3)删除VG
基本格式为:[root@centos7 ~] # vgremove 卷组名
4)删除PV
基本格式为:[root@centos7 ~] # pvremove 设备文件名
7、system-storage-manager 存储管理。参考文章:Centos7 system-storage-manager 使用
system-storage-manager 是红帽RHEL7系统自带的一款存储管理工具 可以简化存储管理。安装
[root@centos7 ~]# yum search system-storage-manager
1)查看磁盘信息:# ssm list dev
[root@centos7 ~]# ssm list dev
-----------------------------------------------------------
Device Free Used Total Pool Mount point
-----------------------------------------------------------
/dev/sda 20.00 GB PARTITIONED
/dev/sda1 200.00 MB /boot
/dev/sda2 2.00 GB SWAP
/dev/sda3 17.80 GB /
/dev/sdb 20.00 GB 0.00 KB 20.00 GB vg1
/dev/sdc 20.00 GB
/dev/sdc1 0.00 KB 10.00 GB 10.00 GB vg1
/dev/sdc2 5.00 GB 0.00 KB 5.00 GB vg1
/dev/sdd 7.99 GB 12.00 GB 20.00 GB vg1
-----------------------------------------------------------
2)一条命令可以把前面的LVM管理搞定,把设备变成pv,创建vg , lv ,格式化文件系统, 自动完成:
# ssm create -s lv大小 -n lv名称 --fstype lv文件系统类型 -p 卷组名 设备 挂载点
这里新添加一块硬盘 /dev/sde,创建挂载点,使用ssm创建
[root@centos7 ~]# mkdir /lvmxfs2
[root@centos7 ~]# ssm create -s 3G -n lv22 --fstype xfs -p vg22 /dev/sde /lvmxfs2
Physical volume "/dev/sde" successfully created.
Volume group "vg22" successfully created
Logical volume "lv22" created.
meta-data=/dev/vg22/lv22 isize=512 agcount=4, agsize=196608 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=786432, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
三、RAID磁盘阵列的原理与搭建
1、RAID概念
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。在服务器整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。
2、常见的RAID类型
1)RAID 0
0 :(stripe)条带模式,至少需要两块硬盘,每一份数据平均分成多份存储在多个磁盘中,且都处于一个水平条带上
优点:读写速度提高,用了多少块盘就是多少倍
缺点:无冗余能力(也称容错能力)
空间利用率:多个磁盘的总和,100%
2)RAID 1
1:(mirror)镜像模式,磁盘数量需要2的倍数,两个磁盘中存储的数据完全一致,当一个盘损坏时,数据依然可以进行读写
优点:有冗余能力 (也称容错能力)
缺点:磁盘利用率 只有50%,写的速度下降
3)RAID 5
5:check code校验码模式,至少需要三块硬盘,每一次存储数据时,采用条带模式存储到n-1数量的磁盘中,另外一个磁盘存放的是其他几个磁盘中的数据以某种加密方式之后得出的加密数据,且每一次存储,存储加密数据的磁盘都是不断变化的,当其中任何一个盘的数据损坏时,都可以通过加密方式和其余两块磁盘的数据来得知另外一个盘的数据,具有较高的冗余能力
优点:读写速度快,有冗余能力
缺点:磁盘利用率为n-1/n,两个磁盘损坏时,数据将丢失
4) 组合起来用RAID10
10:mirror+stripe模式,至少需要4快硬盘,先将两块硬盘组成Raid1,然后将两组Raid1组合成Raid0,存储一分数据时,每一Raid1的组合存储的数据都是均分的,然后Raid1组合再用mirror模式存储
优点:读写速度快,冗余能力强
缺点:磁盘利用率为50%
3、RAID-0-1-5-10搭建(了解)
1)软RAID:通过操作系统中的软件来实现,使用的命令mdadm。工作中基本不用。
2)硬RAID:需要RAID卡,不同厂商的RAID卡的配置是不一样的,要看说明书来配置
我们将磁盘接在RAID卡的,由它统一管理和控制。它有自己的cpu,处理速度快。工作会用这个,插入硬盘raid卡,配置raid卡,然后在raid磁盘阵列上安装Linux操作系统, RAID和LVM整合使用。
RAID初步认识就行
扇区(sector)是磁盘中的最小存储单位。
块(block)是文件系统中的最小存储单位。
物理扩展(Physical Extend,PE)是整个LVM 的最小储存区块。
ends~