当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux系统下最强大的磁盘管理技术LVM

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 Linux系统下最强大的磁盘管理技术LVM


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 42 ::
收藏到网摘: n/a

摘要: 使用 Debian Linux 下的 lvm2 配置 LVM 磁盘系统
作者: By REISTLIN [雷斯林] MSN: [email protected] QQ: 3A984
版权: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要.
本文出自:http://www.reistlin.com/blog/493

LVM 介绍:

LVM - Logical Volume Manager 是Linux系统下最强大的磁盘管理技术之一.它将您从不得不思考物理容量中解脱出来,代之以逻辑形式来思考这些容量. 当您需要考虑如何替用户数据和系统文件分配空间的时候,LVM可以让您彻底忘记传统的分区做法.

简单地来说,LVM就是将众多物理设备组合成一个大的虚拟设备,用户只需思考如何在虚拟设备上做传统的空间分配策略,而将物理设备的管理交由LVM自己去处理.这个由物理设备组合所成的虚拟设备称为卷组(Volume Group),简称为VG;而用户在卷组VG上所划分的磁盘空间则称为逻辑卷(Logical Volume),简称为LV;而原始物理设备必须经过初始化处理才能加入卷组集合,这种经过特别处理的原始设备或磁盘空间则称为物理卷(Physical Volume),简称为PV.

LVM磁盘空间管理系统允许您在需要的时候重新调整大小, 这也就意味着在管理磁盘空间资源方面, 您将获得极大程度的自由. 基本上这是很有诱惑力的, 但您应该留心硬盘出错的情况,如果您没有在LVM管理中为出现这种情况而做好计划,那么您可能会丢失大量数据.

LVM 术语:

PV - Physical Volume 物理卷,例如一个硬盘,或一个Software RAID设备;
VG - Volume Group 卷组,将一组物理卷收集为一个管理单元;
LV - Logical Volume 逻辑卷,等同于传统分区,可看作便准的块设备,以容纳文件系统;
PE - Physical Extent 物理块,划分物理卷的数据块;
LE - Logical Extent 逻辑块,划分逻辑卷的数据块;

LVM 结构:

为了让大家了解关于LVM的概念和结构.实现方式等.作者花了整整一天时间画了一个图.
突然发现自己的”设计”水准很前卫很潮流. (谁说图片不好看谁就不要看文章了! :-))

说明: /boot 这个挂载分区不能存在于VG卷组里.所以我们一般是建议单独分区.

使用LVM的基本步骤如下:

1. 安装lvm2 ( apt-get install lvm2 )

2. 使用fdisk分区指定的物理硬盘

3. 使用lvm管理工具进行lvm配置 (建立PV / VG / LV)

4. 格式化已经设置好的LV逻辑卷.挂载到指定目录.

5. 关于如何增加/删除/修改LV逻辑卷大小.请期待第2季.

LVM 配置步骤:

// 查看物理磁盘状态 - 硬盘(容量1GB) /dev/sdb 已经识别

Debian:/home/reistlin# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×0002db3a

Device Boot Start End Blocks Id System
/dev/sda1 1 1033 8297541 83 Linux
/dev/sda2 1034 1305 2184840 82 Linux swap / Solaris

Disk /dev/sdb: 1073 MB, 1073741824 bytes
128 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 4096 * 512 = 2097152 bytes
Disk identifier: 0×00000000

Disk /dev/sdb doesn’t contain a valid partition table

// 使用 fdisk 对 /dev/sdb 分区

Debian:/home/reistlin# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0×4e896764.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0×0000 of partition table 4 will be corrected by w(rite)

Command (m for help): new
Command action
e extended
p primary partition (1-4)

p

Partition number (1-4): 1
First cylinder (1-512, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):
Using default value 512

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

// 查看分区后的物理磁盘信息 - /dev/sdb1 状态正常

Debian:/home/reistlin# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×0002db3a

Device Boot Start End Blocks Id System
/dev/sda1 1 1033 8297541 83 Linux
/dev/sda2 1034 1305 2184840 82 Linux swap / Solaris

Disk /dev/sdb: 1073 MB, 1073741824 bytes
128 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 4096 * 512 = 2097152 bytes
Disk identifier: 0×4e896764

Device Boot Start End Blocks Id System
/dev/sdb1 1 512 1048560 83 Linux

// 进入 LVM 模式

Debian:/home/reistlin# lvm

// 查看 LVM 磁盘状态 - 目前没有任何 LVM 磁盘信息

lvm> lvmdiskscan
/dev/ram0 [ 8.00 MB]
/dev/ram1 [ 8.00 MB]
/dev/root [ 7.91 GB]
/dev/ram2 [ 8.00 MB]
/dev/sda2 [ 2.08 GB]
/dev/ram3 [ 8.00 MB]
/dev/ram4 [ 8.00 MB]
/dev/ram5 [ 8.00 MB]
/dev/ram6 [ 8.00 MB]
/dev/ram7 [ 8.00 MB]
/dev/ram8 [ 8.00 MB]
/dev/ram9 [ 8.00 MB]
/dev/ram10 [ 8.00 MB]
/dev/ram11 [ 8.00 MB]
/dev/ram12 [ 8.00 MB]
/dev/ram13 [ 8.00 MB]
/dev/ram14 [ 8.00 MB]
/dev/ram15 [ 8.00 MB]
/dev/sdb [ 1.00 GB]
2 disks
17 partitions
0 LVM physical volume whole disks
0 LVM physical volumes

