2008年12月23日星期二

调整LVM2和ext2或ext3文件系统大小的过程




转自 http://kbase.redhat.com/faq/docs/DOC-11824


建议在对包含重要数据的分区作操作之前先在不包含重要数据的文件系统中进行调整大小的测试。强烈建议在调整前文件系统之前创建和校对数据备份。文章接下来部 分描述了一个未分区空间测试逻辑卷和ext3文 件系统调整的方案。

 


这个测试过程中,首 先在一个未分区的磁盘空间创建一个分区(假 设为/dev/hda2)。 然后在该分区上创建物理卷,卷组(TestVG)和
逻辑卷(TestLV)。 最后在逻辑卷上创建ext3文 件系统, 检查之后,挂载使 用。用未分区磁盘空间创建新的物理卷(/dev/hda3),
并添加卷组和逻辑卷。最后,调整现有逻辑卷中的文件系统的大小, 并 且检查整个文件系统的数据一致性。

 

在测试过程中, 用 到parted ,lvm,mount,mkfs.ext3,de,e2fsck和ext2online程 序。读者被鼓励通过阅读命令手册来熟悉程序。例如:

 

<code class="jive-code"><br /><br /> # man parted<br /> PARTED(8) GNU Parted Manual PARTED(8)<br /> NAME<br /> GNU Parted - a partition manipulation program<br /> SYNOPSIS<br /> parted [options] [device [command [options...]...]]<br /> ...<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>parted和lvm程 序可以在交互和非交互模式下运行。这篇文章的所有样例都使用非交互模式。可在线查阅parted和lvm程序的内置可用命令, 来理解命令语法。</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>为新的物理卷创建一个分区。</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>执行parted命令,并用print显示可用的未分区磁盘空间:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # parted /dev/hda print<br /> Disk geometry for /dev/hda: 0.000-76318.054 megabytes<br /> Disk label type: msdos<br /> Minor Start End Type Filesystem Flags<br /> 1 0.031 101.975 primary ext3 boot<br /> 4 31118.093 76316.594 extended<br /> 5 31220.099 76316.594 logical ext3 lvm<br /> Information: Don't forget to update /etc/fstab, if necessary.<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>这种情况下,parted print命令显示设备/dev/hda从101.975(分 区1的 末端)到31118.093(分 区4的 开始)间 仍有未分配空间。</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>用parted mkpart命令在可用磁盘空间中创建分区,然后用parted print命令验证:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # parted /dev/hda "mkpart primary 101.976 2500"<br /> Information: Don't forget to update /etc/fstab, if necessary.<br /> # parted /dev/hda print<br /> Disk geometry for /dev/hda: 0.000-76318.054 megabytes<br /> Disk label type: msdos<br /> Minor Start End Type Filesystem Flags<br /> 1 0.031 101.975 primary ext3 boot<br /> 2 101.975 2502.312 primary ext3<br /> 4 31118.093 76316.594 extended<br /> 5 31220.099 76316.594 logical ext3 lvm<br /> Information: Don't forget to update /etc/fstab, if necessary.<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>在新分区上创建逻辑卷</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>lvm可用于操作LVM2卷 组、逻辑卷和物理卷。首先,用lvm pvs列出已存在的物理卷。然后用pvcreate在 新分区上创建物理卷,然后再次执行lvm pvs验 证物理卷:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # lvm pvs<br /> PV VG Fmt Attr PSize PFree<br /> /dev/hda5 VolGroup00 lvm2 a- 44.03G 0<br /> # lvm pvcreate /dev/hda2<br /> Physical volume "/dev/hda2" successfully created<br /> # lvm pvs<br /> PV VG Fmt Attr PSize PFree<br /> /dev/hda2 lvm2 -- 2.34G 2.34G<br /> /dev/hda5 VolGroup00 lvm2 a- 44.03G 0<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>为一个新的逻辑卷创建卷组</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>创建一个新的卷组前,至少要有一个物理卷是可用的。物理卷用于创建卷组.注意本例中'VolGroup00'卷 组已存在:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # lvm vgs<br /> VG #PV #LV #SN Attr VSize VFree<br /> VolGroup00 1 2 0 wz--n 44.03G 0<br /> # lvm vgcreate TestVG /dev/hda2<br /> Volume group "TestVG" successfully created<br /> # lvm vgs<br /> VG #PV #LV #SN Attr VSize VFree<br /> TestVG 1 0 0 wz--n 2.34G 2.34G<br /> VolGroup00 1 2 0 wz--n 44.03G 0<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>注 意卷组需要用lvm vgchange -a y激活:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # lvm vgchange -a y TestVG<br /> 0 logical volume(s) in volume group "TestVG" now active<br /> Now there is a new directory in /dev for the volume group:<br /> # ls -ld /dev/TestVG<br /> drwx------ 2 root root 60 Jan 17 17:48 /dev/TestVG<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>在 新卷组中创建一个测试逻辑卷</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>将 所有卷组的自然限度(可 用磁盘空间)分 配给一个新的逻辑卷。用 lvm vgdisplay 显示TestVG卷 组的详细信息:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # lvm vgdisplay TestVG<br /> --- Volume group ---<br /> VG Name TestVG<br /> System ID<br /> Format lvm2<br /> Metadata Areas 1<br /> Metadata Sequence No 1<br /> VG Access read/write<br /> VG Status resizable<br /> MAX LV 0<br /> Cur LV 0<br /> Open LV 0<br /> Max PV 0<br /> Cur PV 1<br /> Act PV 1<br /> VG Size 2.34 GB<br /> PE Size 4.00 MB<br /> Total PE 598<br /> Alloc PE / Size 0 / 0<br /> Free PE / Size 598 / 2.34 GB<br /> VG UUID ebStj9-3KYx-asoc-JBt3-N9kU-vONW-4VdpTB<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>卷 组的空闲范围是"Free PE / Size 598 / 2.34 GB",可以用value 598在lvm lvcreate中 创建一个逻辑卷:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # lvm lvs<br /> LV VG Attr LSize Origin Snap% Move Copy%<br /> LogVol00 VolGroup00 -wi-ao 43.03G<br /> LogVol01 VolGroup00 -wi-ao 1.00G<br /> # lvm lvcreate -l598 TestVG -nTestLV<br /> Logical volume "TestLV" created<br /> # lvm lvs<br /> LV VG Attr LSize Origin Snap% Move Copy%<br /> TestLV TestVG -wi-a- 2.34G<br /> LogVol00 VolGroup00 -wi-ao 43.03G<br /> LogVol01 VolGroup00 -wi-ao 1.00G<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>现 在在目录/dev/TestVG下 创建了一个新设备:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # ls -l /dev/TestVG<br /> total 0<br /> lrwxrwxrwx 1 root root 25 Jan 17 17:48 TestLV -> /dev/mapper/TestVG-TestLV<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>新设备是个符号链接,它链接到/dev/mapper/TestVG-TestLV,其节点由device-mapper创建。</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>在 新逻辑卷上创建一个文件系统.</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>逻 辑卷上的新文件系统用程序mkfs.ext3 创建:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # mkfs.ext3 /dev/TestVG/TestLV<br /> mke2fs 1.35 (28-Feb-2004)<br /> max_blocks 627048448, rsv_groups = 19136, rsv_gdb = 149<br /> Filesystem label=<br /> OS type: Linux<br /> Block size=4096 (log=2)<br /> Fragment size=4096 (log=2)<br /> 306432 inodes, 612352 blocks<br /> 30617 blocks (5.00%) reserved for the super user<br /> First data block=0<br /> Maximum filesystem blocks=629145600<br /> 19 block groups<br /> 32768 blocks per group, 32768 fragments per group<br /> 16128 inodes per group<br /> Superblock backups stored on blocks:<br /> 32768, 98304, 163840, 229376, 294912<br /> Writing inode tables: done<br /> inode.i_blocks = 7160, i_size = 4243456<br /> Creating journal (8192 blocks): done<br /> Writing superblocks and filesystem accounting information: done<br /> This filesystem will be automatically checked every 35 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>用e2fsck检 测文件系统:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # e2fsck -f /dev/TestVG/TestLV<br /> e2fsck 1.35 (28-Feb-2004)<br /> Pass 1: Checking inodes, blocks, and sizes<br /> Pass 2: Checking directory structure<br /> Pass 3: Checking directory connectivity<br /> Pass 4: Checking reference counts<br /> Pass 5: Checking group summary information<br /> /dev/TestVG/TestLV: 11/306432 files (9.1% non-contiguous), 18728/612352 blocks<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>安 装新文件系统</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>先 创建一个安装点,在这个安装点上安装新的逻辑卷文件系统。安装后,运 行df来 校验可用磁盘空间:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # mkdir /mnt/test<br /> # mount /dev/TestVG/TestLV /mnt/test<br /> # df -h /mnt/test<br /> Filesystem Size Used Avail Use% Mounted on<br /> /dev/mapper/TestVG-TestLV<br /> 2.3G 36M 2.2G 2% /mnt/test<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>LVM大小调整步骤如下。</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>这 是调整文件系统大小的大体步骤。首先添加一个物理卷。</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>在 这之前,创建一个分区以供物理卷使用。使用parted,运 行print查 看分区,然 后用mkpart创 建一个分区:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # parted /dev/hda print<br /> Disk geometry for /dev/hda: 0.000-76318.054 megabytes<br /> Disk label type: msdos<br /> Minor Start End Type Filesystem Flags<br /> 1 0.031 101.975 primary ext3 boot<br /> 2 101.975 2502.312 primary ext3<br /> 4 31118.093 76316.594 extended<br /> 5 31220.099 76316.594 logical ext3 lvm<br /> Information: Don't forget to update /etc/fstab, if necessary.<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>2502.312(分 区2末)和31118.093(分 区4始)之 间 有可用的未分区磁盘空间:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # parted /dev/hda "mkpart primary 2502.313 31118.092"<br /> Information: Don't forget to update /etc/fstab, if necessary.<br /> # parted /dev/hda print<br /> Disk geometry for /dev/hda: 0.000-76318.054 megabytes<br /> Disk label type: msdos<br /> Minor Start End Type Filesystem Flags<br /> 1 0.031 101.975 primary ext3 boot<br /> 2 101.975 2502.312 primary ext3<br /> 3 2502.312 31118.093 primary<br /> 4 31118.093 76316.594 extended<br /> 5 31220.099 76316.594 logical ext3 lvm<br /> Information: Don't forget to update /etc/fstab, if necessary.<br /> # ls -l /dev/TestVG<br /> total 0<br /> lrwxrwxrwx 1 root root 25 Jan 17 17:48 TestLV -> /dev/mapper/TestVG-TestLV<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>创建物理卷</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>和之前一样在/dev/hda3上 用lvm pvcreate创建一个物理卷:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # lvm pvs<br /> PV VG Fmt Attr PSize PFree<br /> /dev/hda2 TestVG lvm2 a- 2.34G 0<br /> /dev/hda5 VolGroup00 lvm2 a- 44.03G 0<br /> # lvm pvcreate /dev/hda3<br /> Physical volume "/dev/hda3" successfully created<br /> # lvm pvs<br /> PV VG Fmt Attr PSize PFree<br /> /dev/hda2 TestVG lvm2 a- 2.34G 0<br /> /dev/hda3 lvm2 -- 27.94G 27.94G<br /> /dev/hda5 VolGroup00 lvm2 a- 44.03G 0<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>在 卷组中添加物理卷</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>用lvm vgextend命 令将物理卷添加到TestVG卷 组中:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /> # lvm vgextend TestVG /dev/hda3<br /> Volume group "TestVG" successfully extended<br /> # lvm pvs<br /> PV VG Fmt Attr PSize PFree<br /> /dev/hda2 TestVG lvm2 a- 2.34G 0<br /> /dev/hda3 TestVG lvm2 a- 27.94G 27.94G<br /> /dev/hda5 VolGroup00 lvm2 a- 44.03G 0<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>在 卷组中扩展逻辑卷</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>和 之前一样,首 先用命令lvm vgdisplay查看物理卷的范围。它显示TestVG在"Free PE / Size 7153 / 27.94 GB"中 有7153个 空闲的范围区域:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /># lvm vgdisplay TestVG<br />--- Volume group ---<br />VG Name TestVG<br />System ID<br />Format lvm2<br />Metadata Areas 2<br />Metadata Sequence No 3<br />VG Access read/write<br />VG Status resizable<br />MAX LV 0<br />Cur LV 1<br />Open LV 1<br />Max PV 0<br />Cur PV 2<br />Act PV 2<br />VG Size 30.28 GB<br />PE Size 4.00 MB<br />Total PE 7751<br />Alloc PE / Size 598 / 2.34 GB<br />Free PE / Size 7153 / 27.94 GB<br />VG UUID ebStj9-3KYx-asoc-JBt3-N9kU-vONW-4VdpTB<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>若想使用卷组上所有的空闲物理卷,使用 lvextend 命令和选项“-l+7153” 来完成操作。将空闲7153M空间添加到逻辑卷:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /># lvm lvextend -l+7153 /dev/TestVG/TestLV<br />Extending logical volume TestLV to 30.28 GB<br />Logical volume TestLV successfully resized<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>此时的文件系统拥有足够的空间供逻辑卷扩展调整文件系统。扩展卷组和逻辑卷后,就可以调整文件系统了.用 ext2online来完成。首先校验文件系统大小,执行调整,然后再次确认大小:</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /># df -h /mnt/test<br />Filesystem Size Used Avail Use% Mounted on<br />/dev/mapper/TestVG-TestLV<br />2.3G 36M 2.2G 2% /mnt/test<br /># ext2online /dev/TestVG/TestLV<br />ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b<br /># df -h /mnt/test<br />Filesystem Size Used Avail Use% Mounted on<br />/dev/mapper/TestVG-TestLV<br />30G 39M 29G 1% /mnt/test<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>调整后检验文件系统的完整性,检验文件系统之前需要把文件系统卸载。否则有如下提示</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /># e2fsck -f /dev/TestVG/TestLV<br />e2fsck 1.35 (28-Feb-2004)<br />/dev/TestVG/TestLV is mounted.<br />WARNING!!! Running e2fsck on a mounted filesystem may cause<br />SEVERE filesystem damage.<br />Do you really want to continue (y/n)? no<br />check aborted.<br /><br /></code></pre><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><p>卸 载文件系统,检查文件系统。</p><p style="padding: 0px; min-height: 8pt; height: 8pt;"> </p><pre class="jive-pre"><code class="jive-code"><br /><br /># umount /mnt/test<br /># e2fsck -f /dev/TestVG/TestLV<br />e2fsck 1.35 (28-Feb-2004)<br />Pass 1: Checking inodes, blocks, and sizes<br />Pass 2: Checking directory structure<br />Pass 3: Checking directory connectivity<br />Pass 4: Checking reference counts<br />Pass 5: Checking group summary information<br />/dev/TestVG/TestLV: 11/3919104 files (9.1% non-contiguous), 132827/7937024 blocks<br /><br /></code>

 

结论

 

联机调整文件系统的测试过程非常复杂.所 以在实际操作中,对程序和命令的熟悉十分重要,诸如备份重要数据等操作时,一定要做好预防措施,这 样才能在调整文件系统时万无一失。





没有评论: