【Linux入门】LVM与磁盘配额

LVM

概述

LVM(Logical Volume Manager)是Linux系统中用于磁盘分区管理的一个强大工具。它允许系统管理员创建、删除、调整大小、移动和复制逻辑卷,而无需关心物理磁盘的分区情况。LVM提供了灵活的磁盘管理方式,特别适用于需要动态调整磁盘空间大小或管理多个物理磁盘的场景。
逻辑卷管理Logical Volume Manager

  • 能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性
  • /boot分区用于存放引导文件,不能基于LVM创建

LVM的主要组件

LVM架构主要由以下几个组件组成:

  1. 物理卷(Physical Volume, PV)
    • 物理卷是LVM可以直接操作的存储设备或磁盘分区。
    • 在LVM中,物理卷可以被添加到卷组(Volume Group)中。
  2. 卷组(Volume Group, VG)
    • 卷组是由一个或多个物理卷组成的存储池。
    • 卷组内的空间可以被分割成逻辑卷(Logical Volume)。
  3. 逻辑卷(Logical Volume, LV)
    • 逻辑卷是LVM管理的基本单元,类似于传统分区。
    • 逻辑卷的大小可以动态调整,并可以跨越多个物理卷。
  4. 物理扩展区(Physical Extent, PE)
    • 物理扩展区是物理卷中可分配的最小存储单元。默认是4M。
    • 逻辑卷由多个物理扩展区组成,每个物理扩展区的大小在卷组创建时确定,通常为几MB到几GB。
  5. 逻辑扩展区(Logical Extent, LE)
    • 逻辑扩展区是逻辑卷中管理的基本单元,与物理扩展区相对应。
    • 逻辑卷的大小变化实际上是通过增加或减少逻辑扩展区的数量来实现的。

LVM的优势

  1. 灵活性:可以轻松地调整逻辑卷的大小,而无需重新分区或格式化磁盘。
  2. 可靠性:使用LVM技术可以提高数据的可靠性和可用性,可以实现热备份和数据的动态迁移当某个物理硬盘出现故障时,可以在不停机的情况下进行数据恢复和重建,从而提高了数据的可靠性。
  3. 管理性:LVM提供了一种管理多个物理硬盘和多个逻辑卷的方式,可以对存储空间进行集中管理和监控通过LVM的命令和工具可以方便地査看和监控存储空间的使用情况,以及进行性能调优和容错管理。
  4. 性能:LVM提供了一种数据块级别的数据读写操作,可以实现高效的数据存储和访问。
    此外,LVM还可以利用多个物理硬盘的并行处理能力,提高数据访问的速度和效率。

使用场景

LVM特别适用于以下场景:

  • 需要频繁调整磁盘空间大小的数据库服务器。
  • 需要高可用性和容错性的系统。
  • 虚拟化环境,其中需要为虚拟机动态分配存储空间。
  • 需要将多个物理磁盘整合为一个统一存储池的场景。

管理命令

常用命令

扫描建立显示扩展减少删除
pvpvscanpvcreatepvdisplay--pvremove
vgvgscanvgcreatevgdisplayvgextendvgreducevgremove
lvlvscanlvcreatelvdisplaylvextendlvreducelvremove

说明

  • 扫描scan——列出用于扫描相应类型(物理卷、卷组、逻辑卷)的命令。
  • 建立create——列出用于创建相应类型(物理卷、卷组、逻辑卷)的命令。
  • 显示display——列出用于显示相应类型(物理卷、卷组、逻辑卷)详细信息的命令。
  • 扩展extend——列出用于扩展相应类型(逻辑卷和卷组,但物理卷本身不支持直接扩展)的命令。
  • 删除remove——列出用于删除相应类型(物理卷、卷组、逻辑卷)的命令。
  • 减少reduce——仅列出用于减少逻辑卷大小的命令,因为物理卷和卷组不支持直接减少大小。

一、物理卷(PV)管理命令

1. 创建物理卷

