LVM邏輯卷管理



LVM邏輯卷管理


邏輯卷管理器英語:Logical Volume Manager,縮寫爲LVM),又譯爲邏輯卷宗管理器、邏輯扇區管理器、邏輯磁盤管理器,是Linux核心所提供的邏輯卷管理功能。它在硬盤硬盤分區之上,又創建一個邏輯層,以方便系統管理硬盤分區系統。

lvm的原理:相當於將多個物理的磁盤設備,集中化後創建爲一個邏輯的設備。這樣便很輕鬆的對分區進行管理


創建LVM的流程:

加入磁盤

新建分區

    fdisk /dev/磁盤設備  (新建主分區並修改分區類型爲8e lvm類型)

創建pv:

    pvcreate 分區1 分區2 ...

創建vg:

    vgcreate vg 分區1 分區2 ....

創建lv:

    lvcreate -n /dev/vg/lv  -L  lv卷的大小

格式化:

    mkfs.ext4 /dev/vg/lv

掛載:

    mount /dev/vg/lv  /掛載點

    echo “ /dev/vg/lv   /掛載點   ext4 defaults 0 0 ” >>/etc/fstab




擴展LVM的流程:


加入磁盤:

新建分區:

擴容pv:

    pvcreate /分區

擴容vg:

    vgextend /dev/vg  分區

擴容lv: 

    lvextend /dev/vg/lv  -L +擴容的大小

重構文件系統大小:

    resize2fs /dev/vg/lv

    







現在有4塊未分區的磁盤:sdb sdc sdd sde

[root@localhost ~]# lsblk 
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                          11:0    1 1024M  0 rom  
sda                           8:0    0   20G  0 disk 
├─sda1                        8:1    0  500M  0 part /boot
└─sda2                        8:2    0 19.5G  0 part 
  ├─VolGroup-lv_root (dm-0) 253:0    0 17.6G  0 lvm  /
  └─VolGroup-lv_swap (dm-1) 253:1    0    2G  0 lvm  [SWAP]
sdb                           8:16   0   20G  0 disk 
sdc                           8:32   0   20G  0 disk 
sdd                           8:48   0   20G  0 disk 
sde                           8:64   0   20G  0 disk

[root@localhost ~]# fdisk -l    ##可以查看所有磁盤的大小,以及分區情況

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x000172ae
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2611    20458496   8e  Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00000000
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00000000
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00000000
Disk /dev/sde: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00000000
Disk /dev/mapper/VolGroup-lv_root: 18.9 GB, 18865979392 bytes
255 heads, 63 sectors/track, 2293 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: 0x00000000
Disk /dev/mapper/VolGroup-lv_swap: 2080 MB, 2080374784 bytes
255 heads, 63 sectors/track, 252 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: 0x00000000


對sdb sdc sde分區 分區類型改爲8e:    ##對sdc sde做同樣的操作

[root@localhost ~]# fdisk /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x046c7ceb.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 
Using default value 2610
Command (m for help): t
Selected partition 1
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: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x046c7ceb
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  8e  Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.


開始邏輯卷的創建:

   1 首先創建pv:

        pv是將磁盤分區轉換成一個個的小塊,這些小塊被稱爲pe,默認的1pe=4M    方便動態分配。

        命令格式:pvcreate 分區1 分區2 ...

        查看pv: pvs

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdc1" successfully created
  Physical volume "/dev/sdd1" successfully created
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1       lvm2 a--  19.99g 19.99g
  /dev/sdc1       lvm2 a--  19.99g 19.99g
  /dev/sdd1       lvm2 a--  19.99g 19.99g

    2 然後創建vg:

        vg是將pv轉換後的分區創建爲一個整體,相當於融和爲一個大的磁盤:

        命令格式:vgcreate vg名 分區1 分區2 ....

        查看vg: vgs     ##可以看到整合後分區

[root@localhost ~]# vgcreate my_vg /dev/sdb1 /dev/sdc1 /dev/sdd1 
  Volume group "my_vg" successfully created
