• 逻辑卷磁盘管理和dd命令


     
    底层PV
    中层VG
    上层LV
     
    PE(phsical extent):在逻辑层次上,VG把PV分成固定大小的块,这些块就叫PE,默认为4M ,创建LV的过程就是分多少个PE的过程。
    自动分区的过程中,除了根目录,把其他所有的磁盘空间都做成LV
     
     
     
    一. LVM概述
     
    LVM: Logical Volume Manager, Version: 2
    用的是dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;
     
    两种引用文件的方式,他们引用的其实都是/dev/dm-0,1,2,3...等文件,
    1.     /dev/mapper/VG_NAME-LV_NAME
           例如: /dev/mapper/vol0-root
     
    2.   /dev/VG_NAME/LV_NAME
          例如:  /dev/vol0/root
     
     
     
    二. 如何创建和管理逻辑卷呢?
     
     
    首先要先创建PV,新建分区后需要把其类型调整为8e(Linux LVM)
     
       1)pv(物理卷)管理工具:
            pvs:简要pv信息显示
            pvdisplay:显示pv的详细信息
            pvcreate /dev/DEVICE: 创建pv
     
       2)vg(卷组,相当于逻辑分区,不能分区,可包含多个pv)管理工具:
            vgs--简要显示所有卷组
            vgdisplay
     
            vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]  ----指定大小
            例如:vgcreate myvg /dev/sda3
     
            vgextend  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]
     
            vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...],需要先做pvmove
                
            vgremove
     
     
       3)lv(逻辑卷)管理工具:
            lvs
            lvdisplay
            lvcreate -L #[mMgGtT] -n NAME VolumeGroup  #-L指明大小,-n指明名字, 例如 lvcreate -L 2G -n mylv myvg,然后正常格式化,mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv
            lvremove /dev/VG_NAME/LV_NAME
     
     
        扩展逻辑卷:
            # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME    #带上+是准确的加多少空间;不带上+,是扩展后的总空间
            # resize2fs /dev/VG_NAME/LV_NAME
     
        缩减逻辑卷:
            # umount /dev/VG_NAME/LV_NAME
            # e2fsck -f /dev/VG_NAME/LV_NAME
            # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
            # lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
            # mount
     
     
    4)例子
    添加硬盘到卷组, 就是加一块新硬盘,增加到指定硬盘空间。
     
     
    1、给新硬盘创建分区    fdisk /dev/sdc
           n
           p
           1
           w
    2、创建物理卷 pvcreate /dev/sdc1
    3、格式化物理卷 mkfs.ext3 /dev/sdc1, 选择哪一个文件系统最好用mount命令查看一下
    4、将新的物理卷添加到卷组中 vgextend VolGroup00 /dev/sdc1,用pvs验证是否成功
    5、将新的空间添加到逻辑卷中 lvextend -L +10G /dev/VolGroup00/LogVol00(提前可以挂载到目录下查看大小再决定添加的空间),此例是加了10G,随个人需要增加空间
    6、加上去后,目前用df -h还看不到改变,需要激活 resize2fs -p /dev/VolGroup00/LogVol00
    7、用df -h查看
     
    实例1. 某校创建了300G的硬盘sdb,需要我加到卷组中,并挂到/home目录下,(其实挂载根目录下更好)
    mkfs.ext4 /dev/sdb
    vgextend VolGroup /dev/sdb
    lvextend -L +299G /dev/VolGroup/lv_home
    resize2fs -p /dev/VolGroup/lv_home
     
     
    实例2. 某校虚拟机扩容 +200G
     
    1. 先在虚拟机外面进行硬盘扩展--学校老师做了,但是我fdisk没看到有变化,重启一下就能看到扩展了200G
    2. fdisk /dve/sda  新建分区,这里dev/sda3,新建的分区空间很小,那么需要重新新建一个分区,dev/sda4,w保存,然后重启
    3. 格式化分区 mkfs.ext4 /dev/sda4
    4. 建立pv,pvcreate /dev/sda4
    5. 扩展vg ,  vgextend ubuntu_vg /dev/sda4  -------把新建的分区扩展到源ubuntu_vg
    6. vgdisplay查看一下
    7. 扩展lv,lvextend -L +199.9G /dev/ubuntu_vg/root
    8. vgdisplay 查看一下
    9. resize2fs -p /dev/ubuntu_vg/root    调整文件系统
     
    http://www.cnblogs.com/tigertall/p/5257324.html    -----------最后一步按照 resize2fs -p /dev/VolGroup/lv_home  可以成功。
     
     
     
    三.     快照:snapshot
     
             将文件系统迅速的扫描一遍,类似硬链接,必须在同一卷组,仅存储快照那一刻发生变化的文件,之前的原文件直接指向原地址空间。
             快照空间的大小取决于这个快照想用多少时间,比如2个小时内系统数据变化量大概为2G,那么快照空间设个3G就行。
     
            lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name #-s:指明是快照,-n:指明名字,-p:权限
            例如:lvcreate -s -L 512M -n mylv-snap -p r /dev/myvg/mylv
                      mount /dev/myvg/mylv-snap /mnt
     
            不用快照的时候
             umount /mnt
             lvremove /dev/myvg/mylv-snap
     
        练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;
        练习2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;
        练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失;
        练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失;
        练习5:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;
     
     
     
    四.  dd命令:convert and copy a file------底层文件复制工具,效率比cp更高
     
            用法:
                dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
                    bs=#:block size, 复制单元大小;
                    count=#:复制多少个bs;
                    例如:复制etc/fstab文件中的前100个字节  dd if=/etc/fstab of=/tmp/fstab.2 bs=1 count=100
     
             1)磁盘拷贝:
                  dd if=/dev/sda of=/dev/sdb
     
             2)备份MBR
                    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
     
             3)破坏MBR中的bootloader,不会影响分区表:
                    dd if=/dev/zero of=/dev/sda bs=256 count=1
     
            两个特殊设备:
                /dev/null: 数据黑洞;
                /dev/zero:吐零机;
  • 相关阅读:
    Linux下vsftpd的安装,Java上传文件实现。
    springboot整合shiro、redis及相关优化
    spring boot 配置文件
    spring boot 解决跨域访问
    spring-boot与spring-data-JPA的简单整合
    QQ空间里的“可能认识的人”深层思考????
    unix
    linux
    Linux中fork()函数详解
    word is too tall: try to use less letters, smaller font or bigger background 报错 java程序 验证码不显示
  • 原文地址:https://www.cnblogs.com/regit/p/7761746.html
Copyright © 2020-2023  润新知