📄 1682.html
字号:
# lvcreate -L 50M -n HOWTO test<br>
lvcreate -- rounding up size to physical extent boundary "52 MB"<br>
lvcreate -- doing automatic backup of "test"<br>
lvcreate -- logical volume "/dev/test/HOWTO" successfully created<br>
<br>
Ok,到这里,我们创建一个文件系统:<br>
<br>
<br>
# mke2fs /dev/test/HOWTO<br>
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09<br>
Filesystem label=<br>
OS type: Linux<br>
Block size=1024 (log=0)<br>
Fragment size=1024 (log=0)<br>
13328 inodes, 53248 blocks<br>
2662 blocks (5.00%) reserved for the super user<br>
First data block=1<br>
7 block groups<br>
8192 blocks per group, 8192 fragments per group<br>
1904 inodes per group<br>
Superblock backups stored on blocks:<br>
8193, 24577, 40961<br>
<br>
Writing inode tables: done<br>
Writing superblocks and filesystem accounting information: done<br>
# mount /dev/test/HOWTO /mnt<br>
# ls /mnt<br>
lost+found<br>
<br>
我们做完了!让我们回顾我们的卷组(VG),它现在充满了一些东西:<br>
<br>
<br>
# vgdisplay test -v<br>
--- Volume group ---<br>
VG Name test<br>
VG Access read/write<br>
VG Status available/resizable<br>
VG # 0<br>
MAX LV 256<br>
Cur LV 1<br>
Open LV 1<br>
MAX LV Size 255.99 GB<br>
Max PV 256<br>
Cur PV 2<br>
Act PV 2<br>
VG Size 184 MB<br>
PE Size 4 MB<br>
Total PE 46<br>
Alloc PE / Size 13 / 52 MB<br>
Free PE / Size 33 / 132 MB<br>
<br>
--- Logical volume ---<br>
LV Name /dev/test/HOWTO<br>
VG Name test<br>
LV Write Access read/write<br>
LV Status available<br>
LV # 1<br>
# open 1<br>
LV Size 52 MB<br>
Current LE 13<br>
Allocated LE 13<br>
Allocation next free<br>
Read ahead sectors 120<br>
Block device 58:0<br>
<br>
<br>
--- Physical volumes ---<br>
PV Name (#) /dev/hda3 (2)<br>
PV Status available / allocatable<br>
Total PE / Free PE 13 / 13<br>
<br>
PV Name (#) /dev/hdb2 (1)<br>
PV Status available / allocatable<br>
Total PE / Free PE 33 / 20<br>
<br>
好,这就是了。/dev/hda3完全没用,而/dev/hdb2有13个物理分区(PE)在用。<br>
<br>
3.2 激活和非激活:内核空间和用户空间<br>
和使用所有操作系统一样,Linux划分了两个部分:内核空间(kernel space)和用户空间(user space)。用户空间有时叫做用户区(userland),这也是关于这个主题的一个很好的名字。<br>
<br>
关于逻辑卷管理器的创建和修改都是在用户空间做的,然后传给内核。一旦卷组或逻辑卷向内核汇报,它就叫做“激活(Active)”。当它被激活时,只有某些更改可以执行,其他的更改只有在它非激活时执行。<br>
<br>
<br>
4. 首要条件<br>
LVM在很大范围内的内核中都有效。在Linux 2.4,LVM将全部被集成。内核2.3.47和以前的,LVM要经过处理来合并到主内核中。<br>
<br>
4.1 内核<br>
Linux 2.4<br>
包含了你需要的所有内容。希望大多数的发行版都将LVM当成模块集成来发行。如果你需要编译,仅仅是当你选择块设备时打勾LVM选项。<br>
<br>
Linux 2.3.99.*<br>
一旦内核向前发展稳定了,这部分就不会存在了。但是现在,我们还是要描述一下。<br>
<br>
当我们写这篇文档时,Linux最新的内核版本是2.3.99pre5,它仍然需要一些小的补丁才能使LVM工作。<br>
<br>
对于Linux 2.3.99pre3,有两个补丁发行:<br>
<br>
一个补丁是张贴在linux-kernel,在这里可以找到。<br>
<br>
Andrea Arcangeli改进了这个补丁,提供了一个增量的补丁,它应用于2.3.99pre3 LVM补丁和这之上。<br>
<br>
对于Linux 2.3.99pre5,bert hubert将这两个补丁合并成一个了,并且主要针对2.3.99pre5。在这里可以找到这个补丁。使用它要小心。<br>
<br>
2.3.99pre6-1,是的,是补丁的一个预览版,特色是第一次完成了LVM的支持!它仍然遗漏了Andreas的补丁,但我们确信它不久真的会发行的。<br>
<br>
2.3.99pre4-ac1缺省有一个小的补丁在,并且能工作。虽然它不包括Andreas的补丁。<br>
<br>
Linux 2.2<br>
FIXME: write this<br>
<br>
Linux 2.3<br>
FIXME: write this<br>
<br>
4.2 用户余地<br>
你需要从LVM站点下载有效的工具。用glibc2.1编译系统要求的一些补丁。即使这样,在Debian 2.2上仍会出错。<br>
<br>
5. 增长文件系统<br>
你可以用一个预备好的脚本做大量的工作,也可以根据你的需要手工做<br>
<br>
5.1 使用e2fsadm<br>
如果在你的卷组中有剩余空间,并且你使用的是ext2文件系统(大多数人都是这样的),你就可以使用这个便捷的工具。<br>
<br>
e2fsadm命令利用商业的resize2fs工具。虽然人们都感觉resize2fs是一个很好的软件,但是它并没有被广泛的安装。<br>
<br>
如果你想使用FSF的ext2resize命令,你需要告诉e2fsadm以下内容:<br>
<br>
<br>
# export E2FSADM_RESIZE_CMD=ext2resize<br>
# export E2FSADM_RESIZE_OPTS=""<br>
<br>
余下的就简单了,e2fsadm使用时很象其他的LVM命令:<br>
<br>
<br>
# e2fsadm /dev/test/HOWTO -L+50M<br>
e2fsadm -- correcting size 102 MB to physical extent boundary 104 MB<br>
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09<br>
Pass 1: Checking inodes, blocks, and sizes<br>
Pass 2: Checking directory structure<br>
Pass 3: Checking directory connectivity<br>
Pass 4: Checking reference counts<br>
Pass 5: Checking group summary information<br>
/dev/test/HOWTO: 11/25688 files (0.0% non-contiguous), 3263/102400 blocks<br>
lvextend -- extending logical volume "/dev/test/howto" to 104 MB<br>
lvextend -- doing automatic backup of volume group "test"<br>
lvextend -- logical volume "/dev/test/HOWTO" successfully extended<br>
<br>
ext2_resize_fs<br>
ext2_grow_fs<br>
ext2_block_relocate<br>
ext2_block_relocate_grow<br>
ext2_grow_group<br>
ext2_add_group<br>
ext2_add_group<br>
ext2_add_group<br>
ext2_add_group<br>
ext2_add_group<br>
ext2_add_group<br>
direct hits 4096 indirect hits 0 misses 1<br>
e2fsadm -- ext2fs in logical volume "/dev/test/HOWTO" successfully extended to 104 MB<br>
<br>
5.2 增长逻辑卷<br>
e2fsadm命令为你做了这些工作。然而,了解怎样手工来做可能会有用的。<br>
<br>
如果在你的卷组中有剩余空间,那么只需要一行:<br>
<br>
<br>
# lvextend -L+12M /dev/test/HOWTO<br>
lvextend -- rounding size to physical extent boundary<br>
lvextend -- extending logical volume "/dev/test/HOWTO" to 116 MB<br>
lvextend -- doing automatic backup of volume group "test"<br>
lvextend -- logical volume "/dev/test/HOWTO" successfully extended<br>
<br>
5.3 增长卷组<br>
这是用vgextend功能实现的,它很象馅饼一样容易。你首先需要创建一个物理卷。这要用pvcreate来实现。使用这个工具,你转换任何块设备为一个物理卷。<br>
<br>
这样做了之后,vgextend做余下的任务:<br>
<br>
<br>
# pvcreate /dev/sda1<br>
pvcreate -- physical volume "/dev/sda1" successfully created<br>
# vgextend webgroup /dev/sda1<br>
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte<br>
vgextend -- doing automatic backup of volume group "webgroup"<br>
vgextend -- volume group "webgroup" successfully extended<br>
<br>
请注意,为了要做这些,你的卷组必须是激活的。你可以通过执行象“vgchange -a y webgroup”来使它激活。<br>
<br>
5.4 增长文件系统<br>
如果你想手工做,有两条路径可以实现。<br>
<br>
ext2离线,使用ext2resize<br>
离线,就意味着你必须umount这个文件系统来做这些改变。在做这些改变的时候,这个文件系统和它上面的数据暂时不可用。如果你想扩充根分区或其他重要的分区,你必须用其他的启动介质来引导。<br>
<br>
ext2resize工具可以在GNU ftp站点找到,但大多数的发行版都将它作为一个包来发行。它的语法也简单易懂:<br>
<br>
<br>
# ext2resize /dev/HOWTO/small 40000<br>
<br>
这里40000是文件系统已经增长或收缩之后的块的数目。<br>
<br>
ext2在线<br>
FIXME: write this<br>
<br>
6. 替换磁盘<br>
这是LVM的好处之一。一旦你发现某个磁盘有错误,那就是要移动你的数据的时候了。使用LVM它很象馅饼一样容易。我们首先举一个明显的替换例子,你先添加一个磁盘到系统中,它至少要和你想要替换的磁盘一样大。<br>
<br>
要移动数据,我们移动卷组的物理分区到另一个磁盘上,或者更准确的说,到另一个物理卷上。要做这些,LVM给我们提供了pvmove功能。<br>
<br>
假设我们怀疑的那块磁盘叫/dev/hda1,并且我们想用/dev/sdb3来替换它。我们首先将/dev/sdb3添加到包含/dev/hda1的那个卷组中。<br>
<br>
在这之前,umount这个卷组上的所有文件系统看来是明智的。有一个全备份也不会损坏什么。<br>
<br>
FIXME: is this necessary?<br>
<br>
接下来我们执行pvmove。非常简单的,我们仅仅提到我们想要移走的那块磁盘,就象这样:<br>
<br>
<br>
# pvmove /dev/hda1<br>
pvmove -- moving physical extents in active volume group "test1"<br>
pvmove -- WARNING: moving of active logical volumes may cause data loss!<br>
pvmove -- do you want to continue? [y/n] y<br>
pvmove -- doing automatic backup of volume group "test1"<br>
pvmove -- 12 extents of physical volume "/dev/hda1" successfully moved<br>
<br>
请留意这个警告。而且看来至少有些内核或LVM的版本在使用这个命令时有问题。我是用2.3.99pre6-2来测试的,它可以工作,但要警告。<br>
<br>
现在,/dev/hda1没有包含任何物理分区了,我们可以将它从卷组中删除:<br>
<br>
<br>
# vgreduce test1 /dev/hda1<br>
vgreduce -- doing automatic backup of volume group "test1"<br>
vgreduce -- volume group "test1" successfully reduced by physical volume:<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -