linux下使用逻辑卷(LVM)实现多块硬盘的整和与可持续扩充

2024-04-04 18:48

本文主要是介绍linux下使用逻辑卷(LVM)实现多块硬盘的整和与可持续扩充,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来自:http://space.baidu.com/hl_jacky/blog/item/69c942e88d623bd8d439c952.html

操作环境:RedHat Linux AS 4 update 5;联想服务器SCSI硬盘4块

声明:本章内容只针对LVM相关操作,其中涉及到fdisk分区软件,操作系统安装等读者请自行学习

现在由于硬盘越来越大,和一些应用的特殊需要,往往需要一个巨大而又可持续扩充的存储空间。

实现这个目标一般有两种途径

1、购买新的硬盘,这样的新设备虽然价格高但是性能好而且维护方便,但是无法实现根据应用的适时扩充。

2、利用现有的多块盘通过逻辑卷功能将其整合到一起,不必增加新的投入,却获得了一个新的大容量存储设备并且该设备还可以进行适时扩展

下边我们谈一下如何配置和使用逻辑卷:

准备工作:建立逻辑卷需要空的分区或硬盘若干——大于等于1个(块)

为新建立的存储设备准备一个挂载点吧!不然建好了怎么用啊?

现在正式开始我们的LVM旅程

1、使用linux自带的分区工具fdisk对分区或硬盘进行操作,这一步一定要看好了啊,不然错杀忠良可怪不得高某人。过程如下

[root@VPNSERV ~]# fdisk -l                                                                                   ####查看当前系统中有那些可用设备

Disk /dev/sda: 36.7 GB, 36703934464 bytes                                                     ####这个看来没法用了应该是操作系统所在的盘PASS
63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id System
/dev/sda1   *           1          13      104391   83 Linux
/dev/sda2              14        1925    15358140   83 Linux
/dev/sda3            1926        2435     4096575   82 Linux swap
/dev/sda4            2436        4462    16281877+   5 Extended
/dev/sda5            2436        4462    16281846   83 Linux

Disk /dev/sdb: 36.7 GB, 36703918080 bytes                                                      ####这个是块空盘只有一个linux分区看来可以使用啊(当然了是我新挂上的)
63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id System
/dev/sdb1               1        4462    35840983+ 83 Linux                                     ####这里可以看到该分区的ID标识为83,组建LVM需要的ID是8e,否则无法建立PV后边我们将修改该ID

Disk /dev/sdc: 36.7 GB, 36703918080 bytes                                                      ####这个也是新挂的盘也是只有一个linux分区
63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id System
/dev/sdc1               1        4462    35840983+ 83 Linux                                     

对于如何判断哪个分区/硬盘正在使用可以利用mount命令查看,新插入的磁盘一定没有被mount上,那么结合fdisk的结果和e2lable把所有正在使用的磁盘排除,剩下的大致就是可以随便搞的了


[root@VPNSERV ~]# fdisk /dev/sdb                                                                      ####使用fdisk对第一块空盘进行分区和修改分区的操作,fdisk有一个好处是在你使用w提交修改前随便怎么弄都可以。

The number of cylinders for this disk is set to 4462.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p                                                                                         ####分区之前使用p打印一下当前的分区表,这是个好习惯,可以再次确认这是不是你要操作的盘

Disk /dev/sdb: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id System
/dev/sdb1               1        4462    35840983+ 83 Linux                                       ####看到当前已经有一个分区了,ID是83我们直接把它修改了就行

Command (m for help): t                                                                                           ####是用t来为分区打/修改标记
Selected partition 1                                                                                                    ####对哪个分区进行操作,这里只有一个所以添1
Hex code (type L to list codes): 8e                                                                           ####输入新的标记8e
Changed system type of partition 1 to 8e (Linux LVM)                                        ####提示该分区变成LVM分区了

Command (m for help): p                                                                                         ####再次使用p查看分区情况

Disk /dev/sdb: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id System
/dev/sdb1               1        4462    35840983+ 8e Linux LVM                                 ####果然分区ID变为8e了

Command (m for help): w                                                                                          ####以上所有操作确认没有问题了下定决心使用w进行存盘操作
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[[root@VPNSERV ~]# fdisk /dev/sdc                                                                           ####另一块盘也照上边的步骤操作不再多说

The number of cylinders for this disk is set to 4462.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sdc: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id System
/dev/sdc1               1        4462    35840983+ 83 Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdc: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id System
/dev/sdc1               1        4462    35840983+ 8e Linux LVM

Command (m for help): w                                                                                      ####好了存盘
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

到这里为止,分区的准备已经完成了,lvm的构成分区不知有没有个数限制,不过十几个还是可以的,相信没有谁会弄几百个分区来做这个吧?那样的人不是疯子也累疯了!

LVM是一个层次结构的系统,最底层是由许多分区构成的PV层也就是虚拟分区层,PV层之上的是VG虚拟磁盘组曾,最上边的是应用层LV层这一层可以象磁盘一样格式化和使用,当然分区也可以,不过好不容易弄了个大的你又要把它分小了,这不是有病么????


[root@VPNSERV ~]# pvcreate /dev/sdb1 /dev/sdc1                                            ####使用pvcreate把两个分区加入到新pv里,多个分区的时候也这么写只要分区间用空格格开就行
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
[root@VPNSERV ~]# vgcreate data /dev/sdb1 /dev/sdc1                                    ####使用vgcreate把两个分区放到名字叫data的VG中,执行完以后可以在/drv中看到新创建的data目录
Volume group "data" successfully created
[root@VPNSERV ~]# lvcreate -n lvdata -L 60000M data                                     ####使用lvcreate命令创建一个LVM设备名为lvdata 大小是60G 该设备属于VG data ;-n参数为LVM设备命名;-L参数为LVM设备指定空间大小,这里是60000MB即60G;最后跟VG设备名,命令执行完成后在/dev/data /下出现lvdata设备,这个就是我们可以使用的块设备了。
Logical volume "lvdata" created
[root@VPNSERV ~]# ls /dev/data/
lvdata
[root@VPNSERV ~]# mkfs.ext3 /dev/data/lvdata                                                   ####使用mkfs.ext3对LVM设备lvdata进行格式化
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
7684096 inodes, 15360000 blocks
768000 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=16777216
469 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424

Writing inode tables: done                           
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information:
done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

[root@VPNSERV ~]# mount /dev/data/lvdata /usr/local/www/                                ####格式化之后就可以把LVM设备挂载到一个目录下使用了,使用时和别的硬盘没有区别
[root@VPNSERV ~]# mount                                                                                          ####挂载后使用mount命令查看
/dev/sda2 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sda1 on /boot type ext3 (rw)
/dev/sda5 on /data type ext3 (rw)
none on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/mapper/data-lvdata on /usr/local/www type ext3 (rw) <<<<<<<—————挂载后的lvm设备

这篇关于linux下使用逻辑卷(LVM)实现多块硬盘的整和与可持续扩充的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/876581

相关文章

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-