pvcreate 设备名
  • 说明:将指定的磁盘或分区转化为LVM的物理卷。
    2. 查看物理卷信息
pvdisplay [设备名]
  • 说明:显示指定物理卷的信息,如果不指定设备名,则显示所有物理卷的信息。
    3. 删除物理卷
pvremove 设备名
  • 说明:从LVM中移除指定的物理卷,注意这会删除物理卷上的所有LVM元数据,但不会删除物理卷本身的数据。

二、卷组(VG)管理命令

1. 创建卷组

vgcreate 卷组名 物理卷名1 [物理卷名2 ...]
  • 说明:将一个或多个物理卷组合成一个卷组。
    2. 查看卷组信息
vgdisplay [卷组名]
  • 说明:显示指定卷组的信息,如果不指定卷组名,则显示所有卷组的信息。
    3. 扩展卷组
vgextend 卷组名 物理卷名
  • 说明:向指定的卷组中添加新的物理卷以扩展其容量。
    4. 缩减卷组
vgreduce 卷组名 物理卷名
  • 说明:从指定的卷组中移除物理卷,但通常只有在确保该物理卷上的所有数据都已迁移到其他物理卷上时才能安全进行。
    5. 删除卷组
vgremove 卷组名
  • 说明:删除指定的卷组,这会同时删除卷组中的所有逻辑卷和对应的文件系统数据,因此执行此操作前必须确保已备份重要数据。

三、逻辑卷(LV)管理命令

1. 创建逻辑卷

lvcreate -L 大小 -n 逻辑卷名 卷组名
  • 说明:在指定的卷组中创建一个新的逻辑卷,其中“-L”参数指定逻辑卷的大小,“-n”参数指定逻辑卷的名称。
    2. 查看逻辑卷信息
lvdisplay [逻辑卷名/卷组名]
  • 说明:显示指定逻辑卷或卷组中所有逻辑卷的信息。
    3. 扩展逻辑卷
lvextend -L +大小 /dev/卷组名/逻辑卷名
  • 说明:向指定的逻辑卷增加额外的空间。注意,增加空间后还需要使用文件系统扩展命令(如resize2fs或xfs_growfs)来扩展文件系统本身的大小。
    4. 缩减逻辑卷
    注意:缩减逻辑卷是一个高风险操作,必须谨慎进行,并确保在缩减前已备份重要数据。缩减逻辑卷时,应首先缩减文件系统的大小,然后再缩减逻辑卷的大小。
    5. 删除逻辑卷
lvremove /dev/卷组名/逻辑卷名
  • 说明:删除指定的逻辑卷,这将同时删除逻辑卷上的文件系统数据。

总结

LVM管理命令的格式遵循层级和动作的模式,主要包括物理卷、卷组和逻辑卷三个层次的操作。每个层次的命令都有明确的用途和参数选项,通过这些命令可以实现对LVM的灵活管理。在实际操作中,应仔细核对命令和参数,避免数据丢失或系统损坏的风险。

应用实例

基础操作步骤

假设环境

  • 你有一个额外的硬盘/dev/sdb,该硬盘尚未分区和格式化。
  • 你希望使用LVM来管理这个硬盘上的空间。

步骤 1: 分区硬盘

首先,需要使用fdiskpartedgparted等工具来分区硬盘。这里我们使用fdisk

fdisk /dev/sdb

fdisk的提示符下,执行以下操作:

  1. 输入n来创建新分区。
  2. 选择分区类型(通常是p表示主分区)。
  3. 选择分区号(通常是第一个,即1)。
  4. 设置分区的第一个扇区(通常是默认的)。
  5. 设置分区的大小(例如,+100G表示100GB,或者仅按回车使用剩余空间)。
  6. 输入w来写入更改并退出fdisk
    注意:确保不要覆盖或删除任何现有的重要数据。

步骤 2: 创建物理卷(PV)

分区完成后,你需要将其初始化为物理卷。

pvcreate /dev/sdb1

步骤 3: 创建卷组(VG)

