2014-07-27

任务一:初始化磁盘或者磁盘分区

root@king:/etc/apt# fdisk -l
#
#
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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 identifier: 0x0001b5c2

可见到/dev/sdb为在虚拟机管理器中新创建的虚拟磁盘。

root@king:/etc/apt# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
root@king:/etc/apt# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created

不推荐使用整个磁盘作为物理卷。因为任何其它系统都没法识别LVM的元数据,会当做空白磁盘进行写入操作。 查看物理卷

root@king:~# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               my_volume_group
  PV Size               1.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              255
  Free PE               255
  Allocated PE          0
  PV UUID               I4v2Y8-5Bec-QxKH-fx2G-Aatb-SGvN-bO0wIE
   
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               my_volume_group
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               511
  Allocated PE          0
  PV UUID               Qprdh0-bhgx-elJG-1grk-h4Uu-kgBt-TVFELH

任务二:创建卷组

root@king:~# vgcreate my_volume_group /dev/sdb1 /dev/sdb2
  Volume group "my_volume_group" successfully created
#查看VG
root@king:~# vgdisplay 
  --- Volume group ---
  VG Name               my_volume_group
  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               2.99 GiB
  PE Size               4.00 MiB
  Total PE              766
  Alloc PE / Size       0 / 0   
  Free  PE / Size       766 / 2.99 GiB
  VG UUID               3fJpp8-N7iV-7egR-8O3x-E5nx-qusx-wkGAcl

如果物理块大小不合适可通过命令修改。 任务三:激活卷组
重启系统或者运行vgchange -an 后,卷组和逻辑卷将不可用。重新激活卷组运行:

# vgchange -a y my_volume_group

任务四:移除卷组
当确认卷组内没有逻辑卷后,可以禁用卷组。

# vgchange -a n my_volume_group
#移除
# vgremove my_volume_group

任务五:增加物理卷到某一卷组

root@king:~# vgextend my_volume_group /dev/sdb3
  No physical volume label read from /dev/sdb3
  Physical volume "/dev/sdb3" successfully created
  Volume group "my_volume_group" successfully extended

任务六:从卷组移除物理卷

root@king:~# pvdisplay /dev/sdb3
  --- Physical volume ---
  PV Name               /dev/sdb3
  VG Name               my_volume_group
  PV Size               1.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              255
  Free PE               255
  Allocated PE          0
  PV UUID               8eb21D-yy8V-FTMA-lnVT-rKUu-riYA-C4ygoW
#可以看出分配为0,如果有使用,必须迁移数据使用pvmove
root@king:~# vgreduce my_volume_group /dev/sdb3
  Removed "/dev/sdb3" from volume group "my_volume_group"

任务七:创建逻辑卷Logical Volume

root@king:~# lvcreate -L200 -ntestlv my_volume_group 
  Logical volume "testlv" created
root@king:~# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/my_volume_group/testlv
  LV Name                testlv
  VG Name                my_volume_group
  LV UUID                vPqtej-3xtc-bOhM-6LyR-TML1-MT4R-Dak9Gi
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:51:29 +0800
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
#给定大小,逻辑卷名,所属卷组创建逻辑卷。
root@king:~# lvcreate -i2 -I4 -l100 -nanothertestlv my_volume_group 
  Logical volume "anothertestlv" created
root@king:~# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/my_volume_group/testlv
  LV Name                testlv
  VG Name                my_volume_group
  LV UUID                vPqtej-3xtc-bOhM-6LyR-TML1-MT4R-Dak9Gi
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:51:29 +0800
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
   
  --- Logical volume ---
  LV Path                /dev/my_volume_group/anothertestlv
  LV Name                anothertestlv
  VG Name                my_volume_group
  LV UUID                nJshWf-RAbl-P7zI-VVKS-1kLq-Ll0v-LcSTfz
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:53:50 +0800
  LV Status              available
  # open                 0
  LV Size                400.00 MiB
  Current LE             100
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
#给定条带数,条带大小已经,逻辑块大小创建逻辑卷。
# vgdisplay testvg | grep "Total PE"
Total PE              10230
# lvcreate -l 10230 testvg -n mylv
#使用整个卷组创建逻辑卷。
root@king:~# lvcreate -L 300 -nkinglv my_volume_group /dev/sdb2
  Logical volume "kinglv" created
在命令结尾指定特定物理卷作为逻辑卷的组成。

任务八:移除逻辑卷
逻辑卷必须关闭使用才可以移除,例如从相应路径卸载。

root@king:~# umount /dev/my_volume_group/testlv
root@king:~# lvremove /dev/my_volume_group/testlv 
Do you really want to remove and DISCARD active logical volume testlv? [y/n]: y
  Logical volume "testlv" successfully removed

任务九:扩展逻辑卷

#扩展逻辑卷可以指定扩展的量或者指定扩展的目的大小。
root@king:~# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/my_volume_group/anothertestlv
  LV Name                anothertestlv
  VG Name                my_volume_group
  LV UUID                nJshWf-RAbl-P7zI-VVKS-1kLq-Ll0v-LcSTfz
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:53:50 +0800
  LV Status              available
  # open                 0
  LV Size                400.00 MiB
  Current LE             100
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
   
  --- Logical volume ---
  LV Path                /dev/my_volume_group/kinglv
  LV Name                kinglv
  VG Name                my_volume_group
  LV UUID                oVMYB3-Jc5L-0BQZ-J89F-WWvc-A3Nl-Pj2II1
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:58:25 +0800
  LV Status              available
  # open                 0
  LV Size                300.00 MiB
  Current LE             75
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2
   
   
root@king:~# lvextend -L500 /dev/my_volume_group/kinglv 
  Extending logical volume kinglv to 500.00 MiB
  Logical volume kinglv successfully resized
#扩展到500M
root@king:~# lvdisplay /dev/my_volume_group/kinglv 
  --- Logical volume ---
  LV Path                /dev/my_volume_group/kinglv
  LV Name                kinglv
  VG Name                my_volume_group
  LV UUID                oVMYB3-Jc5L-0BQZ-J89F-WWvc-A3Nl-Pj2II1
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:58:25 +0800
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2
# 扩展完逻辑卷,增加文件系统大小使两者相匹配是必要的。如何做取决你使用的文件系统。大多数文件系统调整工具会增加你扩展逻辑卷的大小。
#对于文件系统ext2、ext3,除非你打过ext2online的内核包,否则需要在更改大小之前卸载文件系统。
root@king:~# df -h
Filesystem                          Size  Used Avail Use% Mounted on
/dev/sda1                           5.8G  963M  4.6G  18% /
none                                4.0K     0  4.0K   0% /sys/fs/cgroup
udev                                492M  4.0K  492M   1% /dev
tmpfs                               101M  408K  100M   1% /run
none                                5.0M     0  5.0M   0% /run/lock
none                                501M     0  501M   0% /run/shm
none                                100M     0  100M   0% /run/user
/dev/mapper/my_volume_group-kinglv  673M  712K  624M   1% /mnt
# 扩展之前的挂载大小,扩展后逻辑卷800M
root@king:~# lvdisplay /dev/my_volume_group/kinglv 
  --- Logical volume ---
  LV Path                /dev/my_volume_group/kinglv
  LV Name                kinglv
  VG Name                my_volume_group
  LV UUID                oVMYB3-Jc5L-0BQZ-J89F-WWvc-A3Nl-Pj2II1
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:58:25 +0800
  LV Status              available
  # open                 1
  LV Size                800.00 MiB
  Current LE             200
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2
#预先卸载路径
root@king:~# umount /dev/my_volume_group/kinglv
root@king:~# resize2fs /dev/my_volume_group/kinglv 
resize2fs 1.42.9 (4-Feb-2014)
Please run 'e2fsck -f /dev/my_volume_group/kinglv' first.
#更改大小时提示先扫描
root@king:~# e2fsck -f /dev/my_volume_group/kinglv 
e2fsck 1.42.9 (4-Feb-2014)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/my_volume_group/kinglv: 11/44832 files (0.0% non-contiguous), 7096/179200 blocks
  
root@king:~# resize2fs /dev/my_volume_group/kinglv
resize2fs 1.42.9 (4-Feb-2014)
Resizing the filesystem on /dev/my_volume_group/kinglv to 204800 (4k) blocks.
The filesystem on /dev/my_volume_group/kinglv is now 204800 blocks long.
  
