zoukankan      html  css  js  c++  java
  • Linux系统磁盘管理(lvm逻辑卷管理)

    linux系统用户常遇到的一个问题就是如何精准的评估分区的大小,已分配合适的磁盘空间;普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。(参考百度百科)

    逻辑卷的缺点:

    1. 逻辑卷主要的作用就是动态管理分区的大小,但是现在市场上的磁盘已经很廉价了,我们完全可以分配合适的磁盘空间。
    2. 在磁盘直接分区是属于直接在磁盘上建立文件系统,而逻辑卷是建立磁盘和文件系统之间的标识,所以当线上服务器的磁盘坏了,数据恢复有很大的风险
    3. 逻辑卷的数据读写的速度也是有些慢的
    4. 逻辑卷容易丢数据

    1、LVM常用的术语:

    • 物理存储介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用;
    • 物理卷PV(physical volume) :物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;
    • 卷组VG(Volume Group) :一个LVM卷组由一个或多个物理卷组成;
    • 逻辑卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系统;
    • PE(physical extents) :PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB;
    • LE(logical extent) : LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应;

    2、常用的LVM部署命令

    功能/命令 物理卷管理 卷组管理 逻辑卷管理
    扫描 pvscan vgscan lvscan
    建立 pvcreate vgcreate lvcreate
    显示 pvdisplay vgdisplay lvdisplay
    删除 pvremove vgremove lvremove
    扩展 vgextend lvextend
    缩小 vgreduce lvreduce

    xfs文件系统管理常用命令

    命令 作用
    xfs_admin 调整 xfs 文件系统的各种参数
    xfs_copy 拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
    xfs_db 调试或检测 xfs 文件系统(查看文件系统碎片等)
    xfs_check 检测 xfs 文件系统的完整性
    xfs_bmap 查看一个文件的块映射
    xfs_repair 尝试修复受损的 xfs 文件系统
    xfs_fsr 碎片整理
    xfs_quota 管理 xfs 文件系统的磁盘配额
    xfs_metadump 将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
    xfs_mdrestore 从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
    xfs_growfs 调整一个 xfs 文件系统大小(只能扩展)
    xfs_freeze 暂停(-f)和恢复(-u)xfs 文件系统
    xfs_logprint 打印xfs文件系统的日志
    xfs_mkfile 创建xfs文件系统
    xfs_info 查询文件系统详细信息
    xfs_ncheck generate pathnames from i-numbers for XFS
    xfs_rtcp XFS实时拷贝命令
    xfs_io 调试xfs I/O路径

    LVM常用命令

    1、 物理卷命令
    一般维护命令:
    pvscan #在系统的所有磁盘中搜索已存在的物理卷
    pvdisplay 物理卷全路径名称 #用于显示指定物理卷的属性。
    pvdata 物理卷全路径名称 #用于显示物理卷的卷组描述区域信息,用于调试目的。
    pvchange Cx|--allocation {y|n} 物理卷全路径名 #用于改变物理卷的分配许可设置物理卷的创建与删除命令
    pvcreate 设备全路径名 #用于在磁盘或磁盘分区上创建物理卷初始化信息,以便对该物理卷进行逻辑卷管理。
    pvmove 源物理卷全路径我[目的物理卷全路径名] #用于把某物理卷中的数据转移到同卷组中其他的特刊卷中。

    2、 卷组命令
    一般维护命令
    vgscan #检测系统中所有磁盘
    vgck [卷组名] #用于检查卷组中卷组描述区域信息的一致性。
    vgdisplay [卷组名] #显示卷组的属性信息
    vgrename 原卷组名 新卷组名
    vgchange -a y|n [卷组名] #改变卷组的相应属性。是否可分配
    vgchange -l 最大逻辑卷数 #卷组可容纳最大逻辑卷数
    vgchange -x y|n [卷组名] #卷是否有效
    vgmknodes [卷组名|卷组路径] #用于建立(重新建立)已有卷组目录和其中的设备文件卷组配置的备份与恢复命令
    vgcfgbackup [卷组名] #把卷组中的VGDA信息备份到“/etc/lvmconf”目录中的文件
    vgcfgrestore -n 卷组名 物理卷全路命名 #从备份文件中必得指定物理卷的信息卷组的建立与删除命令
    vgcreate 卷组名 物理卷全路径名[物理卷全路径名]
    vgmove 卷组名

    卷组的扩充与缩小命令
    vgextend 卷组名 物理卷全路径名[物理卷全路径名]
    vgreduce 卷组名 物理卷全路径名[物理卷全路径名]

    卷组的合并与拆分
    vgmerge 目的卷组名 源卷组名 #合并两个已经存在的卷组,要求两个卷组的物理区域大小相等且源卷组是非活动的。
    vgsplit 现有卷组 新卷组 物理卷全路径名[物理卷全路径名]

    卷组的输入与输出命令
    vgexport 卷组名
    vgimport 卷组名 卷组中的物理卷[卷组中的物理卷]

    3、 逻辑卷命令
    一般命令
    lvscan
    lvdisplay 逻辑卷全路径名[逻辑卷全路径名]
    lvrename 旧逻辑卷全路径名 新逻辑卷全路径名
    lvrename 卷组名 旧逻辑卷名 新逻辑卷名
    lvchange
    e2fsadm -L +|- 逻辑卷增减量 逻辑卷全路径名

    逻辑卷的创建与删除命令
    lvcreate
    lvremove

    逻辑卷的扩充与缩小命令
    lvextend -L|--size +逻辑卷大小增量 逻辑卷全路径名
    lvreduce q -L|--size +逻辑卷减小量 逻辑卷全路径名

    4、 逻辑卷管理命令
    lvmdiskscan #检测所有的SCSI、IDE等存储设备
    lvmchange -R|--reset #复位逻辑卷管理器
    lvmsadc [日志文件全路径名] #收信逻辑卷管理器读写统计信息,保存到日志文件中。
    lvmsar 日志文件全路径名 #从lvmsadc命令生成的日志文件中读取并报告逻辑卷管理器的读写统计信息。

    3、LVM逻辑卷部署

    物理卷 --> 卷组 --> 逻辑卷
    ①. 创建物理卷
    pvcreate /dev/sd{b,c}
    ②. 创建卷组
    vgcreate vg_du /dev/sd{b,c}
    ③. 创建逻辑卷
    lvcreate -n lv_du -L 500M vg_ken
    ④. 格式化
    mkfs.xfs /dev/vg_du/lv_du
    ⑥. 挂载使用
    mount /dev/vg_du/lv_du /test

    注意:卸载命令umount
    后面跟挂载点或者磁盘都可以

    LVM扩容
    lvextend -L +300M /dev/vg_du/lv_du
    lvextend -L 800M /dev/vg_du/lv_du

    xfs_growfs /dev/vg_du/lv_du

    演示:

    #第一步:添加磁盘并查看
    
    ╭─root@localhost.localdomain ~  
    ╰─➤  ls /dev/sd*
    /dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc
    
    #第二步:创建物理卷
    
    ╭─root@localhost.localdomain ~  
    ╰─➤  pvcreate /dev/sd{b,c}                                                         5 ↵
      Physical volume "/dev/sdb" successfully created.
      Physical volume "/dev/sdc" successfully created.
    
    #第三步:创建卷组
    
    ╭─root@localhost.localdomain ~  
    ╰─➤  vgcreate vg_du /dev/sd{b,c}
      Volume group "vg_du" successfully created
    
    #第四步:创建逻辑卷并格式化逻辑卷
    
    ╭─root@localhost.localdomain ~  
    ╰─➤  man lvcreate           #开手册查看用法,常用option:-l   -L   -n                                      
    ╭─root@localhost.localdomain ~  
    ╰─➤  lvcreate -L 1G -n lv_du1 vg_du    #-L:size  大小      -n:name  名字
      Logical volume "lv_du1" created.
    ╭─root@localhost.localdomain ~  
    ╰─➤  mkfs.xfs /dev/vg_du/lv_du1     
    meta-data=/dev/vg_du/lv_du1      isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=262144, 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@localhost.localdomain ~  
    ╰─➤  lvcreate -l 250 -n lv_du2 vg_du       #-l :数量                                        
      Logical volume "lv_du2" created.
    ╭─root@localhost.localdomain ~  
    ╰─➤  mkfs.xfs /dev/vg_du/lv_du2
    meta-data=/dev/vg_du/lv_du2      isize=512    agcount=4, agsize=64000 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=256000, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=855, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
    #第五步:挂载
    
    ╭─root@localhost.localdomain ~  
    ╰─➤  mkdir /du1
    ╭─root@localhost.localdomain ~  
    ╰─➤  mkdir /du2
    ╭─root@localhost.localdomain ~  
    ╰─➤  mount /dev/vg_du/lv_du1 /du1
    ╭─root@localhost.localdomain ~  
    ╰─➤  mount /dev/vg_du/lv_du2 /du2
    ╭─root@localhost.localdomain ~  
    ╰─➤  df       #查询挂载成功
    文件系统                    1K-块    已用     可用 已用% 挂载点
    /dev/mapper/cl-root      17811456 4837880 12973576   28% /
    devtmpfs                   484108       0   484108    0% /dev
    tmpfs                      499968     144   499824    1% /dev/shm
    tmpfs                      499968    7228   492740    2% /run
    tmpfs                      499968       0   499968    0% /sys/fs/cgroup
    /dev/sda1                 1038336  176600   861736   18% /boot
    tmpfs                       99996      16    99980    1% /run/user/0
    /dev/sr0                  4276440 4276440        0  100% /run/media/root/CentOS 7 x86_64
    /dev/mapper/vg_du-lv_du1  1038336   32944  1005392    4% /du1
    /dev/mapper/vg_du-lv_du2  1020580   32944   987636    4% /du2
    
    #第六步:开机自启
    
    ╭─root@localhost.localdomain ~  
    ╰─➤  echo "/dev/mapper/vg_du-lv_du1 /du1 xfs defaults 0 0" >>  /etc/fstab
    ╭─root@localhost.localdomain ~  
    ╰─➤  echo “mount /dev/vg_du/lv_du2 /du2”  >> /etc/rc.local
    ╭─root@localhost.localdomain ~  
    ╰─➤  chmod +x /etc/rc.local     #给个执行权限
    
    # /etc/rc.local 
       是使用者自订开机启动程序的文件,把需要开机自动运行的程序写在这个脚本里
    
    

  • 相关阅读:
    Mac电脑,Andorid studio 配置 Flutter
    java.lang.RuntimeException: com.intellij.ide.plugins.PluginManager
    #Java Web累积#关于MUI的上滑和下拉加载
    #iOS问题记录#WKWebView 闪退异常
    #iOS问题记录#UITableView加载后直接滑动倒最底部
    #Java Web累积#JS动态加载所有同name的select的option
    #iOS问题记录# UIWebView滑动到底部
    #Java Web累积#表格<table>中隐藏列做备用数据
    #iOS问题记录# UITextview富文本链接,禁止长按事件
    Day 1:自定义tableview cell xib版
  • 原文地址:https://www.cnblogs.com/du-z/p/10872203.html
Copyright © 2011-2022 走看看