0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux高级文件系统管理详解

马哥Linux运维 来源:博客园 2024-07-16 16:31 次阅读

阅读目录

检查内核是否支持配额

检查指定分区的挂载属性是否满足条件

quotacheck 生成用户和组的配置文件

edquota 编辑配额文件,设置指定限制大小

启动quota配额管理

关闭quota配额管理

quota 查看指定用户和组的配额信息

repquota 查看指定分区的磁盘配额

setquota 非交互设置磁盘配额命令

磁盘配额小实验

PV 物理卷创建与移除

VG 卷组创建与移除

LV 逻辑卷创建与移除

LV 容量增加 (将LV的容量增加5G的空间)

LV 容量缩小(将LV的容量缩小5G的空间)

LV 快照功能

Mdadm 命令解析

构建一个RAID 5

RAID 仿真救援模式

如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的公平使用,磁盘配额 (Quota) 就是一项非常有用的工具,另外,如果你的用户常常抱怨磁盘容量不够用,那么更进阶的文件系统就得要学习,本章我们会介绍磁盘阵列 (RAID),及逻辑卷轴文件系统 (LVM),这些工具都可以帮助你管理与维护使用者可用的磁盘容量.

Quota 磁盘配额配置

Quota 这个玩意儿就字面上的意思来看,就是有多少『限额』的意思啦,如果是用在零用钱上面,就是类似『有多少零用钱一个月』的意思之类的,如果是在计算机主机的磁盘使用量上呢? 以 Linux 来说,就是有多少容量限制的意思,我们可以使用 quota 来让磁盘的容量使用较为公平,下面我们会介绍什么是 quota 然后以一个完整的范例来介绍 quota 的使用作用.

由于Linux是一个多用户管理的操作系统,而Linux默认情况下并不限制每个用户使用磁盘空间的大小,假如某个用户疏忽或者恶意占满磁盘空间,将导致系统磁盘无法写入甚至崩溃;为了保证系统磁
盘的有足够的剩余空间,我们需要对用户和组进行磁盘空间使用限制。

磁盘配额限制类型:

⦁ 限制用户和组,对磁盘空间的使用量
⦁ 限制用户和组,在磁盘内创建文件的个数

磁盘配额限制级别:

⦁ 软限制:低级限制,此限制可以突破,突破时会被警告,超出部分会有宽限天数,宽限天数到期后超出部分被清空,软限制不能超过硬限制
⦁ 硬限制:绝对限制,此限制不会被突破,达到指定限制后无法使用更多空间
⦁ 宽限天数:当有数据超过软限制后,超出部分会被计时,宽限天数到期后超出部分数据将被清空,宽限天数默认是7天
注:磁盘配额是针对分区进行设置的,无法实现,"某用户在系统中共计只能使用50MB磁盘空间",只能设置某用户在/home分区能使用30M这样的限制.切记:磁盘配额是针对分区的!

精简模式下没有此命令,执行 yum install -y quota 安装

回到顶部

检查内核是否支持配额

[root@localhost ~]# cat /boot/config-3.10.0-693.el7.x86_64 |grep "CONFIG_QUOTA"
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

回到顶部

检查指定分区的挂载属性是否满足条件

[root@localhost ~]# dumpe2fs -h /dev/vdb |grep "Default mount options"
dumpe2fs 1.42.9 (28-Dec-2013)
Default mount options:    user_xattr acl
 
#检查结果中是否包含,usrquota,grpquota两个挂载属性

回到顶部

quotacheck 生成用户和组的配置文件

[root@localhost ~]# quotacheck --help
Utility for checking and repairing quota files.
quotacheck [-gucbfinvdmMR] [-F ] filesystem|-a

语法格式:[ quota [选项] [分区名] ]

        -a      #扫描/etc/mtab文件中所有启用磁盘配额功能的分区.如果加入此参数,命令后面就不需要加入分区名了
        -u      #建立用户配额的配置文件,即生成aquota.user
        -g      #建立组配额的配置文件,即aquota.group
        -v      #显示扫描过程
        -c      #清除原有的配置文件,重新建立新的配置文件

回到顶部

edquota 编辑配额文件,设置指定限制大小

[root@localhost ~]# edquota --help
edquota: Usage:
        edquota [-rm] [-u] [-F formatname] [-p username] [-f filesystem] username ...
        edquota [-rm] -g [-F formatname] [-p groupname] [-f filesystem] groupname ...
        edquota [-u|g] [-F formatname] [-f filesystem] -t
        edquota [-u|g] [-F formatname] [-f filesystem] -T username|groupname ...

语法格式:[ edquota [选项] [用户名或组名] ]

        -u      #用户名
        -g      #组名
        -t      #设定宽限时间
        -p      #复制磁盘配额规则,不需要每一个用户或者组都手动设置一遍
                #edquota        -p 模板用户     -u 目标用户
 
#注:配置文件中所写大小默认单位KB

回到顶部

启动quota配额管理

[root@localhost ~]# quotaon --help
quotaon: Usage:
        quotaon [-guvp] [-F quotaformat] [-x state] -a
        quotaon [-guvp] [-F quotaformat] [-x state] filesys ...

语法格式:[ quotaon [选项] [分区名] ]

        -a      #根据/etc/mtab文件启动所有分区的磁盘配额(不写分区名)
        -u      #启动用户的磁盘配额
        -g      #启动组的磁盘配额
        -v      #显示启动过程信息

回到顶部

关闭quota配额管理

[root@localhost ~]# quotaoff --help
quotaoff: Usage:
        quotaoff [-guvp] [-F quotaformat] [-x state] -a
        quotaoff [-guvp] [-F quotaformat] [-x state] filesys ...

语法格式:[ quotaoff [选项] [分区名] ]

        -a      #根据/etc/mtab文件关闭所有分区的磁盘配额(不写分区名)
        -u      #关闭用户的磁盘配额
        -g      #关闭组的磁盘配额
        -v      #显示关闭过程信息

回到顶部

quota 查看指定用户和组的配额信息

[root@localhost ~]# quota --hlep
quota: unrecognized option '--hlep'
quota: Usage: quota [-guqvswim] [-l | [-Q | -A]] [-F quotaformat]
        quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -u username ...
        quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -g groupname ...
        quota [-qvswugQm] [-F quotaformat] -f filesystem ...

语法格式:[ quota [选项] [用户名] ]

        -u      #用户名
        -g      #组名
        -v      #显示详细信息
        -s      #以常见单位显示大小

回到顶部

repquota 查看指定分区的磁盘配额

[root@localhost ~]# repquota --help
repquota: Utility for reporting quotas.
Usage:
repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] (-a | mntpoint)

语法格式:[ repquota [选项] [分区名] ]

        -u      #查询用户配额
        -g      #查询组配额
        -v      #显示详情
        -s      #以常见单位显示

回到顶部

setquota 非交互设置磁盘配额命令

[root@localhost ~]# setquota --help
setquota: Usage:
  setquota [-u|-g] [-rm] [-F quotaformat] 
            -a|...
  setquota [-u|-g] [-rm] [-F quotaformat] <-p protouser|protogroup>  -a|...
  setquota [-u|-g] [-rm] [-F quotaformat] -b [-c] -a|...
  setquota [-u|-g] [-F quotaformat] -t   -a|...
  setquota [-u|-g] [-F quotaformat]  -T   -a|...

setquota -u 用户名 软(容) 硬(容) 软(数) 硬(数) 分区名
 
注:这样的非交互式的命令更适合写入脚本,而且假如有很多用户的磁盘配额配置相同也可以用复制来实现。

回到顶部

磁盘配额小实验

⦁ 这里有一块未分区的磁盘/dev/sdb,手动分区并格式化.
⦁ 将磁盘配额开启,并写入开机自启动列表.
⦁ 创建lyshark用户,和temp组.
⦁ 配置lyshark的软限制200M,硬限制500M,配置temp组软限制100M,硬限制200M.

1.检查系统是否支持配额

[root@localhost ~]# cat /boot/config-3.10.0-862.el7.x86_64 |grep "CONFIG_QUOTA"
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.查看磁盘信息

