知识了解

LVM关系图

fdisk命令详解

    [root@localhost beinan]# fdisk /dev/xvde
    Command (m for help): 在这里按 m ,就会输出帮助;
    Command action
    a   toggle a bootable flag    #设置启动分区
    b   edit bsd disklabel    #编辑分区标签
    c   toggle the dos compatibility flag
    d   delete a partition    #这是删除一个分区的动作
    g   create a new empty GPT partition table
    G   create an IRIX (SGI) partition table
    l   list known partition types    #l 是列出分区类型,以供我们设置相应分区的类型
    m   print this menu    #m 是列出帮助信息
    n   add a new partition    #添加一个分区
    o   create a new empty DOS partition table
    p   print the partition table    #p 列出分区表
    q   quit without saving changes    #不保存退出
    s   create a new empty Sun disklabel
    t   change a partition‘s system id    #t 改变分区类型
    u   change display/entry units    #改变显示的单位
    v   verify the partition table    #检查验证分区表
    w   write table to disk and exit    #把分区表写入硬盘并退出
    x   extra functionality (experts only) #扩展

    Command (m for help): l

    0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
    1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
    2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
    3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
    4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
    5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
    6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
    7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
    8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
    9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
    a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
    b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
    c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
    e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
    f  W95 Ext‘d (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
    10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
    11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
    12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
    14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
    16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
    17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
    18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
    1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
    1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
    1e  Hidden W95 FAT1 80  Old Minix 

新建LVM

查看分区和磁盘情况

    [root@vs-yth12 ~]$ fdisk -l

    Disk /dev/xvda: 64.4 GB, 64424509440 bytes, 125829120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000743c6

        Device Boot      Start         End      Blocks   Id  System
    /dev/xvda1   *        2048   100663295    50330624   83  Linux
    /dev/xvda2       100663296   125829119    12582912   82  Linux swap / Solaris

    Disk /dev/xvde: 42.9 GB, 42949672960 bytes, 83886080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x7262c8b2

        Device Boot      Start         End      Blocks   Id  System
    /dev/xvde1            2048    83886079    41942016   82  Linux swap / Solaris
    [root@vs-yth12 ~]$ lsblk
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0      11:0    1 1024M  0 rom  
    xvda    202:0    0   60G  0 disk 
    ├─xvda1 202:1    0   48G  0 part /
    └─xvda2 202:2    0   12G  0 part [SWAP]
    xvde    202:64   0   40G  0 disk 
    └─xvde1 202:65   0   40G  0 part

新建分区和修改分区类型ID为8e

    [root@vs-yth12 ~]$ fdisk /dev/xvde
    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.

    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x7262c8b2.

    Command (m for help): t
    No partition is defined yet!

    Command (m for help): n  
    Partition type:
    p   primary (0 primary, 0 extended, 4 free)    #主分区
    e   extended    #逻辑分区
    Select (default p): p
    Partition number (1-4, default 1): 
    First sector (2048-83886079, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): 
    Using default value 83886079
    Partition 1 of type Linux and of size 40 GiB is set

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list all codes): 8e
    Changed type of partition 'Linux' to 'Linux LVM'

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

    [root@vs-yth12 ~]$ partprobe    #在线更新

创建PV

    $ pvscan   #查询pv
    PV /dev/xvde1           lvm2 [40.00 GiB]
    Total: 1 [40.00 GiB] / in use: 0 [0   ] / in no VG: 1 [40.00 GiB]
    $ pvdisplay   #同上
    $ pvcreate /dev/xvde1  #结果可以通过pvs pvscan pvdisplay 查看

创建VG

    $ vgcreate myvgname /dev/xvde1  #将所有PV组成一个VG,这里只有一个PV,myvgname是自定义的VG名
    #创建成功后可以通过vgscan vgdisplay pvscan查看
    $ pvscan
    PV /dev/xvde1   VG myvgname        lvm2 [40.00 GiB / 40.00 GiB free]  #这里比上面的多了个VG
    Total: 1 [40.00 GiB] / in use: 1 [40.00 GiB] / in no VG: 0 [0   ]

创建LV

    lvcreate 常用参数详解
    lvcreate -L 15G myvgname    #在名为myvgname的卷组中创建15G大小的逻辑卷,固定大小
    lvcreate -L 2500 -n mylvname myvgname    #在名为myvgname的卷组中创建2500M大小的逻辑卷,并命名为mylvname
    # -n  命名LV
    lvcreate -l 50%VG -n mylvname myvgname    #用myvgname的50%大小创建一个LV
    lvcreate --name centos7newvol -l 100%FREE vgnewlvm    #用卷组剩下的所有空间创建逻辑卷

    lvcreate: Create a logical volume(创建逻辑卷)
        lvcreate
            [-A|--autobackup {y|n}](自动备份)
            [-a|--activate [a|e|l]{y|n}]
            [--addtag Tag](增加标签)
            [--alloc AllocationPolicy](分配策略)
            [--cachemode CacheMode](Cache模式)
            [-C|--contiguous {y|n}]
            [-d|--debug]
            [-h|-?|--help]
            [--ignoremonitoring](忽略监控)
            [--monitor {y|n}](监控)
            [-i|--stripes Stripes [-I|--stripesize StripeSize]]
            [-k|--setactivationskip {y|n}]
            [-K|--ignoreactivationskip]
            {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |(逻辑扩展数)
            -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}(逻辑卷大小)
            [-M|--persistent {y|n}] [--major major] [--minor minor]
            [-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]](镜像)
            [-n|--name LogicalVolumeName](逻辑卷名字)
            [--noudevsync]
            [-p|--permission {r|rw}]
            [--[raid]minrecoveryrate Rate]
            [--[raid]maxrecoveryrate Rate]
            [-r|--readahead ReadAheadSectors|auto|none](读取头扇区)
            [-R|--regionsize MirrorLogRegionSize](镜像逻辑区域尺寸)
            [-T|--thin  [-c|--chunksize  ChunkSize](块大小)
            [--discards {ignore|nopassdown|passdown}]
            [--poolmetadatasize MetadataSize[bBsSkKmMgG]]]
            [--poolmetadataspare {y|n}]
            [--thinpool ThinPoolLogicalVolume{Name|Path}] (精简池逻辑卷)
            [-t|--test]
            [--type VolumeType](卷类型)
            [-v|--verbose]
            [-W|--wipesignatures {y|n}]
            [-Z|--zero {y|n}]
            [--version]
            VolumeGroupName [PhysicalVolumePath...]
    $ lvcreate --name mylvname -l 100%FREE myvgname    #用卷组剩下的所有空间创建逻辑卷
    #创建成功后可以通过vgdisplay lsblk lvdisplay查看

格式化并挂载

    [root@vs-yth12 ~]$ lvdisplay    #查看lv情况,记住LV PATH
    --- Logical volume ---
    LV Path                /dev/myvgname/mylvname
    LV Name                mylvname
    VG Name                myvgname
    LV UUID                9FceM6-gvcT-xQDw-BL9t-5m8W-XXxY-zDmDma
    LV Write Access        read/write
    LV Creation host, time vs-yth12.localdomain, 2018-04-28 17:38:17 +0800
    LV Status              available
    $ open                 0
    LV Size                40.00 GiB
    Current LE             10239
    Segments               1
    Allocation             inherit
    Read ahead sectors     auto
    - currently set to     8192
    Block device           253:0
    
    [root@vs-yth12 ~]$ mkfs -t ext4 /dev/myvgname/mylvname    #格式化
    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
    2621440 inodes, 10484736 blocks
    524236 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2157969408
    320 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, 7962624

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

    [root@vs-yth12 ~]$ mount /dev/myvgname/mylvname /data  临时挂载
    [root@vs-yth12 ~]$ vi /etc/fstab   添加永久挂载
    #/dev/myvgname/mylvname  /data   ext4 defaults 0 0   

