lvm如何使用

148次阅读
没有评论

共计 6839 个字符,预计需要花费 18 分钟才能阅读完成。

这篇文章主要为大家展示了“lvm 如何使用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“lvm 如何使用”这篇文章吧。

lvm 的使用

lvm 是很有用的,在一个生产系统中,如果空间不够用,在没有用 lvm 之前,要想扩容是很不方便的
要找一个想扩大到你想要容量的存储,然后要把原有数据导入到新的设备中,对原有设备也是一种
浪费,有了 lvm 就不一样了,我可以在不改变原有系统的条件下,直接对对系统怎加存储空间

下面是我 146 的硬盘的分区情况,我这个服务器计划用户 oracle 数据库

一些空间变化不大的分区我还是采用 ext3 格式,但一些 0 空间变化很大的分区,我采用了 lvm
这样对于以后的扩展做充分的准备

[root@dbolap ~]# df -h
Filesystem  Size  Used Avail Use% Mounted on
/dev/sda1  981M  202M  730M  22% /
none  1004M  0 1004M  0% /dev/shm
/dev/sda8  2.0G  36M  1.8G  2% /tmp
/dev/sda6  3.9G  2.0G  1.8G  53% /usr
/dev/sda7  2.0G  115M  1.8G  7% /var
/dev/mapper/vg_home-lv_home
  9.6G  54M  9.1G  1% /home
/dev/mapper/vg_u01-lv_u01
  110G  92M  105G  1% /u01
[root@dbolap ~]#

一.lvm 的使用步骤:

1). 建立 LVM 类型的分区  (8e) 
2). 建立 LVM 物理巻 PV 
3). 建立 LVM 巻组 VG 
4). 建立 LVM 逻辑巻 LV 
5). 建立文件系统  
6). 挂接文件系统  
7). 使用文件系统

二.lvm 开机自动挂载

fstab 文件的作用:

文件 /etc/fstab 存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过 mount /directoryname 命
令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或 tab 键分开。同时 fsck、mount
、umount 的等命令都利用该程序。

lvm 开机自动 mount,可以修改 /etc/fstab 文件,然后重新启动机器即可

eg:
 
[root@dbolap ~]# vi /etc/fstab

# This file is edited by fstab-sync – see man fstab-sync for details
LABEL=/  /  ext3  defaults  1 1
none  /dev/pts  devpts  gid=5,mode=620  0 0
none  /dev/shm  tmpfs  defaults  0 0
none  /proc  proc  defaults  0 0
none  /sys  sysfs  defaults  0 0
LABEL=/tmp  /tmp  ext3  defaults  1 2
LABEL=/usr  /usr  ext3  defaults  1 2
LABEL=/var  /var  ext3  defaults  1 2
LABEL=SWAP-sda5  swap  swap  defaults  0 0
/dev/vg_home/lv_home  /home  ext3  defaults  1 0
/dev/vg_u01/lv_u01  /u01  ext3  defaults  1 0
/dev/hda  /media/cdrom  auto  pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
/dev/scd0  /media/cdrecorder  auto  pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
~
~
下面简单介绍下 fstab 文件的格式说明:

下面是 /etc/fatab 文件的一个示例行:

fs_spec fs_file fs_type fs_options fs_dump fs_pass 
/dev/hda1 / ext2 defaults 1 1

fs_spec – 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:
IDE 设备一般描述为 /dev/hdaXN,X 是 IDE 设备通道(a, b, or c),N 代表分区号;SCSI 设备一描述为 /dev/
sdaXN。对于 NFS 情况,格式一般为:

, 例如:`knuth.aeb.nl:/。对于 procfs,使用 `proc 来定义。

fs_file – 该字段描述希望的文件系统加载的目录点,对于 swap 设备,该字段为 none;对于加载目录名包
含空格的情况,用 40 来表示空格。

fs_type – 定义了该设备上的文件系统,一般常见的文件类型为 ext2 (Linux 设备的常用文件类型)、vfat
(Windows 系统的 fat32 格式)、NTFS、iso9600 等。

codepage 国家语言代码页

iocharset 字符集

fs_options – 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于
大多数系统使用 defaults 就可以满足需要。其他常见的选项包括: 
选项 含义  
ro 以只读模式加载该文件系统  
sync 不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度  
user 允许普通用户加载该文件系统  
quota 强制在该文件系统上进行磁盘定额限制  
noauto 不再使用 mount -a 命令(例如系统启动时)加载该文件系统

fs_dump – 该选项被 dump 命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为 0

fs_pass – 该字段被 fsck 命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统 / 对应该字段的值应该为 1,
其他文件系统应该为 2。若该文件系统无需在启动时扫描则设置该字段为 0

三.lvm 的 lv 在线扩容方法

通常我们操作 pvextend 之后,必须执行 resize 的相关命令才可以。通常安全起见,都是 offline 下,也就是 umount 之后才做的。
但是有时候我们是不可以让某些生产系统 offline 的。所以必须保证 online 的前提下来 extend 相应的 LV。