接下来,创建一个新的卷组,并将物理卷添加到其中。

vgcreate myvg001 /dev/sdb1

这里,myvg001是卷组的名称,可以根据需要命名。

步骤 4: 创建逻辑卷(LV)

在卷组中,你可以创建一个或多个逻辑卷。

lvcreate -L 10G -n mylv myvg001

这个命令在myvg001卷组中创建了一个名为mylv、大小为10GB的逻辑卷。

  • lvcreate创建
  • -L用来指定逻辑卷的空间大小。
  • -n用来设置逻辑卷的名称的,这里创建的逻辑卷的名称是“xy03”,最后再跟上卷组的名称即可。

常用选项n、L、以及容易误用的选项l:

  • -L 容量:指定逻辑卷大小,单位为 MB、GB、TB 等。
  • -l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,因为麻烦不常用,此处列举以作区分。
  • -n 逻辑卷名:指定逻辑卷名。

步骤 5: 格式化逻辑卷

现在,逻辑卷已经准备好,可以对其进行格式化以安装XFS文件系统。

mkfs.xfs /dev/myvg001/mylv

步骤 6: 挂载逻辑卷

格式化完成后,将逻辑卷挂载到文件系统的某个目录下。

mkdir -p /mnt/mylv
mount /dev/myvg001/mylv /mnt/mylv

现在,可以通过访问/mnt/mylv来查看和使用XFS文件系统了。

(可选)自动挂载逻辑卷

为了在系统启动时自动挂载逻辑卷,你需要编辑/etc/fstab文件并添加相应的条目。

vim /etc/fstab

在文件末尾添加以下行:

/dev/myvg001/mylv /mnt/mylv xfs defaults 0 2

保存并关闭文件。下次系统启动时,/dev/myvg/mylv将自动挂载到/mnt/mylv

查看相关卷的信息

查看卷组的信息

vgdisplay myvg001

查看逻辑卷的信息

lvdisplay /dev/myvg001/mylv

磁盘配额

概述

磁盘配额是计算机中指定磁盘的储存限制,它允许管理员为用户或组所能使用的磁盘空间进行配额限制,确保每一用户或组只能使用最大配额范围内的磁盘空间。这一功能在服务器管理中尤为重要,但在单机用户环境下可能意义不大。

一、基本概念

  • 磁盘配额:在Linux系统中,用于限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的功能。
  • 软限制(Soft Limit):指设定一个软性的配额数值(磁盘空间大小和文件个数),在固定的宽限期(默认为7天)内允许暂时超过这个限制,但系统会给出警告信息。
  • 硬限制(Hard Limit):指设定一个硬性的配额数值(磁盘空间大小和文件个数),用户绝对禁止超过该限值。硬限制的配额值应大于相应的软限制值,否则软限制值将失效。

二、磁盘限额的特点

  • 作用范围:指定的文件系统、分区
  • 限制对象:用户账号、组账号
  • 限制类型:磁盘容量、文件数量
  • 限制方法:软限制、硬限制

三、支持条件

  • 内核支持:Linux内核需要支持磁盘配额功能。
  • 文件系统支持:并非所有文件系统都支持磁盘配额,常见的支持磁盘配额的文件系统包括XFS和ext系列(如ext3、ext4)等。
  • 安装工具:在使用磁盘配额之前,需要确保系统中已经安装了xfsprogs、quota工具包。

四、操作步骤

