Ubuntu Server上的LVM配置

在安装Linux的时候,通常遇到的一个比较头痛的问题就是分区,到底每个区该分多少,用了一段时间之后,某个分区又不够用了,该怎么办?如果是普通的服务器,那一切都好说,大不了就关机重新划分分区嘛,但是对于有些关键的服务器,别说关机,就是停止服务都是不可忍受的。例如:一个虚拟主机服务提供商,本来给/home划了100G空间,在刚开始的第一年,一切都还好,空间够用,等到了第二年,开始搞促销,结果两个月之后,/home分区就只剩下1GB了,而且/var分区估计1个月后也要用完了,怎么办?有没有在不停止服务的前提下,就能动态增加硬盘空间的技术?有,这就是Linux下LVM技术的来历。

LVM全称为Logical Volume Management,它是Linux环境下对磁盘分区进行管理的一种机制,它通过在硬盘和分区上建立一个抽象的逻辑层,来屏蔽分区大小,磁盘空间给用户带来的困难。在LVM中,可以将多个磁盘分区组做成一个存储池,管理员可以在此存储池上随意创建逻辑卷组,再mount到相应的挂载点上去,从而达成动态增加磁盘空间的目的。例如上边的这个例子,当/home分区不够大时,可把磁盘的一部分空间mount到/home上去,这样的话,就可以实现零当机时间来调整磁盘了。

在开始LVM配置之前,先简述几个基本概念和术语:

1. 物理存储介质:

指的是物理的硬盘,在/dev目录下看到的sda,sdb,sdc,hda,hdb,hdc等。

2. 物理卷(Pisical Volume):

指的是物理硬盘上的分区或逻辑上与磁盘分区具有相同功能能的设备,是LVM的基本存储块,但和分区来比,却包含了与LVM管理相关的参数。这个就是前面讲的存储池。

3. 卷组(Volume Group):

LVM的卷组类似于物理硬盘,卷组上边可以建立多个虚拟的“分区”,LVM卷组由一个或多个物理卷组成。

4. 逻辑卷(Logical Volume):

LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷上边可以建立文件系统,用于mount到不同的挂载点,提升分区空间——这是真正跟用户打交道的部分。

5. PE (Physical Extent)

每一个物理卷被划分为一个个的基本存储单元,每一个PE都具有唯一的编址(这个东西类似于物理硬盘上的磁盘地址)。PE的大小默认为4MB。

6. LE(Logical Extent)

每一个逻辑卷也被划分为一个个的基本存储单元,每一个LE也具有一个唯一的编址。在同一个卷组中,LE和PE的大小是相等的。

综上所述,进行一个总结就是,一个或者多个物理硬盘上都可以划分出一个或者多个LVM分区,然后这些分区可以组成一个物理卷(PV),形成一个存储池。用户把这个存储池划分出来一个或者多个LV,挂载到不同的分区上去使用,这个就是LVM的基本原理,也是建立LVM的过程。

结合上边那个例子,如果要为/home和/var分区增加空间,则要有如下步骤:

1. 给服务器装上2块新硬盘

2. 把新硬盘进行分区,并标记为LVM分区

3. 把2块新硬盘上的LVM分区合并起来,组成一个新的物理卷(PV)

4. 把物理卷划分成两个逻辑卷(LV):名字分别是home和var

5. 在这两个逻辑卷上建立文件系统

6. 把这两个逻辑卷挂载到/home和/var上去

现在,开始进行LVM的实践,本文的例子在VMware中进行,磁盘空间只有8GB,和上边的例子不同。

在这台server中,安装了1块硬盘,其分区大小如下:

swap:   384M

/boot:100M

/home:2GB

/var:2GB

/:其余所有空间

现在,发现/home的空间不够了,/var也在告急,于是,我决定为这台Server安装LVM,扩充空间。

【第一步】

关闭虚拟机,增加两块硬盘,两块硬盘的大小均为8GB。由于这是虚拟机,没办法热插拔硬盘,所以只能关机,如果是实体服务器,具备热插拔硬盘接口的,自然就可以省去这一步

【第二步】

再次开机之后,可以在/dev目录下看到新增加的两块硬盘sdb和sdc,原来的那块是sda。

首先,先安装LVM管理软件:

  1. $sudo apt-get install lvm2

然后,查看一下当前系统中的硬盘:

  1. $sudo fdisk -l

可以看到当前系统中有3块硬盘了。

然后,对sdb进行分区:

  1. $sudo 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 0xc3a40868.

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)

Warning: DOS-compatible mode is deprecated. It’s strongly recommended to switch off the mode (command ‘c’) and change display units to sectors (command ‘u’)

不管这个提示,现在开始,在Command(m for help):后输入n,这代表创建新分区

然后系统会提示:

e extend

p primary partition

e代表要创建的是扩展分区,p代表要创建的是主分区。这里输入p,创建主分区。

系统提示partition number(1-4):,我要把这块硬盘的全部空间都分配给/home,不做它用,所以只分1个区就够了,在此处输入1。

然后系统提示First cylinder (1-1044, default 1):默认从第一个柱面开始,这里直接回车就OK。

