Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44806
  • 博文数量: 28
  • 博客积分: 1080
  • 博客等级: 少尉
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-12 10:38
文章分类

全部博文(28)

文章存档

2011年(1)

2009年(27)

我的朋友

分类: LINUX

2009-06-24 11:08:19

# export E2FSADM_RESIZE_CMD=ext2resize
    # export E2FSADM_RESIZE_OPTS=""
    余下的就简单了,e2fsadm使用时很象其他的LVM命令:

    # e2fsadm /dev/test/HOWTO -L+50M
    e2fsadm -- correcting size 102 MB to physical extent boundary 104 MB
    e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/test/HOWTO: 11/25688 files (0.0% non-contiguous), 3263/102400 blocks
    lvextend -- extending logical volume "/dev/test/howto" to 104 MB
    lvextend -- doing automatic backup of volume group "test"
    lvextend -- logical volume "/dev/test/HOWTO" successfully extended
    ext2_resize_fs
    ext2_grow_fs
    ext2_block_relocate
    ext2_block_relocate_grow
    ext2_grow_group
    ext2_add_group
    ext2_add_group
    ext2_add_group
    ext2_add_group
    ext2_add_group
    ext2_add_group
    direct hits 4096 indirect hits 0 misses 1
    e2fsadm -- ext2fs in logical volume "/dev/test/HOWTO" successfully extended to 104 MB
    5.2 增长逻辑卷
    e2fsadm命令为你做了这些工作。然而,了解怎样手工来做可能会有用的。
    如果在你的卷组中有剩余空间,那么只需要一行:

    # lvextend -L+12M /dev/test/HOWTO
    lvextend -- rounding size to physical extent boundary
    lvextend -- extending logical volume "/dev/test/HOWTO" to 116 MB
    lvextend -- doing automatic backup of volume group "test"
    lvextend -- logical volume "/dev/test/HOWTO" successfully extended
    5.3 增长卷组
    这是用vgextend功能实现的,它很象馅饼一样容易。你首先需要创建一个物理卷。这要用pvcreate来实现。使用这个工具,你转换任何块设备为一个物理卷。
    这样做了之后,vgextend做余下的任务:

    # pvcreate /dev/sda1
    pvcreate -- physical volume "/dev/sda1" successfully created
    # vgextend webgroup /dev/sda1
    vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
    vgextend -- doing automatic backup of volume group "webgroup"
    vgextend -- volume group "webgroup" successfully extended
    请注意,为了要做这些,你的卷组必须是激活的。你可以通过执行象“vgchange -a y webgroup”来使它激活。
    5.4 增长文件系统
    如果你想手工做,有两条路径可以实现。
    ext2离线,使用ext2resize
    离线,就意味着你必须umount这个文件系统来做这些改变。在做这些改变的时候,这个文件系统和它上面的数据暂时不可用。如果你想扩充根分区或其他重要的分区,你必须用其他的启动介质来引导。
    ext2resize工具可以在GNU ftp站点找到,但大多数的发行版都将它作为一个包来发行。它的语法也简单易懂:

    # ext2resize /dev/HOWTO/small 40000
    这里40000是文件系统已经增长或收缩之后的块的数目。
    ext2在线
    FIXME: write this
    6. 替换磁盘
    这是LVM的好处之一。一旦你发现某个磁盘有错误,那就是要移动你的数据的时候了。使用LVM它很象馅饼一样容易。我们首先举一个明显的替换例子,你先添加一个磁盘到系统中,它至少要和你想要替换的磁盘一样大。
    要移动数据,我们移动卷组的物理分区到另一个磁盘上,或者更准确的说,到另一个物理卷上。要做这些,LVM给我们提供了pvmove功能。
    假设我们怀疑的那块磁盘叫/dev/hda1,并且我们想用/dev/sdb3来替换它。我们首先将/dev/sdb3添加到包含/dev/hda1的那个卷组中。
    在这之前,umount这个卷组上的所有文件系统看来是明智的。有一个全备份也不会损坏什么。
    FIXME: is this necessary?
    接下来我们执行pvmove。非常简单的,我们仅仅提到我们想要移走的那块磁盘,就象这样:

    # pvmove /dev/hda1
    pvmove -- moving physical extents in active volume group "test1"
    pvmove -- WARNING: moving of active logical volumes may cause data loss!
    pvmove -- do you want to continue? [y/n] y
    pvmove -- doing automatic backup of volume group "test1"
    pvmove -- 12 extents of physical volume "/dev/hda1" successfully moved
    请留意这个警告。而且看来至少有些内核或LVM的版本在使用这个命令时有问题。我是用2.3.99pre6-2来测试的,它可以工作,但要警告。
    现在,/dev/hda1没有包含任何物理分区了,我们可以将它从卷组中删除:

    # vgreduce test1 /dev/hda1
    vgreduce -- doing automatic backup of volume group "test1"
    vgreduce -- volume group "test1" successfully reduced by physical volume:
    vgreduce -- /dev/hda1
    FIXME: we need clarity on a few things. Should the volume group be active? When do we get data loss?
    6.1 当事情发生在晚期时
    如果一个磁盘没有出现警告就失败了,你就不能移走它上面的物理分区到另一个物理卷上,这样你可能会丢失数据,除非在这个失败的PV上的逻辑卷是镜像了的。正确的行为是用一个同样的PV或者至少同样大小的分区来替换这个失败的PV。
    /etc/lvmconf目录包含了LVM数据和结构的备份,包括哪些磁盘做成了PV,每个PV属于哪个VG,每个VG中有哪些LV。
    替换了出错的磁盘之后,你可以用vgcfgrestor命令来恢复LVM数据到新的PV上。它恢复卷组和所有它的信息,但是不会恢复在逻辑卷上的数据。这是因为当LVM数据做一些更改时,LVM命令自动做备份。

    --------------------------------------------------------------------------------
    7. 为一致性备份做快照
    这是更加难以置信的一个可能性。假设你有一个非常繁忙的服务器,有许多东西运行。为了一个有用的备份,你需要停止大量的程序,否则,你将以数据不一致告终。
    一个规范的例子是从/tmp移动一个文件到/root下,而且/root将先备份。当/root被读的时候,这个文件还不在那里。当/tmp被备份时,这个文件已经不在了。
    另一个事例是保存数据库或目录。如果一个文件在使用状态,我们就没有任何线索了,除非我们给应用程序时间做一个清除的关闭。
    这样的话,新的问题又出现了。我们关闭程序,做我们的备份,接着重新启动它们。如果备份只花几分钟这是很好的,但是,如果它要花数小时,或者你根本不确定它到底要花多久的时候,事情就真的痛苦了。
    LVM可以营救。
    使用LVM,我们可以做一个LV瞬间的快照,然后mount它,再备份它。
    让我们试验一下:

    # mount /dev/test/HOWTO /mnt
    # echo >; /mnt/a.test.file
    # ls /mnt/
    a.test.file lost+found
    # ls -l /mnt/
    total 13
    -rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
    drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
    Ok,我们现在有些事情要用它一起做。让我们产生这个快照:

    # lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO
    lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed
    lvcreate -- INFO: using default snapshot chunk size of 64 KB
    lvcreate -- doing automatic backup of "test"
    lvcreate -- logical volume "/dev/test/HOWTO" successfully created
    对于“--size”参数以后再详述。让我们mount这个快照:

    # mount /dev/test/snap /snap
    # ls /snap
    total 13
    -rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
    drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
    现在我们从原处删除a.test.file,并且检查它是否仍然在快照里:
 
阅读(351) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~