如何使用LVM卷管理Linux系统中的磁盘


第一步 :pvcreate /dev/vdb      创建物理卷


第二步 :vgcreate VolGroup01 /dev/vdb   创建卷组


第三步 : lvcreate -L 199G -n data VolGroup01 创建虚拟卷


第四部 :mkfs.ext4 /dev/VolGroup01/data  格式化虚拟卷


第五步 :mount -t ext4 /dev/VolGroup01/data  /data2  挂载虚拟卷

以上是我的一次操作步骤。



以下是增加卷组空间的操作

[root@host]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       19G   18G  536M  98% /
tmpfs                  32G     0   32G   0% /dev/shm
/dev/vda1              97M   32M   60M  35% /boot
/dev/mapper/VolGroup01-data
                      196G  158G   29G  85% /data
/dev/vda3              79G   74G  1.5G  99% /data2

准备将/dev/vda3加入到卷组  VolGroup01-data

umount /dev/vda3   先卸载要加入的空间

[root@host]# pvs
  PV         VG         Fmt  Attr PSize   PFree   
  /dev/vda2  VolGroup00 lvm2 a--   19.88g       0 
  /dev/vdb   VolGroup01 lvm2 a--  200.00g 1020.00m

vgextend VolGroup01  /dev/vda3   加入到卷组 


[root@host]# pvs
  PV         VG         Fmt  Attr PSize   PFree   
  /dev/vda2  VolGroup00 lvm2 a--   19.88g       0 
  /dev/vda3             lvm2 a--   80.00g   80.00g
  /dev/vdb   VolGroup01 lvm2 a--  200.00g 1020.00m


[root@host]# vgextend VolGroup01  /dev/vda3
  Volume group "VolGroup01" successfully extended

[root@host]# vgs
  VG         #PV #LV #SN Attr   VSize   VFree 
  VolGroup00   1   2   0 wz--n-  19.88g     0 
  VolGroup01   2   1   0 wz--n- 279.99g 80.99g 

[root@host]# pvs
  PV         VG         Fmt  Attr PSize   PFree   
  /dev/vda2  VolGroup00 lvm2 a--   19.88g       0 
  /dev/vda3  VolGroup01 lvm2 a--   80.00g   80.00g
  /dev/vdb   VolGroup01 lvm2 a--  200.00g 1020.00m


[root@host]# lvextend -L 270G /dev/mapper/VolGroup01-data
  Extending logical volume data to 270.00 GiB
  Logical volume data successfully resized
[root@host]# 
[root@host]# lvs
  LV       VG         Attr      LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  LogVol00 VolGroup00 -wi-ao---  18.88g                                             
  LogVol01 VolGroup00 -wi-ao---   1.00g                                             
  data     VolGroup01 -wi-ao--- 270.00g                              

[root@host]# lvextend -L 275G /dev/mapper/VolGroup01-data 
  Extending logical volume data to 275.00 GiB
  Logical volume data successfully resized
[root@host]# 
[root@host]# 
[root@host]# vgs
  VG         #PV #LV #SN Attr   VSize   VFree
  VolGroup00   1   2   0 wz--n-  19.88g    0 
  VolGroup01   2   1   0 wz--n- 279.99g 4.99g

[root@host]# resize2fs  /dev/mapper/VolGroup01-data
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup01-data is mounted on /data; on-line resizing required
old desc_blocks = 13, new_desc_blocks = 18
Performing an on-line resize of /dev/mapper/VolGroup01-data to 72089600 (4k) blocks.
The filesystem on /dev/mapper/VolGroup01-data is now 72089600 blocks long.

[root@host]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       19G   18G  436M  98% /
tmpfs                  32G     0   32G   0% /dev/shm
/dev/vda1              97M   32M   60M  35% /boot
/dev/mapper/VolGroup01-data
                      271G  158G  100G  62% /data

完毕



第一步

fdisk /dev/vda