然后系统提示

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044)

这里是分区大小了,我打算把所有空间全部分配给这个分区,所以直接输入:1044,就把全部空间分配完了。

然后使用p命令,打印出来当前的分区情况。

Device                Boot     Start        End              Blocks              Id       System

/dev/sdb1                          1               1044         8385898+       83       Linux

然后,可以看到这个分区的类型是Linux,现在要把它改为LVM,使用t命令:

系统提示:Hex code (type L to list codes): ,然后输入L命令,查看所有的代码。在系统打印出来的这个表格中,可以看到Linux LVM对应的代码是8e,在这里输入8e,标记完成。这一步做完之后,这块硬盘就算是OK了,记得使用w命令保存。

然后用同样的方法,把/dev/sdc也做一遍。

【第三步】

现在,系统中有了两块新的硬盘:sdb和sdc,并且在上边都建立了LVM分区sdb1和sdc1,现在要做的,就是把这两块硬盘上的两个LVM分区,加入到物理卷(Physical Volume)中去。使用命令:

  1. $sudo pvcreate /dev/sdb1 /dev/sdc1

系统提示:

Physical volume “/dev/sdb1″ successfully created

Physical volume “/dev/sdc1″ successfully created

要删除某个分区也很简单,使用命令:

  1. $sudo pvremove /dev/sdb1

这条命令就可以把/dev/sdb1从物理卷中删除掉了。

创建之后,可以使用pvdisplay命令来查看物理卷的状态:

  1. $pvdisplay

【第四步】

物理卷(PV)创建完毕之后,就把这些分散在一个个的物理硬盘上的LVM分区组成了一个存储池。

现在开始创建逻辑卷组(Volume Group),这个逻辑层将屏蔽掉硬盘、分区,使用户透明地使用LVM功能管理磁盘,使用命令:

  1. $sudo vgcreate extspace /dev/sdb1 /dev/sdc1

系统提示:

Volume group “extspace” successfully created

这样就创建了一个名称为extspace的逻辑卷,创建完毕之后,可以在/dev目录下看到一个名为extspace的设备。

*注:如果已经存在了一个物理卷fileserver,把新的硬盘分区/dev/sdb1加入到该逻辑卷组,其命令是:

  1. $sudo vgextend fileserver /dev/sdb1

当创建了一个逻辑卷组extspace后,删除它的命令是:

  1. $sudo vgremove extspace

查看逻辑卷组的命令是:

  1. $sudo vgdisplay

  1. $sudo vgscan

【第五步】

逻辑卷组(VG)创建好了,现在在上边创建逻辑卷,我将要创建两个逻辑卷,一个叫home_ext,一个叫var_ext,望文生义,一个用来增加/home分区的空间,一个用于增加/var分区的空间。

使用命令:

  1. $sudo lvcreate --name home_ext --size 8G extspace
  2. $sudo lvcreate --name var_ext --size 8G extspace

这两条命令很简单,意思就是,在逻辑卷组(VG)上创建两个大小均为8GB的逻辑卷(LV),其名称分别为home_ext,var_ext

完成之后,系统会提示:

Logical volume “home_ext” created

Logical volume “var_ext” created

使用如下命令可以查看逻辑卷(LV)的情况:

  1. $sudo lvdisplay

系统的输出结果很容易看懂,分别是两个逻辑卷的参数。创建完毕之后,可以在/dev/extspace/下看到两个设备,分别叫home_ext和var_ext

如果要删除逻辑卷,同样很简单,使用命令:

  1. $sudo lvremove /dev/extspace/home_ext

这就删除掉了刚才创建的逻辑卷home_ext。

【第六步】

逻辑卷(LV)创建完毕之后,基本上工作就做完了90%,只需要往挂载点上mount就可以了,在mount之前,如果对逻辑卷的空间大小、名称不满意,还可以修改(当然可以使用删掉重建的办法),LVM提供了相应的命令:

  1. $sudo lvextend -L 10G /dev/extspace/home_ext

这条命令把名为home_ext的逻辑卷(LV)的空间大小增至10G(本例中无法增加,因为创建LVM分区的时候已经使用了所有磁盘空间了)

  1. $sudo lvreduce -L 4G /dev/extspace/home_ext

这条命令把home_ext的逻辑卷(LV)的空间大小缩减至4G

  1. $sudo lvrename extspace/home_ext home_ext1

这条命令把extspace卷组中的逻辑卷(LV)home_ext改名为home_ext1

【第七步】

接下来,就是要在逻辑卷上创建文件系统了,这个文件系统是要和挂载点的文件系统一致的,我没有尝试过在ext4文件系统上挂载FAT32是什么效果,反正我做的都是相同的文件系统。

首先,把home_ext做成ext4文件系统,我的/home分区是ext4的

  1. $sudo mkfs.ext4 /dev/extspace/home_ext

再把var_ext做成ext4文件系统,我的/var分区也是ext4的

  1. $sudo mkfs.ext4 /dev/extspace/var_ext

做好之后,就可以挂载逻辑卷了。

  1. $sudo mount /dev/extspace/home_ext /home
  2. $sudo mount /dev/extspace/var_ext /var