[root@localhost ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 6月  24 09:14 /dev/sda
brw-rw---- 1 root disk 8,  1 6月  24 09:14 /dev/sda1
brw-rw---- 1 root disk 8,  2 6月  24 09:14 /dev/sda2
brw-rw---- 1 root disk 8, 16 6月  24 09:14 /dev/sdb

3.磁盘分区/dev/sdb,并格式化为ext4格式

[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart
Partition name?  []? sdb1
File system type?  [ext2]? ext2
Start? 1M
End? 10000M
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  10.0GB  9999MB  ext4         sdb1

(parted) q
Information: You may need to update /etc/fstab.

[root@localhost ~]# mkfs.ext4 /dev/sdb1

mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
610800 inodes, 2441216 blocks
122060 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
75 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

4.创建挂载点,并挂载设备

[root@localhost ~]# mkdir /sdb1
[root@localhost ~]# mount /dev/sdb1 /sdb1/

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.4G  6.7G  17% /
devtmpfs                  98M     0   98M   0% /dev
tmpfs                    110M     0  110M   0% /dev/shm
tmpfs                    110M  5.5M  104M   6% /run
tmpfs                    110M     0  110M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     22M     0   22M   0% /run/user/0
/dev/sr0                 4.2G  4.2G     0 100% /mnt
/dev/sdb1                9.1G   37M  8.6G   1% /sdb1

5.检查分区是否支持配额 (主要看有没有usrquota,grpquota)

[root@localhost ~]# dumpe2fs -h /dev/sdb1 |grep "Default mount options"
dumpe2fs 1.42.9 (28-Dec-2013)
Default mount options:    user_xattr acl

[root@localhost ~]# cat /proc/mounts |grep "/dev/sdb1"
/dev/sdb1 /sdb1 ext4 rw,relatime,data=ordered 0 0

#上面没有看到相关权限,此时我们要重新挂载一下磁盘,加上权限

[root@localhost ~]# mount -o remount,usrquota,grpquota /dev/sdb1

[root@localhost ~]# cat /proc/mounts |grep "/dev/sdb1"
/dev/sdb1 /sdb1 ext4 rw,relatime,quota,usrquota,grpquota,data=ordered 0 0

6.设置开机自动挂载分区,并开启配额

[root@localhost ~]# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Sep 21 20:07 13d5ccc2-52db-4aec-963a-f88e8edcf01c -> ../../sda1
lrwxrwxrwx 1 root root  9 Sep 21 20:07 2018-05-03-20-55-23-00 -> ../../sr0
lrwxrwxrwx 1 root root 10 Sep 21 20:07 4604dcf2-da39-455a-9719-e7c5833e566c -> ../../dm-0
lrwxrwxrwx 1 root root 10 Sep 21 20:47 939cbeb8-bc88-44aa-9221-50672111e123 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 21 20:07 f6a4b420-aa6a-4e66-bbb3-c8e8280a099f -> ../../dm-1

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

#
# /etc/fstab
# Created by anaconda on Tue Sep 18 0906 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=13d5ccc2-52db-4aec-963a-f88e8edcf01c /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

UUID=7d7f22ed-466e-4205-8efe-1b6184dc5e1b swap swap defaults 0 0
UUID=939cbeb8-bc88-44aa-9221-50672111e123 /sdb1   ext4   defaults,usrquota,grpquota  0 0

[root@localhost ~]# mount -o remount,usrquota,grpquota /dev/sdb1

7.生成配额文件 quotackeck -ugv[分区名]

[root@localhost ~]# quotacheck -ugv /dev/sdb1

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 [/sdb1] done
quotacheck: Cannot stat old user quota file /sdb1/aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /sdb1/aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file /sdb1/aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /sdb1/aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 3 directories and 0 files
quotacheck: Old file not found.
quotacheck: Old file not found.

8.编辑限制,edquota -ugtp [用户名/组名]

配置lyshark的软限制200M,硬限制500M

[root@localhost ~]# edquota -u lyshark

Disk quotas for user lyshark (uid 1000):

     ↓文件系统                         软(容量)   硬(容量)    I节点      软(数)   硬(数)
  Filesystem              blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                 0          200M       500M          0        0        0

配置temp组软限制100M,硬限制200M.

[root@localhost ~]# edquota -g temp

Disk quotas for group temp (gid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0     102400     204800          0        0        0

9.开启配额,quota on/off -augv

[root@localhost ~]# quotaon -augv
/dev/sdb1 [/sdb1]: group quotas turned on
/dev/sdb1 [/sdb1]: user quotas turned on

10.查看指定用户或组的配额,quota -ugvs

[root@localhost ~]# quota -ugvs

Disk quotas for user root (uid 0):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1     20K      0K      0K               2       0       0
Disk quotas for group root (gid 0):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1     20K      0K      0K               2       0       0

LVM 逻辑卷管理器

LVM(Logical Volume Manager)逻辑卷管理,它是Linux环境下对磁盘分区进行管理的一种机制,普通的磁盘分区管理方式在分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题.简单来说LVM就是将物理磁盘融合成一个或几个大的虚拟磁盘存储池,按照我们的需求去存储池划分空间来使用,由于是虚拟的存储池,所以划分空间时可以自由的调整大小,如下:

LVM的组成部分:

⦁ 物理卷(PV,Physical Volume):由磁盘或分区转化而成
⦁ 卷组(VG,Volume Group):将多个物理卷组合在一起组成了卷组,组成同一个卷组的可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区,我们通常把卷组理解为一块硬盘.
⦁ 逻辑卷(LV,Logical Volume):把卷组理解为硬盘的话,那么我们的逻辑卷则是硬盘上的分区,逻辑卷可以进行格式化,存储数据.
⦁ 物理扩展(PE,Physical Extend):PE卷组的最小存储单元,PE所在的位置是VG卷组,即硬盘上,那么我们可以把PE理解为硬盘上的扇区,默认是4MB,可自由配置.

这里准备好4块硬盘,无需分区与格式化.

[root@localhost ~]# ll /dev/sd[b-z]

brw-rw---- 1 root disk 8, 16 Sep 21 22:04 /dev/sdb
brw-rw---- 1 root disk 8, 32 Sep 21 22:04 /dev/sdc
brw-rw---- 1 root disk 8, 48 Sep 21 22:04 /dev/sdd
brw-rw---- 1 root disk 8, 64 Sep 21 22:04 /dev/sde

回到顶部

PV 物理卷创建与移除

PV的创建

pvcreate [分区路径],[分区路径][.......]

[root@localhost ~]# ll /dev/sd[b-z]
brw-rw---- 1 root disk 8, 16 Sep 21 22:04 /dev/sdb
brw-rw---- 1 root disk 8, 32 Sep 21 22:04 /dev/sdc
brw-rw---- 1 root disk 8, 48 Sep 21 22:04 /dev/sdd
brw-rw---- 1 root disk 8, 64 Sep 21 22:04 /dev/sde

[root@localhost ~]# pvcreate /dev/sdb /dev/sdc           #此处拿3块硬盘创建
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
  Physical volume "/dev/sdd" successfully created.

[root@localhost ~]# pvs                                  #查询创建好的硬盘
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  centos lvm2 a--  <9.00g     0
  /dev/sdb          lvm2 ---  10.00g 10.00g
  /dev/sdc          lvm2 ---  10.00g 10.00g
  /dev/sdd          lvm2 ---  10.00g 10.00g

PV的移除

pvremove [分区路径]

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  centos lvm2 a--  <9.00g     0
  /dev/sdb          lvm2 ---  10.00g 10.00g
  /dev/sdc          lvm2 ---  10.00g 10.00g
  /dev/sdd          lvm2 ---  10.00g 10.00g

[root@localhost ~]# pvremove /dev/sdd                       #移除/dev/sdd
  Labels on physical volume "/dev/sdd" successfully wiped.

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  centos lvm2 a--  <9.00g     0
  /dev/sdb          lvm2 ---  10.00g 10.00g
  /dev/sdc          lvm2 ---  10.00g 10.00g

回到顶部

VG 卷组创建与移除

创建VG卷组,VG卷组要在PV中选择

vgcreate -s [指定PE大小] [VG卷组名] [分区路径] [分区路径][.....]

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  centos lvm2 a--  <9.00g     0
  /dev/sdb          lvm2 ---  10.00g 10.00g
  /dev/sdc          lvm2 ---  10.00g 10.00g

[root@localhost ~]# vgcreate -s 4M my_vg /dev/sdb /dev/sdc        #此处就是创建一个VG卷组
  Volume group "my_vg" successfully created

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   2   0 wz--n- <9.00g     0
  my_vg    2   0   0 wz--n- 19.99g 19.99g                         #这就是VG卷组,名字是my_vg

给当前my_vg卷组,添加一块新的PV,也就是扩展卷组

vgextend [卷组名] [物理卷分区]

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--   <9.00g      0
  /dev/sdb   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdc   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdd          lvm2 ---   10.00g  10.00g               #这个物理卷没有划分卷组

[root@localhost ~]# vgextend my_vg /dev/sdd                 #添加一个PV到指定卷组
  Volume group "my_vg" successfully extended

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--   <9.00g      0
  /dev/sdb   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdc   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdd   my_vg  lvm2 a--  <10.00g <10.00g               #已被划分到my_vg卷组

在VG卷组里移除一个PV(移除单个PG)

vgreduce [卷组名] [物理卷分区]

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--   <9.00g      0
  /dev/sdb   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdc   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdd   my_vg  lvm2 a--  <10.00g <10.00g

[root@localhost ~]# vgreduce my_vg /dev/sdd                #将/dev/sdd从my_vg卷组里移除
  Removed "/dev/sdd" from volume group "my_vg"

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--   <9.00g      0
  /dev/sdb   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdc   my_vg  lvm2 a--  <10.00g <10.00g
  /dev/sdd          lvm2 ---   10.00g  10.00g

移除整个VG卷组

vgremove [卷组名]

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   2   0 wz--n- <9.00g     0
  my_vg    2   0   0 wz--n- 19.99g 19.99g

[root@localhost ~]# vgremove my_vg                    #移除整个卷组
  Volume group "my_vg" successfully removed

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   2   0 wz--n- <9.00g    0
[root@localhost ~]#

移除空的物理卷VG

vgreduce -a [卷组名]

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n-  <9.00g      0
  my_vg    3   0   0 wz--n- <29.99g <29.99g

[root@localhost ~]# vgreduce -a my_vg                 #只移除空卷组
  Removed "/dev/sdb" from volume group "my_vg"
  Removed "/dev/sdc" from volume group "my_vg"

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n-  <9.00g      0
  my_vg    1   0   0 wz--n- <10.00g <10.00g

回到顶部

LV 逻辑卷创建与移除

创建LVM

lvcreate -L [指定大小] -n [LV名字] [VG卷组:从哪个卷组里划分]

[root@localhost ~]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <8.00g
  swap centos -wi-ao----  1.00g

[root@localhost ~]# lvcreate -L 10G -n my_lv my_vg            #创建LVM逻辑卷
  Logical volume "my_lv" created.

[root@localhost ~]# lvs
  LV    VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  centos -wi-ao---- <8.00g
  swap  centos -wi-ao----  1.00g
  my_lv my_vg  -wi-a----- 10.00g

格式化并挂载使用

[root@localhost ~]# mkdir /LVM                            #首先创建一个挂载点
[root@localhost ~]#
[root@localhost ~]# mkfs.ext4 /dev/my_vg/my_lv            #格式化LVM分区
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

[root@localhost ~]# mount /dev/my_vg/my_lv /LVM/                  #挂载LVM
[root@localhost ~]#
[root@localhost ~]# df -h                                         #查看结果
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.2G  6.9G  15% /
devtmpfs                  98M     0   98M   0% /dev
tmpfs                    110M     0  110M   0% /dev/shm
tmpfs                    110M  5.5M  104M   5% /run
tmpfs                    110M     0  110M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     22M     0   22M   0% /run/user/0
/dev/mapper/my_vg-my_lv  9.8G   37M  9.2G   1% /LVM                ← 挂载成功

回到顶部

LV 容量增加 (将LV的容量增加5G的空间)

注意:这里扩展,要先扩展LVM,然后再扩展文件系统

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.2G  6.9G  15% /
devtmpfs                  98M     0   98M   0% /dev
tmpfs                    110M     0  110M   0% /dev/shm
tmpfs                    110M  5.5M  104M   5% /run
tmpfs                    110M     0  110M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     22M     0   22M   0% /run/user/0
/dev/mapper/my_vg-my_lv  9.8G   37M  9.2G   1% /LVM                  ←此处是10G

[root@localhost ~]# lvextend -L +5G /dev/my_vg/my_lv                 #执行增加命令,从VG卷组划分5G
  Size of logical volume my_vg/my_lv changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840).
  Logical volume my_vg/my_lv successfully resized.

[root@localhost ~]# resize2fs -f /dev/my_vg/my_lv                    #扩展文件系统
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/my_vg/my_lv is mounted on /LVM; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/my_vg/my_lv is now 3932160 blocks long.

[root@localhost ~]# df -h                                            #验证扩展结果
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.2G  6.9G  15% /
devtmpfs                  98M     0   98M   0% /dev
tmpfs                    110M     0  110M   0% /dev/shm
tmpfs                    110M  5.5M  104M   5% /run
tmpfs                    110M     0  110M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     22M     0   22M   0% /run/user/0
/dev/mapper/my_vg-my_lv   15G   41M   14G   1% /LVM                  ←此处已经从10G 增加到15G

回到顶部

LV 容量缩小(将LV的容量缩小5G的空间)

注意:这里缩小,要卸载文件系统,检查分区,然后缩小文件系统,最后再缩小LVM

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.2G  6.9G  15% /
devtmpfs                  98M     0   98M   0% /dev
tmpfs                    110M     0  110M   0% /dev/shm
tmpfs                    110M  5.5M  104M   5% /run
tmpfs                    110M     0  110M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     22M     0   22M   0% /run/user/0
/dev/mapper/my_vg-my_lv   15G   41M   14G   1% /LVM                 ←此处显示15G空间

[root@localhost ~]# umount /dev/my_vg/my_lv                         #卸载LVM卷组

[root@localhost ~]# e2fsck -f /dev/my_vg/my_lv                      #检查文件系统
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/my_vg/my_lv: 11/983040 files (0.0% non-contiguous), 104724/3932160 blocks

[root@localhost ~]# resize2fs -f /dev/my_vg/my_lv 10G(减小后的大小)   #缩小文件系统
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/my_vg/my_lv to 2621440 (4k) blocks.
The filesystem on /dev/my_vg/my_lv is now 2621440 blocks long.

[root@localhost ~]# lvreduce -L 10G /dev/my_vg/my_lv                 #缩小LVM
  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce my_vg/my_lv? [y/n]: y                   #输入y
  Size of logical volume my_vg/my_lv changed from 15.00 GiB (3840 extents) to 10.00 GiB (2560).
  Logical volume my_vg/my_lv successfully resized.

[root@localhost ~]# mount /dev/my_vg/my_lv /LVM/                    #挂载

[root@localhost ~]# df -h                                           #再次查看分区变化
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.2G  6.9G  15% /
devtmpfs                  98M     0   98M   0% /dev
tmpfs                    110M     0  110M   0% /dev/shm
tmpfs                    110M  5.5M  104M   5% /run
tmpfs                    110M     0  110M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     22M     0   22M   0% /run/user/0
/dev/mapper/my_vg-my_lv  9.8G   37M  9.2G   1% /LVM                 ←此处已经从15G变成10G

回到顶部

LV 快照功能

拍摄快照

lvcreate [-s 快照] -n [快照名] -L [快照大小] [指定分区] 

[root@localhost LVM]# ls
1    12  16  2   23  27  30  34  38  41  45  49  52  56  6   63  67  70  74  78  81  85  89  92  96
10   13  17  20  24  28  31  35  39  42  46  5   53  57  60  64  68  71  75  79  82  86  9   93  97
100  14  18  21  25  29  32  36  4   43  47  50  54  58  61  65  69  72  76  8   83  87  90  94  98
11   15  19  22  26  3   33  37  40  44  48  51  55  59  62  66  7   73  77  80  84  88  91  95  99

[root@localhost LVM]# lvcreate -s -n mylv_back -L 200M /dev/my_vg/my_lv            #给/LVM目录拍摄快照
  Logical volume "mylv_back" created.

[root@localhost LVM]# lvs                                                          #查看快照
  LV        VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root      centos -wi-ao----  <8.00g
  swap      centos -wi-ao----   1.00g
  my_lv     my_vg  owi-aos---  10.00g
  mylv_back my_vg  swi-a-s--- 200.00m      my_lv  0.01                             ←此处就是快照

快照恢复

[root@localhost LVM]# ls
1    12  16  2   23  27  30  34  38  41  45  49  52  56  6   63  67  70  74  78  81  85  89  92  96
10   13  17  20  24  28  31  35  39  42  46  5   53  57  60  64  68  71  75  79  82  86  9   93  97
100  14  18  21  25  29  32  36  4   43  47  50  54  58  61  65  69  72  76  8   83  87  90  94  98
11   15  19  22  26  3   33  37  40  44  48  51  55  59  62  66  7   73  77  80  84  88  91  95  99

[root@localhost LVM]# rm -fr *                                #模拟被删除
[root@localhost LVM]# mkdir /back                             #创建挂载点
[root@localhost LVM]# mount /dev/my_vg/mylv_back /back/       #挂载备份文件
[root@localhost LVM]# cp -a /back/* ./                        #复制备份文件

[root@localhost LVM]# ls
1    12  16  2   23  27  30  34  38  41  45  49  52  56  6   63  67  70  74  78  81  85  89  92  96
10   13  17  20  24  28  31  35  39  42  46  5   53  57  60  64  68  71  75  79  82  86  9   93  97
100  14  18  21  25  29  32  36  4   43  47  50  54  58  61  65  69  72  76  8   83  87  90  94  98
11   15  19  22  26  3   33  37  40  44  48  51  55  59  62  66  7   73  77  80  84  88  91  95  99

RAID 独立磁盘冗余阵列

定义:独立磁盘构成的具有冗余能力的阵列

磁盘阵列分类:一是外接式磁盘阵列柜、二是内接式磁盘阵列卡,三是利用软件来仿真

1.通过把多个磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能
2.通过把数据分成多个数据块(Block)并行写入/读出多个磁盘以提高访问磁盘的速度
3.通过镜像或校验操作提供容错能力

注意:RAID磁盘阵列主要为了保证硬件损坏的情况下业务不会终止,无法防止误操作

磁盘阵列的分类

1.外接式磁盘阵列柜
2.内接式磁盘阵列
3.利用软件来仿真
注意:通常情况下,生产环境中,一般使用硬件RAID来做,这里只做了解即可

RAID磁盘阵列简介

RAID 0 没有奇偶校验的 (条带卷)
RAID 0 提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求

RAID 1 独立磁盘冗余阵 (镜像卷)
RAID 1 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据.当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能.

RAID10 (镜象阵列条带)
Raid 10 是一个Raid1与Raid0的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了Raid0的快速和Raid1的安全.

RAID5 分布式奇偶校验的独立磁盘结构(最少3块)
RAID 5 是一种存储性能,数据安全,和存储成本,兼顾的存储解决方案. RAID 5可以理解为是RAID 0和RAID 1的折中方案.

回到顶部

Mdadm 命令解析

[root@localhost ~]# mdadm --help
mdadm is used for building, managing, and monitoring
Linux md devices (aka RAID arrays)
Usage: mdadm 

mdadm --create --auto=yes /dev/md[0-9] --raid-devices=[0-n] 
--level=[015] --spare-devices=[0-n] /dev/sd[a-z]

--create       #新建RAID参数
--auto=yes     #默认配置
--raid-devices=N     #磁盘阵列数
--spare-devices=N  #备份磁盘数
--level [015]  #阵列等级
mdadm --detail       #查询阵列信息

回到顶部

构建一个RAID 5

注意:精简模式下,没有安装此命令,执行 yum install -y mdadm 安装


[root@localhost ~]# ls -l /dev/sd[b-z]
brw-rw---- 1 root disk 8, 16 Sep 21 23:06 /dev/sdb
brw-rw---- 1 root disk 8, 32 Sep 21 23:06 /dev/sdc
brw-rw---- 1 root disk 8, 48 Sep 21 23:06 /dev/sdd
brw-rw---- 1 root disk 8, 64 Sep 21 23:04 /dev/sde


[root@localhost ~]# mdadm --create --auto=yes /dev/md0 --level=5 
> --raid-devices=3 --spare-devices=1 /dev/sd{b,c,d,e}                  #创建一个RAID,其中接口是/dev/md0,等级是RAID5
mdadm: Defaulting to version 1.2 metadata                              #主磁盘数3,备份盘数1,提供sd{b,c,d,e}磁盘
mdadm: array /dev/md0 started.


[root@localhost ~]# mdadm --detail /dev/md0                            #查看阵列信息
/dev/md0:   ←设备文件名
           Version : 1.2
     Creation Time : Fri Sep 21 2309 2018   ←创建日期
        Raid Level : raid5                      ←RAID等级
        Array Size : 20953088 (19.98 GiB 21.46 GB)  ←可用空间
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)   ←每个设备可用空间
      Raid Devices : 3       ←RAID设备数量
     Total Devices : 4       ←全部设备数量
       Persistence : Superblock is persistent


       Update Time : Fri Sep 21 2326 2018
             State : clean, degraded, recovering
    Active Devices : 3   ←启动磁盘
   Working Devices : 4   ←可用磁盘
    Failed Devices : 0   ←错误磁盘
     Spare Devices : 1   ←预备磁盘


            Layout : left-symmetric
        Chunk Size : 512K


Consistency Policy : resync


    Rebuild Status : 34% complete


              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 2ee2bcd5d3810252:23c2d5a8   ←此设备UUID
            Events : 6


    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      spare rebuilding   /dev/sdd


       3       8       64        -      spare   /dev/sde

格式化 /dev/md0并挂载使用


[root@localhost ~]# mkfs -t ext4 /dev/md0             #格式化
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5238272 blocks
261913 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000


Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done


[root@localhost ~]# mkdir /RAID              #新建挂载目录
[root@localhost ~]#
[root@localhost ~]# mount /dev/md0 /RAID/    #挂载设备
[root@localhost ~]#
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  8.0G  1.2G  6.9G  15% /
devtmpfs                  98M     0   98M   0% /dev
/dev/sr0                 4.2G  4.2G     0 100% /mnt
/dev/md0                  20G   45M   19G   1% /RAID    ←此处可看到挂载成功

回到顶部

RAID 仿真救援模式


mdadm --manage /dev/md[0-9] --add 设备 --remove 设备 --fail 设备


  --add     #将后面的设备加入md中
  --remove  #移除设备
  --fail    #设置出错磁盘
------------------------------------------------------------
[实验]




[root@localhost /]# mdadm --manage /dev/md0 --fail /dev/sdb         #将/dev/sdb标注为错误
mdadm: set /dev/sdb faulty in /dev/md0


[root@localhost /]# mdadm --detail /dev/md0                         #查看一下状态
/dev/md0:
           Version : 1.2
     Creation Time : Fri Sep 21 23:19:09 2018
        Raid Level : raid5
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent


       Update Time : Fri Sep 21 23:50:12 2018
             State : clean, degraded, recovering
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1  ← 出错磁盘一个
     Spare Devices : 1


            Layout : left-symmetric
        Chunk Size : 512K


Consistency Policy : resync


    Rebuild Status : 5% complete     ←此处需要注意,他正在恢复数据,等到100%时又可以正常工作


              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 2ee2bcd5d3810252:23c2d5a8
            Events : 20


    Number   Major   Minor   RaidDevice State
       3       8       64        0      spare rebuilding   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd


       0       8       16        -      faulty   /dev/sdb   ← 出错磁盘




[root@localhost /]# mdadm --manage /dev/md0 --remove /dev/sdb            #移除这个坏掉的磁盘
mdadm: hot removed /dev/sdb from /dev/md0




[root@localhost /]# mdadm --manage /dev/md0 --add /dev/sdb               #添加一个新的磁盘mdadm: added /dev/sdb

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11116

    浏览量

    207752
  • 磁盘
    +关注

    关注

    1

    文章

    355

    浏览量

    25076
  • 文件系统
    +关注

    关注

    0

    文章

    278

    浏览量

    19814

原文标题:Linux 高级文件系统管理

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式Linux文件系统管理

      嵌入式 Linux 开发人员可以使用平台映像生成器等工具获得对构建复杂文件系统的更多控制,这使得组装、调整和创建文件系统映像更容易完成。
    发表于 08-12 09:23 669次阅读
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>文件系统管理</b>

    Linux文件系统管理

    Linux文件系统管理作者:吴新武,华清远见嵌入式学院讲师。Unix业界有句话叫“一切皆文件”,Linux作为一个优秀的类Unix操作系统
    发表于 09-13 09:48

    系统管理的详细设计

    系统管理的详细设计:系统管理的总体设计,账套管理系统授权管理,基础数据管理
    发表于 07-06 07:28 0次下载

    文件系统管理操作

    为了方便用户对设备存储设备进行有效的管理,设备提供了文件系统功能,实现对文件和目录的访问管理:用户可以通过命令行对文件进行创建、移动、拷贝、
    发表于 08-30 15:55 0次下载

    Linux系统管理员培训视频教程(1-10)

    Linux系统管理员培训视频教程(1-10)
    发表于 10-18 15:56 154次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>系统管理</b>员培训视频教程(1-10)

    Linux系统管理员培训视频教程(11-20)

    Linux系统管理员培训视频教程(11-20)
    发表于 10-18 15:58 127次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>系统管理</b>员培训视频教程(11-20)

    Linux系统管理员培训视频教程(21-30)

    Linux系统管理员培训视频教程(21-30)
    发表于 10-18 15:58 110次下载

    Linux系统管理员培训视频教程(31-41)

    Linux系统管理员培训视频教程(31-41)
    发表于 10-18 15:59 115次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>系统管理</b>员培训视频教程(31-41)

    Linux系统管理命令

    Linux系统管理命令 Linux系统管理命令  wall命令  功能:这个命令的功能是对全部已登录的用户发送信息,用户可以先把要发送的信息写好存入一个
    发表于 01-18 12:47 787次阅读

    Linux系统管理技术手册—奈米斯

    本书为奈米斯所著的 Linux 系统管理技术手册第二版。共从二十四个章节讲述了Linux系统管理技术。适合Linux
    发表于 08-10 14:16 0次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>系统管理</b>技术手册—奈米斯

    RedHat系统管理

    RedHat系统管理
    发表于 12-29 11:33 0次下载

    Linux设备驱动开发详解》第5章、Linux文件系统与设备文件系统

    Linux设备驱动开发详解》第5章、Linux文件系统与设备文件系统
    发表于 10-27 14:13 0次下载
    《<b class='flag-5'>Linux</b>设备驱动开发<b class='flag-5'>详解</b>》第5章、<b class='flag-5'>Linux</b><b class='flag-5'>文件系统</b>与设备<b class='flag-5'>文件系统</b>

    Linux系统管理命令整理及使用方法介绍

    linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、
    的头像 发表于 09-23 14:55 6728次阅读

    Linux应用基础教程之Linux如何进行系统管理

    本文档的主要内容详细介绍的是Linux应用基础教程之Linux如何进行系统管理主要内容包括了:1 用户和组管理 2 软件包管理 3 网络通信
    发表于 11-28 15:56 2次下载

    嵌入式Linux文件系统管理的工具选择

      嵌入式 Linux 开发人员可以使用平台映像生成器等工具获得对构建复杂文件系统的更多控制,这使得组装、调整和创建文件系统映像更容易完成。
    的头像 发表于 06-22 11:15 1372次阅读
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>文件系统管理</b>的工具选择