底层PV
中层VG
上层LV
 
PE(phsical extent):在逻辑层次上,VG把PV分成固定大小的块,这些块就叫PE,默认为4M ,创建LV的过程就是分多少个PE的过程。
自动分区的过程中,除了根目录,把其他所有的磁盘空间都做成LV
 
 
 
一. LVM概述
 
LVM: Logical Volume Manager, Version: 2
用的是dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;
 
两种引用文件的方式,他们引用的其实都是/dev/dm-0,1,2,3...等文件,
1.     /dev/mapper/VG_NAME-LV_NAME
       例如: /dev/mapper/vol0-root
 
2.   /dev/VG_NAME/LV_NAME
      例如:  /dev/vol0/root
 
 
 
二. 如何创建和管理逻辑卷呢?
 
 
首先要先创建PV,新建分区后需要把其类型调整为8e(Linux LVM)
 
   1)pv(物理卷)管理工具:
        pvs:简要pv信息显示
        pvdisplay:显示pv的详细信息
        pvcreate /dev/DEVICE: 创建pv
 
   2)vg(卷组,相当于逻辑分区,不能分区,可包含多个pv)管理工具:
        vgs--简要显示所有卷组
        vgdisplay
 
        vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]  ----指定大小
        例如:vgcreate myvg /dev/sda3
 
        vgextend  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]
 
        vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...],需要先做pvmove
            
        vgremove
 
 
   3)lv(逻辑卷)管理工具:
        lvs
        lvdisplay
        lvcreate -L #[mMgGtT] -n NAME VolumeGroup  #-L指明大小,-n指明名字, 例如 lvcreate -L 2G -n mylv myvg,然后正常格式化,mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv
        lvremove /dev/VG_NAME/LV_NAME
 
 
    扩展逻辑卷:
        # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME    #带上+是准确的加多少空间;不带上+,是扩展后的总空间
        # resize2fs /dev/VG_NAME/LV_NAME
 
    缩减逻辑卷:
        # umount /dev/VG_NAME/LV_NAME
        # e2fsck -f /dev/VG_NAME/LV_NAME
        # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
        # lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
        # mount
 
 
4)例子
添加硬盘到卷组, 就是加一块新硬盘,增加到指定硬盘空间。
 
 
1、给新硬盘创建分区    fdisk /dev/sdc
       n
       p
       1
       w
2、创建物理卷 pvcreate /dev/sdc1
3、格式化物理卷 mkfs.ext3 /dev/sdc1, 选择哪一个文件系统最好用mount命令查看一下
4、将新的物理卷添加到卷组中 vgextend VolGroup00 /dev/sdc1,用pvs验证是否成功
5、将新的空间添加到逻辑卷中 lvextend -L +10G /dev/VolGroup00/LogVol00(提前可以挂载到目录下查看大小再决定添加的空间),此例是加了10G,随个人需要增加空间
6、加上去后,目前用df -h还看不到改变,需要激活 resize2fs -p /dev/VolGroup00/LogVol00
7、用df -h查看
 
实例1. 某校创建了300G的硬盘sdb,需要我加到卷组中,并挂到/home目录下,(其实挂载根目录下更好)
mkfs.ext4 /dev/sdb
vgextend VolGroup /dev/sdb
lvextend -L +299G /dev/VolGroup/lv_home
resize2fs -p /dev/VolGroup/lv_home
 
 
实例2. 某校虚拟机扩容 +200G
 
1. 先在虚拟机外面进行硬盘扩展--学校老师做了,但是我fdisk没看到有变化,重启一下就能看到扩展了200G
2. fdisk /dve/sda  新建分区,这里dev/sda3,新建的分区空间很小,那么需要重新新建一个分区,dev/sda4,w保存,然后重启
3. 格式化分区 mkfs.ext4 /dev/sda4
4. 建立pv,pvcreate /dev/sda4
5. 扩展vg ,  vgextend ubuntu_vg /dev/sda4  -------把新建的分区扩展到源ubuntu_vg
6. vgdisplay查看一下
7. 扩展lv,lvextend -L +199.9G /dev/ubuntu_vg/root
8. vgdisplay 查看一下
9. resize2fs -p /dev/ubuntu_vg/root    调整文件系统
 
http://www.cnblogs.com/tigertall/p/5257324.html    -----------最后一步按照 resize2fs -p /dev/VolGroup/lv_home  可以成功。
 
 
 
三.     快照:snapshot
 
         将文件系统迅速的扫描一遍,类似硬链接,必须在同一卷组,仅存储快照那一刻发生变化的文件,之前的原文件直接指向原地址空间。
         快照空间的大小取决于这个快照想用多少时间,比如2个小时内系统数据变化量大概为2G,那么快照空间设个3G就行。
 
        lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name #-s:指明是快照,-n:指明名字,-p:权限
        例如:lvcreate -s -L 512M -n mylv-snap -p r /dev/myvg/mylv
                  mount /dev/myvg/mylv-snap /mnt
 
        不用快照的时候
         umount /mnt
         lvremove /dev/myvg/mylv-snap
 
    练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;
    练习2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;
    练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失;
    练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失;
    练习5:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;
 
 
 