删除LVM

查看分区和磁盘情况

    [root@vs-yth12 ~]$ df -h
    Filesystem                   Size  Used Avail Use% Mounted on
    /dev/xvda1                    48G  3.6G   42G   8% /
    devtmpfs                     1.9G     0  1.9G   0% /dev
    tmpfs                        1.6G   84K  1.6G   1% /dev/shm
    tmpfs                        1.6G   33M  1.6G   3% /run
    tmpfs                        1.6G     0  1.6G   0% /sys/fs/cgroup
    tmpfs                        327M   16K  327M   1% /run/user/42
    /dev/mapper/vg_data-lv_data   35G   49M   33G   1% /data #这个就是我们要删除的
    tmpfs                        327M     0  327M   0% /run/user/0
    [root@vs-yth12 ~]$ lsblk
    NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0                11:0    1 1024M  0 rom  
    xvda              202:0    0   60G  0 disk 
    ├─xvda1           202:1    0   48G  0 part /
    └─xvda2           202:2    0   12G  0 part [SWAP]
    xvde              202:64   0   40G  0 disk 
    └─vg_data-lv_data 253:0    0   35G  0 lvm  /data  #这个就是我们要删除的

卸载LVM文件系统

    $ umount /data  #卸载成功后,用df -h可以看到结果

移除LV

    [root@vs-yth12 ~]$ lvscan  #查看活动中的LV
    ACTIVE            '/dev/vg_data/lv_data' [35.00 GiB] inherit
    [root@vs-yth12 ~]$ lvdisplay  #查看活动中的LV,同上
    --- Logical volume ---
    LV Path                /dev/vg_data/lv_data
    LV Name                lv_data
    VG Name                vg_data
    LV UUID                FhRjBR-Y4w2-1hSR-9J1X-l41a-FTLe-RZNvRb
    LV Write Access        read/write
    LV Creation host, time vs-yth12.localdomain, 2018-04-20 17:05:35 +0800
    LV Status              available
    ....
    [root@vs-yth12 ~]$ lvremove /dev/vg_data/lv_data  #移除后用lsblk可看到结果
    Do you really want to remove active logical volume vg_data/lv_data? [y/n]: y
    Logical volume "lv_data" successfully removed

移除VG

    [root@vs-yth12 ~]$ vgscan  #查看活动中的VG
    Reading volume groups from cache.
    Found volume group "vg_data" using metadata type lvm2
    [root@vs-yth12 ~]$ vgdisplay  #查看活动中的VG,同上
    --- Volume group ---
    VG Name               vg_data
    System ID             
    Format                lvm2
    Metadata Areas        1
    Metadata Sequence No  3
    VG Access             read/write
    VG Status             resizable
    MAX LV                0
    Cur LV                0
    Open LV               0
    Max PV                0
    Cur PV                1
    Act PV                1
    VG Size               40.00 GiB
    PE Size               4.00 MiB
    Total PE              10239
    Alloc PE / Size       0 / 0   
    Free  PE / Size       10239 / 40.00 GiB
    VG UUID               I2okv5-rIGx-cg5B-4Iyq-3F04-pwZK-G2r5FS
    [root@vs-yth12 ~]$ vgchange -a n vg_data  #用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志
    [root@vs-yth12 ~]$ vgremove vg_data  #移除VG

移除PV

    [root@vs-yth12 ~]$ pvremove /dev/xvde #删除物理卷
    Labels on physical volume "/dev/xvde" successfully wiped. #成功擦除

放大LV容量

用新的硬盘创建PV

    fdisk -l
    lsblk
    fdisk /dev/xvde    #新建分区后修改ID为8e
    partprobe    #在线更新
    pvcreate    /dev/xvde1    #用那个新建的分区创建PV,用pvscan pvdisplay