// 查看 LVM 配置文件 - dump 模式

lvm> dumpconfig
devices {
dir=”/dev”
scan=”/dev”
preferred_names=[]
filter=”a/.*/”
cache_dir=”/etc/lvm/cache”
cache_file_prefix=”"
write_cache_state=1
sysfs_scan=1
md_component_detection=1
ignore_suspended_devices=0
}
activation {
missing_stripe_filler=”/dev/ioerror”
reserved_stack=256
reserved_memory=8192
process_priority=-18
mirror_region_size=512
readahead=”auto”
mirror_log_fault_policy=”allocate”
mirror_device_fault_policy=”remove”
}
global {
umask=63
test=0
units=”h”
activation=1
proc=”/proc”
locking_type=1
fallback_to_clustered_locking=1
fallback_to_local_locking=1
locking_dir=”/var/lock/lvm”
}
shell {
history_size=100
}
backup {
backup=1
backup_dir=”/etc/lvm/backup”
archive=1
archive_dir=”/etc/lvm/archive”
retain_min=10
retain_days=30
}
log {
verbose=0
syslog=1
overwrite=0
level=0
indent=1
command_names=0
prefix=” ”
}

// 创建 Physical Volume (PV)

lvm> pvcreate
Please enter a physical volume path
lvm> pvcreate /dev/sdb1
Physical volume “/dev/sdb1″ successfully created

// 查看 Physical Volume (PV) 状态

lvm> pvdisplay
CTRL-c detected: giving up waiting for lock
— Physical volume —
PV Name /dev/sdb1
VG Name vg_test
PV Size 1023.98 MB / not usable 3.98 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 255
Free PE 0
Allocated PE 255
PV UUID SwfyW5-veGN-1Ptd-VIUo-0I3I-CdVB-QF7BwC

// 再次查看 LVM 磁盘状态

lvm> lvmdiskscan
/dev/ram0 [ 8.00 MB]
/dev/ram1 [ 8.00 MB]
/dev/root [ 7.91 GB]
/dev/ram2 [ 8.00 MB]
/dev/sda2 [ 2.08 GB]
/dev/ram3 [ 8.00 MB]
/dev/ram4 [ 8.00 MB]
/dev/ram5 [ 8.00 MB]
/dev/ram6 [ 8.00 MB]
/dev/ram7 [ 8.00 MB]
/dev/ram8 [ 8.00 MB]
/dev/ram9 [ 8.00 MB]
/dev/ram10 [ 8.00 MB]
/dev/ram11 [ 8.00 MB]
/dev/ram12 [ 8.00 MB]
/dev/ram13 [ 8.00 MB]
/dev/ram14 [ 8.00 MB]
/dev/ram15 [ 8.00 MB]
/dev/sdb1 [ 1023.98 MB] LVM physical volume
1 disk
17 partitions
0 LVM physical volume whole disks
1 LVM physical volume

// 创建 Volume Group (VG)

lvm> vgcreate vg_test
Please enter physical volume name(s)
lvm> vgcreate vg_test /dev/sdb1
Volume group “vg_test” successfully created

// 查看 Volume Group (VG) 状态

lvm> vgdisplay
— Volume group —
VG Name vg_test
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 1020.00 MB
PE Size 4.00 MB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020.00 MB
VG UUID Dbm7gQ-HDao-0z2Z-2u3q-XK9A-bmEv-ES3qC0

// 创建 Logical Volume (LV) - 如果需要使用全部VG空间. 输入 -l <Total PE> 的值.
// <Total PE> 的值可以使用 vgdisplay 命令查看: Total PE = 255

lvm> lvcreate -l 255 vg_test -n lv_test
Logical volume “lv_test” created

// 查看 Logical Volume (LV) 状态

lvm> lvdisplay
— Logical volume —
LV Name /dev/vg_test/lv_test
VG Name vg_test
LV UUID l3GUct-M3nG-m837-wOe2-4EWo-ZPU6-xskaq8
LV Write Access read/write
LV Status available
# open 0
LV Size 1020.00 MB
Current LE 255
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0

// 输入 exit 退出 LVM 配置模式. Ext3 格式化 lv_test 逻辑卷

Debian:/home/reistlin# mkfs -t ext3 -j /dev/vg_test/lv_test
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
65280 inodes, 261120 blocks
13056 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

// 挂载 lv_test 逻辑卷到 /mnt 目录. 你也可以挂载到 /home 目录

Debian:/home/reistlin# mount /dev/vg_test/lv_test /mnt
Debian:/home/reistlin# cd /mnt

// 测试文件读写. Reistlin.Com. OKay.

Debian:/mnt# vim Reistlin.Com
Debian:/mnt# cat Reistlin.Com
Welcome to Reistlin.Com