共计 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 行业资讯频道!