Поиск по сайту:

Основы Linux - Учебное пособие по LVM (Диспетчер логических томов)

LVM — это инструмент управления логическими томами, который используется для выделения дисков, чередования, зеркалирования и изменения размера логических томов. При использовании LVM жесткий диск или набор жестких дисков распределяются по одному или нескольким физическим томам. Физические тома LVM можно размещать на других блочных устройствах, которые могут охватывать два или более дисков. Поскольку физический том не может охватывать несколько дисков, для охвата более чем одного диска создайте один или несколько физических томов на каждом диске. Группы томов можно разделить на логические тома, которым назначаются точки монтирования, например /home и / и типы файловых систем, например ext2, ext3 или ext4. Когда «разделы» достигают своей полной емкости, свободное пространство из группы томов можно добавить к логическому тому, чтобы увеличить размер раздела. Когда в систему добавляется новый жесткий диск, его можно добавить в группу томов, а размер разделов, являющихся логическими томами, можно увеличить.

В этом практическом руководстве мы изучим некоторые основы команд LVM.

Сценарий

В этом примере давайте,

  1. Создайте 3 раздела размером по 100 МБ каждый.
  2. Преобразуйте их в физические тома.
  3. Объедините физические тома в группу томов.
  4. Наконец, создайте логический том из группы томов.

Создание разделов

[root@server ~]# fdisk -l
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: 0x0007b12c
   Device Boot      Start         End      Blocks   Id  System
Disk /dev/sda: 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: 0x000ac451
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         128     1024000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             128         291     1310720   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             291        1045     6052864   83  Linux

Приведенный выше вывод показывает нам два физических жестких диска. /dev/sda содержит три раздела и не содержит места для создания дополнительных разделов. А второй диск /dev/sdb еще не содержит разделов. Итак, давайте воспользуемся вторым в этом уроке.

[root@server ~]# fdisk /dev/sdb 
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-1044, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +100M
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (15-1044, default 15): 
Using default value 15
Last cylinder, +cylinders or +size{K,M,G} (15-1044, default 1044): +100M
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (29-1044, default 29): 
Using default value 29
Last cylinder, +cylinders or +size{K,M,G} (29-1044, default 1044): +100M
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: 0x0007b12c
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+  83  Linux
/dev/sdb2              15          28      112455   83  Linux
/dev/sdb3              29          42      112455   83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@server ~]# partprobe 
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
[root@server ~]# fdisk -l
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: 0x0007b12c
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+  83  Linux
/dev/sdb2              15          28      112455   83  Linux
/dev/sdb3              29          42      112455   83  Linux
Disk /dev/sda: 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: 0x000ac451
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         128     1024000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             128         291     1310720   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             291        1045     6052864   83  Linux

Создание физических томов

[root@server ~]# yum install lvm2
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install ProcessThe
Resolving Dependencies
--> Running transaction check
---> Package lvm2.i686 0:2.02.72-8.el6 set to be updated
--> Processing Dependency: lvm2-libs = 2.02.72-8.el6 for package: lvm2-2.02.72-8.el6.i686
--> Processing Dependency: libdevmapper-event.so.1.02(Base) for package: lvm2-2.02.72-8.el6.i686
--> Processing Dependency: libdevmapper-event.so.1.02 for package: lvm2-2.02.72-8.el6.i686
--> Running transaction check
---> Package device-mapper-event-libs.i686 0:1.02.53-8.el6 set to be updated
---> Package lvm2-libs.i686 0:2.02.72-8.el6 set to be updated
--> Processing Dependency: device-mapper-event >= 1.02.53-8.el6 for package: lvm2-libs-2.02.72-8.el6.i686
--> Running transaction check
---> Package device-mapper-event.i686 0:1.02.53-8.el6 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package                      Arch     Version              Repository     Size
================================================================================
Installing:
 lvm2                         i686     2.02.72-8.el6        localrepo     514 k
Installing for dependencies:
 device-mapper-event          i686     1.02.53-8.el6        localrepo      79 k
 device-mapper-event-libs     i686     1.02.53-8.el6        localrepo      74 k
 lvm2-libs                    i686     2.02.72-8.el6        localrepo     565 k