将新空间添加

    vgextend myvgname /dev/xvde1
    lvresize -l +64 /dev/myvgname/mylvname    #利用 lvresize 将新加入的 PV 内的 PE 加入LV 中
                                          #(vgdisplay vgdisplay lvdisplay lsblk df )
    resize2fs /dev/myvgname/mylvname    #透过 resize2fs 将文件系统的容量确实添加

如果:

    $ resize2fs /dev/centos/root
    resize2fs 1.42.9 (28-Dec-2013)
    resize2fs: Bad magic number in super-block while trying to open /dev/centos/root
    Couldn’t find valid filesystem superblock.
    $ xfs_growfs /dev/centos/root    #文件系统是xfs,用该命令来扩,新版本xfs_growfs用法不一样了,新版本要用 xfs_growfs /data 来生效
    $ df -h

[root@xs43254218114 ~]# resize2fs /dev/centos/root

缩小LV,删除

缩小LV是先声明 resize2fs -p 后定义 lvresize -L 的过程

缩小LV

    pvdisplay    #查看PV情况
    pvscan    #查看PV情况
    umount /data    #卸载
    e2fsck -f /dev/myvgname/mylvname    #磁盘检测LV
    resize2fs    /dev/myvgname/mylvname 3G    #使用resize2fs 直接指定降低后的容量,用这个去挂载,
                                              #没有+,-号就是固定值
    mount /dev/myvgname/mylvname /data    #重新挂载,这里用df -h可以看出大小变了,但实际lv还有空余的
    pvdisplay    #查看PV情况,可以看到有多少个
    pvscan    #查看PV情况
    lvreszie -L -2G /dev/myvgname/mylvname    #使用lvresize 降低LV的容量,这些空间就会回到VG
    #假设一共5G,刚刚resize2fs保留了3G,现在这里就减少2G,可以用于其他LV,没有+,-号就是固定值

删除法

    pvdisplay    #查看PV情况
    pvscan    #查看PV情况
    pvmove /dev/xvde1 /dev/xvde2    #将xvde1的数据全部移到xvde2中去
    vgreduce myvgname /dev/xvde1    #将xvde1从VG myvgname中移除,这样这个PV可以创建其他VG了

先缩小LV1容量,后增大LV2容量的过程(生产环境下的减小/home 增大/root) ###、

1.卸载LV1
2.使用 e2fsck 检测一下LV1
3.使用resize2fs 重新定义LV1的大小
4.重新挂载,检验一下结果
5.使用lvreduce 或lvresize 减小LV1至指定大小
6.使用lvextend 增加LV2的大小
7.重新定义下LV2大小

一加一减

    $ fdisk -l    #查看磁盘情况
    $ df -h    #同上
    $ lsblk    #同上

    $ mkdir /mnt/backup    #备份LV1的数据
    $ tar -jcv -f /mnt/backup/test.tar.bz2 /data/*
    或
    $ mv /data/* /mnt/backup/

    3.卸载LV1
    $ umount /data

    $ e2fsck -f /dev/myvgname/mylvname    #使用 e2fsck 检测一下LV1

    $ resize2fs -p /dev/myvgname/mylvname 2G    #使用resize2fs 重新定义LV1的大小

    $ mount /dev/myvgname/mylvname /data    #重新挂载,检验一下结果
    $ df -h

    $ lvresize -L 2G /dev/myvgname/mylvname    #使用lvreduce 或lvresize 减小LV1至指定大小,没有+,-号就是固定值
    或
    $ lvreduce -L 2G /dev/myvgname/mylvname    #没有+,-号就是固定值

    $ lvextend -l +100%FREE /dev/myvgname/my2lvname    #使用lvextend 增加LV2的大小
    或
    $ lvextend -L +1G /dev/myvgname/my2lvname

    $ resize2fs -p /dev/myvgname/my2lvname    #重新定义下LV2大小

    $ df -h     #检查结果
    $ lsblk

参考网址:

posted on 2018-07-27 09:46  聪神carry  阅读(1827)  评论(0编辑  收藏  举报