#之后再运行调整命令,之后再挂载检测
root@king:~# mount /dev/my_volume_group/kinglv /mnt/
root@king:~# df -h
Filesystem                          Size  Used Avail Use% Mounted on
/dev/sda1                           5.8G  963M  4.6G  18% /
none                                4.0K     0  4.0K   0% /sys/fs/cgroup
udev                                492M  4.0K  492M   1% /dev
tmpfs                               101M  408K  100M   1% /run
none                                5.0M     0  5.0M   0% /run/lock
none                                501M     0  501M   0% /run/shm
none                                100M     0  100M   0% /run/user
/dev/mapper/my_volume_group-kinglv  772M  712K  715M   1% /mnt

任务十:缩减逻辑卷

和扩展一样,逻辑卷可以缩减。同时相应的缩减文件系统大小。先卸载设备
root@king:~# e2fsck -f /dev/my_volume_group/kinglv
e2fsck 1.42.9 (4-Feb-2014)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/my_volume_group/kinglv: 11/52304 files (0.0% non-contiguous), 7565/204800 blocks
root@king:~# resize2fs /dev/my_volume_group/kinglv 700M
resize2fs 1.42.9 (4-Feb-2014)
Resizing the filesystem on /dev/my_volume_group/kinglv to 179200 (4k) blocks.
The filesystem on /dev/my_volume_group/kinglv is now 179200 blocks long.
  
#执行缩减
root@king:~# lvreduce -L-100 /dev/my_volume_group/kinglv 
  WARNING: Reducing active logical volume to 700.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce kinglv? [y/n]: y
  Reducing logical volume kinglv to 700.00 MiB
  Logical volume kinglv successfully resized
root@king:~# lvdisplay /dev/my_volume_group/kinglv 
  --- Logical volume ---
  LV Path                /dev/my_volume_group/kinglv
  LV Name                kinglv
  VG Name                my_volume_group
  LV UUID                oVMYB3-Jc5L-0BQZ-J89F-WWvc-A3Nl-Pj2II1
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 13:58:25 +0800
  LV Status              available
  # open                 0
  LV Size                700.00 MiB
  Current LE             175
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

任务十一:从物理卷迁离数据

首先备份文件系统,然后执行pvmove操作。
root@king:/# df -h
Filesystem                          Size  Used Avail Use% Mounted on
/dev/sda1                           5.8G  963M  4.6G  18% /
none                                4.0K     0  4.0K   0% /sys/fs/cgroup
udev                                492M  4.0K  492M   1% /dev
tmpfs                               101M  404K  100M   1% /run
none                                5.0M     0  5.0M   0% /run/lock
none                                501M     0  501M   0% /run/shm
none                                100M     0  100M   0% /run/user
/dev/mapper/my_volume_group-kinglv   93M  1.6M   85M   2% /mnt
root@king:/# lvdisplay /dev/my_volume_group/kinglv 
  --- Logical volume ---
  LV Path                /dev/my_volume_group/kinglv
  LV Name                kinglv
  VG Name                my_volume_group
  LV UUID                lAT5Te-obE1-Q3dY-pU4r-YYDt-rSRu-hgmKQP
  LV Write Access        read/write
  LV Creation host, time king, 2014-07-27 14:43:41 +0800
  LV Status              available
  # open                 1
  LV Size                100.00 MiB
  Current LE             25
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
  
#逻辑卷kinglv指定物理卷/dev/sdb3
#如果卷组有足够的空闲块,直接运行命令
root@king:/# pvmove /dev/sdb3
  /dev/sdb3: Moved: 76.0%
  /dev/sdb3: no pvmove in progress - already finished or aborted.
#pvmove是很慢的。之后从卷组移除旧的物理卷
root@king:/# vgreduce my_volume_group /dev/sdb3
  Removed "/dev/sdb3" from volume group "my_volume_group"
#如果空间不足,就增加新物理卷然后pvmove,最后移除旧的物理卷。
root@king:/# pvcreate /dev/sdb4
  Physical volume "/dev/sdb4" successfully created
root@king:/# vgextend my_volume_group /dev/sdb4
  Volume group "my_volume_group" successfully extended