LVM管理

LVM管理

概述

LVM即邏輯卷管理器的意思,相對于傳統的物理磁盤上劃分分區(文件系統)、格式化操作來講,LVM需要先將磁盤或者分區(塊設備)轉換成PV,由一個或者多PV組成VG,在VG上再劃分成LV,最后將LV格式化,掛載,供使用。

那么,LVM相比傳統的磁盤管理有什么不同呢,LVM的邏輯卷管理能夠靈活的調整文件系統的大小。從而管理更加方便。

 

一、LVM相關的概念

PV:physical Volume, 物理卷,將一個塊設備的SystemID調整為8E(LVM),再通過lvcreate轉換,即成為一個PV。

VG:Volume Group,將一個或多個PV組合起來形成的邏輯設備

LV:Logical Volume,邏輯卷,在VG上進行劃分,最終分配給用戶使用的分區(文件系統),可以進行格式化和掛載

PE:Physical Extend,物理塊,LVM的最小存儲單元,默認大小為4M,每個VG最多能包含65534個PE:即如果使用默認大小,VG大小最大只有256G。PE大小在創建VG時指定。

LE: Logical Extend,邏輯塊,其大小和PE一致

 

上三張圖,闡述下這些概念的關系

(圖片來源于網絡)

LVM示意圖1

LVM示意圖3

LVM示意圖2

 

 

 

二、LVM實驗

下面,我們用一個綜合實驗,來看看LVM是如何實現和管理的

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

實驗目標:

  1. 創建至少有2個PV組成的,大小為20G的,名為testvg的VG, 要求PE大小為16M,. 在卷組中創建大小為5G的邏輯卷testlv,. 掛載到/users目錄,開機自動掛載

 

  1. 新建立用戶archlinux,要求家目錄為/users/archlinux, 切換到archlinux用戶,復制/etc/pam.d目錄下的所有文件到自己的家目錄

 

  1. 擴展testlv至7G,要求archlinux的文件不能丟失, 收縮testlv至3G,要求文件不能丟失

 

  1. 對testlv創建快照,并嘗試基于快照備份數據,驗證快照的功能。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

接下來我們就上面的實驗要求,進行逐步的實現,我們將機器上的/dev/sdb,劃分兩個分區,來創建lv

一、 按要求創建LV

  1. 磁盤分區

# 使用parted對/dev/sdb進行分區,先使用print顯示已有的分區

 

[root@localhost ~]# parted /dev/sdb

GNU Parted 3.1

使用 /dev/sdb

Welcome to GNU Parted! Type ‘help’ to view a list of commands.

(parted) print

Model: Msft Virtual Disk (scsi)

Disk /dev/sdb: 136GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

 

Number Start End Size File system Name 標志

1 1049kB 10.0GB 9999MB primary lvm

2 10.0GB 20.0GB 9999MB primary lvm

3 20.0GB 30.0GB 10.0GB primary lvm

4 30.0GB 40.0GB 10.0GB primary lvm

5 40.0GB 50.0GB 10.0GB primary lvm

 

(parted)

 

 

 

#將這個磁盤上現有的分區全部刪除

(parted) rm 1

(parted) rm 2

(parted) rm 3

(parted) rm 4

(parted) rm 5

 

(parted) print

Model: Msft Virtual Disk (scsi)

Disk /dev/sdb: 136GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

 

Number Start End Size File system Name 標志

 

(parted) mklabel gpt

警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?

是/Yes/否/No? yes

 

(parted) mkpart primary 0G 10G

(parted) mkpart primary 10G 20G

(parted) print

Model: Msft Virtual Disk (scsi)

Disk /dev/sdb: 136GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

 

Number Start End Size File system Name 標志

1 1049kB 10.0GB 9999MB primary

2 10.0GB 20.0GB 9999MB primary

 

(parted) toggle 1 lvm

(parted) toggle 2 lvm

(parted) print

Model: Msft Virtual Disk (scsi)

Disk /dev/sdb: 136GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

 

Number Start End Size File system Name 標志

1 1049kB 10.0GB 9999MB primary lvm

2 10.0GB 20.0GB 9999MB primary lvm

 

 

 

(parted) q

信息: You may need to update /etc/fstab.

 

[root@localhost ~]# cat /proc/partitions

major minor #blocks name

 

2 0 4 fd0

8 0 133169152 sda

8 1 1048576 sda1

8 2 90176512 sda2

8 16 133169152 sdb

8 17 9764864 sdb1

8 18 9764864 sdb2

11 0 1048575 sr0

253 0 52428800 dm-0

253 1 2097152 dm-1

253 3 35639296 dm-3

[root@localhost ~]# partx -a /dev/sdb

