Linux命令行与shell编程 第7章 管理文件系统

本章内容

  • 什么是文件系统
  • Linux文件系统
  • 文件系统命令


使用Linux系统时,你需要作的决策之一是存储设备用什么文件系统。安装时大多数Linux发行版会为系统提供一个默认的文件系统,大多数入门级用户想都不想就用默认的那个。使用默认文件系统也不算糟糕,但了解一下可用的选择有时也会有所帮助。本章将探讨Linux世界里可选用的不同文件系统,并向你演示如何在命令行上创建和管理它们。

7.1 探索Linux文件系统

第3章讨论了Linux如何通过文件系统来丰存储设备上存储文件和目录。文件系统为Linux提供了从硬盘中存写的0和1到你在应用中用到的文件和目录之间的的桥梁。

Linux支持多种类型的文件系统管理文件和目录。每种文件系统都在存储设备上实现了虚拟目录结构,只是特性略有不同。本章将带你逐步了解Linux环境中较常用的文件系统 的优点和缺陷。

7.1.1 基本的Linux文件系

最早,Linux系统用的是模仿Unix文件系统功能的一个简单文件系统。本节将讨论那个文件系统的演进过程。

    1. ext文件系统

        Linux操作系统中引入的最早的文件系统 叫做扩展文件系统(extended filesystem,简记为ext)。它为Linux提供了一个基本的类Unix文件系统:使用虚拟目录来操作硬件设备,在物理设备上按定长的块来存储数据。

        ext文件系统采用称作索引节点的系统来存放虚拟目录中所有存储文件的信息。索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件的信息。存储在虚拟目录中的每一个文件在索引节点表中都有一个条目。条目名称的扩展部分来自其跟踪每个文件的额外数据,包括:

            文件名;

            文件大小;

             文件的属主

            文件的属组

             文件的访问权限

             指向存有文件数据的每个硬盘块的指针。

              Linux通过唯一的数据(称作索引节点号)来引用索引节点表中的每个索引节点,这个值是创建文件时由文件系统分配的。文件系统通过索引节点号而不是文件全名及路径来标识文件。

    2. ext2文件系统

            最早的ext文件系统有不少限制,比如文件大小不得超过2GB。在linux出现不久,ext文件系统就升级到了第二扩展文件系统,称作为ext2。

            如你所猜的,ext2文件系统是ext文件系统基本功能的一个扩展,但维护着同样的结构。ext2文件系统扩展了索引节点表的格式来保存系统上每个文件的更多信息。

            ext2的索引节点表为文件添加了创建时间值、修改时间值和最后访问时间值来帮助系统管理员追踪文件的访问情况。ext2文件系统还将允许的最大文件大小增加到了2TB(在ext2的后期版本中,增加到了32TB),以容纳数据库服务器中常见的大文件。

            除了扩展索引节点表外,ext2文件系统还改变了文件在数据块中存储的方式。ext文件系统常见的问题是在文件写入到物理设备时,存储数据用的块很容易就分期在整个设备上(称作碎片化,fragmentation)。数据块的碎片化会降低文件系统的性能,因为需要更长的时间查找存储设备来访问选定文件的所有块。

            保存文件时,ext2文件系统通过按组分配 磁盘块来减轻碎片化。通过将数据块分组,文件系统不需要为了数据块查找整个物理设备来读取文件。

            多年里,ext文件系统都是Linux发行版采用的默认文件系统。但它也有一些限制。索引节点表虽然支持文件系统保存有关系统的更多信息,但会造成以系统来说致命的问题。文件系统每次存储或更新文件,它都要用新信息来更新索引节点表。但它并不是连成一气的。

            如果在存储文件和更新索引节点表的过程中,计算机系统发生了什么事情,这二者就不同步了。ext2文件系统由于容易在系统崩溃或断电时损坏臭名昭著。这样即使文件数据正常地保存到了物理设备上,如果索引节点表记录没完成更新,ext2文件系统甚至不知道那个文件存在。

            很快开发人员就开始尝试开发不同的Linux文件系统了。

7.1.2 日志文件系统

日志文件系统给Linux系统增加了一层安全性。取代了之前先将数据直接写入存储设备再更新索引节点表的做法,日志文件系统会先将文件的更改写入到临时文件(称作日志,journal)中,然后在数据成功写到存储设备和索引节点表之后,再删除对应的日志条目。

