Linux命令+shell脚本大全:使用 Linux LVM

免费教程推荐: python、C++、Java、JS、Rust、Go语言入门完全手册(6合1).zip-Python文档类资源-CSDN下载

现在你已经知道Linux LVM可以做什么了,本节将讨论如何创建LVM来帮助组织系统上的硬
盘空间。Linux LVM包只提供了命令行程序来创建和管理逻辑卷管理系统中所有组件。有些Linux
发行版则包含了命令行命令对应的图形化前端,但为了完全控制你的LVM环境,最好习惯直接使
用这些命令。

1. 定义物理卷
创建过程的第一步就是将硬盘上的物理分区转换成Linux LVM使用的物理卷区段。我们的朋
友 fdisk 命令可以帮忙。在创建了基本的Linux分区之后,你需要通过 t 命令改变分区类型。

[...]
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/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa8661341
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
$

分区类型 8e 表示这个分区将会被用作Linux LVM系统的一部分,而不是一个直接的文件系统
(就像你在前面看到的 83 类型的分区)。
说明 如果下一步中的 pvcreate 命令不能正常工作,很可能是因为LVM2软件包没有默认安装。
可以使用软件包名lvm2,按照第9章中介绍的软件安装方法安装这个包。
下一步是用分区来创建实际的物理卷。这可以通过 pvcreate 命令来完成。 pvcreate 定义了
用于物理卷的物理分区。它只是简单地将分区标记成Linux LVM系统中的分区而已。

$ sudo pvcreate /dev/sdb1
dev_is_mpath: failed to get device for 8:17
Physical volume "/dev/sdb1" successfully created
$


说明 别被吓人的消息 dev_is_mpath: failed to get device for 8:17 或类似的消息唬
住了。只要看到了 successfully created 就没问题。 pvcreate 命令会检查分区是否
为多路(multi-path,mpath)设备。如果不是的话,就会发出上面那段消息。

如果你想查看创建进度的话,可以使用 pvdisplay 命令来显示已创建的物理卷列表。

$ sudo pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "2.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 2.01 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 0FIuq2-LBod-IOWt-8VeN-tglm-Q2ik-rGU2w7
$


pvdisplay 命令显示出/dev/sdb1现在已经被标记为物理卷。注意,输出中的 VG Name 内容为
空,因为物理卷还不属于某个卷组。
2. 创建卷组
下一步是从物理卷中创建一个或多个卷组。究竟要为系统创建多少卷组并没有既定的规则,
你可以将所有的可用物理卷加到一个卷组,也可以结合不同的物理卷创建多个卷组。
要从命令行创建卷组,需要使用 vgcreate 命令。 vgcreate 命令需要一些命令行参数来定义
卷组名以及你用来创建卷组的物理卷名。

$ sudo vgcreate Vol1 /dev/sdb1
Volume group "Vol1" successfully created
$


输出结果平淡无奇。如果你想看看新创建的卷组的细节,可用 vgdisplay 命令。
 

$ sudo vgdisplay Vol1
--- Volume group ---
VG Name Vol1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 2.00 GiB
PE Size 4.00 MiB
Total PE 513
Alloc PE / Size 0 / 0
Free PE / Size 513 / 2.00 GiB
VG UUID oe4I7e-5RA9-G9ti-ANoI-QKLz-qkX4-58Wj6e
$

这个例子使用 /dev/sdb1 分区上创建的物理卷,创建了一个名为 Vol1 的卷组。
创建一个或多个卷组后,就可以创建逻辑卷了。
3. 创建逻辑卷
Linux系统使用逻辑卷来模拟物理分区,并在其中保存文件系统。Linux系统会像处理物理分
区一样处理逻辑卷,允许你定义逻辑卷中的文件系统,然后将文件系统挂载到虚拟目录上。
要创建逻辑卷,使用 lvcreate 命令。虽然你通常不需要在其他Linux LVM命令中使用命令
行选项,但 lvcreate 命令要求至少输入一些选项。表8-5显示了可用的命令行选项。

虽然命令行选项看起来可能有点吓人,但大多数情况下你用到的只是少数几个选项。

$ sudo lvcreate -l 100%FREE -n lvtest Vol1
Logical volume "lvtest" created
$


如果想查看你创建的逻辑卷的详细情况,可用 lvdisplay 命令。

$ sudo lvdisplay Vol1
--- Logical volume ---
LV Path /dev/Vol1/lvtest
LV Name lvtest
VG Name Vol1
LV UUID 4W2369-pLXy-jWmb-lIFN-SMNX-xZnN-3KN208
LV Write Access read/write
LV Creation host, time ... -0400
LV Status available 
# open 0
LV Size 2.00 GiB
Current LE 513
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
$

 现在可以看到你刚刚创建的逻辑卷了!注意,卷组名(Vol1)用来标识创建新逻辑卷时要使