partx: /dev/sdb: error adding partitions 1-2

 

  1. 創建PV

 

[root@localhost ~]# pvcreate /dev/sdb1

Physical volume “/dev/sdb1” successfully created.

 

[root@localhost ~]# pvcreate /dev/sdb2

Physical volume “/dev/sdb2” successfully created.

 

  1. 創建VG

[root@localhost ~]# vgcreate -s 16M testvg /dev/sdb{1,2}

Physical volume “/dev/sdb1” successfully created.

Volume group “testvg” successfully created

# 使用vgdisplay或者pvdisplay可以查看到VG和PV之間已經進行了關聯

 

[root@localhost ~]# pvdisplay

— Physical volume —

PV Name /dev/sdb2

VG Name testvg

PV Size 9.31 GiB / not usable 16.00 MiB

Allocatable yes

PE Size 16.00 MiB

Total PE 595

Free PE 595

Allocated PE 0

PV UUID sY33VY-xCHC-xv2M-doha-RInF-Pgz5-KfrfCj

 

— Physical volume —

PV Name /dev/sdb1

VG Name testvg

PV Size 9.31 GiB / not usable 16.00 MiB

Allocatable yes

PE Size 16.00 MiB

Total PE 595

Free PE 595

Allocated PE 0

PV UUID jCSfUE-81oO-1jUi-n5YQ-AwtY-W3eo-4vsldi

 

 

  1. 創建LV

 

[root@localhost ~]# lvcreate -L 5G -n testlv /dev/mapper/testvg

Logical volume “testlv” created.

 

[root@localhost ~]# lvdisplay /dev/mapper/testvg-testlv

— Logical volume —

LV Path /dev/testvg/testlv

LV Name testlv

VG Name testvg

LV UUID Xx78rs-xafF-5uqA-aNtM-IT55-oMp4-Awdrzk

LV Write Access read/write

LV Creation host, time localhost.localdomain, 2017-12-28 11:42:34 +0800

LV Status available

# open 0

LV Size 5.00 GiB

Current LE 320

Segments 1

Allocation inherit

Read ahead sectors auto

– currently set to 8192

Block device 253:2

 

  1. 掛載

 

A. 格式化

[root@localhost ~]# mke2fs -t ext4 /dev/testvg/testlv

B.掛載

[root@localhost ~]# mkdir /users

[root@localhost ~]# mount /dev/mapper/testvg-testlv /users

 

[root@localhost users]# mount | grep “testlv”

/dev/mapper/testvg-testlv on /users type ext4 (rw,relatime,seclabel,data=ordered)

C.? 自動掛載

vim /etc/fstab

/dev/mapper/testvg-testlv /users ext4 defaults 0 0

?

?

二、 創建用戶并將用戶的家目錄指向testlv

[root@localhost /]# useradd -d /users/archlinux archlinux

 