如果系统在数据被写入到存储设备之前崩溃了或断电了,日志文件系统下次会读取日志文件并处理上次留下的未写入的数据。

Linux中有3种不同的广泛使用的日志访求,每个都有不同等级的保护。如表7-1所示。

方法 描述
数据模式 索引节点和文件都会被写入日志,丢失数据风险低,但性能差
排序模式 只有索引节点数据会被写入日志,但只有灵气成功写入后才删除,性能和安全之产的良好折中
回写模式 只有索引节点数据写入日志,但不管文件数据何时写入,丢失数据风险高,但仍比不用日志好

数据模式日志方法目前为止最安全的保护数据的方法,但它同时也是最慢的。所有写到存储设备上的数据都必须写两次:第一次写到日志,第二次写到真正的存储设备上。这样会导致性能很差,尤其是对要做大量数据写入的系统。

 多年来,在Linux上还出了一些共创日志文件系统。后面几节将会详述常见的Linux日志文件系统。

7.1.3 扩展的Linux日志文件系统

开发ext和ext2文件系统的同一组人,作为Linux项目的一部分,也开发了这两个文件系统的支持日志版本。这些日志文件系统同ext2文件系统美容,并且很容易在它们之间转换。现在有基于ext2文件系统的两个独立的日志文件系统。

1. ext3 文件系统

2001年,ext3文件系统加到了Linux内核中,直到最近都是几乎所有Linux发行版本默认的文件系统。它采用和ext2文件系统相同的索引节点表结构,但给每个存储设备增加了一个日志文件,来将准备写入存储设备的数据先写进日志文件。

默认情况下,ext3文件系统用排序模式的日志功能----只将索引节点信息写入日志文件,直到数据块都被成功写入存储设备才删除。你可以在创建文件系统时用简单的一个命令行选项将ext3文件系统的日志方法改成数据模式或回写模式。

虽然ext3文件系统为Linux文件系统添加了基本的日志功能,但它仍然缺一些东西。 例如ext3文件系统无法恢复误删的文件,这没有任何内建的数据压缩功能(虽然有个需单独安装的补丁支持这个功能),ext3文件系统也不支持加密文件。鉴于这些原因,Linux项目的开发人员选择继续做些工作来提高ext3文件系统。

2. ext4文件系统

扩展ext3文件系统功能的结果就是ext4文件系统。ext4文件系统在2008年时被Linux内核官方支持,现在已是大多数流行的Linux发行版采用的默认文件系统,比如Fedora和Ubuntu。

除了支持数据压缩和加密,ext4文件系统还支持一个称作区段(extent)的特性。区段在存储设备上按块分配空间,但在索引节点表中只保存起始块的位置。由于无需列出所有用来存储文件数据的数据块,它可以在索引节点表中节省一些空间。

ext4还整合了块预分配(block preallocation)。如果你想在存储设备上给一个你知道要变大的文件预留空间,通过ext4文件系统你可以为文件分配所有期望的块,不只是物理上存在的块。ext4文件系统用0填满预留的数据块,并知道不要将它们分配给其他文件。

3. Reiser文件系统

4.JFS文件系统

5. XFS文件系统

7.2 操作文凭系统

Linux提供了一些不同的工具,可以让在命令行下操作文件系统更为方便。你可以通过自己的键盘舒服地创建新的文件系统或者悠已有的文凭系统。本节将会带你逐步了解在命令行下同文件系统交互的命令。

7.2.1 创建分区

一开始,你必须在存储设备上创建分区来容纳文件系统。分区可以是整个硬盘,也可以是硬盘的一部分,来容纳虚拟目录的一部分。

fdisk工具用来帮助管理安装在系统上的任何存储设备上的分区。fdisk命令是人交互式程序。允许你输入命令来逐步走完给硬盘分区的步骤。

要启动fdisk命令,你必须指定要分区的存储设备的设备名:

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xc8079b33 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):

如果这是你第一次给该存储设备分区,fdisk会警告你设备上没有分区表。

fdisk交互式命令提示符使用单字母命令来告诉fdisk做什么。表7-2显示了fdisk命令白提示符下的可用命令。

 表7-2 fdisk命令


