热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

在Linux的系统中使用动态磁盘

文章标题:在Linux的系统中使用动态磁盘。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
  是否遇到过这样的问题,划分了 10G 的一个分区,挂接到 /home 下,可是随着时间的流逝,10G 的空间开始不够用了,需要把它扩充。假设要扩充到 12G,那么唯一的方法就是建立一个 12G 的新分区,然后将原来的 10G 分区中的数据全部移动到新分区中,再修改挂接配置。这样不仅麻烦而且浪费时间。
 
  Linux 2.4 开始支持 LVM(Logical Volume Manager,逻辑卷管理器),通过 LVM,可以动态地改变“分区”(准确地说应当称之为卷)的大小,而不必担心数据移动的问题。LVM 的原理是,首先在硬盘上创建 PV(Physical Volume: 物理卷)。PV 可以创建在一个分区上,也可以创建在整个硬盘上,它由许多的 PE(Physical Extent)组成,每个 PE 的默认值为 4MB.之后将数个 PV 合在一起组成一个 VG(Volume Group: 卷组)。最后在 VG 中创建 LV(Logical Volume: 逻辑卷),它也由许多的 LE(Logical Extent)组成,LE 的大小与 PE 相同,并与 PE 一一对应。LV 就可以像普通的分区一样挂接在任何地方了。
 
  下面我们总结一下这里出现的词汇:
 
  LVM (Logical Volume Manager,逻辑卷管理器):Linux 中用于管理逻辑卷的功能。
 
  PV(Physical Volume,物理卷):数据实际保存的位置,由许多 PE 组成。
 
  VG(Volume Group,卷组):多个 PV 组合在一起。
 
  LV(Logical Volume,逻辑卷):LVM 创建的虚拟卷,由许多 LE 组成,可以像普通分区一样进行挂接,可以动态修改大小。
 
  PE(Physical Extent):LVM 管理的最小单位,默认为 4MB.
 
  LE(Logical Extent):大小与 PE 相同,并与 PE 一一对应。
 
  制作 LVM
 
  下面我们尝试在 Linux 下使用 LVM 来管理分区。以下操作使用的系统为 Fedora Core 3.
 
  1. 首先用 fdisk 创建两个分区 /dev/hda7 和 /dev/hda8,选择分区大小为 1G.结果如下:
 
  

Device Boot Start End Blocks Id System
/dev/hdb1 1 2117 1000251 83 Linux
/dev/hdb2 2118 4234 1000282+ 83 Linux


 
  2. 使用 pvcreate 命令将分区建立为 PV.
 
  

# pvcreate /dev/hdb1
Physical volume "/dev/hdb1" successfully created
# pvcreate /dev/hdb2
Physical volume "/dev/hdb2" successfully created

 
  3. 使用 vgcreate 命令将新建的两个 PV 组合成 VG.
 
  
# vgcreate newvg /dev/hdb1 /dev/hdb2
Volume group "newvg" successfully created

 
  之后我们可以发现在 /dev 目录下多了一个名为 newvg 的目录,这就是我们建立的 VG.
 
  4. 使用 lvcreate 命令在 newvg 中建立一个 LV,名为 lv01,大小为 256M.
 
  
# lvcreate -L 256M -n lv01 newvg
Logical volume "lv01" created

 
  可以发现在 /dev/newvg 下多了一个名为 lv01 的符号链接,这就是 LV.
 
  5. 在 lv01 上建立文件系统。
 
  # mke2fs /dev/newvg/lv01
 
  6. 挂接该文件系统。
 
  # mount -t ext2 /dev/newvg/lv01 /root/lv
 
  至此一个 LV 已经建立完毕。我们可以试着增大该 LV 的容量。使用 lvextend 命令将刚刚建立的 LV 增大 128M.扩大容量之后需要使用 resize2fs 命令来扩大原有的文件系统到新的容量。
 
  
# lvextend -L+128M /dev/newvg/lv01
Extending logical volume lv01 to 384.00 MB
Logical volume lv01 successfully resized

# umount /dev/newvg/lv01

# e2fsck -f /dev/newvg/lv01
e2fsck 1.36 (05-Feb-2005)
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/newvg/lv01: 12/65536 files (8.3% non-contiguous), 10336/262144 blocks

# resize2fs /dev/newvg/lv01
resize2fs 1.36 (05-Feb-2005)
Resizing the filesystem on /dev/newvg/lv01 to 393216 (1k) blocks.
The filesystem on /dev/newvg/lv01 is now 393216 blocks long.

# mount -t ext2 /dev/newvg/lv01 /root/lv


   之后马上就可以利用 df -h 命令看到文件系统的容量改变了。

我们也可以利用 vgdisplay 命令来查看 VG 的信息。
 

# vgdisplay newvg
--- Volume group ---
VG Name newvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.91 GB
PE Size 4.00 MB
Total PE 488
Alloc PE / Size 96 / 384.00 MB
Free PE / Size 392 / 1.53 GB
VG UUID YAlPwY-Vlfa-ZBa7-4jPQ-60Gk-Fzwi-jUW8BM


推荐阅读
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文主要讨论了在xps15上安装双系统win10和MacOS后,win10无法正常更新的问题。分析了可能的引导问题,并提供了解决方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
author-avatar
l87653644
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有