以XFS文件系统为例,磁盘配额的设置通常包括以下几个步骤:

  1. 启用磁盘配额
    • 修改/etc/fstab文件,为需要启用磁盘配额的文件系统添加usrquota(针对用户)和grpquota(针对组)选项。
    • 重新挂载文件系统或使用mount命令的-o remount选项来应用更改。
  2. 生成配额文件
    • 使用xfs_quota -x -c 'print' /mnt/point命令检查文件系统的配额状态(可选)。
    • 使用xfs_quota -x -c 'report -ug' /mnt/point命令查看用户和组的配额使用情况(可选)。
    • 使用xfs_quota -x -c 'limit -u bsoft=N bhard=M isoft=X ihard=Y username' /mnt/point命令为用户设置磁盘配额。
    • 使用xfs_quota -x -c 'limit -g bsoft=N bhard=M isoft=X ihard=Y groupname' /mnt/point命令为用户组设置磁盘配额。
  3. 激活磁盘配额
    • 使用xfs_quota -x -c 'enable' /mnt/point命令启用文件系统的磁盘配额功能(对于XFS文件系统,通常在挂载时通过选项启用,此步骤可能不是必需的)。
  4. 验证和测试
    • 使用xfs_quota -x -c 'report -ug' /mnt/point命令查看用户和组的配额使用情况,验证配额设置是否正确。
    • 通过在用户或组目录下创建文件或目录来测试配额限制是否生效。

注意

  • 磁盘配额功能只对普通用户有效,超级用户(root)不受配额限制。
  • 磁盘配额限制只能针对文件系统(分区)进行,无法针对单个目录进行限制。
  • 在设置磁盘配额时,需要确保有足够的空间用于满足所有用户或组的配额需求。
  • 如果用户或组超过了其硬限制,则可能会遇到无法写入数据的问题,因此管理员需要定期检查配额使用情况,以避免影响用户的正常工作。

磁盘配额管理实例

环境准备

1.准备目录

mkdir创建:

mkdir /abc

2.安装xfsgrops、quota

检查是否已安装:

rpm -q xfsprogs quota

如未安装,使用该命令安装:

yum install -y xfsprogs quota

操作过程

1.准备设备文件挂载点

vim编辑挂载:

vim /etc/fstab
UUID=e70d62af-8fba-47d9-96cb-00fcd7960721 /                       xfs     defaults        0 0
UUID=e99b4d3a-02a8-48a1-8476-afef20fe5140 /boot                   xfs     defaults        0 0
UUID=f1c79ed1-ae75-47c8-85a8-705f8f9a0edc swap                    swap    defaults        0 0
/dev/test1/xy03                          /abc                     xfs     defaults,usrquota,grpquota    0 0

格式:【设备路径】【挂载位置】【文件类型】←此处注意添加xfsgrops、quota以便后续启用【0 0】

2.需要调整挂载配置

1. cat /etc/fstab的配置项>>检查xfsgrops、quota的两个功能是否添加。
2. 刷新配置项

mount -a

3. 启用

mount -o usrquota,grpquota /dev/sdb1 /data

4. 关闭安全功能

setenforce 0

1.切换用户、验证操作

操作步骤

1. 添加用户

useradd bayue

2. 给测试目录赋予权限

chmod 777 /abc

3. 权限限制设置

xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=4 ihard=5 bayue' /abc

-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用.
-c:表示直接调用管理命令。
-u:指定用户账号对象。
bsoft:设置磁盘容量的软限制数值为80M.
bhard:设置磁盘容量的硬限制数值为100M.
isoft:设置磁盘文件数的软限制数值为4个.
ihard:设置磁盘文件数的硬限制数值为5个.
4. 切换用户

su bayue

5. 进行验证

dd if=/dev/zero of=/abc/123.txt bs=10M count=9
[zhangsan@192 data]$ touch {1..50}.txt

补充:dd命令

dd命令是Linux和类Unix系统上的一个非常强大的命令,主要用于转换和复制文件。它的基本功能包括读取、转换并输出数据,可以用于各种数据复制、转换和备份操作。
基本语法

dd [option]... if=input_file of=output_file bs=block_size count=blocks
  • if=input_file:指定输入文件或设备,即源文件或源设备。
  • of=output_file:指定输出文件或设备,即目标文件或目标设备。
  • bs=block_size:指定每次复制的块大小,可以通过字节(b)、千字节(k)、兆字节(M)等单位来指定。
  • count=blocks:指定复制的块数。
    注意:如果不指定bs和count参数,默认会将整个输入文件复制到输出文件中。
    在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值