[root@localhost ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree 
  VolGroup   1   2   0 wz--n- 19.51g     0 
  my_vg      3   0   0 wz--n- 59.98g 59.98g

    3  最後創建lv:

         lv是將整合後的vg再分出一個個分區

         命令格式:lvcreate -n /dev/vg名/lv分區 -L 分出大小

         查看lv:lvs

[root@localhost ~]# lvcreate -n /dev/my_vg/my_lv -L 40G
  Logical volume "my_lv" created
[root@localhost ~]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root VolGroup -wi-ao---- 17.57g                                             
  lv_swap VolGroup -wi-ao----  1.94g                                             
  my_lv   my_vg    -wi-a----- 40.00g


邏輯卷創建完成後,就和正常的分區一樣了,接下來就該格式化了掛載分區了


格式化分區:

[root@localhost ~]# mkfs.ext4 /dev/my_vg/my_lv 
mke2fs 1.41.12 (17-May-2010)
文件系統標籤=
操作系統:Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=4294967296
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
正在寫入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


掛載分區:

[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/my_vg/my_lv /data/

寫入到開機掛載文件/etc/fstab:

    

[root@localhost ~]# echo "/dev/my_vg/my_lv /data ext4 defaults 0 0 " >>/etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab
/dev/my_vg/my_lv /data ext4 defaults 0 0

驗證掛載情況:

[root@localhost ~]# mount -a
[root@localhost ~]# 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)
/dev/mapper/my_vg-my_lv on /data type ext4 (rw)
[root@localhost ~]# df -lh
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G  1.5G   15G  10% /
tmpfs                         242M     0  242M   0% /dev/shm
/dev/sda1                     485M   34M  427M   8% /boot
/dev/mapper/my_vg-my_lv        40G  176M   38G   1% /data




邏輯卷lv擴容

    當創建的邏輯卷lv內的數據文件過多,需要擴容的時候就體現出邏輯卷的方便快捷和強大了。


現在有一塊硬盤sde未分區,現在要用這塊硬盤給lv擴容。

[root@localhost ~]# lsblk
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                          11:0    1 1024M  0 rom  
sda                           8:0    0   20G  0 disk 
├─sda1                        8:1    0  500M  0 part /boot
└─sda2                        8:2    0 19.5G  0 part 
  ├─VolGroup-lv_root (dm-0) 253:0    0 17.6G  0 lvm  /
  └─VolGroup-lv_swap (dm-1) 253:1    0    2G  0 lvm  [SWAP]
sdb                           8:16   0   20G  0 disk 
└─sdb1                        8:17   0   20G  0 part 
  └─my_vg-my_lv (dm-2)      253:2    0   40G  0 lvm  /data
sdc                           8:32   0   20G  0 disk 
└─sdc1                        8:33   0   20G  0 part 
  └─my_vg-my_lv (dm-2)      253:2    0   40G  0 lvm  /data
sdd                           8:48   0   20G  0 disk 
└─sdd1                        8:49   0   20G  0 part 
  └─my_vg-my_lv (dm-2)      253:2    0   40G  0 lvm  /data
sde                           8:64   0   20G  0 disk

        

給新硬盤分區:

[root@localhost ~]# fdisk /dev/sde 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xe0bca983.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 
Using default value 2610

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

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

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


邏輯卷擴容流程:

    

1.將主分區加入到pv

[root@localhost ~]# pvcreate /dev/sde1 
  Physical volume "/dev/sde1" successfully created
[root@localhost ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree 
  /dev/sda2  VolGroup lvm2 a--  19.51g     0 
  /dev/sdb1  my_vg    lvm2 a--  19.99g     0 
  /dev/sdc1  my_vg    lvm2 a--  19.99g     0 
  /dev/sdd1  my_vg    lvm2 a--  19.99g 19.98g
  /dev/sde1           lvm2 a--  19.99g 19.99g

2.加pv分區加入到vg容器裏

[root@localhost ~]# vgextend /dev/my_vg /dev/sde1 
  Volume group "my_vg" successfully extended
[root@localhost ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree 
  VolGroup   1   2   0 wz--n- 19.51g     0 
  my_vg      4   1   0 wz--n- 79.97g 39.97g

                    ##vsize是總大小   vfree是剩餘容量


3.給lv擴容:  

[root@localhost ~]# lvextend /dev/my_vg/my_lv -L +20G
  Extending logical volume my_lv to 60.00 GiB
  Logical volume my_lv successfully resized
[root@localhost ~]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root VolGroup -wi-ao---- 17.57g                                             
  lv_swap VolGroup -wi-ao----  1.94g                                             
  my_lv   my_vg    -wi-ao---- 60.00g

            (可以寫作是:lvcreatend /dev/my_vg/my_lv /dev/sde1將整塊磁盤擴容給lv)



4.重新構建文件系統大小:    

    因爲文件系統前面已經格式化,設置了文件系統。裏面也存放了文件,不能重新格式化文件系統,而擴容了邏輯卷,文件系統無法檢測到。這就需要使用resize2fs這條命令重新構建文件系統了。

[root@localhost ~]# resize2fs /dev/my_vg/my_lv  
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/my_vg/my_lv is mounted on /data; on-line resizing required
old desc_blocks = 3, new_desc_blocks = 4
Performing an on-line resize of /dev/my_vg/my_lv to 15728640 (4k) blocks.
The filesystem on /dev/my_vg/my_lv is now 15728640 blocks long.

5.查看驗證:

[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G  1.5G   15G  10% /
tmpfs                         242M     0  242M   0% /dev/shm
/dev/sda1                     485M   34M  427M   8% /boot
/dev/mapper/my_vg-my_lv        60G  180M   56G   1% /data
[root@localhost ~]#


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章