命令    描述
a  toggle a bootable flag,设置一个标识,说明这个分区是可启动的
b  edit bsd disklabel,编辑BSD Unix系统用的磁盘标签
c toggle the dos compatibility flag,设置DOS兼容标识
d

 delete a partition,删除分区                                                                                                                                                                                

l  list known partition types,显示可用的分区类型
m print this menu,显示命令选项
n  add a new partition,添加一个新分区
o  create a new empty DOS partition table,创建DOS分区表
p

 print the partition table,显示当前分区表   、 

q quit without saving changes,退出,不保存更改
s create a new empty Sun disklabel,为Sun Unix系统创建一个新磁盘标签
t  change a partition's system id,修改分区的系统ID
u change display/entry units,改变使用的存储单位
v  verify the partition table,验证分区表
w  write table to disk and exit,将分区表写入磁盘
x extra functionality (experts only),高级功能

    尽管看上去很恐怖,但实际上你在日常工作中用到的只有几个基本命令。对于初学者,你可以用p命令将一个存储设备的详细信息显示出来:

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc8079b33

   设备 Boot      Start         End      Blocks   Id  System

输出说明这个存储设备有10.7GB的空间。存储设备明细后的列表了这个设备上是否已有分区。这个例子中的输出中没有显示任何分区,所以设备还未分区。

下一步,你要在该存储设备上创建新的分区。用n命令来创建:

命令(输入 m 获取帮助):n
分区号 (1-8,默认 1):1
起始 扇区 (0-20964825,默认 0):
Last 扇区 or +扇区 or +size{K,M,G,T,P} (0-20964825,默认 20964825):+2G
分区 1 已设置为 Linux native 类型,大小设为 2 GiB

分区可以按主分区(primary partition)或扩展分区(extended partition)创建。主分区可以被文件系统直接格式化,而扩展分区只能容纳其他主分区。扩展分区出现的原因是每个存储设备上只能有4个分区。你可以通过创建多个扩展分区然后在扩展分区内创建主分区来进行扩展。上例中创建了一个主分区,在存储设备上给它分配了分区号1,然后给它分配了2GB的存储设备空间。你可以再用p命令来查看结果:

命令(输入 m 获取帮助):p

Disk /dev/sdb (Sun disk label): 255 heads, 63 sectors, 1305 cylinders
Units = 扇区 of 1 * 512 bytes

   设备 Flag    Start       End    Blocks   Id  System
/dev/sdb1             0   4194304   2097152   83  Linux native
现在输出中该存储设备上有了一个分区(叫做/dev/sdb1).Id那列定义了Linux怎么对待该分区。fdisk允许创建多种分区类型。使用l命令列出可有的不同类型。默认类型是83,定义了一个Linux文件系统。如果你想为其他系统创建一个分区(比如Windows的NTFS分区),只要选择一个不同的分区类型。

你可以重复上面的过程,将存储设备上剩下的空间分配给另一个Linux分区,在你创建了想要的分区后,用w命令来将更改保存到存储设备上:

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

有了存储设备的一个分区后,你可以在Linux系统上对其进行格式化了。

说明:有时创建新的硬盘分区的最难之处在于找到Linux系统上的物理磁盘。Linux在给硬盘分配设备名时采用标准格式,但你需要熟悉这种格式。对于较早的IDE硬盘。Linux用/dev/hdx,其中x代表基于硬盘发现顺序的字母(a代表第一块硬盘,b代表第二块硬盘,从此类推)。对于较新的SATA硬盘和SCSI硬盘,Linux采用/dev/sdx,其中x代表硬盘发现的顺序(同样,a代表第一块硬盘,b代表第二块,以此类推)。在格式化分区以前,再三检查,保住你用的是正确的盘,你会一真受益。

7.2.2 创建文件系统

在将数据存储到这个分区之前,你必须用某种文件系统格式化它,这样Linux才能用它。每种文件系统类型都用自己的命令行程序来格式化分区。表7-3列出了本章中讨论的不同文件系统所对应的工具。

7-3 创建文件系统的命令行程序

工具 用法
mkefs 创建一个ext文件系统
mke2fs 创建一个ext2文件系统
mkfs.ext3 创建一个ext3文件系统
mkfs.ext4 创建一个ext4文件系统
mkreiserfs 创建一个ReiserFS文件系统
jfs_mkfs 创建一个JFS文件系统
mkfs.xfs 创建一个XFS文件系统