以下就是在 Online 情况下,对于以下的文件系统类型所应执行的命令。

1:ext3
ext2online  /dev/foovg/lvbar

2:reiserfs
resize_reiserfs  /dev/foovg/lvbar

3:xfs
xfs_growfs /dev/foovg/lvbar

4:jfs
mount -o remount,resize /dev/foovg/lvbar
严格来说,jfs 这个不能算作 online 操作。如果恰好这个 mounting 的分区正存在 IO 操作,恐怕这样执行会出问题。所以这个保留,稍后我再查找一下。

四.lvm 常用命令

LVM 创建和使用收藏
A、概念:
1).PV(Physical Volume): 物理巻, 处于 LVM 最底层, 可以是物理硬盘或者分区。

2).VG(Volume Group): 巻组, 建立在 PV 之上, 可以含有一个到多个 PV。 
3).LV(Logical Volume): 逻辑巻, 建立在 PV 之上,相当于原来分区的概念。不过大小可动态改变。 
4).PE(Physical Extend): 物理区域,PV 中可以用于分配的最小存储单位, 可以在建立 PV 时指定,如 1,2,4,8… …64M, 同一 VG 中的所有 PV 的 PE 应该相同。 
5).LE(Logical Extend): 逻辑区域,LV 中可以用于分配的最小存储单元, 取决于 LV 所在 PV 中 PE 的大小,是 PE 的整数倍。 
6).VGDA(Volume Group Descriptor Area): 巻组描述区域,存在于每个 PV 中,用于描述该 PV 本身、PV 所含 VG、VG 中的 LV 以及 LV 中的物理区域分配等信息,在使用 pvcreate 命令建立 PV 时建立。 
B、步骤:
1). 建立 LVM 类型的分区  
2). 建立 LVM 物理巻 PV 
3). 建立 LVM 巻组 VG 
4). 建立 LVM 逻辑巻 LV 
5). 建立文件系统  
6). 挂接文件系统  
7). 使用文件系统
 
C、命令
1).PV(物理巻) 相关
1 pvdisplay: 显示 PV 属性
2 pvscan: 在系统所有硬盘上查找 PV 
3 pvcreate: 创建 PV(在 PV 上初始化 VGDA)
  例如: 为 /dev/hda1 创建了 PV
  [root@mylinux]# pvcreate /dev/hda1
 
4 pvdata: 显示某个 PV 的详细信息
  例如:
  [root@mylinux]# pvdata /dev/hda1 
5 pvchange: 改变 PV 属性  
6 pvmove: 在 PV 间移动 PE/LE 
2).VG 相关
1 vgdisplay: 显示 VG 巻组属性  
2 vgscan: 查找系统现有 VG 巻组  
3 vgcreate: 创建 VG 巻组(在 VG 上初始化 VGDA)
  例如: 创建包含物理巻 hda1 和 hdb1 的逻辑巻组 demoVG1
  [root@mylinux]# vgcreate demoVG1 /dev/hda1 /dev/hdb1 
4 vgdata: 显示 VG 巻组上的 VGDA 信息  
5 vgchange: 改变 VG 巻组属性
  此命令有两个常用的参数:
  -a:,–available{y|n}: 在操作 VG 时, 控制一个 VG 的可使用性, 换句话说控制一个 VG 能否被系统内核识别。 
  -x,–allocation{y|n}: 控制一个 VG 能否被扩充或者缩减(控制一个 VG 内的 PV 能否被分配)。 
6 vgmove: 在 VG 巻组间移动 PE/LE 
7 vgextend: 用于向 VG 中添加新的 PV
  例如:[root@mylinux]# vgextend demoVG1 /dev/hdd1 
8 vgreduce: 用于从 VG 中删除 PV
  例如:[root@mylinux]# vgreduce demoVG1 /dev/hdd1 
9 vgmerge: 用于合并巻组。待合并的 VG 必须处于非活动状态。
  例如: 将 demoVG21 和 demoVG2 合并到 demoVG1 中并显示结果:
  [root@mylinux]# vgmerge demoVG1 demoVG2
  vgmerge –ERROR:volume group demoVG2 must be inactive 
  [root@mylinux]# vgchange -a n demoVG2
  vgchange –volume group demoVG2 successfully deactivated 
  [root@mylinux]# vgmerge demoVG1 demoVG2
  vgmerge –doing automatic backup of volume group demoVG1
  vgmerge –volume group demoVG2 successfully merged into demoVG1

10 vgsplit: 用于拆分已经存在的 VG,VG 必须处于活动状态。
  例如:
  [root@mylinux]# vgchange -a y demoVG2
  [root@mylinux]# vgsplit demoVG2 demoVG4 /dev/hdd2 /dev/hdd5 /dev/hdd6 /dev/hdd7 