Transaction Summary
================================================================================
Install       4 Package(s)
Upgrade       0 Package(s)
Total download size: 1.2 M
Installed size: 2.5 M
Is this ok [y/N]: y
Downloading Packages:
--------------------------------------------------------------------------------
Total                                            11 MB/s | 1.2 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : device-mapper-event-libs-1.02.53-8.el6.i686              1/4 
  Installing     : device-mapper-event-1.02.53-8.el6.i686                   2/4 
  Installing     : lvm2-libs-2.02.72-8.el6.i686                             3/4 
  Installing     : lvm2-2.02.72-8.el6.i686                                  4/4 
Installed:
  lvm2.i686 0:2.02.72-8.el6                                                     
Dependency Installed:
  device-mapper-event.i686 0:1.02.53-8.el6                                      
  device-mapper-event-libs.i686 0:1.02.53-8.el6                                 
  lvm2-libs.i686 0:2.02.72-8.el6                                                
Complete!
[root@server ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
[root@server ~]# pvdisplay 
  "/dev/sdb1" is a new physical volume of "109.79 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               109.79 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               jQl5F4-DyLj-SkHu-4lhZ-J3nQ-zax9-aT8sc4
   
  "/dev/sdb2" is a new physical volume of "109.82 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               109.82 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               i4MHvw-8hYB-Fwz8-fxTL-G3mu-fl5E-zGYhDO
   
  "/dev/sdb3" is a new physical volume of "109.82 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               109.82 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               99qkNw-3oAw-vXwg-WE6U-zyKO-Ffs3-rDSqUY

Создание групп томов

[root@server ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2 
  Volume group "vg1" successfully created
[root@server ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg1
  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               216.00 MiB
  PE Size               4.00 MiB
  Total PE              54
  Alloc PE / Size       0 / 0   
  Free  PE / Size       54 / 216.00 MiB
  VG UUID               ds3OtP-DMUx-33nN-HDar-eqNj-uIED-41gjqI

Создать логический том

[root@server ~]# lvcreate -L 200M vg1 -n lv1
  Logical volume "lv1" created
[root@server ~]# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg1/lv1
  VG Name                vg1
  LV UUID                dgLZ79-JZdn-NUSF-fUS1-YVFk-36qs-iuafhE
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

Отформатируйте и смонтируйте логический том.

[root@server ~]# mkfs.ext4 /dev/vg1/lv1 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
 8193, 24577, 40961, 57345, 73729
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@server ~]# mount /dev/vg1/lv1 /mnt/
[root@server ~]# cd /mnt/
[root@server mnt]# touch file1 file2 file3
[root@server mnt]# mkdir dir1 dir2 dir3
[root@server mnt]# ls
dir1  dir2  dir3  file1  file2  file3  lost+found

Увеличение размера группы томов

[root@server mnt]# vgextend vg1 /dev/sdb3 
  Volume group "vg1" successfully extended
[root@server mnt]# lvresize -L +100M /dev/vg1/lv1 
  Extending logical volume lv1 to 300.00 MiB
  Logical volume lv1 successfully resized
[root@server mnt]# resize2fs /dev/vg1/lv1 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg1/lv1 is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg1/lv1 to 307200 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 307200 blocks long.
[root@server mnt]# lvdisplay /dev/vg1/lv1 
  --- Logical volume ---
  LV Name                /dev/vg1/lv1
  VG Name                vg1
  LV UUID                dgLZ79-JZdn-NUSF-fUS1-YVFk-36qs-iuafhE
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                300.00 MiB
  Current LE             75
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

Удалить логический том

[root@server mnt]# cd ..
[root@server /]# umount /mnt/
[root@server /]# lvremove /dev/vg1/lv1 
Do you really want to remove active logical volume lv1? [y/n]: y
  Logical volume "lv1" successfully removed

Удалить группу томов

[root@server /]# vgremove /dev/vg1
  Volume group "vg1" successfully removed

Удалить физический том

[root@server /]# pvremove /dev/sdb1 /dev/sdb2 /dev/sdb3
  Labels on physical volume "/dev/sdb1" successfully wiped
  Labels on physical volume "/dev/sdb2" successfully wiped
  Labels on physical volume "/dev/sdb3" successfully wiped

Статьи по данной тематике