欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基础知识 -- Linux 逻辑卷管理技术1

程序员文章站 2022-06-09 08:27:31
...

Linux 逻辑卷管理器简介

    

LVM : 是Linux 逻辑卷管理器的英文缩写,它表示逻辑的磁盘,区别于传统的物理磁盘; 

LVM 技术的产生是由于传统磁盘分区满足不了日益高速增长的数据存储需求, 传统磁盘分区大小是固定的,每个分区容量是死的.随着数据的增加,总有一天数据会添满你的磁盘. 当更换磁盘时,也是相当繁琐,首先要关闭机算机,然后重新分区,然后格式化分区,然后才能 copy数据.

   有了LVM技术,我们就可以不需要关闭机算机, 不用重新分区. 利用现有的物理设备直接增加物理空间,我们可以随意放大或缩小存储空间.我们称之这样的空间为逻辑块或逻辑区.

在LVM中有几个重要的概念需要理解:

 pv: phisical volume (最基本的概念), 要创建PV 我们使用 pvcreate 命令

 vg: volume group  要创建GV 我们使用 vgcreate 命令

 lv : logical  volume 要创建LV 我们使用 lvcreate 命令

它们三者的组成关系是,先创建PV, 然后基于PV创建VG, 然后就可以在VG在分配LV了.其中LV的大小可以增加直至VG的大小.要放大LV,我们使用e2fsadm , 例如在VG名称为vg1的中增加名称为data的LV的大小

e2fsadm  -L +10M /dev/vg1/data

当然如果VG不够了,那么我们也需要增加它,使用如下命令:

vgextend  vg1  /dev/sdb1

 

牢记VG和LV都是可以动态放大的

创建并使用逻辑卷管理器

我的实验环境为虚拟机环境 openSUSE 11.2 操作系统, 添加了两块物理磁盘 /dev/sda 和 /dev/sdb.现在我在 /dev/sdb中增加LV

1. 首先为 /dev/sdb增加3个分区

linux-0eob:~ # fdisk /dev/sdb

Partition number (1-4): 3
First cylinder (29-261, default 29): +100M
Value out of range.
First cylinder (29-261, default 29):
Using default value 29
Last cylinder, +cylinders or +size{K,M,G} (29-261, default 261): +20M

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xdc3e63cc

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+  83  Linux
/dev/sdb2              15          28      112455   83  Linux
/dev/sdb3              29          32       32130   83  Linux

 

2. 初始化这3个分区为pv

  在改之前还得做一件事情就是 change a partition's system id ,就是  Id 这一栏的值,我们使用fdisk命令提供的t子命 令来完成即可:

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

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): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

保存退出

如果该磁盘没有被使用那么就不用重启操作系统, 否则必须重启操作系统.要不然接下来这一步不会成功哦

 

linux-0eob:~ # pvcreate /dev/sdb[1-3]
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created

这样pv就创建成功了

3. 创建VG

如果是第一次创建,那么要先运行vgsan命令,这个命令会新建vg数据库的东东.

linux-0eob:~ # vgscan
  Reading all physical volumes.  This may take a while...

linux-0eob:~ # vgcreate vg0 /dev/sdb1 /dev/sdb2
  Volume group "vg0" successfully created

linux-0eob:~ # vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  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               104.00 MB
  PE Size               4.00 MB
  Total PE              26
  Alloc PE / Size       0 / 0  
  Free  PE / Size       26 / 104.00 MB
  VG UUID               MrDrOT-rGKL-QonT-XaSJ-Ob1H-lHSx-6ASxuY
4. 创建LV

linux-0eob:~ # lvcreate -n lvdata -L 20M vg0
  Logical volume "lvdata" created

linux-0eob:/ # lvdisplay /dev/vg0/lvdata
  --- Logical volume ---
  LV Name                /dev/vg0/lvdata
  VG Name                vg0
  LV UUID                tYWFX0-Msor-q6I3-dZjE-W06M-UKyj-McRdpP
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                20.00 MB
  Current LE             5
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

LV 就相当于磁盘分区,所以接下来我们就格式化它
linux-0eob:/ # mke2fs -T ext3 /dev/vg0/lvdata
mke2fs 1.41.1 (01-Sep-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1280 inodes, 5120 blocks
256 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=8388608
1 block group
32768 blocks per group, 32768 fragments per group
1280 inodes per group

Writing inode tables: done                           
Creating journal (1024 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.
5. 测试lv

linux-0eob:/ # mount /dev/vg0/lvdata /mnt/
linux-0eob:/ # ll /mnt/
total 16
drwx------ 2 root root 16384 Mar 27 17:20 lost+found
linux-0eob:/ # touch /mnt/1.txt
linux-0eob:/ # ll /mnt/
total 16
-rw-r--r-- 1 root root     0 Mar 27 17:23 1.txt
drwx------ 2 root root 16384 Mar 27 17:20 lost+found

 linux-0eob:/ # lvscan
  ACTIVE            '/dev/vg0/lvdata' [20.00 MB] inherit

对我这个初学者来说终于可以了