11 vgremove: 用于删除 VG, 要求待删除的 VG 必须处于非激活状态。
  例如:
  [root@mylinux]# vgchange -a n demoVG1
  [root@mylinux]# vgremove demoVG1 
12 vgrename: 用于重命名 VG, 不要求 VG 处于非激活状态。
  例如:
  [root@mylinux]# vgrename demoVG2 demoVG3 
13 vgck: 用于检测 VG 中 VGDA 的一致性。 
14 vgcfgbackup: 备份系统所有 VG 中各物理巻的 VGDA 信息到 /etc/lvmconf
  [root@mylinux]# vgcfgbackup 
15 vgcfgrestore: 用于从 /etc/lvmconf 恢复系统所有 VG 中各物理巻的 VGDA 信息。VG 必须处于非激活状态。 
16 vgmknodes: 用于 vgcfgrestore 后, 重建节点信息, 重建已有巻组的巻组目录和其中的设备文件。
  例如:
  [root@mylinux]# vgchange -a n demoVG3
  [root@mylinux]# vgmknodes 
17 vgexport: 用于输出巻组。待输出巻组必须为非激活状态。巻组中的物理巻需要被转移到其它系统中使用时,就需要使用这个命令。
  例如:
  [root@mylinux]# vgchange -a n demoVG3
  [root@mylinux]# vgexport demoVG3
18 vgimport: 用于输入巻组。
  例如:
  [root@mylinux]# vgimport demoVG1 /dev/hdd1 
3).LV 相关
1 lvdisplay: 显示 LV 的属性 2 lvscan: 查找系统现有 LV 
3 lvcreate: 创建 LV 
4 lvdata: 显示 LV 上的 LVDA 信息  
5 lvchange: 改变 LV 属性
  例如:
  [root@mylinux]# lvchange -a n /dev/demoVG1/demoLV11 
6 lvmove: 在 LV 间移动 PE/LE 
7 lvextend: 扩展 LV 容量。LVM 的最突出特点就是随时动态的调整 LV 空间大小。
  例如:
  [root@mylinux]# lvscan|grep LV11
  lvscan –ACTIVE  /dev/demoVG1/demoLV11 [200MB]
  [root@mylinux]# lvextend -L +10m /dev/demoVG1/demoLV11 (为 demoLV11 增加 10MB 的空间) 
8 lvreduce: 减小 LV 容量。
  例如:
  [root@mylinux]# lvextend -L -10m /dev/demoVG1/demoLV11 (为 demoLV11 减少 10MB 的空间) 
9 lvrename:LV 重命名
  例如:
  [root@mylinux]# lvrename /dev/demoVG1/demoLV11 /dev/demoVG1/demoLV01 
10 lvremove: 删除 LV(逻辑巻)
  例如:
  [root@mylinux]# lvremove /dev/demoVG1/demoLV01  11 resize2fs/e2fsadm/resize_reiserfs: 类似于 extend 命令。 
4). 创建文件系统
1 使用命令 mkfs 在 demoLV31 上创建 ext3 类型的分区:
  [root@mylinux]# mkfs -t ext3 /dev/demoVG3/demoLV31
 
2 使用命令 mkfs.ext3 在 demoLV31 上创建 ext3 分区:
  [root@mylinux]# mkfs.ext3 /dev/demoVG3/demoLV31 
3 使用命令 mkreiserfs 在 demoLV31 上创建 reiserfs 分区:
  [root@mylinux]# mkreiserfs /dev/demoVG3/demoLV31 
4 使用命令 mkjfs 在在 demoLV31 上创建 jfs 分区:
  [root@mylinux]# mkfs.jfs /dev/demoVG3/demoLV31 
5). 挂接文件系统
先建立四个目录:
 [root@mylinux]# mkdir /mnt/mnt_lv11 /mnt/mnt_lv12 /mnt/mnt_jfs /mnt/mnt_reiserfs
挂接命令:
1 mkfs 挂接:
 [root@mylinux]# mount -t ext3 /dev/demoVG3/demoLV31 /mnt/mnt_lv11 
2 mkfs.ext3 挂接:
 [root@mylinux]# mount /dev/demoVG3/demoLV31 /mnt/mnt_lv12 
3 mkjfs 挂接:
 [root@mylinux]# mount -t jfs /dev/demoVG3/demoLV31 /mnt/mnt_jfs 
4 mkreiserfs 挂接:
 [root@mylinux]# mount -t reiserfs /dev/demoVG3/demoLV31 /mnt/mnt_reiserfs 
6). 使用
 *** 略 *** 
7).LVM 相关命令
1 lvmdiskscan: 检测硬盘和分区中的逻辑巻管理信息
2 lvmsadc: 收集逻辑巻的读写统计信息
3 lvmsar: 查看 LVM 的日志文件信息
4 lvmchange: 复位 LVM 组件

以上是“lvm 如何使用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计6839字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)