每个文件系统命令都有很多命令行选项,允许你定制创建在那个分区上的文件系统。要查看所有可用的命令选项,可用man命令来显示该文件系统命令的手册页面(参见第2章)。所有的文件系统命令都允许通过不带选项的简单命令来创建默认文件系统:

[root@localhost ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

这个新的文件系统采用ext4文件系统类型,是Linux上的日志文件系统。注意,创建过程中有一部分是创建新的日志。

为分区创建了文件系统之后,下一步是将它挂载到虚拟目录下的某个挂载点,这样就可以将数据存储在新文件系统中了。你可以将新文件系统挂载到虚拟目录中需要额外空间的任何位置。

[root@localhost ~]# mkdir /mnt/testing
[root@localhost ~]# mount -t ext4 /dev/vdb1 /mnt/testing
[root@localhost ~]# ls -al /mnt/testing/
总用量 20
drwxr-xr-x. 3 root root  4096 6月   6 10:23 .
drwxr-xr-x. 3 root root    20 6月   6 10:31 ..
drwx------. 2 root root 16384 6月   6 10:23 lost+found

mkdir命令会在虚拟目录中创建挂载点,mount命令会将新的硬盘分区添加到挂载点。现在你可以在新分区中保存新文件和目录了。

注意:这种挂载文件系统的方法只会临时挂载该文件系统。当重启Linux系统时,文件系统不会自动挂载。要强制Linux在启动时自动挂载这个新文件系统,可以将文件系统添加到/etc/fstab文件中。

本章演示了如何处理物理存储设备中的文件系统。 Linux还提供了一些不同方法来为文件系统创建逻辑存储设备。下一节将会演示如何使用逻辑存储设备。

7.2.3 如果出错了

即使是最好的日志文件系统,突然断电或正在访问文件时有程序锁定了系统,可能也会出错。幸而有一些可用的命令行工具可以帮你尝试将文件系统恢复正常状态。

每个文件系统都有自己的和文件系统交互的恢复命令。这可能会让系统变得很难用,因为在Linux环境中有越来越多文件系统可用也会造成越来越多的要知道的命令。好在有个共用的前端,它可以决定存储设备上的文件系统并根据要恢复的文件系统调用对应的文件系统恢复命令。

fsck命令用来检查和修复任意类型的Linux文件系统。包括本章早些时候讨论的所有文件系统--ext、ext2、ext3、ext4、 ReiserFS、JFS和XFS。该命令的格式是:

fsck options filesystem

fsck命令使用/etc/fstab文件来自动决定挂载到系统上的存储设备的文件系统。如果存储设备通常不挂载(比如你刚刚在新的存储设备上创建了个文件系统),你需要用-t命令选项来指定文件系统类型。表7-4列出了其他可用的命令行选项。

                            表7-4 fsck命令行选项

选项 描述
-a 如果检测到错误,自动修复文件系统
-A 检查/etc/fstab文件中列出的所有文件系统
-C 结支持进度条功能的文件系统显示一个进度条(只有ext2和ext3)
-N 不进行检查,只显示哪些检查会执行
-r 出现错误时提示
-R 使用-A选项时跳过根文件系统
-s 检查多个文件系统时,依次进行检查
-t 指定要检查的文件系统类型
-T  启动时不显示头信息
-V 在检查时产生详细输出
-y

检测到错误时自动修改文件系统

你可能注意到了,有些命令行选项是重复的。这是试图为多个命令实现一个共用的前端带来的部分问题。有些文件系统修复命令有一些额外的可用选项。如果需要做更高级的错误检查,你需要查看这个文凭系统修复工具的手册来确定是不是有那个文件系统专用的扩展选项。

注意 你只能在未挂载的文件系统上运行fsck命令。

7.3 逻辑卷管理器

如果用标准分区在硬盘上创建了文件系统,往已有文件系统添加额外空间在某种意义上会是个痛苦的过程。你只能将分区的大不扩展到同一个物理硬盘上的可用空间那么大。如果硬盘上没有额外的可用空间,你就必须弄一人更大的硬盘然后手动将已有的文件系统移动到新的硬盘上。

这时能派上用场的就是,通过将另外一个硬盘上的分区加到已有文件系统,来动态地向已有文件系统添加空间的方法。Linux逻辑卷管理器(Logical Volume Manamger,LVM)软件包正好可以用来做这个。它为你提供了在Linux系统上无需重新构建整个文件系统而操作硬盘空间的简便方法。

7.3.1 逻辑卷管理布局

逻辑卷核心是它如何处理安装在系统上的硬盘分区。在逻辑卷管理的世界里,硬盘称作物理卷(Physical Volume,PV).每个物理卷都会映射到硬盘上创建的某一物理分区。

多个物理卷元素集中在一起可以组成一个卷组(Volume Group,VG)。逻辑卷管理系统会把卷组当做物理硬盘一样对待,但实事上卷组可能是由分布在多个物理硬盘上的多个物理分区组成的。卷组提供了一个逻辑分区的平台,而这些逻辑分区事实上包含了文凭系统。

整个结构中的最后一层是逻辑卷(Logical Volume,LV)。逻辑卷为Linux提供了创建文件系统的分区环境,作用类似于到目前为止我们一直在探讨的Linux中的物理硬盘。Linux系统将逻辑卷当作物理分区对待。你可以使用任意一种标准Linux文凭系统来格式化逻辑卷,然后再将它在某个挂载点添加到Linux虚拟目录中。

图7-1显示了典型Linux逻辑卷管理环境的布局图。



7.3.2 Linux中的LVM

1.快照

2.条带化

3.镜像

7.3.3 使用Linux LVM

1.定义物理卷

通过 t命令更改分区类型

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):l

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0ab58adb

   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152   8e  Linux LVM