输入 p
输入 n
输入 p
输入 3   41612  回车
输入 w
重启机器
mkfs -t ext3 -c /dev/vda3

第二步

pvs

pvcreate /dev/vda3

pvs
vgs

vgextend rhel /dev/vda3

pvs
vgs
lvs

lvextend -L 180G /dev/rhel/root  

[root@host-172-30-250-125 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  rhel   1   2   0 wz--n- 19.51g    0 
[root@host-172-30-250-125 ~]# 
[root@host-172-30-250-125 ~]# 
[root@host-172-30-250-125 ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- 17.51g                                             
  swap rhel -wi-ao----  2.00g                                             
[root@host-172-30-250-125 ~]#  


[root@host-172-30-250-125 ~]# pvcreate /dev/vda3
WARNING: ext3 signature detected on /dev/vda3 at offset 1080. Wipe it? [y/n] y
  Wiping ext3 signature on /dev/vda3.
  Physical volume "/dev/vda3" successfully created
[root@host-172-30-250-125 ~]# 
[root@host-172-30-250-125 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  rhel   1   2   0 wz--n- 19.51g    0 
[root@host-172-30-250-125 ~]# 
[root@host-172-30-250-125 ~]# vgextend rhel /dev/vda3
  Volume group "rhel" successfully extended
[root@host-172-30-250-125 ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree  
  rhel   2   2   0 wz--n- 199.50g 180.00g  

[root@host-172-30-250-125 ~]# lvextend -L 180G /dev/rhel/root  
  Extending logical volume root to 180.00 GiB
  Logical volume root successfully resized
[root@host-172-30-250-125 ~]# 
[root@host-172-30-250-125 ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree 
  rhel   2   2   0 wz--n- 199.50g 17.50g
[root@host-172-30-250-125 ~]# 
[root@host-172-30-250-125 ~]# 
[root@host-172-30-250-125 ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- 180.00g                                             
  swap rhel -wi-ao----   2.00g      



确认文件系统是xfs:
[root@backup binlog]# cat /etc/fstab | grep centos-home
/dev/mapper/centos-home /home                   xfs     defaults        0 0


xfs用以下命令来扩磁盘空间:
[root@backup binlog]# xfs_growfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=256    agcount=6, agsize=118277632 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=709040128, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=231011, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 709040128 to 715331584

我最后执行是:  xfs_growfs /dev/rhel/root




当前系统分区信息,当前系统有2块新硬盘,分别为20G
[root@server2 ~]# 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: 0x0002777c
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      208813+  83  Linux
/dev/sda2              27        1985    15735667+  83  Linux
/dev/sda3            1986        2247     2104515   82  Linux swap / Solaris
 
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: 0xdee177d5
 
   Device Boot      Start         End      Blocks   Id  System
 
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 


LVM相关命令解释


vg管理工具:
    vgs    #查看vg简要信息

    vgdisplay      #查看vg详细信息

    vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]    #创建vg

    vgextend  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]    #扩展vg容量

    vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]    #缩减vg容量

    vgremove  VolumeGroupName  #删除vg
 
lv管理工具:
    lvs    #查看lv简要信息

    lvdisplay    #查看lv详细信息

    lvcreate -L #[mMgGtT] -n NAME VolumeGroup    #创建lv

    lvremove /dev/VG_NAME/LV_NAME    #删除lv
 
扩展逻辑卷:
    lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME    #扩展逻辑卷

    resize2fs /dev/VG_NAME/LV_NAME    #重新定义文件系统大小
     
缩减逻辑卷:
    umount /dev/VG_NAME/LV_NAME    #卸载lv

    e2fsck -f /dev/VG_NAME/LV_NAME    #检查lv

    resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]    #重新定义lv大小

    lvreduce -L [-] [mMgGtT] /dev/VG_NAME/LV_NAME    #缩减lv 


LVM创建


[root@server2 ~]# pvcreate /dev/sdb     #将sdb硬盘添加到PV池中

  Physical volume "/dev/sdb" successfully created

[root@server2 ~]# pvcreate /dev/sdc    #将sdc硬盘添加到PV池中

  Physical volume "/dev/sdc" successfully created

[root@server2 ~]# pvs    #查看PV池

  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb        lvm2 ---  20.00g 20.00g
  /dev/sdc        lvm2 ---  20.00g 20.00g

[root@server2 ~]# vgcreate myvg /dev/sdb     #创建名称为myvg的卷组,由/dev/sdb提供PE

  Volume group "myvg" successfully created    #提示vg创建成功

[root@server2 ~]# vgs    #查看vg简要信息

  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   1   1   0 wz--n- 20.00g 10.00g
[root@server2 ~]# lvcreate -L 10G -n mylv myvg    #在myvg下创建容量为10G、名称为mylv的lv

  Logical volume "mylv" created.

[root@server2 ~]# lvs    #查看lv简要信息

  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-a----- 10.00g 
   
[root@server2 ~]# mkfs.ext4 /dev/mapper/myvg-mylv     #格式化lv为ext4文件系统
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 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
 
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 
[root@server2 ~]# mount /dev/mapper/myvg-mylv /mnt/    #将mylv挂载到/mnt下
 
[root@server2 ~]# df -lh    #查看mylv分区使用情况
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              15G  3.4G   11G  25% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             194M   36M  148M  20% /boot
/dev/mapper/myvg-mylv
                      9.8G   23M  9.2G   1% /mnt

LVM扩展  我们现在想将mylv扩展到30G该如何操作?     应该先将myvg扩展到30G以上,在将mylv扩展到30G   操作过程



[root@server2 ~]# vgextend myvg /dev/sdc    #扩展myvg,将sdc的空间也提供给myvg

  Volume group "myvg" successfully extended
   
[root@server2 ~]# vgs    #查看vg当前信息,myvg大小为40G

  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 39.99g 29.99g
   
[root@server2 ~]# umount /mnt/    #卸载mylv
 
[root@server2 ~]# lvextend -L 30G /dev/myvg/mylv     #扩展lv到30G

  Size of logical volume myvg/mylv changed from 10.00 GiB (2560 extents) to 30.00 GiB (7680 extents).
  Logical volume mylv successfully resized
   
[root@server2 ~]# lvs    #查看当前lv信息,mylv为30G

  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-a----- 30.00g 
[root@server2 ~]# mount /dev/mapper/myvg-mylv /mnt/    #挂载mylv到/mnt目录
 
[root@server2 ~]# df    ##注意:这里显示mylv大小只有10G,这是因为我们没有进行重新定义
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/sda2             15357672 3527844  11043048  25% /
tmpfs                   502384       0    502384   0% /dev/shm
/dev/sda1               198123   36589    151094  20% /boot
/dev/mapper/myvg-mylv
                      10190136   23028   9642820   1% /mnt
[root@server2 ~]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              15G  3.4G   11G  25% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             194M   36M  148M  20% /boot
/dev/mapper/myvg-mylv
                      9.8G   23M  9.2G   1% /mnt
                       
[root@server2 ~]# resize2fs  /dev/mapper/myvg-mylv     #使用resize2fs可以重新定义分区的大小
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/myvg-mylv to 7864320 (4k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 7864320 blocks long.
[root@server2 ~]# df -lh    #现在mylv大小终于恢复正常了
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              15G  3.4G   11G  25% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             194M   36M  148M  20% /boot
/dev/mapper/myvg-mylv
                       30G   28M   28G   1% /mnt


LVM缩减        缩减mylv到10G    操作过程


[root@server2 ~]# umount /mnt/    #先卸载挂载目录

[root@server2 ~]# resize2fs /dev/mapper/myvg-mylv 8G    

resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/mapper/myvg-mylv' first.    #提示需先使用e2fsck命令检查文件系统

[root@server2 ~]# e2fsck -f /dev/mapper/myvg-mylv     #检查mylv文件系统
e2fsck 1.41.12 (17-May-2010)
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/mapper/myvg-mylv: 11/1966080 files (0.0% non-contiguous), 167409/7864320 blocks
 
[root@server2 ~]# resize2fs /dev/mapper/myvg-mylv 8G    #使用resize2fs命令重新定义mylv分区大小
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/myvg-mylv to 2097152 (4k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 2097152 blocks long.
 
[root@server2 ~]# lvreduce -L 8G /dev/myvg/mylv     #将mylv大小缩减成8G
  WARNING: Reducing active logical volume to 8.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y
  Size of logical volume myvg/mylv changed from 30.00 GiB (7680 extents) to 8.00 GiB (2048 extents).
  Logical volume mylv successfully resized
   
[root@server2 ~]# lvs    #查看mylv信息
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao---- 8.00g 
[root@server2 ~]# mount /dev/mapper/myvg-mylv /mnt/    重新挂载

[root@server2 ~]# df -lh    #查看分区大小
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              15G  3.4G   11G  25% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             194M   36M  148M  20% /boot
/dev/mapper/myvg-mylv
                      7.8G   36M  7.4G   1% /mnt  


LVM快照创建

    LVM快照简单来说就是将所快照源分区一个时间点所有文件的元数据进行保存,如果源文件没有改变,那么访问快照卷的相应文件则直接指向源分区的源文件,如果源文件发生改变,则快照卷中与之对应的文件不会发生改变。快照卷主要用于辅助备份文件。  这里只简单介绍 .

操作过程

[root@server2 mnt]# df    
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/sda2             15357672 3527924  11042968  25% /
tmpfs                   502384       0    502384   0% /dev/shm
/dev/sda1               198123   36589    151094  20% /boot
/dev/mapper/myvg-mylv
                       8125880   36852   7669600   1% /mnt
[root@server2 mnt]# pwd    #当前在mylv的分区中
/mnt
[root@server2 mnt]# cp -rf /etc/{grub.conf,sysconfig} ./    #复制/etc/sysconfig,/etc/grub.conf到当前目录(mylv中)

[root@server2 mnt]# ls    #查看当前分区中的文件

grub.conf  lost+found  sysconfig

[root@server2 mnt]# lvcreate -s -n mylv-snap -L 8G /dev/myvg/mylv    #创建mylv的快照卷mylv-snap

  Logical volume "mylv-snap" created.

[root@server2 mnt]# lvs    #查看lv的信息,出现了mylv-snap

  LV        VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv      myvg owi-aos--- 8.00g                                                    
  mylv-snap myvg swi-a-s--- 8.00g      mylv   0.00   
                                
[root@server2 mnt]# mkdir /mylv-snap    #创建mylv-snap目录

[root@server2 mnt]# mount /dev/myvg/mylv-snap /mylv-snap/    #将mylv-snap挂载到/mylv-snap

[root@server2 mnt]# ll /mylv-snap/    #查看分区中的文件,和/mnt下一样
total 20
lrwxrwxrwx. 1 root root    22 Jan  4 16:01 grub.conf -> ../boot/grub/grub.conf
drwx------. 2 root root 16384 Jan  4 15:44 lost+found
drwxr-xr-x. 7 root root  4096 Jan  4 16:02 sysconfig
[root@server2 mnt]# cp /etc/rc.d/init.d/functions ./    #复制/etc/rc.d/init.d/functions到/mnt目录中
[root@server2 mnt]# ls    #查看当前目录(/mnt,即是mylv)中的文件
functions  grub.conf  lost+found  sysconfig
[root@server2 mnt]# ll /mylv-snap/    #查看/mylv-snap(即是mylv-snap)中的文件,发现并没有functions
total 20
lrwxrwxrwx. 1 root root    22 Jan  4 16:01 grub.conf -> ../boot/grub/grub.conf
drwx------. 2 root root 16384 Jan  4 15:44 lost+found
drwxr-xr-x. 7 root root  4096 Jan  4 16:02 sysconfig



在Linux服务器中,当现有硬盘的分区规划不能满足要求时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间。

实现上述操作要用到fdisk磁盘及分区管理工具,fdisk是大多数Linux系统中自带的基本工具之一。下面通过为Linux主机新增一块硬盘并建立分区的过程,介绍fdisk工具的使用。

一、检测并确认新硬盘

挂接好新的硬盘设备并启动主机后,Linux系统会自动检测并加载该硬盘,无需额外安装驱动。执行“fdisk -l”命令可以进行查看,确认新增硬盘的设备名称。



把home目录缩减到50G,把根目录扩容到400G

第一步:逻辑卷的缩减,有风险,先缩减逻辑边界——再缩减物理边界

注意:

1、不能在线缩减,得先卸载;

2、确保缩减后的空间大小依然能存储原有的所有数据;

3、在缩减之前应该强行检查文件,确保文件系统处于一致性状态


df –lh
umount  卸载

e2fsck -f /PATH/TO/PV 强行文件系统检查,看是否有问题
 
开始缩减

用lvdisplay命令查看逻辑卷消息

resize2fs    /PATH/TO/PV   50G


缩减(逻辑边界)为50G (缩减后的总共大小为50G)


lvreduce  -L [-]#  /PATH/TO/LV

缩减(物理边界)为50G

mount   -a
重新挂在




下面为实际操作过程及结果:

[root@wlm ~]# umount /dev/vg_wlm2/lv_home  
 
[root@wlm ~]# resize2fs /dev/vg_wlm2/lv_home 50G

resize2fs 1.41.12 (17-May-2010)
The filesystem is already 13107200 blocks long.  Nothing to do!


[root@wlm ~]# lvreduce -L 50G /dev/vg_wlm2/lv_home 
  WARNING: Reducing active logical volume to 50.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_home? [y/n]: y
  Reducing logical volume lv_home to 50.00 GiB
  Logical volume lv_home successfully resized

[root@wlm ~]# mount -a

[root@wlm ~]# df -h

Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_wlm2-lv_root   50G   38G  8.8G  82% /
tmpfs                        1.4G  144K  1.4G   1% /dev/shm
/dev/sda1                    485M   40M  420M   9% /boot
/dev/mapper/vg_wlm2-lv_home   50G   23G   25G  49% /home


注意:lv的物理路径要用lvdisplay查看,用df查看的只是挂载点




第二步:逻辑卷的扩张:先扩张物理边界———再扩张逻辑边界

把根目录扩张到400G

扩张物理边界

命令:lvextend
       -L  [+]# /PATH/TO/LV
扩展逻辑边界

resize2fs
       resize2fs  -p /PATH/TO/LV

注意:过程有点长,正常现象


下面为实际操作过程及结果:

[root@wlm ~]# lvextend -L 400G /dev/vg_wlm2/lv_root 
  Extending logical volume lv_root to 400.00 GiB
  Logical volume lv_root successfully resized
You have new mail in /var/spool/mail/root

[root@wlm ~]# resize2fs -p /dev/vg_wlm2/lv_root 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_wlm2/lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 25
Performing an on-line resize of /dev/vg_wlm2/lv_root to 104857600 (4k) blocks.
The filesystem on /dev/vg_wlm2/lv_root is now 104857600 blocks long.
You have new mail in /var/spool/mail/root

步骤:
1.磁盘分区fdisk(这里省略,关于磁盘分区参照Linux Fdisk分区篇,记住更改分区格式8e-Linxu LVM分区格式)

2.创建物理卷(physical volume),相关命令:pvcreate、pvremove、pvdisplay

3.卷组(volume group),相关命令:vgcreate、vgreduce、vgremove、vgdisplay、vgextend

4.逻辑卷(logic volumn),相关命令:lvcreate、lvremove、lvdisplay、lvextend

5.挂载逻辑卷


物理卷篇
创建物理卷
#pvcreate /dev/sda5

查看物理卷
#pvdisplay


卷组篇
卷组可以由一个或多个物理卷组成,当卷组空间不够时可以再新增物理卷扩容.

创建卷组
#vgcreate vg1 /dev/sda5

新增卷组
#vgextend vg1 /dev/sda6

删除卷组
#vgreduce vg1 /dev/sda6

查看卷组
#vgdisplay

逻辑卷篇
逻辑卷建立在卷组基础之上的,所以在创建逻辑卷的时候一定要指定卷组名称.

创建逻辑卷
#lvcreate -L 3G -n lvdisk1 vg1

显示逻辑卷
#lvdisplay

挂载逻辑卷
#mount -t ext4 /dev/vg1/lvdisk1

删除逻辑卷
#lvremove /dev/vg1/lvdisk1

扩容逻辑卷(卷组的可用范围内的容量值)
#lvextend -L +1G /dev/vg1/lvdisk1

扩容生效
#resize2fs /dev/vg1/lvdisk1

在Linux服务器中,当现有硬盘的分区规划不能满足要求时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间。
实现上述操作要用到fdisk磁盘及分区管理工具,fdisk是大多数Linux系统中自带的基本工具之一。下面通过为Linux主机新增一块硬盘并建立分区的过程,介绍fdisk工具的使用。
一、检测并确认新硬盘
挂接好新的硬盘设备并启动主机后,Linux系统会自动检测并加载该硬盘,无需额外安装驱动。执行“fdisk -l”命令可以进行查看,确认新增硬盘的设备名称。


“fdisk -l”命令的作用是列出当前系统中所有硬盘设备及其分区的信息。




“fdisk -l”命令的作用是列出当前系统中所有硬盘设备及其分区的信息

【例1】:执行“fdisk -l”命令,确认系统新识别的硬盘设备(/dev/sdb)。

上述输出信息中包含了各硬盘的整体情况和分区情况,其中“/dev/sda”为原有的硬盘设备,而“/dev/sdb”为新增的硬盘,新的硬盘设备还未进行初始化,没有包含有效的分区信息。

对于已有的分区,将通过列表的方式输出以下信息。

Device分区的设备文件名称。

Boot:是否是引导分区,是,则有“*”标识。

Start:该分区在硬盘中的起始位置(柱面数)。

End:该分区在硬盘中的结束位置(柱面数)。

Blocks:分区的大小,以Blocks(块)为单位,默认的块大小为1024字节。

Id:分区类型的ID标记号,对于ext3分区为83,LVM分区为8e

System:分区类型。

识别到新的硬盘设备后,接下来就可以在该硬盘中建立新的分区了。在Linux系统中,分区和格式化的过程是相对独立的。

二、规划硬盘中的分区

在硬盘设备中创建、删除、更改分区等操作同样通过fdisk命令进行,只要使用硬盘的设备文件作为参数,即可进入到交互式的分区管理界面中,如下图。

在该操作界面中的提示符后,用户可以输入特定的分区操作指令,完成各项分区管理任务,例如输入“m”指令后,可以查看各种操作指令的帮助信息,如下图。

在分区过程中常用的一些交互操作指令有:

1、m:查看操作指令的帮助信息

2、p:列表查看分区信息

3、n:新建分区

4、d:删除分区

5、t:变更分区类型

6、w:保存分区设置并退出

7、q:放弃分区设置并退出

在以上操作中应注意的有:

【1】:选择分区号时,主分区和扩展分区的序号只能在1-4之间。分区起始位置一般由fdisk默认识别即可,结束位置或大小可以使用“+sizeM”或“+sizeK”的形式,如“+20 000M”表示将该分区的容量设置为20GB。

【2】:在执行删除分区时一定要慎重,应首先使用p指令查看分区的序号,确认无误后再进行删除。如果扩展分区被删除,则扩展分区之下的逻辑分区也将同时会被删除。因此建议从最后一个分区开始进行删除,以免fdisk识别的分区序号发生紊乱。

【3】:使用“t”更改分区类型时,只要依次指定分区序号及更改后分区类型的ID标记号即可。如果不知道分区类型对应的ID号,可以输入“l”指令列表查看各种分区类型所对应的标记号,

Linux系统中最常用的两种文件系统ext3、swap的ID号分别为83、82.

【4】:变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统进行重启,或者执行“partprobe”命令使操作系统获知新的分区表情况。在有些Linux操作系统中,若不进行这些操作,可能会导致格式化分区时对硬盘中已有数据的损坏,严重者甚至引起系统崩溃。

#partprobe   /dev/sdb

三、格式化分区

mkfs命令:

用途:创建文件系统(格式化)

格式:mkfs -t 文件系统类型  分区设备

mkswap命令

用途:创建交换文件系统

格式:mkswap  分区设备

实际上mkfs命令是一个前端工具,可以自动加载不同的程序来创建各种类型的分区,而后端包括有多个与mkfs命令相关的工具程序,例如支持FAT16、FAT32分区格式的mkfs.vfat程序等。

【例2】:查看“/sbin”目录中与mkfs相关的工具程序。

【例3】:在“/dev/sdb1”分区中创建ext3文件系统。

#mkfs  -t   ext3  /dev/sdb1

等同于执行“mkfs.ext3   /dev/sdb1”

【例4】:创建并启用交换分区,并通过free命令观察交换空间的变化。

四、挂载、卸载文件系统

1、mount命令

用途:挂载文件系统、ISO镜像到指定文件夹

格式:mount  [-t 类型]   存储设备  挂载点目录

     mount -o  loop    ISO镜像文件    挂载点目录

2、umount命令

用途:卸载已挂载的文件系统

格式:umount    存储设备位置

     umount    挂载点目录

3、查看已挂载分区的使用情况

      df   -hT

在Linux系统中,对各种存储设备中的资源访问都是通过目录结构进行的,虽然系统核心能够通过“设备文件”的方式操纵各种设备,但是对于用户来说,还需要增加一个“挂载”的过程,才能像正常访问目录一样访问存储设备中的资源。

当然,在安装Linux操作系统的过程中,自动建立或识别的分区通常会由系统自动完成挂载。然而对于后来新增加的硬盘分区、USB盘、光盘等设备,有时候还需要管理员手动进行挂载,实际上用户访问的是经过格式化后建立的文件系统。挂载一个分区时,必须为其制定一个目录作为挂靠点,用户通过这个目录访问设备中的文件、目录数据。

在Linux系统中,U盘设备被模拟成SCSI设备,因此与挂载普通SCSI硬盘中的分区并没有明显区别。若不确定所添加的U盘设备文件,可以先执行“fdisk -l”命令进行查看确认。

使用不带任何参数或选项的mount命令时,将显示出当前系统中已挂载的各个文件系统的相关信息。


proc、sysfs、tmpfs等文件系统是Linux运行所需要的临时文件系统,并没有实际的硬盘分区与其相对应,因此也称为“伪文件系统”。例如proc映射了内存及cpu寄存器中的部分数据。

【设置文件系统的自动挂载】:

/etc/fstab配置文件:包含了需要开机后自动挂载的文件系统记录。如下图:

系统中的“/etc/fstab”文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据。Linux系统每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统

在“/etc/fstab”文件中,每一行记录对应一个分区或设备的挂载配置信息,从左到右包括六个字段(使用空格或制表符分隔),各部分的含义如下所述:

第一字段:设备名或设备卷标名。

第二字段:文件系统的挂载点目录的位置。

第三字段:文件系统类型,如ext3、swap等。

第四字段:挂载参数,即mount命令“-o”选项后可使用的参数,如defaults、rw等。

第五字段:表示文件系统是否需要dump备份,一般设为1时表示需要,设为0时将被dump所忽略。

第六字段:该数字用于决定在系统启动时进行磁盘检查的顺序,0表示不进行检查,1表示优先检查,2表示其次检查。对于根分区应设为1,其他分区设为2.

【例5】:修改“/etc/fstab”文件,添加自动挂载“/dev/sdb1”分区的配置行。

#vi  /etc/fstab

在文件末尾添加如下行内容:

/dev/sdb1    /mailbox     ext3      default     0  0


一、LVM概述

     LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立再硬盘和分区之上,文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高了磁盘管理的灵活性。

在安装RHEL5系统的过程中选择自动分区时,默认就会采用LVM分区方案,不需要再进行手动配置。如果有特殊需要,也可以使用安装向导提供的磁盘定制工具调整LVM分区。需要注意的是,“/boot”分区不能基于LVM创建,必须独立出来。

关于LVM的几个基本术语:

1、PV(Physical Volume,物理卷)

     物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元PE,从而构成物理卷。


物理卷一般直接使用设备文件名称,如“/dev/sdb1”、“/dev/sdb2”等。


   用于转换成物理卷的普通分区,建议先使用fdisk工具将分区类型的ID标记号改为“8e”。若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再作相应调整。

2、VG(Volume Group,卷组)

     由一个或多个物理卷组成一个整体,即成为卷组,在卷组中可以动态地添加或移除物理卷。许多个物理卷可以分别组成不同的卷组,卷组名称由用户自行定义。

3、LV(Logical Volume,逻辑卷)

     逻辑卷是建立在卷组之上的,与物理卷没有直接关系

对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。使用mkfs等工具在逻辑卷上创建文件系统以后,即可挂载到Linux系统中的目录下使用。

     通过上述对物理卷、卷组、逻辑卷的解释可以看出,建立LVM分区管理机制的过程就是:首先,将普通分区或整个硬盘创建为物理卷;接下来,将物理上比较分散的各物理卷的存储空间组成一个逻辑整体,即卷组;最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷。而逻辑卷才是最终用户可以格式化并挂载使用的存储单位。

二、LVM的管理命令

功  能

物理卷管理

卷组管理

逻辑卷管理

Scan  扫描pvscanvgscanlvscan

Create 建立

pvcreatevgcreatelvcreate
Display 显示pvdisplayvgdisplaylvdisplay
Remove 删除pvremovevgremovelvremove
Extend 扩展
vgextendlvextend
Reduce 减少
vgreducelvreduce

主要命令的语法

pvcreate    设备名

vgcreate    卷组名    物理卷名1    物理卷名2

lvcreate      -L    大小    -n     逻辑卷名     卷组名

lvextend     -L  +大小     /dev/卷组名/逻辑卷名

三、LVM应用实例

案例的环境和需求描述如下:

     公司准备在Internet中搭建邮件服务器,面向全国各地的员工即部分VIP客户提供电子邮箱空间。由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到“/mail”目录下)专门用于存放邮件数据。

根据上述案例环境和需求,具体操作步骤如下:

1、关闭服务器,打开机箱,正确挂接2块SCSI新硬盘。

2、开启服务器主机,并执行“fdisk -l”命令进行检查,确认已识别新增的硬盘(sdb、sdc)。

3、在磁盘中进行分区,将每块硬盘的所有空间划分为一个独立的主分区,并将分区类型更改为“8e”。分好区后使用“fdisk -l”命令查看结果如下所示。

4、将“/dev/sdb1”和“/dev/sdc1”分区转换为物理卷。

5、将上述两个物理卷整合,创建名为“mail_store”的卷组。

6、在“mail_store”卷组中创建一个名为“mail”的逻辑卷,容量大小设置为3G。

7、使用mkfs命令在“mail”逻辑卷中创建ext3文件系统,并挂载到“/mail”目录下。

8、动态扩展“mail”逻辑卷的容量(增加500M),并更新系统识别的文件系统大小。