在本文中了解如何:
- 使用 Linux Logical Volume Manager(LVM)搭建一个 64 位的 Linux 实例(一个 Bronze 级产品)。
- 捕获一个私有映像并将其部署为一个新的 Platinum 级实例。
- 增大 LVM 卷和文件系统,以容纳新的物理卷。
- 使用 Linux LVM 类型的分区跨物理卷配置 LVM。
首先,为可能不熟悉 LVM 的读者介绍 LVM 的概念和测试场景。
Linux LVM 由物理卷(PV)、卷组(VG)和逻辑卷(LV)组成。
- 物理卷:物理硬盘(HDD)、物理硬盘分区(例如 /dev/vdb1)。
- 扩展:PV 被分为多个称为 PE(物理扩展)的块。逻辑扩展(LE)与 PE 一一对应,用于从物理到逻辑卷的映射。
- 卷组:一个由聚合的物理卷组成的虚拟磁盘。VG 可以被逻辑分区为 LV。
- 逻辑卷:充当一个虚拟磁盘分区。在创建完一个 VG 后,您可以在该 VG 中创建多个 LV。LV 可以用作原始块设备、交换设备,或者用于创建像磁盘分区一样(可挂载)的文件系统。
- 文件系统:LV 可以用作原始设备或者交换设备,但更通常的是被 “格式化” 为某种受支持的文件系统,并挂载到确定的挂载点。在这个场景中,我将把 LV 格式化为一个 ext3 文件系统。
- 分区表:您将使用一些工具(例如 fdisk、sfdisk 或者 cfdisk)来操作块设备分区表和创建 Linux LVM(8e)类型的分区。
在(已升级的)Platinum 实例上设置 LVM 的常见步骤如下图所示:
图 1. 图 1. Platinum 实例中的本地 VG 关系
该图描述了一个我们在 /dev/vdc 块设备上创建额外分区的场景。如果我们需要增大这个 PV,那么我们在 vdc: /dev/vdc1 上就只有一个 500GB 的分区。
还要注意的是,您并不仅限于 1 个 VG 或者 1 个 LV。在产品环境中,您可能会看到多个被用作文件系统、原始设备或者 Linux 交换分区的逻辑卷。
IBM Cloud 中的一个常见场景是,将实例升级到一个更高的产品级别,例如 Platinum 级。这意味临时磁盘大小会发生改变。
本文中也使用了这样一个场景,即从 Bronze 64 升级到 Platinum 64。该流程包含以下几个步骤:
- 配置一个 Bronze 级别的 64 位 Linux 实例(RHEL 5.5 或者 SLES 11 SP1)。
- 配置 LVM 使其横跨多个空的块设备。
- 捕获一个私有映像。
- 从捕获的映像部署一个新实例作为 Platinum 实例。
- 从 500GB 块设备和额外的 250GB 块设备(之前它是 350GB;150GB 未分配)的剩余空间创建一个新的 LVM 分区 — 这是备选 1。
- 使用
pvresize增加现有 PV 的大小,并向 VG 添加两个额外的 500GB 块设备(在分完区之后)。 - 调整 LV 和文件系统的大小。
如果您直接从一个 Platinum 实例或者其他产品上开始,只需要对这些步骤稍加修改,以考虑到不同的块设备。
有关 LVM 能做什么以及使用 LVM 的好处等详细内容,请查看 LVM HOWTO 中 What is Logical Volume Management 一节。有关临时存储产品的概述,以及针对 IBM Cloud 中的每种实例大小,对 Linux 操作系统可用的虚拟磁盘设备的布局等详细信息,请参考 A basic understanding of ephemeral storage。
以下是本文中使用的表示法和约定,以及在设置环境时的考虑因素。
表示法和约定
- root 用户在系统中执行的命令带有
root@host#前缀。 - 普通用户在系统中执行的命令带有
user@host $前缀。 - 命令输出由一个换行与命令隔开,并向右缩进一个制表符(Tab)的距离(如下面的代码块所示):
root@host# 1st command - to be run as root
root@host# 2nd command - to be run as root (previous command has no output)
output from 2nd command
user@host$ 3rd command - to be run as user
output from 3rd command
|
环境设置和考虑因素
使用 sudo 来运行需要更高权限的命令(或者 sudo -s)。
不要使用 sudo bash ,因为这会保留 idcuser 环境设置。
示例:/usr/bin/sudo /usr/sbin/lvmdiskscan。
这里要注意两个考虑因素:
- 这些命令适用于 RHEL 5.5 和 SLES 11 SP1 映像。像 RHEL 5.4 等较旧的映像不支持 VirtIO 设备,并且使用 ATA 设备名称(例如
/dev/hda)。此外,默认情况下,遗留映像有一个不同的分区方案,并且在配置时会增加文件系统的大小。如果您希望在遗留映像上设置 LVM,请考虑这些不同之处。 - 许多 LVM 命令支持一个测试标志(
-t、--test)、一个冗余级别标志(-v、--verbose;重复 1 到 3 次以增加详细程度)和一个调试标志(-d、--debug;重复 1 到 6 次以增加发送到日志文件和/或 syslog 的消息的详细程度)。阅读这些命令标志各自的手册页,了解它们会改变什么,然后再使用它们。下面是一段示例代码:
root@host# pvcreate -d -v -t /dev/vdc1
Test mode: Metadata will NOT be updated.
Set up physical volume for "/dev/vdc1" with 734002353 available sectors
Zeroing start of device /dev/vdc1
Physical volume "/dev/vdc1" successfully created
Test mode: Wiping internal cache
Wiping internal VG cache
|
在 SLES 中,LVM 工具的位置是 /sbin 下。在 RHEL 中是 /usr/sbin。利用相对路径调用它们时,您需要将这些位置添加到您的路径中:
user@host$ sudo -s root@host# export PATH=$PATH:/sbin:/usr/sbin |
我强烈建议您,在执行这些步骤之前备份您的数据。
本文将展示如何使用磁盘分区而不是原始块设备来配置 LVM:不建议使用原始块设备,因为会使升级和跟踪已用磁盘变得更加困难。
有多种执行该升级场景的方式。最简单的方式是在 Bronze 实例上备份您的数据,然后升级到一个 Platinum 实例,从头开始重新配置 LVM(包括创建一个新的文件系统),然后还原数据。
增大现有 LVM 是一个更快的方式,但是您仍然应该停下来备份数据。
下面来看如何配置父实例。
在配置父实例时,您应该会在实例上配置 LVM。如果您使用的不是 64 位 Bronze,那么需要对这些步骤作出相应的修改,以匹配该实例上可用的临时存储块设备。例如,在 32 位 Bronze 实例上,您只有一个 175GB 的块设备对 LVM 可用。因此,您不得不修改 vgcreate 命令,只使用分区 /dev/vdb1。
让我们从配置 64 位 Bronze 实例和配置 LVM 的步骤开始。
- 验证哪些块设备可用于创建物理卷。使用
dmesg; cat /proc/partitions检查内核环缓冲区和分区,然后: - 扫描块设备。您可以看到 2 个没有任何分区的磁盘:/dev/vdb、/dev/vdc。忽略 ram 磁盘。
root@host# lvmdiskscan | grep -v ram /dev/vda1 [ 101.94 MB] /dev/root [ 59.90 GB] /dev/vdb [ 500.00 GB] /dev/vdc [ 350.00 GB] /dev/vdd1 [ 4.00 GB] 5 disks 16 partitions 0 LVM physical volume whole disks 0 LVM physical volumes
- 确认块设备不包含任何分区表。
root@host# fdisk -l | grep partition Disk /dev/vdb doesn't contain a valid partition table Disk /dev/vdc doesn't contain a valid partition table
- 创建 Linux LVM 类型的分区,并将其初始化为 LVM 物理卷。
- 创建一个 fdisk 响应文件。第一次运行它时,需要手动在 fdisk 中运行。
root@host# cat > fdisk.lvm.partitions << EOF n p 1 t 8e w EOF
- 生成配置脚本,用于删除现有分区表、重新读取分区表、在块设备上创建一个 8e 分区 ID(Linux LVM)以及将 Linux LVM 分区初始化为 LVM 物理卷。
由于您的映像上的存储配置可能不同,所以一定要理解这些步骤,必要时,在您的实例上手动执行并更正这些步骤。有关详细信息,请在您的实例上输入
man fdisk,以阅读 fdisk 手册页。下面的代码片段生成在未分配块设备上创建 Linux LVM 分区类型的步骤。确保这些磁盘都是您想要添加到 LVM 的适当磁盘。
root@host# for i in $(fdisk -l 2>&1| awk '/valid/{print $2}') do echo "# Partition and initialize LVM PV for device $i" echo dd if=/dev/zero of=$i bs=1024 count=1 # Clear partition table echo blockdev --rereadpt $i # Re-read partition table echo fdisk $i \< fdisk.lvm.partitions # Create Linux LVM partition echo pvcreate ${i}1 # Initialize Physical Volume echo -e "\n" done
这是在 Bronze 实例上运行该脚本的结果:
# Partition and initialize LVM PV for device /dev/vdb dd if=/dev/zero of=/dev/vdb bs=1024 count=1 blockdev --rereadpt /dev/vdb fdisk /dev/vdb < fdisk.lvm.partitions pvcreate /dev/vdb1 # Partition and initialize LVM PV for device /dev/vdc dd if=/dev/zero of=/dev/vdc bs=1024 count=1 blockdev --rereadpt /dev/vdc fdisk /dev/vdc < fdisk.lvm.partitions pvcreate /dev/vdc1
您必须根据您想要添加到 LVM 的磁盘,手动验证并运行这些生成的步骤。不要只是简单地将该结果剪切并粘贴到您的实例上。
- 验证您已经创建了 LVM 分区。
root@host# fdisk -l | grep LVM /dev/vdb1 1 1040253 524287480+ 8e Linux LVM /dev/vdc1 1 728177 367001176+ 8e Linux LVM
- 验证已经创建了 LVM 物理卷。
root@host# lvmdiskscan | grep -v ram /dev/vda1 [ 101.94 MB] /dev/root [ 59.90 GB] /dev/vdb1 [ 500.00 GB] LVM physical volume /dev/vdc1 [ 350.00 GB] LVM physical volume /dev/vdd1 [ 4.00 GB] 3 disks 16 partitions 0 LVM physical volume whole disks 2 LVM physical volumes
- 创建一个新的卷组。
- 使用前一步中定义的物理卷和自动备份选项(
-A)创建一个卷组(本例中叫做 localvg)。root@host# vgcreate -A y localvg /dev/vdb1 /dev/vdc1 Volume group "localvg" successfully created
- 显示卷组属性。
root@host# vgdisplay --- Volume group --- VG Name localvg System ID Format lvm2 Metadata Areas 2 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 2 Act PV 2 VG Size 849.99 GB PE Size 4.00 MB Total PE 217598 Alloc PE / Size 0 / 0 Free PE / Size 217598 / 849.99 GB VG UUID 8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA
- 使用前一步中定义的物理卷和自动备份选项(
- 创建一个新的逻辑卷。
- 创建一个预期大小的新的线性逻辑卷。更多选项请查看
lvcreate手册页,比如指定大小(-L 100GB) 或者 VG 的百分比(-l 20%VG)。root@host# lvcreate -A y -l 100%VG -n datalv localvg Logical volume "datalv" created
- 显示逻辑卷。
root@host# lvdisplay -v Finding all logical volumes --- Logical volume --- LV Name /dev/localvg/datalv VG Name localvg LV UUID 5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj LV Write Access read/write LV Status available # open 0 LV Size 849.99 GB Current LE 217598 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0
- 创建并挂载新的文件系统。
- 为新的文件系统创建一个挂载点。
root@host# mkdir /data
- 将逻辑卷格式化为 ext3。设备名列举在步骤 4b 中的
LV Name\下。 为它指定一个友好的标签(-L)。例如:swap1、“/datalv”。root@host# mkfs.ext3 -L datalv /dev/localvg/datalv mke2fs 1.39 (29-May-2006) Filesystem label=datalv OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 111411200 inodes, 222820352 blocks 11141017 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 6800 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, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 23 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
您可能希望改变运行
fsck的间隔。在大型文件系统上运行fsck会花费很长的时间。同样,数据恢复也要花费很长的时间。 - 创建一个
fstab条目,以便它可以在系统启动时被自动挂载。在/etc/fstab中添加下面这一行。您可以使用任何文本编辑器,例如vi:/dev/localvg/datalv /data ext3 defaults 0 1
或者,您也可以使用
echo和管道:echo \ "/dev/localvg/datalv /data ext3 defaults 0 1" \ >> /etc/fstab
如果您在最后一行使用了
1,请注意fsck可能需要花点时间遍历大型文件系统。此外,在重启机器之后,您也可以使用LABEL=datalv。现在,我们使用 /dev/localvg/datalv。 - 挂载文件系统。
root@host# mount /data
- 检查文件系统是否已经挂载。
root@host# mount | grep data /dev/mapper/localvg-datalv on /data type ext3 (rw)
- 为新的文件系统创建一个挂载点。
- 在 SLES 上配置 LVM 启动服务。这在 RHEL 上不是必需的。
- 启动 LVM 启动服务。
root@host# service boot.lvm start Waiting for udev to settle... Scanning for LVM volume groups... Reading all physical volumes. This may take a while... Found volume group "localvg" using metadata type lvm2 Activating LVM volume groups... 1 logical volume(s) in volume group "localvg" now active
- 在启动时启用 LVM 服务。
root@host# chkconfig --add boot.lvm; chkconfig boot.lvm on boot.lvm 0:off 1:off 2:off 3:off 4:off 5:off 6:off B:on
- 启动 LVM 启动服务。
- 验证并记录 LVM 设置。
- 列出所有的卷。
root@host# vgdisplay --partial --verbose Partial mode. Incomplete volume groups will be activated read-only. Finding all volume groups Finding volume group "localvg" --- Volume group --- VG Name localvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 849.99 GB PE Size 4.00 MB Total PE 217598 Alloc PE / Size 217598 / 849.99 GB Free PE / Size 0 / 0 VG UUID 8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA --- Logical volume --- LV Name /dev/localvg/datalv VG Name localvg LV UUID 5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj LV Write Access read/write LV Status available # open 1 LV Size 849.99 GB Current LE 217598 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Physical volumes --- PV Name /dev/vdb1 PV UUID YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36 PV Status allocatable Total PE / Free PE 127999 / 0 PV Name /dev/vdc1 PV UUID VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls PV Status allocatable Total PE / Free PE 89599 / 0
- 列出块设备 UUID。
root@host# blkid -s UUID /dev/vda1: UUID="2156d173-9113-4157-a8f2-93140013d2a4" /dev/vda2: UUID="c72047bf-3508-46f0-939a-4cf505958b92" /dev/mapper/localvg-datalv: UUID="c033c8e1-0399-4ba4-9897-62d85cfa36bd"
- 列出所有的卷。
- 进行一次快速的测试。
- 将一些文件写到磁盘中,然后验证您能够读取它们。例如,您可以为 home 目录创建一个备份拷贝,然后列出归档内容。您应该看到相同的结果。
root@host# tar zcvvf /data/idcuser.tar.gz /home/idcuser root@host# tar ztvvf /data/idcuser.tar.gz
- 重启您的机器,然后测试文件系统已经挂载,您可以访问数据。
root@host# reboot root@host# tar ztvvf /data/idcuser.tar.gz
- 此时,您也可以在
fstab中使用LABEL表示法。LABEL=datalv /data ext3 defaults 0 1
- 通过手动卸载并挂载文件系统,重启并执行测试,来测试新的
LABEL设备表示法。
- 将一些文件写到磁盘中,然后验证您能够读取它们。例如,您可以为 home 目录创建一个备份拷贝,然后列出归档内容。您应该看到相同的结果。
在本节中,您将关注以下几点:
- 捕获一个私有映像,并用它部署一个新的实例。
- 验证子实例的 LVM 配置。
- 增大子实例中的 LVM。
- 在增大后重新验证 LVM 配置。
比如说,使用 Bronze(或者 Silver 或者 Gold)一段时间之后,您希望升级到更高的产品。从您的实例上捕获一个私有映像,然后根据您捕获的映像部署一个新的实例,并选择希望的更高产品(在本例中为 Platinum)。(这样做最终会得到一个额外的存储空间,您可以将它添加到您的卷组中。)这会对您的应用程序造成一些影响,因为在捕获映像时需要断开实例的电源,并且由该映像部署的实例的主机名、IP 地址和存储配置都会与之前的不同。执行这一步时,应该把这些变更情况考虑进去。同样,在捕获私有映像之前,请先备份数据。
要验证子实例 LVM 配置,请执行以下步骤:
- 验证 LVM 在新实例中仍可正常运行。首先,记录下 LVM 设置。
- 列出所有的卷。
root@host# vgdisplay --partial --verbose Partial mode. Incomplete volume groups will be activated read-only. Finding all volume groups Finding volume group "localvg" --- Volume group --- VG Name localvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 849.99 GB PE Size 4.00 MB Total PE 217598 Alloc PE / Size 217598 / 849.99 GB Free PE / Size 0 / 0 VG UUID 8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA --- Logical volume --- LV Name /dev/localvg/datalv VG Name localvg LV UUID 5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj LV Write Access read/write LV Status available # open 1 LV Size 849.99 GB Current LE 217598 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Physical volumes --- PV Name /dev/vdb1 PV UUID YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36 PV Status allocatable Total PE / Free PE 127999 / 0 PV Name /dev/vdc1 PV UUID VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls PV Status allocatable Total PE / Free PE 89599 / 0
- 列出块设备的 UUID。
root@host# blkid -s UUID /dev/vda1: UUID="2156d173-9113-4157-a8f2-93140013d2a4" /dev/vda2: UUID="c72047bf-3508-46f0-939a-4cf505958b92" /dev/mapper/localvg-datalv: UUID="c033c8e1-0399-4ba4-9897-62d85cfa36bd"
- 列出所有的卷。
- 执行一次快速的测试。
- 将一些文件写到磁盘中,然后验证您可以读取它们。例如,您可以为 home 目录创建一个备份拷贝,然后列出归档内容。您应该看到相同的结果。您还应该可以读取原来父映像上创建的文件。
root@host# tar zcvvf /data/idcuser2.tar.gz /home/idcuser root@host# tar ztvvf /data/idcuser2.tar.gz root@host# tar ztvvf /data/idcuser.tar.gz
- 重启机器,然后测试文件系统已经挂载,您能够访问数据。
root@host# reboot root@host# tar ztvvf /data/idcuser.tar.gz
- 将一些文件写到磁盘中,然后验证您可以读取它们。例如,您可以为 home 目录创建一个备份拷贝,然后列出归档内容。您应该看到相同的结果。您还应该可以读取原来父映像上创建的文件。
要增大子实例中的 LVM,请执行以下步骤:
- 验证块设备可以用于创建物理卷。
- 扫描块设备。您可以看到两个没有任何分区的新磁盘:/dev/vdd 和 /dev/vde。您还可以看到 vdc1 分区只有 350GB;忽略 ram 磁盘。
root@host# lvmdiskscan | grep -v ram /dev/localvg/datalv [ 849.99 GB] /dev/vda1 [ 101.94 MB] /dev/root [ 59.90 GB] /dev/vdb1 [ 500.00 GB] LVM physical volume /dev/vdc1 [ 350.00 GB] LVM physical volume /dev/vdd [ 500.00 GB] /dev/vde [ 500.00 GB] /dev/vdf1 [ 15.99 GB] 6 disks 16 partitions 0 LVM physical volume whole disks 2 LVM physical volumes
- 确认块设备不包含任何分区表。
root@host# fdisk -l | grep partition Disk /dev/vdd doesn't contain a valid partition table Disk /dev/vde doesn't contain a valid partition table
- 确认在 vdc 块设备上有用于另一分区的空间。
root@host# fdisk -l /dev/vdc Disk /dev/vdc: 536.8 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/vdc1 1 728177 367001176+ 8e Linux LVM
- 扫描块设备。您可以看到两个没有任何分区的新磁盘:/dev/vdd 和 /dev/vde。您还可以看到 vdc1 分区只有 350GB;忽略 ram 磁盘。
- 创建一些 Linux LVM 类型的分区,并将它们初始化为 LVM 物理卷。
- 验证 fdisk 响应文件
root@host# cat fdisk.lvm.partitions n p 1 t 8e w
- 生成配置脚本,用于删除现有分区表、重新读取分区表、在块设备上创建一个 8e 分区 ID (Linux LVM)以及将 Linux LVM 初始化为 LVM 物理卷。
我建议您备份由
dd删除的块。您可以进行dd if=device of=backupfile bs=4096 count=1这样的操作。详细内容请阅读dd手册页。也可以使用sfdisk来备份分区表。详细内容请查看手册页。root@host# for i in $(fdisk -l 2>&1 | awk '/valid/{print $2}') do echo "# Partition and initialize LVM PV for device $i" echo dd if=/dev/zero of=$i bs=1024 count=1 # Clear partition table echo blockdev --rereadpt $i # Re-read partition table echo fdisk $i \< fdisk.lvm.partitions # Create Linux LVM partition echo pvcreate ${i}1 # Initialize Physical Volume echo -e "\n" done
该脚本生成以下命令。确保您在运行前验证了这些命令。如果没有验证您使用的是正确的设备,那么可能会造成数据丢失。您应该看到两个被标记为不包含有效分区表的块设备。
# Partition and initialize LVM PV for device /dev/vdd dd if=/dev/zero of=/dev/vdd bs=1024 count=1 blockdev --rereadpt /dev/vdd fdisk /dev/vdd < fdisk.lvm.partitions pvcreate /dev/vdd1 # Partition and initialize LVM PV for device /dev/vde dd if=/dev/zero of=/dev/vde bs=1024 count=1 blockdev --rereadpt /dev/vde fdisk /dev/vde < fdisk.lvm.partitions pvcreate /dev/vde1
- 验证您已经创建了 LVM 分区。
root@host# fdisk -l | grep LVM /dev/vdb1 1 1040253 524287480+ 8e Linux LVM /dev/vdc1 1 728177 367001176+ 8e Linux LVM /dev/vdd1 1 1040253 524287480+ 8e Linux LVM /dev/vde1 1 1040253 524287480+ 8e Linux LVM
- 此时您有两个选项:
- 使用
pvresize增大 350GB 分区。 - 创建一个新的物理卷。
调整现有 PV 的大小更复杂一些,而且容易出错;需要执行以下步骤:
- 卸载数据:
umount/data。 - 停用 VG:
vgchange -an localvg。 - 删除磁盘上旧的分区表,并使用相同的
Start偏移量和默认(最大)End创建一个新的分区表。 - 增大分区:
pvresize /dev/vdc1 - 继续调整 LV 和 FS 大小的正常步骤(
lvresize、e2fsck、resize2fs,等等)。
如何调整现有 PV 的大小不属于本文范畴。如果您希望调整现有 PV 的大小,请确保已经备份了数据,并且很清楚即将要执行的操作。此外,还建议备份您的分区表(使用
dd)。 - 使用
- 选项 1:调整现有 PV 的大小。
出于为您着想,这里给出了调整现有 PV 大小的步骤。如果您选择采用这一选项,请确保您了解会带来的影响,并使用
debug、verbose和test标志测试您的命令,测试输出并具有数据的当前备份。如果您完成了选项 1,请直接跳到 验证 LVM 配置 一节。
如果没有,请跳到下面的选项 2,在现有的 350GB 分区旁边创建另一个 150GB 的分区,然后使用它来扩展 VG。
如果您使用的是 32 位 Linux 实例,您需要修改选项 1,将现有的 PV (/dev/vdb1) 从 175GB 增大到 375GB。记住 32 位映像上的块设备是不同的。在本文中运行的测试中,它是
/dev/vdb。我还跳过了在 32 位实例上执行vgextend的步骤,因为没给出其他块设备。root@host# umount /data root@host# vgchange -an localvg root@host# fdisk /dev/vdc Command (m for help): p Disk /dev/vdc: 536.8 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/vdc1 1 728177 367001176+ 8e Linux LVM Command (m for help): d Selected partition 1 Command (m for help): p Disk /dev/vdc: 536.8 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1040253, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1040253, default 1040253): Using default value 1040253 Command (m for help): p Disk /dev/vdc: 536.8 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/vdc1 1 1040253 524287480+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. root@host# blockdev --rereadpt /dev/vdc root@host# partprobe root@host# pvresize /dev/vdc1 root@host# vgextend localvg /dev/vdd1 /dev/vde1 root@host# lvresize -l 100%VG localvg/datalv Extending logical volume datalv to 1.95 TB Logical volume datalv successfully resized root@host# vgchange -ay localvg root@host# e2fsck -f /dev/localvg/datalv root@host# resize2fs /dev/localvg/datalv Resizing the filesystem on /dev/localvg/datalv to 524283904 (4k) blocks. The filesystem on /dev/localvg/datalv is now 524283904 blocks long. root@host# e2fsck -f /dev/localvg/datalv root@host# mount /data root@host# df -h | grep data /dev/mapper/localvg-datalv 2.0T 199M 1.9T 1% /data
- 选项 2:在只包含一个 350GB 文件系统的块设备上创建另一个分区。在本例中是 /dev/vdc。确保您正在编辑正确的分区表。删除根磁盘分区表会导致数据丢失。由于您映像上的存储配置可能会不同,所以您一定要理解这些步骤,必要时还要在您的实例上手动执行和纠正这些步骤。有关详细信息,请在您的实例中输入
man fdisk,阅读fdisk手册页。root@host# fdisk /dev/vdc The number of cylinders for this disk is set to 1040253. 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): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (728178-1040253, default 728178): Using default value 728178 Last cylinder or +size or +sizeM or +sizeK (728178-1040253, default 1040253): Using default value 1040253 Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 8e Changed system type of partition 2 to 8e (Linux LVM) Command (m for help): p Disk /dev/vdc: 536.8 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/vdc1 1 728177 367001176+ 8e Linux LVM /dev/vdc2 728178 1040253 157286304 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table is used at the next reboot. Syncing disks.
本例中
fdisk的响应文件如下所示:n p 2 t 2 8e w
- 卸载分区,停用卷组,并重新读取分区表;然后激活 VG 并挂载 FS(或者重新启动)。
root@host# umount /data # Umount the filesystem root@host# vgchange -an localvg # Deactivate the volume group root@host# blockdev --rereadpt /dev/vdc # Re-read the partition table # Inform OS of partition table changes: root@host# partprobe root@host# sleep 5; # Wait for partprobe to finish root@host# vgchange -ay localvg # Activate the volume group root@host# mount /data # Mount the filesystem
- 在您之前创建的 150GB 分区上初始化新的物理卷。这也是
lvmdiskscan表明为空的分区。root@host# pvcreate /dev/vdc2 Physical volume "/dev/vdc2" successfully created
- 验证已经创建了 LVM 物理卷。现在,在 /dev/vdc2 条目旁边会显示有
LVM physical volume。root@host# lvmdiskscan | grep -v ram /dev/localvg/datalv [ 849.99 GB] /dev/vda1 [ 101.94 MB] /dev/root [ 59.90 GB] /dev/vdb1 [ 500.00 GB] LVM physical volume /dev/vdc1 [ 350.00 GB] LVM physical volume /dev/vdc2 [ 150.00 GB] LVM physical volume /dev/vdd1 [ 500.00 GB] LVM physical volume /dev/vde1 [ 500.00 GB] LVM physical volume /dev/vdf1 [ 15.99 GB] 4 disks 17 partitions 0 LVM physical volume whole disks 4 LVM physical volumes
- 验证物理卷状态。您可以看到三个未使用在 localvg VG 中 PV。
root@host# [root@vhost0498 ~]# pvs PV VG Fmt Attr PSize PFree /dev/vdb1 localvg lvm2 a- 500.00G 0 /dev/vdc1 localvg lvm2 a- 350.00G 0 /dev/vdc2 lvm2 -- 150.00G 150.00G /dev/vdd1 lvm2 -- 500.00G 500.00G /dev/vde1 lvm2 -- 500.00G 500.00G
- 验证 fdisk 响应文件
- 扩展卷组。
- 扩展
localvg卷组,使其包含新的物理卷,如pvs列出的一样:root@host# vgextend localvg /dev/vdc2 /dev/vdd1 /dev/vde1 Volume group "localvg" successfully extended
- 验证结果。您可以看到一个由所有列出的物理卷组成的 2TB VG。同样,现在
pvs会列出localvg使用的所有 PV;您应该还有 1,150GB 的空闲空间。root@host# vgdisplay --partial --verbose Partial mode. Incomplete volume groups will be activated read-only. Finding all volume groups Finding volume group "localvg" --- Volume group --- VG Name localvg System ID Format lvm2 Metadata Areas 5 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 5 Act PV 5 VG Size 1.95 TB PE Size 4.00 MB Total PE 511995 Alloc PE / Size 217598 / 849.99 GB Free PE / Size 294397 / 1.12 TB VG UUID 8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA --- Logical volume --- LV Name /dev/localvg/datalv VG Name localvg LV UUID 5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj LV Write Access read/write LV Status available # open 1 LV Size 849.99 GB Current LE 217598 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Physical volumes --- PV Name /dev/vdb1 PV UUID YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36 PV Status allocatable Total PE / Free PE 127999 / 0 PV Name /dev/vdc1 PV UUID VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls PV Status allocatable Total PE / Free PE 89599 / 0 PV Name /dev/vdc2 PV UUID cLdGD3-MVIp-sdA7-KGi3-RtBT-xJWI-gobVSl PV Status allocatable Total PE / Free PE 38399 / 38399 PV Name /dev/vdd1 PV UUID wFyYax-NCn6-2egW-FiUc-3GTB-u77k-evVsc6 PV Status allocatable Total PE / Free PE 127999 / 127999 PV Name /dev/vde1 PV UUID ijAwMZ-3Qoc-RPoi-n9EK-vkcM-pd40-9LXlnC PV Status allocatable Total PE / Free PE 127999 / 127999
- 增大逻辑卷(在本文中,会将其增大到 VG 的最大限度)。使用
-L标志来指定大小。您还可以创建一个新的逻辑卷(推荐做法;记住,fsck扫描非常大的文件系统会花费很长的时间)。root@host# lvresize -l 100%VG localvg/datalv Extending logical volume datalv to 1.95 TB Logical volume datalv successfully resized
- 验证结果。您应该有大约 2TB 的 LV。
root@host# lvdisplay --- Logical volume --- LV Name /dev/localvg/datalv VG Name localvg LV UUID 5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj LV Write Access read/write LV Status available # open 1 LV Size 1.95 TB Current LE 511995 Segments 5 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0
- 扩展
- 增大文件系统。
- 通过卸载,运行
fsck和resize2fs,来增大文件系统。root@host# df -h | grep data # Verify FS size 837G 201M 794G 1% /data root@host# umount /data # Umount the filesystem root@host# e2fsck -f /dev/localvg/datalv # Run a filesystem check e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/localvg/datalv: 13/111411200 files (7.7% non-contiguous), 3547488/222820352 blocks root@host# resize2fs /dev/localvg/datalv # Grow filesystem to LV limits root@host# e2fsck -f /dev/localvg/datalv # Run another FS check root@host# mount /data # Mount filesystem resize2fs 1.39 (29-May-2006) Resizing the filesystem on /dev/localvg/datalv to 524282880 (4k) blocks. The filesystem on /dev/localvg/datalv is now 524282880 blocks long.
- 验证新的文件系统大小。
root@host# df -h | grep data /dev/mapper/localvg-datalv 2.0T 199M 1.9T 1% /data
- 通过卸载,运行
要验证 LVM 配置,请执行以下步骤:
- 执行测试。如果要进行更详细的测试,可以将文件系统填充至最大限度,或者使用一个文件系统基准。根据您的实例调整测试文件的大小。例如,在 32 位 Gold 实例上,只能使用一个 300GB 的测试文件(通过设置
count=307200)。root@host# tar zcvvf /data/idcuser3.tar.gz /home/idcuser root@host# tar ztvvf /data/idcuser3.tar.gz root@host# tar ztvvf /data/idcuser.tar.gz # Create a 800GB test file: root@host# nohup dd if=/dev/zero of=/data/800GBtestfile bs=1M \ count=819200 > nohup.out 2>nohup.err & # Monitor file growth root@host# while :; do ls -lha /data/800GBtestfile ; sleep 10; done -rw-r--r-- 1 root root 800G 2011-03-28 18:09 /data/800GBtestfile
- 验证 LVM 配置。
root@host# vgdisplay --partial --verbose Partial mode. Incomplete volume groups will be activated read-only. Finding all volume groups Finding volume group "localvg" --- Volume group --- VG Name localvg System ID Format lvm2 Metadata Areas 5 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 5 Act PV 5 VG Size 1.95 TB PE Size 4.00 MB Total PE 511995 Alloc PE / Size 511995 / 1.95 TB Free PE / Size 0 / 0 VG UUID 8CeTcl-MxuP-NEzw-iMOj-nnhp-dbOG-jXFiBA --- Logical volume --- LV Name /dev/localvg/datalv VG Name localvg LV UUID 5f6V7i-L9zy-9ugw-tqEr-6jza-cTpi-kBisYj LV Write Access read/write LV Status available # open 1 LV Size 1.95 TB Current LE 511995 Segments 5 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Physical volumes --- PV Name /dev/vdb1 PV UUID YpNILa-ZyLn-J4Tc-6gY2-mK9b-Rwqz-m4rZ36 PV Status allocatable Total PE / Free PE 127999 / 0 PV Name /dev/vdc1 PV UUID VJuNGc-sT0k-cJPG-5Ona-LrDr-wRNs-fNx7ls PV Status allocatable Total PE / Free PE 89599 / 0 PV Name /dev/vdc2 PV UUID cLdGD3-MVIp-sdA7-KGi3-RtBT-xJWI-gobVSl PV Status allocatable Total PE / Free PE 38399 / 0 PV Name /dev/vdd1 PV UUID wFyYax-NCn6-2egW-FiUc-3GTB-u77k-evVsc6 PV Status allocatable Total PE / Free PE 127999 / 0 PV Name /dev/vde1 PV UUID ijAwMZ-3Qoc-RPoi-n9EK-vkcM-pd40-9LXlnC PV Status allocatable Total PE / Free PE 127999 / 0
- 重启以确保一切正常。
- 重启。
- 卸载、执行
fsck、挂载、测试读/写访问。
现在,让我们来看看一些管理 LVM 的常用命令。
- 物理卷
pvdisplay- 显示一个物理卷的属性。pvs- 报告有关物理卷的信息。- 卷组
vgdisplay- 显示卷组的属性。vgs- 报告有关卷组的信息。- 逻辑卷
lvdisplay- 显示一个逻辑卷的属性。lvs- 报告有关逻辑卷的信息。
pvck- 检查物理卷元数据。vgck- 检查卷组元数据。
vgrename- 重命名一个卷组。lvrename- 重命名一个逻辑卷。
调整大小时要特别小心,尤其是缩小文件系统和逻辑卷时。
- 小心任何拼写错误、文件系统调整大小工具中的 bug、LVM、大小参数标准(GiB 与 GB)之间的差异,甚至本文中的错误。
- 使用统一单位的大小(例如 512 字节扇区)。
- 为误差留有余地。
- 使用
debug、verbose和test标志来测试 LVM 命令。 - 在正式用于保存数据之前,测试您的新文件系统。
- 手头具有一份最近的、经过测试的备份。
- 确保您熟悉 LVM 和文件系统工具。先在一台拥有相似配置的测试机器上试用一下这些工具。
调整 LVM 和 ext2/3/4 文件系统大小的常用命令:
pvresize- 调整 LVM2 在使用的磁盘或分区的大小。lvextend- 扩展一个逻辑卷的大小。lvreduce- 缩小一个逻辑卷的大小。lvresize- 调整一个逻辑卷的大小。e2fsck- 检查 Linux ext2/ext3/ext4 文件系统。resize2fs- 调整 ext2/ext3/ext4 文件系统的大小。
我在本文中已经演示了 lvresize、e2fsck 和 resize2fs 的使用。
如果您将 LV 缩小到比您调整到的文件系统还小,那么就会发生数据丢失(一下子的事情,并且不可逆)。您肯定不会希望发生这样的事。出于为您着想,这里演示了一个缩小 LV 的流程。
- 卸载文件系统。
- 运行文件系统检查。
- 缩小文件系统。
- 缩小 LV。
下面是一个例子,即缩小文件系统以及相关的 LV,以便为另一个 LV 腾出空间:
# Umount the FS
root@host# umount /data
# Check the FS
root@host# e2fsck -f /dev/localvg/datalv
# Shrink the FS first
root@host# resize2fs -p /dev/localvg/datalv 900G
# Shrink the LV to match the FS size
root@host# lvresize /dev/localvg/datalv --size 900G
# Check the FS
root@host# e2fsck -f /dev/localvg/datalv
# Create a new LV and FS
root@host# lvcreate -A y -L 500GB -n backuplv localvg
root@host# mkfs.ext3 -L backuplv /dev/localvg/backuplv
root@host# mkdir /backup; mount /dev/localvg/backuplv /backup
root@host# mount /data
root@host# df -h | egrep "backup|data"
/dev/mapper/localvg-backuplv
493G 198M 467G 1% /backup
/dev/mapper/localvg-datalv
886G 37G 823G 5% /data |
以上只是一个例子:不要将其复制并粘贴到您的项目中,并期望保留您的数据。您可能还希望参考 LVM 文档的其他主题,例如从 VG 中删除 PV。
您可以备份和还原 LVM 元数据;默认情况下会备份到 /etc/lvm/backup。下面这些是用来管理 LVM 元数据备份/还原的命令:
vgcfgbackup- 备份卷组描述符区。vgcfgrestore- 还原卷组描述符区。
有关使用快照的详细内容,请参考 LVM HOWTO 的 Taking a Backup Using Snapshots 一节。下面这些是用于制作快照的命令:
lvcreate- 在现有卷组中创建一个逻辑卷。这也使用-s标志创建 LV 快照。lvconvert- 将逻辑卷从线性转换为镜像或者快照。
LVM 快照用来捕捉文件系统的一个静止状态。捕获快照时,会分配一个新的 LV 来记录对文件系统的改变。
如果快照卷已满,会丢弃快照(变得不可用)。您应该释放快照,让原有的 LV 回到在线状态。
快照卷应该比期望改变的总量大。
如果您按照原有 LV 的大小创建一个快照,那么它永远不会溢出。
快照通常用于获得一致的备份。
出于为您着想,这里给出了一个创建快照的常用流程:
# Make sure your filesystem is in a consistent state at this point. # You may want to use something like "lsof | grep /data" or umount the filesystem, etc. # Create the snapshot root@host# lvcreate -L 50G -s -n dbbkp /dev/localvg/datalv # Verify the snapshot root@host# lvdisplay # You can restart work on your original FS. # Mount the snapshot root@host# mkdir -p /mnt/localvg/dbbkp root@host# mount /dev/localvg/dbbkp /mnt/localvg/dbbkp # Perform your backup. While you're backing up, # your database is already back up and running. # Hopefully you have something better than: root@host# cd /mnt/localvg/dbbkp; tar zcvpf ~/backup.tar.gz . # Release the snapshot root@host# umount /mnt/localvg/dbbkp root@host# lvremove /dev/localvg/dbbkp root@host# lvdisplay |
不要试图使用 LVM 快照来代替正确的备份。它们会迅速占满磁盘空间。
在一些 LVM 元数据被破坏的情况下,您可能需要还原磁盘 UUID。记住,不管您计划如何还原 UUID,都应该有一个磁盘备份。如果我在数据恢复过程中在实际的生产系统上还原磁盘 UUID,我可能会花点时间,将 VG 中的块设备部分复制到外部存储等设备上(如果我手头没有最近的备份的话)。
出于为您着想,这里给出了还原磁盘 UUID 的流程。您应该适当修改并进行测试(使用 debug、test 和 verbose 标志)。为了测试这种情况,我故意破坏了元数据,如下所示:root@host# pvchange -v -u $(uuidgen) /dev/vdb1 ,然后试图使用 /etc/lvm/backup 中备份文件中的 UUID 来还原它。在破坏元数据之后,pvscan 会报告 "Couldn't find device with uuid IffYl-9cfa-BYhZ-Wt5h-7UOi-YWLx-US8wJ3"。
- 验证元数据:
root@host# vgck -dvvv
- 停用 VG:
root@host# vgchange -an localvg
- 借助于 LVM 备份文件还原正确的磁盘 UUID。使用正确的 UUID。
root@host# pvcreate -ff --restorefile /etc/lvm/backup/localvg \ --uuid 1IffYl-9cfa-BYhZ-Wt5h-7UOi-YWLx-US8wJ3 /dev/vdb1 - 从备份还原配置:
root@host# vgcfgrestore --file /etc/lvm/backup/localvg localvg
- 激活 VG。
root@host# vgchange -ay localvg
- 运行文件系统检查,验证数据的完整性。
图形化工具 system-config-lvm 和 yast2
LVM 还可以使用图形化工具进行管理。关于如何使用 VNC 连接到您的实例,或者配置 SSH X11 不断同步您工作台的画面等详细内容,请参考用户指南。记住,默认情况下,防火墙会阻止 VNC 使用的端口;用户指南中有这方面的说明。在编写本文的时候使用的是 CC V1.4,该文档中这一节的名称是 “Connecting to your Linux instance with VNC”。
通过 VNC 连接到您的实例,启动 yast2,切换到 System > Partitioner,并展开 System View 中的 Volume Management。您可以使用 YaST 2 Expert Partitioner 来创建、删除、扩展 VG 和 LV,创建文件系统,等等: yast2
图 2. 图 2. YaST 2 Expert Partitioner
有关使用 YaST 2 Expert Partitioner 的更多详细信息,请参考 Novell SUSE Linux Enterprise Server Storage Administration Guide。
Red Hat Linux 和 system-config-lvm
在 Red Hat上,您可以使用 system-config-lvm 从图形界面执行 Logical Volume Management。
图 3. 图 3. 使用 system-config-lvm 执行 Red Hat Logical Volume Management
通过执行以上这些步骤,您现在可以使用您的 Linux 映像上的临时存储配置一个 LVM 了。我已经:
- 提供了有关 LVM 组件及使用的背景内容;解释了本文中使用的表示法和如何设置我的测试环境。
- 概述了用来说明从 Bronze 64 升级到 Platinum 64 实例所使用的流程。该流程包含以下一些知识:
- 配置一个 Bronze 64 位 Linux 实例(RHEL 5.5 或者 SLES 11 SP1)。
- 配置 LVM 横跨多个空的块设备。
- 捕获私有映像。
- 以捕获的映像部署一个新的实例,作为 Platinum 实例。
- 从 500GB 块设备和额外的两个 250GB 块设备的剩余空间,创建一个新的 LVM 分区。
- 使用 pvresize 增大现有 PV,并向 VG 添加两个额外的 500GB 块设备(在分完区之后),以此作为上一步的替代步骤。
- 调整 LV 和文件系统的大小。
- 介绍了在较低级别父映像中配置 LVM 的详细步骤。
- 介绍了在升级后的子实例中配置 LVM 的详细步骤。包括
- 捕获私有映像。
- 从捕获的映像部署一个新的实例。
- 验证子实例的 LVM 配置。
- 增大子实例中的 LVM。
- 在增大之后,对 LVM 配置进行 “冒烟测试”。
- 交付了用来管理 LVM 的常用命令清单。
- 并快速讨论了如何使用图形化命令
yast2(用于SLES)和system-config-lvm(用于RHEL)来管理 LVM。
为了继续对该主题的探讨,您应该访问 developerWorks Linux 参考资料;更多有关 IBM SmartCloud Enterprise 的实际应用,请参考本文侧栏中提及的和本文参考资料中找到的主题。
学习
-
Red Hat Enterprise Linux - Logical Volume Manager Administration Guide 介绍了 Red Hat Linux 上的 LVM 配置。
-
Red Hat Enterprise Linux - Storage Administration Guide 介绍了在 Red Hat Linux 上使用 system-config-lvm 配置 LVM。
-
Novell SuSE Linux Enterprise Server - Storage Administration Guide 介绍了 SuSE Linux 上的 LVM 配置。
-
A basic understanding of ephemeral storage 针对 IBM Cloud 的不同实例大小,详细讲解了 Linux 操作系统上可用的虚拟磁盘驱动器布局。
-
Linux Documentation Project Wiki - LVM HOWTO 是 LVM 的主要资源。
-
Recovering a Lost LVM Volume Disk 详细介绍了一些经验,并提供了一种关键的技能。
-
Device-mapper and LVM2 Wiki 包含设计和终端用户文档,以及一个 FAQ 页面。
- The
Linux Logical Volume Manager 维基页面列举了一些功能和实现细节。
-
更多如何在 IBM Cloud 中执行任务的内容,请访问这些资源:
- Up and download files from a Windows instance
- Install IIS web server on Windows 2008 R2
- Create an IBM Cloud instance with the Linux command line
- Create an IBM Cloud instance with the Windows command line
- 使用 IBM Cloud 扩展您的公司网络
- IBM Cloud 中的高可用性应用程序
- 动态自定义云映像实例的参数
- Windows-targeted approaches to IBM Cloud provisioning
- IBM SmartCloud Enterprise 技巧:使用快速部署服务部署产品
- Integrate your authentication policy using a proxy
-
在 developerWorks 云开发人员参考资料中,发现和共享应用程序及服务开发人员为云部署构建项目的知识和经验。
-
后续步骤:找出如何 访问 IBM SmartCloud Enterprise。
- 加入云计算讨论组,了解和讨论云计算的最新技术、解决方案、趋势等内容。
获得产品和技术
-
查看在 IBM SmartCloud Enterprise 上可用的 产品映像。
讨论
-
阅读 developerWorks 上所有 精彩的云博客。
-
加入 developerWorks 社区,一个用于连接、共享和协作的专业网络和统一的社区工具集合。