至此,空间不足的问题得以解决!

可以查看挂载的文件系统,使用df -h命令。

【第八步】

到第七步就完成了LVM的配置,但是考虑到服务器也会有重启的时候,而重启之后,这几个逻辑卷是不会自动挂载的,所以需要修改/etc/fstab文件(修改之前先保留一个备份):

  1. $sudo vi /etc/fstab

增加如下几行:

view plaincopy to clipboardprint?

  1. /dev/extspace/home_ext /home ext4 rw,noatime 0 0
  2. /dev/extspace/var_ext /var ext4 rw,noatime 0 0

重启验证,一切正常。

时间: 2024-07-29 04:30:40

Ubuntu Server上的LVM配置的相关文章

Ubuntu Server 13.10 安装配置图解教程

一.Ubuntu Server 13.10系统安装 Ubuntu分为桌面版(desktop)和服务器版(Server),下面为大家介绍服务器版本Ubuntu Server 13.10的详细安装过程. 附Ubuntu Server 13.10系统镜像下载地址: 32位:http://releases.ubuntu.com/13.10/ubuntu-13.10-server-i386.iso 64位:http://releases.ubuntu.com/13.10/ubuntu-13.10-serv

ubuntu server nginx 安装与配置

一:关于nginx http://wiki.ubuntu.org.cn/Nginx http://nginx.org/cn http://wiki.nginx.org/NginxChs 二:ubuntu server 安装 如果你之前安装了 apache2服务,请先停止掉 sudo service apache2 stop sudo apt-get install nginx #安装 安装完成之后,打开  localhost测试 安装成功之后,默认会开启nginx服务,可自行关闭,启动,重启 s

一、Ubuntu Server上安装Matlab,利用X11和Putty输出窗口到Windows桌面(环境选择)

最近有点迷上Server版的Ubuntu,内存占用实在是太低了,系统稳定.反应快.这种环境下,运行Matlab应该是最完美的. 网上随便搜搜也会发现,Linux的Matlab要普遍比Windows的快,毕竟单纯从系统环境看,后者是要臃肿得多.我个人还挺喜欢Windows 8的,但经老婆测试发现,Windows 8下Matlab速度明显比Windows 7慢,有时候i7处理器甚至跑不过年迈的Core2--由此可见,系统对Matlab的影响是十分大的. 看电影也都知道了,高阶运算/并行运算都是基于L

Ubuntu server上安装Postgis的记录

因项目需要在Ubuntu Server 14.04上安装Postgresql 9.3, PostGIS 2.1 过程不复杂,因为不太熟悉linux环境,也并不顺利,特在此记录一下过程. 1. 安装指导Postgresql 9.3, PostGIS 2.1 过程参见http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt 安装指南中同时安装PGAdmin 1.18.1,是一个图形化的管理工具,如果在桌面版的linux

Ubuntu Server 上在安装Nginx时执行./confgiure后提示:C compiler cc is not found

场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102828075 在上面进行安装Nginx前配置检查时提示: checking for C compiler .. not found ./configure: error: C compiler cc is not found 注: 博客: https://blog.csdn.net/ba

一起来当网管(一)——Windows Server上的DHCP配置

学校实验室里大大小小设备还不少,网络环境虽说不复杂,但也比家用的复杂一些.就当练练手吧,刚好写点文章,免得以后实验室网络没人管了.那么就先从DHCP的配置来讲吧! 1.DHCP是什么.有什么用 DHCP.Dynamic Host Configuration Protocol,动态主机配置协议.是一个在局域网里应用的网络协议.基于UDP.serverport号为67,client为68.IPv6版本号的为546.因为IPv6在实验室这边的设备上没法正常支持.所以这里就不详细讲IPv6相关的内容.

Ubuntu server安装MySQL并配置远程连接

1.  在Ubuntu server 安装MySQL(过程中注意记住设置的密码) Sudo apt-get install mysql Sudo apt-get install mysql-server Sudo apt-get install mysql-client 备注:此处遇到MySQL无法安装的问题,提示dpkg:error processing package open-vm-tools(--configure)错误,解决方法是清除open-vm-tools之后重新安装,sudo a

Ubuntu server中静态IP配置

(1)修改IP 配置文件 /etc/network/interfaces 加入以下语句:auto eth0iface eth0 inet staticaddress 192.168.2.86 #IP地址netmask 255.255.255.0 #子网掩码gateway 192.168.2.1 #网关 (2)修改DNS 配置文件 /etc/resolv.conf 加入以下语句:nameserver 192.168.2.1 #希望修改成的DNS nameserver 8.8.8.8 这里有点有问题

二、Ubuntu Server上安装Matlab,利用X11和Putty输出窗口到Windows桌面(环境安装)

一.系统安装 具体操作省略--不需要特别注意什么.如果一定要勾选预定设置,可以把OpenSSH Server在系统安装时预先安装了.如果没有或忘记是否安装,请执行: sudo apt-get install openssh-server 二.X11服务器和Openbox的安装 sudo apt-get install xorg    # 安装X11 sudo apt-get install openbox obconf menu 安装完成后,可以从命令行执行startx进入图形界面. Openb