用的卷组。
-l 选项定义了要为逻辑卷指定多少可用的卷组空间。注意,你可以按照卷组空闲空间的百分
比来指定这个值。本例中为新逻辑卷使用了所有的空闲空间。
你可以用 -l 选项来按可用空间的百分比来指定这个大小,或者用 -L 选项以字节、千字节
(KB)、兆字节(MB)或吉字节(GB)为单位来指定实际的大小。 -n 选项允许你为逻辑卷指定
一个名称(在本例中称作lvtest)。
4. 创建文件系统
运行完 lvcreate 命令之后,逻辑卷就已经产生了,但它还没有文件系统。你必须使用相应
的命令行程序来创建所需要的文件系统。

$ sudo mkfs.ext4 /dev/Vol1/lvtest
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131376 inodes, 525312 blocks
26265 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7728 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.Use tune2fs -c or -i to override.
$

在创建了新的文件系统之后,可以用标准Linux  mount 命令将这个卷挂载到虚拟目录中,就
跟它是物理分区一样。唯一的不同是你需要用特殊的路径来标识逻辑卷。

$ sudo mount /dev/Vol1/lvtest /mnt/my_partition
$
$ mount
/dev/mapper/vg_server01-lv_root on / type ext4 (rw)
[...]
/dev/mapper/Vol1-lvtest on /mnt/my_partition type ext4 (rw)
$
$ cd /mnt/my_partition
$
$ ls -al
total 24
drwxr-xr-x. 3 root root 4096 Jun 12 10:22 .
drwxr-xr-x. 3 root root 4096 Jun 11 09:58 ..
drwx------. 2 root root 16384 Jun 12 10:22 lost+found
$

注意, mkfs.ext4 和 mount 命令中用到的路径都有点奇怪。路径中使用了卷组名和逻辑卷名,
而不是物理分区路径。文件系统被挂载之后,就可以访问虚拟目录中的这块新区域了。


5. 修改LVM
Linux LVM的好处在于能够动态修改文件系统,因此最好有工具能够让你实现这些操作。在
Linux有一些工具允许你修改现有的逻辑卷管理配置。
如果你无法通过一个很炫的图形化界面来管理你的Linux LVM环境,也不是什么都干不了。
在本章中你已经看到了一些Linux LVM命令行程序的实际用法。还有一些其他的命令可以用来管
理LVM的设置。表8-6列出了在Linux LVM包中的常见命令。

 通过使用这些命令行程序,就能完全控制你的Linux LVM环境。
窍门 在手动增加或减小逻辑卷的大小时,要特别小心。逻辑卷中的文件系统需要手动修整来
处理大小上的改变。大多数文件系统都包含了能够重新格式化文件系统的命令行程序,
比如用于ext2、ext3和ext4文件系统的resize2fs程序。

8.4 小结
在Linux上使用存储设备需要懂一点文件系统的知识。当工作在Linux系统下时,懂得如何在
命令行下创建和处理文件系统能帮上你的忙。本章讨论了如何使用Linux命令行处理文件系统。
Linux系统和Windows的不同之处在于前者支持大量不同的存储文件和目录的方法。每个文
件系统方法都有不同的特性,使其适用于不同的场景。另外,每种文件系统都使用不同的命令与
存储设备打交道。
在将文件系统安装到存储设备之前,你得先备好设备。 fdisk 命令用来对存储设备进行分区,
以便安装文件系统。在分区存储设备时,必须定义在上面使用什么类型的文件系统。
划分完存储设备分区后,你可以为该分区选用一种文件系统。流行的Linux文件系统包括ext3
和ext4。两者都提供了日志文件系统功能,降低它们在Linux系统崩溃时遇到错误或问题的几率。
在存储设备分区上直接创建文件系统的一个限制因素是,如果硬盘空间用完了,你无法轻易
地改变文件系统的大小。但Linux支持逻辑卷管理,这是一种跨多个存储设备创建虚拟分区的方
法。这种方法允许你轻松地扩展一个已有文件系统,而不用完全重建。Linux LVM包提供了跨多
个存储设备创建逻辑卷的命令行命令。
现在你已经了解了核心的Linux命令行命令,差不多是时候开始编写一些shell脚本程序了。
但在开始编码前,我们还有另一件事情需要讨论:安装软件。如果你打算写shell脚本,就需要一
个环境来完成你的杰作。下一章将讨论如何在不同的Linux环境中从命令行下安装和管理软件包。

免费教程推荐: python、C++、Java、JS、Rust、Go语言入门完全手册(6合1).zip-Python文档类资源-CSDN下载

猜你喜欢

转载自blog.csdn.net/tysonchiu/article/details/125873240