命令(输入 m 获取帮助):w

创建物理卷

[root@localhost ~]# pvcreate /dev/vdb1
  Physical volume "/dev/vdb1" successfully created

显示物理卷

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  
  "/dev/vdb1" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdb1
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               IY6ouy-2GIc-fGfB-kTat-1Mzb-Fyd7-P7fCOf
   

2.创建卷组

[root@localhost ~]# vgcreate Vol1 /dev/vdb1
  Volume group "Vol1" successfully created
[root@localhost ~]# vgdisplay
  --- 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              511
  Alloc PE / Size       0 / 0   
  Free  PE / Size       511 / 2.00 GiB
  VG UUID               UWqdNQ-VbBa-GMf1-qXGp-a95G-lyqk-u0RuCg


3.创建逻辑卷

[root@localhost ~]# lvcreate -l 100%FREE -n lvtest Vol1
  Logical volume "lvtest" created.
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/Vol1/lvtest
  LV Name                lvtest
  VG Name                Vol1
  LV UUID                eBgkj0-uWp5-bGQJ-0vvn-ux5u-VNoO-92uy1a
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-06-09 13:59:10 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             511
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2


4.创建文件系统

[root@localhost ~]# mkfs.ext4 /dev/Vol1/lvtest  
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
130816 inodes, 523264 blocks
26163 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

挂载文件系统

[root@localhost ~]# mount /dev/Vol1/lvtest /mnt
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls -la
总用量 24
drwxr-xr-x.  3 root root  4096 6月   9 14:00 .
dr-xr-xr-x. 17 root root  4096 11月 28 2017 ..
drwx------.  2 root root 16384 6月   9 14:00 lost+found

5.修改LVM

vgextend 将物理卷添加到卷组中

向卷组Vol1增增加物理卷/dev/vdb2

[root@localhost ~]# vgextend Vol1 /dev/vdb2
  Volume group "Vol1" successfully extended

lvextend 增加逻辑卷大小

[root@localhost ~]# lvextend -L +1G /dev/Vol1/lvtest  
  Size of logical volume Vol1/lvtest changed from 2.00 GiB (511 extents) to 3.00 GiB (767 extents).
  Logical volume lvtest successfully resized.

执行调整

[root@localhost ~]# e2fsck -f /dev/Vol1/lvtest

[root@localhost mnt]# resize2fs /dev/Vol1/lvtest 
 
 
[root@localhost ~]# mount /dev/Vol1/lvtest /mnt/lvtest/
[root@localhost mnt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/Vol1-lvtest ext4      3.0G  6.0M  2.8G    1% /mnt/lvtest

7.4 小结





猜你喜欢

转载自blog.csdn.net/tjjingpan/article/details/80518764