四.  dd命令:convert and copy a file------底层文件复制工具,效率比cp更高
 
        用法:
            dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
                bs=#:block size, 复制单元大小;
                count=#:复制多少个bs;
                例如:复制etc/fstab文件中的前100个字节  dd if=/etc/fstab of=/tmp/fstab.2 bs=1 count=100
 
         1)磁盘拷贝:
              dd if=/dev/sda of=/dev/sdb
 
         2)备份MBR
                dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
 
         3)破坏MBR中的bootloader,不会影响分区表:
                dd if=/dev/zero of=/dev/sda bs=256 count=1
 
        两个特殊设备:
            /dev/null: 数据黑洞;
            /dev/zero:吐零机;

逻辑卷磁盘管理和dd命令的更多相关文章

  1. Linux系统管理第五次作业 LVM逻辑卷 磁盘配额

    1.为主机增加80G SCSI 接口硬盘 2.划分三个各20G的主分区 [root@localhost ~]# fdisk /dev/sdf 欢迎使用 fdisk (util-linux 2.23.2 ...

  2. Linux磁盘管理:LVM逻辑卷的拉伸及缩减

    ①查看当前VG的信息,保证VG中有足够的空闲空间 通过 vgdisplay 或者 vgs 命令 [root@rusky ~]# vgs rusky-vg VG #PV #LV #SN Attr VSi ...

  3. 【转载】Linux磁盘管理:LVM逻辑卷管理

    Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一. ...

  4. Linux系统磁盘管理(lvm逻辑卷管理)

    linux系统用户常遇到的一个问题就是如何精准的评估分区的大小,已分配合适的磁盘空间:普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文 ...

  5. [TimLinux] Linux LVM逻辑卷操作指南

    1. 新磁盘创建分区 $ fdisk /dev/newdisk n 创建分区 p 显示分区表 t 使用8e分区类型 d 删除已经存在的分区 w 将分区表写入并退出 q 不写入直接退出 如果使用整个磁盘 ...

  6. Linux LVM逻辑卷配置过程详解

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  7. Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...

  8. LVM逻辑卷

    LVM逻辑卷 一.LVM逻辑卷概述 1.LVM的作用: 扩充磁盘:不动数据,在使用状态,将磁盘容量变大. 能把多个物理的磁盘整合成一张大的虚拟的磁盘,比如:有3个5G的磁盘,能把它们整合成一个15G的 ...

  9. 逻辑卷管理-LVM(Logical Volume Manager)

    一. 概念与由来 LVM:逻辑卷管理(Logical Volume Manager) 普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某文件时,这个文件因为受上层文件 ...

随机推荐

  1. springmvc web.xml配置之 -- SpringMVC IOC容器初始化

    SpringMVC IOC容器初始化 首先强调一下SpringMVC IOC容器初始化有些特别,在SpringMVC中除了生成一个全局的spring Ioc容器外,还会为DispatcherServl ...

  2. 63. Unique Paths II (Graph; DP)

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...

  3. JS如何判断浏览器类型,如何模拟浏览器类型(模拟微信浏览器)

    一.前言 在编写前端代码时,为了页面兼容性,我们往往需要考虑不同的浏览器类型 而这就需要在前端代码中进行识别和区分 接下来就来谈谈对浏览器类型的识别 二.正文 (一).查看浏览器类型的核心代码 var ...

  4. 怎样查看lInux系统中的所有运行进程

    可以使用ps命令.它能显示当前运行中进程的相关信息,包括进程的PID.Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息. ps命令能提供一份当前进程的快照.如果想状态可以自动刷新,可以 ...

  5. JAVA高并发线程

    一.JAVA高级并发 1.5JDK之后引入高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程发编程的,充分利用了现代多处理器和多核心系统的功能以编写大规模并发 ...

  6. [Training Video - 4] [Groovy] String Functions

    def x="I like to read books before bed" def temp = x.split(" ") log.info "S ...

  7. ScrollView中嵌套ListView的问题

    网上关于怎样在ScrollView中嵌套ListView的讨论有很多,我大概是搜索了一下,简单总结如下: 1.不要在ScrollView中嵌套ListView a.用一个LinearLayout来代替 ...

  8. [原创]使用OPENCC库进行简繁转换(C++代码)

    最近公司有一款游戏产品,字库存在问题,希望全自动进行简繁同屏自动转换的行为,减少工作量. 所以自己使用了WINDOWS自带的一些转换函数,但发现大量字出现异常,无法转换(测试iconv也发现无法转换) ...

  9. C程序设计语言(2)文摘

    第一章 导言 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入输出 #include "stdafx.h" main(int argc ...

  10. UILabel 字体下方加下划线

        UILabel *knowKankan = [[UILabel alloc] initWithFrame:CGRectMake(0, MAINHEIGHT - 78 , MAINWIDTH, ...