[archlinux@localhost ~]$ cp -r /etc/pam.d/* .

 

 

三、 LV的擴展和收縮

  1. 擴展LV

# 對于LV的擴展,我們先應該保證VG有足夠的剩余空間,然后,擴展LV,再修改文件系統的大小,擴展LV應該先備份數據,再在線擴展

# 擴展LV到7G

[root@localhost ~]# lvextend -L 7G /dev/mapper/testvg-testlv

Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents).

Logical volume testvg/testlv successfully resized.

# 修改文件系統大小

 

 

[root@localhost /]# resize2fs /dev/testvg/testlv

resize2fs 1.42.9 (28-Dec-2013)

Filesystem at /dev/testvg/testlv is mounted on /users; on-line resizing required

old_desc_blocks = 1, new_desc_blocks = 1

The filesystem on /dev/testvg/testlv is now 1835008 blocks long.

 

 

[root@localhost ~]# df -h

文件系統 容量 已用 可用 已用% 掛載點

/dev/mapper/testvg-testlv 6.8G 23M 6.4G 1% /users

 

 

 

  1. 收縮LV

# 對于縮減LV的大小,應該先卸載文件系統,再進行文件系統的檢查,接著先將文件系統的大小進行修改,再修改LV的大小

 

[root@localhost ~]# umount /users

 

[root@localhost ~]# e2fsck -f /dev/mapper/testvg-testlv

e2fsck 1.42.9 (28-Dec-2013)

第一步: 檢查inode,塊,和大小

第二步: 檢查目錄結構

第3步: 檢查目錄連接性

Pass 4: Checking reference counts

第5步: 檢查簇概要信息

/dev/mapper/testvg-testlv: 53/458752 files (0.0% non-contiguous), 67363/1835008 blocks

 

 

[root@localhost ~]# resize2fs /dev/mapper/testvg-testlv 3G

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/mapper/testvg-testlv to 786432 (4k) blocks.

The filesystem on /dev/mapper/testvg-testlv is now 786432 blocks long.

 

[root@localhost ~]# lvreduce -L 3G /dev/mapper/testvg-testlv

WARNING: Reducing active logical volume to 3.00 GiB.

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce testvg/testlv? [y/n]: y

Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).

Logical volume testvg/testlv successfully resized.

 

[root@localhost ~]# mount -a

[root@localhost ~]# mount | grep “testvg”

/dev/mapper/testvg-testlv on /users type ext4 (rw,relatime,seclabel,data=ordered)

 

 

[root@localhost ~]# cd /users/archlinux/

[root@localhost archlinux]# ll

總用量 104

-rw-r–r–. 1 archlinux archlinux 272 12月 28 12:15 atd

-rw-r–r–. 1 archlinux archlinux 192 12月 28 12:15 chfn

-rw-r–r–. 1 archlinux archlinux 192 12月 28 12:15 chsh

-rw-r–r–. 1 archlinux archlinux 232 12月 28 12:15 config-util

-rw-r–r–. 1 archlinux archlinux 293 12月 28 12:15 crond

lrwxrwxrwx. 1 archlinux archlinux 19 12月 28 12:15 fingerprint-auth -> fingerprint-auth-ac

-rw-r–r–. 1 archlinux archlinux 702 12月 28 12:15 fingerprint-auth-ac

-rw-r–r–. 1 archlinux archlinux 796 12月 28 12:15 login

-rw-r–r–. 1 archlinux archlinux 154 12月 28 12:15 other

-rw-r–r–. 1 archlinux archlinux 188 12月 28 12:15 passwd

……………

 

 

 

三、 LVM的快照功能

  1. 對testlv創建一個快照卷

[root@localhost archlinux]# lvcreate -s -L 1G -n testlv-snap /dev/mapper/testvg-testlv

Using default stripesize 64.00 KiB.

Logical volume “testlv-snap” created.

 

  1. 掛載并查看快照卷里頭的A文件內容

[root@localhost /]# mount -r /dev/testvg/testlv-snap /mnt/snap/

 

[root@localhost /]# cd /mnt/snap/archlinux/

[root@localhost archlinux]# cat vlock

#%PAM-1.0

auth include system-auth

account required pam_permit.so

[root@localhost archlinux]# wc -l vlock

3 vlock

 

 

 

  1. 修改源卷testlv里頭的A文件內容,再查看快照卷的內容

 

[root@localhost archlinux]# cat vlock

#%PAM-1.0

auth include system-auth

account required pam_permit.so

 

This is first new line.

This is second new line.

 

 

This is the end line.

 

 

 

[root@localhost archlinux]# cd /mnt/snap/archlinux/

[root@localhost archlinux]# pwd

/mnt/snap/archlinux

[root@localhost archlinux]# cat vlock

#%PAM-1.0

auth include system-auth

account required pam_permit.so

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90587

(0)
神策神策
上一篇 2017-12-26 22:32
下一篇 2017-12-28

相關推薦

  • N25第二周作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     其常用的有: touch、stat、rm、cp、mv、install touch 命令    命令格式: touch [OPTION]… File… 命令參數: -a&n…

    Linux干貨 2016-12-12
  • 馬哥教育網絡班22期+第十周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)    CentOS系統啟動流程為:POST –> BootSequence(BIOS) –> BootLoader(MBR) –> Kernel(ramdisk) –> r…

    Linux干貨 2016-12-13
  • Linux GRUB legacy

    Linux GRUB Linux GRUB Linux GRUB 單用戶模式(密碼破解) 救援模式 實例 GRUB菜單 GRUB命令行接口 GRUB簡介 GRUB 菜單組成 GRUB配置文件 GRUB安裝及修復 GRUB單用戶及救援模式 GRUB簡介 了解grub之前,需要理解linux的啟動流程,如果之前有對linux啟動流程不了解的可以看:http://…

    Linux干貨 2016-04-25
  • dd命令詳解及實戰應用

    dd簡述 dd在linux中是 一個強大的命令,常用于拷貝大量數據,測試讀寫效能 ,清空硬盤數據(慎用),不僅如此,由于dd 允許以二進制方式讀寫,所以特別適合在原始設備上輸入、輸出。 dd與cp的區別 這里有必要說明一下,兩個命令都可用于拷貝,但是級別卻完全不一樣:cp是文件級別的讀取方式,而dd更底層,可以數據塊級別去讀取硬盤,由此可看出在效率…

    Linux干貨 2017-04-04
  • vim 編輯器 定時任務 bash基礎

    vim 編輯器 定時任務 bash基礎

    2017-10-17
欧美性久久久久