LVM

raysuen發表於2016-12-15
命令:
    pv
        pvcreate,pvremove,pvscan,pvs,pvdisplay,pvmove
    gv
        vgcreate,vgremove,vgextend,vgreduce,vgs,vgdisplay,vgscan
    lv
        lvcreate,lvremove,lvextend,lvreduce,lvresize,lvs,lvdisplay
1 建立LVM型別磁碟分割槽
[root@ray ~]# fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9c871455

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263         524     2104515   83  Linux

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): L

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

Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9c871455

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  8e  Linux LVM
/dev/sdb2             263         524     2104515   83  Linux

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9c871455

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  8e  Linux LVM
/dev/sdb2             263         524     2104515   8e  Linux LVM

[root@ray ~]# partprobe /dev/sdb
[root@ray ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1     512000 sda1
   8        2   20458496 sda2
   8       16    8388608 sdb
   8       17    2104483 sdb1
   8       18    2104515 sdb2
253        0   18391040 dm-0
253        1    2064384 dm-1

2 PV 
[root@ray ~]# pvcreate /dev/sdb{1,2}   建立pv
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created

[root@ray ~]# pvs 檢視pv,size誤差在20%都在可接受範圍
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a--  2.01g 2.01g
  /dev/sdb2       lvm2 a--  2.01g 2.01g

[root@ray ~]# pvdisplay 查詢pv詳細資訊
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               19.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4994
  Free PE               0
  Allocated PE          4994
  PV UUID               JUPIw8-FmET-tSl1-zgcq-GL1L-OKpt-jTGJKR

  "/dev/sdb1" is a new physical volume of "2.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               2.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               bGhhum-4Rym-cn5f-QBUc-aRiq-3xUE-eFrwSy

  "/dev/sdb2" is a new physical volume of "2.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               2.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               m6gZtj-RHZ6-Gt2h-LXXa-ckXg-z509-AiB1Cy

刪除pv
[root@ray ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup lvm2 a--  19.51g    0
  /dev/sdb1  myvg     lvm2 a--   2.00g 2.00g
  /dev/sdb2           lvm2 a--   2.01g 2.01g
[root@ray ~]# pvremove /dev/sdb2  刪除指定pv
  Labels on physical volume "/dev/sdb2" successfully wiped
[root@ray ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup lvm2 a--  19.51g    0
  /dev/sdb1  myvg     lvm2 a--   2.00g 2.00g

3 vg操作
    vgcreate vg_name /dev/path
        -s #: 指定PE大小,預設是4M
[root@ray ~]# vgcreate myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created
[root@ray ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   2   0 wz--n- 19.51g    0
  myvg       2   0   0 wz--n-  4.01g 4.01g

[root@ray ~]# vgdisplay myvg
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               4.01 GiB
  PE Size               4.00 MiB
  Total PE              1026
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1026 / 4.01 GiB
  VG UUID               u5OKhA-pmYA-17Cn-mtBi-9a4B-QBZe-9chig5

[root@ray ~]# vgremove myvg  刪除vg
  Volume group "myvg" successfully removed
[root@ray ~]# vgcreate -s 8M myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created
[root@ray ~]# vgdisplay myvg
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               4.00 GiB
  PE Size               8.00 MiB
  Total PE              512
  Alloc PE / Size       0 / 0   
  Free  PE / Size       512 / 4.00 GiB
  VG UUID               EfOh6p-zGyX-sH7h-vYEW-Qxa7-O8GA-gJmeCF

從當前vg移除pv
[root@ray ~]# pvmove /dev/sdb2  把指定的pv中的資料隨機移動到其他pv裝置中
  No data to move for myvg
[root@ray ~]# vgreduce myvg /dev/sdb2   移除指定的pv裝置
  Removed "/dev/sdb2" from volume group "myvg"
[root@ray ~]# vgs  檢視vg資訊,myvg已經只有一個pv,大小變為2G
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   2   0 wz--n- 19.51g    0
  myvg       1   0   0 wz--n-  2.00g 2.00g
[root@ray ~]# pvs   檢視pv,sdb2不屬於myvg
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup lvm2 a--  19.51g    0
  /dev/sdb1  myvg     lvm2 a--   2.00g 2.00g
  /dev/sdb2           lvm2 a--   2.01g 2.01g

新增pv到vg
[root@ray ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created
[root@ray ~]# vgextend myvg /dev/sdb2
  Volume group "myvg" successfully extended
[root@ray ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   2   0 wz--n- 19.51g    0
  myvg       2   0   0 wz--n-  4.00g 4.00g
[root@ray ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup lvm2 a--  19.51g    0
  /dev/sdb1  myvg     lvm2 a--   2.00g 2.00g
  /dev/sdb2  myvg     lvm2 a--   2.00g 2.00g

4 lv操作
    lvcreate
        lvcreate -n LV_NAME -L #G LV_SIZE 
    lvextend
        lvextend -L [+]# /path
            -L +表示在當前size加#指定的大小
                不寫+,表示擴充套件到指定的大小
    resize2fs
        resize2fs /path # 
            -p 表示能擴充套件多大就儘可能的擴充套件,不必指定擴充套件的大小
[root@ray ~]# lvcreate -L 512M -n testlv myvg   建立lv
  Logical volume "testlv" created
[root@ray ~]# lvs
  LV      VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root VolGroup -wi-ao----  17.54g                                             
  lv_swap VolGroup -wi-ao----   1.97g                                             
  testlv  myvg     -wi-a----- 512.00m                                             
[root@ray ~]# lvdisplay /dev/myvg/testlv
  --- Logical volume ---
  LV Path                /dev/myvg/testlv
  LV Name                testlv
  VG Name                myvg
  LV UUID                csX9GV-wTj7-Rpqj-oYVn-O97m-wuiE-o57CX9
  LV Write Access        read/write
  LV Creation host, time ray, 2016-12-14 17:37:30 +0800
  LV Status              available
  # open                 0
  LV Size                512.00 MiB
  Current LE             64
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

掛載lv到目錄
[root@ray ~]# mke2fs -j /dev/myvg/testlv
mke2fs 1.41.12 (17-May-2010)
檔案系統標籤=
作業系統:Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
32768 inodes, 131072 blocks
6553 blocks (5.00%) reserved for the super user
第一個資料塊=0
Maximum filesystem blocks=134217728
4 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
     32768, 98304

正在寫入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@ray ~]# mount /dev/myvg/testlv /mnt/
[root@ray ~]# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev)
/dev/mapper/myvg-testlv on /mnt type ext3 (rw)  藍色部分為裝置的真正路徑

移除lv
[root@ray ~]# umount /mnt/   已掛載的lv,在remove前必須先解除安裝
[root@ray ~]# lvremove /dev/myvg/testlv
Do you really want to remove active logical volume testlv? [y/n]: y
  Logical volume "testlv" successfully removed
[root@ray ~]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root VolGroup -wi-ao---- 17.54g                                             
  lv_swap VolGroup -wi-ao----  1.97g    

擴充套件lv
[root@ray ~]# vgs   檢視vg是否有空間給lv擴充套件
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   2   0 wz--n- 19.51g    0
  myvg       2   1   0 wz--n-  4.00g 3.50g
[root@ray ~]# lvextend -L 1G /dev/myvg/testlv  擴充套件
  Extending logical volume testlv to 1.00 GiB
  Logical volume testlv successfully resized
[root@ray ~]# df -h     lv大小沒有變化
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G   11G  5.5G  67% /
tmpfs                         499M   80K  499M   1% /dev/shm
/dev/sda1                     485M   35M  426M   8% /boot
/dev/mapper/myvg-testlv       504M   17M  462M   4% /mnt
[root@ray ~]# resize2fs -p /dev/myvg/testlv    擴充套件邏輯邊界
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/testlv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/testlv to 262144 (4k) blocks.
The filesystem on /dev/myvg/testlv is now 262144 blocks long.

[root@ray ~]# df -h    已經貨站到1G大小
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G   11G  5.5G  67% /
tmpfs                         499M   80K  499M   1% /dev/shm
/dev/sda1                     485M   35M  426M   8% /boot
/dev/mapper/myvg-testlv      1008M   17M  941M   2% /mnt
[root@ray ~]#

縮減lv
    注意:
        1 不能線上縮減,先解除安裝
        2 確保縮減後的空間大小依然能儲存原有的所有資料
        3 在縮減之前應該先強行檢查檔案,以確保檔案系統處於一致性狀態
[root@ray ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G   11G  5.5G  67% /
tmpfs                         499M   80K  499M   1% /dev/shm
/dev/sda1                     485M   35M  426M   8% /boot
/dev/mapper/myvg-testlv      1008M   17M  941M   2% /mnt
[root@ray ~]#
[root@ray ~]# umount /mnt/
[root@ray ~]# e2fsck -f /dev/myvg/testlv  前置檢查檔案
e2fsck 1.41.12 (17-May-2010)
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第3步: 檢查目錄連線性
Pass 4: Checking reference counts
第5步: 檢查簇概要資訊
/dev/myvg/testlv: 12/65536 files (0.0% non-contiguous), 8384/262144 blocks

[root@ray ~]# resize2fs /dev/myvg/testlv 712M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/testlv to 182272 (4k) blocks.
The filesystem on /dev/myvg/testlv is now 182272 blocks long.

[root@ray ~]# lvreduce -L 712M /dev/myvg/testlv
  WARNING: Reducing active logical volume to 712.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testlv? [y/n]: y
  Reducing logical volume testlv to 712.00 MiB
  Logical volume testlv successfully resized
[root@ray ~]# mount /dev/myvg/testlv /mnt/
[root@ray ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G   11G  5.5G  67% /
tmpfs                         499M   80K  499M   1% /dev/shm
/dev/sda1                     485M   35M  426M   8% /boot
/dev/mapper/myvg-testlv       700M   17M  648M   3% /mnt

5 快照卷
    1 生命週期為整個資料的時長,在這端時長內,資料的增長量不能超出快照卷的大小,最好和源卷大小相同
    2 快照卷應是隻讀
    3 跟源卷在一個卷組內

    lvcreate -L # -n SLV_NAME -s -p r /source_lv
        -s 表示要建立快照卷
        -p 表示許可權
[root@ray ~]# lvcreate -L500M -n testlv-snap -s -p r /dev/myvg/testlv    建立快照卷
  Rounding up size to full physical extent 504.00 MiB
  Logical volume "testlv-snap" created
[root@ray ~]# lvs
  LV          VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root     VolGroup -wi-ao----  17.54g                                             
  lv_swap     VolGroup -wi-ao----   1.97g                                             
  testlv      myvg     owi-aos--- 712.00m                                             
  testlv-snap myvg     sri-a-s--- 504.00m      testlv   0.00    

[root@ray ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   2   0 wz--n- 19.51g    0
  myvg       2   2   1 wz--n-  4.00g 2.81g
[root@ray ~]# lvremove /dev/myvg/testlv-snap               刪除快照卷
Do you really want to remove active logical volume testlv-snap? [y/n]: y
  Logical volume "testlv-snap" successfully removed
[root@ray ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  VolGroup   1   2   0 wz--n- 19.51g    0
  myvg       2   1   0 wz--n-  4.00g 3.30g 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28572479/viewspace-2130626/,如需轉載,請註明出處,否則將追究法律責任。