第4章 本地存储管理
本章首先介绍磁盘的相关概念,分区工具的使用,然后介绍逻辑卷管理的相关概念和LVM工具的使用,接着介绍创建文件系统的方法、手工挂载和卸载文件系统的方法以及如何在启动时挂载文件系统,最后介绍磁盘限额的相关概念及配置方法。
4.1 存储管理与磁盘分区
4.1.1 存储管理工具简介
1.本地存储管理的任务和工具
本地存储管理的任务主要包括磁盘分区、逻辑卷管理和文件系统管理
表4-1中列出了本地存储管理的常用工具。
表4-1 本地存储管理的常用工具
提示
RHEL/CentOS 7中还提供了一个新的存储管理工具SSM(System Storage Manager),由system-storage-manager软件包提供。SSM集成多种存储技术lvm、btrfs、加密卷等)通过单一命令可同时管理逻辑卷、文件系统等。
2.使用文件系统的一般方法
系统和用户的所有数据都存储在文件系统上,使用文件系统的前提是先创建分区和/或逻辑卷,然后将其挂装到文件系统目录树上,被挂装的目录称为挂装点。Linux中使用的文件系统通常是在安装时创建的。对于实际运行的系统,经常还会需要对现有的分区进行调整或建立新的分区和LVM的情况。
要使用文件系统,一般要遵循如下步骤。
1)在硬盘上创建分区或逻辑卷。
2)在分区或逻辑卷上创建文件系统。类似于在Windows下进行格式化操作。
3)挂装文件系统到系统中。在分区或逻辑卷上创建好文件系统后,可以将该分区或逻辑卷上的文件系统,挂装到系统中的相应目录下以便使用。
●手工挂装文件系统可以使用mount命令。
●若需要系统每次启动时都自动挂装该文件系统,则需要在文件/etc/fstab中添加相应的
配置行。
4)卸载文件系统。对于可移动介质上的文件系统,当使用完毕后,需要使用umount命令实施卸载操作或执行eject命令直接弹出光盘。
3.Linux支持的文件系统
Linux的内核采用了称之为虚拟文件系统(VFS)的技术,因此Linux可以支持多种不同的文件系统类型。每一种类型的文件系统都提供一个公共的软件接口给VFS。Linux文件系统的所有细节由软件进行转换,因而从Linux的内核以及在Linux中运行的程序来看,所有类型的文件系统都没有差别,Linux的VFS允许用户同时不受干扰地安装和使用多种不同类型的文件系统。
CentOS 7支持多种类型的文件系统,不仅可以很好地支持Linux标准的文件系统,甚至还支持Microsoft等其他多种平台操作系统的文件类型。表4-2中列出了CentOS 支持的常见文件系统。可以使用 man 5 fs命令查看多种文件系统类型的信息。
表4-2 ntOS 7支持的常见文件系统
4.1.2 硬盘及分区
1.硬盘及其分类
硬盘(Hard Disk)是计算机配置的大容量外存储器。随着技术的进步,磁盘可以分为以下两类。
●机械硬盘:机械硬盘主要由盘片、磁头、盘片转轴及控制电机、磁头控制器、数据转换器、接口、缓存等几个部分组成。
●固态硬盘(Solid State Disk,SSD):是由固态电子存储芯片阵列而制成的,无机械部件。固态硬盘具有读写速度很快、更加抗震,无噪音且工作温度范围大等优点,但现在的固态硬盘都有固定的读写次数限制且价格较机械硬盘昂贵。
2.硬盘接口方式
硬盘的接口方式主要有PATA(俗称IDE)接口、SATA接口、SCSI接口、SAS接口和FC-AL接口。个人桌面多采用SATA接口;服务器多采用SCSI、SAS和FC-AL接口。
如果说服务器是网络数据的核心,那么服务器硬盘就是这个核心的数据仓库,所有的软件和用户数据都存储在这里。服务器一般需要7×24小时不间断运行,其硬盘也要24小时不停地运转。因此,选择服务器硬盘应从如下几方面考虑:
●较高的稳定性和可靠性。
●支持热插拔。
●较快的硬盘速度。
为了使硬盘能够适应大数据量、超长工作时间的工作环境,服务器一般采用高速、稳定、安全的SAS、SCSI和FC-AL接口硬盘。
●FC-AL接口主要应用于任务级的关键数据的大容量实时存储。可以满足高性能、高可靠和高扩展性的存储需要。
●SCSI接口主要应用于商业级的关键数据的大容量存储。
●SAS接口是个全才,可以支持SAS和SATA磁盘,很方便地满足不同性价比的存储需求,是具有高性能、高可靠和高扩展性的解决方案,因而被业界公认为取代并行SCSI的不二之选。
●SATA接口主要应用于非关键数据的大容量存储,近线存储和非关键性应用(如替代以前使用磁带的数据备份)。确定了硬盘的接口和类型后,就要重点考察影响硬盘性能的技术指标,根据转速、单碟容量、平均寻道时间、缓存等因素,并结合资金预算,选定性价比最合适的硬盘方案。
3.使用fdisk分区
Linux环境下通常使用fdisk工具对磁盘进行分区。fdisk命令的常用格式如下:
在fdisk的交互操作方式下可以使用若干子命令,如表4-3所示。
表4-3 fdisk的子命令
提示
当前fdisk还不能完全支持GUID分区表(GUID Partition Table,GPT),因此在创建大于2TB的分区时应使用完全支持GPT的gdisk工具,其使用方法与fdisk完全一致。
操作步骤4.1 使用fdisk分区工具
4.静态分区的缺点
在安装Linux的过程中,如何正确地评估各分区大小是一个难题,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。如果估计不准确,当遇到某个分区不够用时,系统管理员甚至可能要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。
某个分区空间耗尽时,通常的解决方法如下。
●使用符号链接:将破坏Linux文件系统的标准结构。
●使用调整分区大小的工具必须停机一段时间。
●备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区,必须停机一段时间进行恢复操作。
提示
使用静态分区,当某个分区空间耗尽时,只能暂时解决问题,而没有从根本上解决问题。使用Linux的逻辑卷管理可以从根本上解决这个问题,使用户在无须停机的情况下方便地调整各个逻辑卷的大小。
4.2 逻辑卷管理
4.2.1 LVM相关概念
1.什么是LVM
LVM是逻辑卷管理(Logical Volume Manager)的简称,是Linux环境下对磁盘分区进行管理的一种机制。LVM是建立在硬盘或分区之上的一个逻辑层,为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性。通过LVM系统,管理员可以轻松管理磁盘分区,如将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷(logical volume),并进一步在逻辑卷上创建文件系统。管理员通过LVM可以方便地调整卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如,按照使用用途进行定义development和sales,而不是使用物理磁盘名sda和sdb。当系统添加了新的磁盘后,管理员不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是通过LVM直接扩展文件系统跨越磁盘即可。
2.LVM基本术语
(1)物理卷(Physical Volume,PV)
●物理卷在LVM系统中处于最底层。
●物理卷可以是整个硬盘、硬盘上的分区,或从逻辑上与磁盘分区具有同样功能的设备(如RAID)。
●物理卷是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
(2)卷组(Volume Group,VG)
●卷组建立在物理卷之上,由一个或多个物理卷组成。
●卷组创建之后,可以动态地添加物理卷到卷组中,在卷组上可以创建一个或多个LVM分区(逻辑卷)。
●一个LVM系统中可以只有一个卷组,也可以包含多个卷组。
●LVM管理的卷组类似于非LVM系统中的物理硬盘。
(3)逻辑卷(Logical Volume,LV)
●逻辑卷建立在卷组之上,是从卷组中“切出”的一块空间。
●逻辑卷创建之后,其大小可以伸缩。
●LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(如/home或者/usr等)。
(4)物理区域(Physical Extent,PE)
●每一个物理卷被划分为基本单元(称为PE),具有唯一编号的PE是可以被LVM寻址的最小存储单元。
●PE的大小可根据实际情况在创建物理卷时指定,默认为4 MB。
●PE的大小一旦确定将不能改变,同一个卷组中所有物理卷的PE大小一致。
(5)逻辑区域(Logical Extent,LE)
●逻辑区域也被划分为可被寻址的基本单位(称为LE)。
●在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
和非LVM系统将包含分区信息的元数据(metadata)保存在位于分区起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的卷组描述符区域Volume Group Descriptor Area,VGDA)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符和一些PE描述符。图4-1描述了它们之间的关系。
3.LVM与文件系统之间的关系
图4-2描述了LVM与文件系统之间的关系。
图4-1 PV-VG-LV-PE关系图
图4-2 LVM与文件系统之间的关系图
注意
/boot分区不能位于卷组中,因为引导装载程序无法从逻辑卷中读取。如果想把分区放在逻辑卷上,则必须创建一个与卷组分离的/boot分区。
4.PV-VG-LV的设备名
PV-VG-LV的含义及设备名如表4-4所示
表4-4 PV-VG-LV的含义及设备名
5.CentOS 7下的LVM
CentOS从版本4开始使用新一代的LVM2。LVM2比LVM提供了更多的功能:
●在线调整卷的大小。
●允许以可读和可写的模式建立卷快照(Volume Snapshot)。
CentOS实现LVM的软件包名为lvm2,且是被默认安装的。软件包lvm2中提供了一系列的LVM工具,其中lvm是一个交互式管理的命令行接口;同时提供了非交互的管理命令。表4-5中列出了常用的非交互命令。
表4-5 LVM常用的非交互命令
提示
用户可以使用如下命令显示上述命令的功能。
# lvm help
并可以使用命令参数-h查看每个命令的使用方法,如
# pvcreate -h
4.2.2 管理LVM
1.创建卷
表4-6中列出了创建卷(物理卷、卷组、逻辑卷)的LVM命令
表4-6 创建卷的LVM命令
提示
在创建逻辑卷时可以使用选项<-l PE值>指定逻辑卷的大小。PE值可以通过使用命令vgdisplay|grep "Free PE"获得。
例1:创建两个物理卷。
例2:使用已创建的两个物理卷创建名为data的卷组
例3:在data卷组中创建名字为home大小为1GB的逻辑卷,在data卷组中创建名字为www大小为2GB的逻辑卷。
2.查看卷
表4-7中列出了查看卷(物理卷、卷组、逻辑卷)信息的LVM命令
表4-7 查看卷信息的LVM命令
3.调整卷
表4-8中列出了调整(扩展、缩减)卷(卷组、逻辑卷)的LVM命令
表4-8 调整卷的LVM命令
例1:将两个物理卷扩展到已存在的data卷组中
例2:在data卷组中扩展home逻辑卷,扩展2GB容量
4.扩展逻辑卷举例
下面给出一个将data卷组中名为www的逻辑卷扩展5GB的应用实例。操作过程如下
1)首先查看当前的data卷组的剩余空间是否大于5GB。
2)若当前的data卷组的剩余空间大于5GB,则:
●将data卷组中的www逻辑卷扩展5GB。
●对www逻辑卷上的文件系统进行容量扩展。
3)若当前的data卷组的剩余空间小于5GB,则:
●在系统中添加新硬盘并创建分区类型为LVM的分区
●在新硬盘上创建物理卷。
●将新创建的物理卷扩展到data卷组。
●将data卷组中的www逻辑卷扩展5GB。
●对www逻辑卷上的文件系统进行容量扩展。
操作步骤4.2将data卷组中的www逻辑卷扩展5GB
注意
1.对文件系统调整大小是非常危险的操作,虽然技术上是可行的,但调整文件系统容量之前必须进行完整备份(尤其是缩减文件系统时)。
2.lvextend/lvreduce/lvresize命令均支持-r|--resizefs参数用于调整逻辑卷的同时调整文件系统的尺寸。
3.对ext3/4文件系统可以单独使用resize2fs命令调整(扩展或缩减)文件系统的尺寸;对于 xfs 文件系统,可以单独使用xfs_growfs命令扩展文件系统的尺寸(当前xfs文件系统还不支持缩减文件系统的尺寸)。
4.3 文件系统管理
4.3.1 创建和挂装文件系统
1.创建文件系统
创建文件系统命令的格式如下
例1:在系统第二块SATA接口的硬盘第5个分区上创建ext4类型的文件系统
例2:对data卷组的home逻辑卷创建ext4类型的文件系统
例3:对data卷组的www逻辑卷创建xfs类型的文件系统
也可以使用带-t <fstype>选项的mkfs命令创建各种类型的文件系统,例如
2.使用mount命令挂装文件系统
在磁盘分区或逻辑卷上创建了文件系统后,还需要把新建立的文件系统挂装到系统上才能使用。挂装是Linux文件系统中的概念,将所有的文件系统挂装到统一的目录树中。使用mount命令可以灵活地挂装系统可识别的所有文件系统。mount的命令格式如下。
●格式1:# mount [-t <文件系统类型>] [-o <挂装选项>] <设备名> <挂装点>
●格式2:# mount [-o <挂装选项>] <设备名> 或 <挂装点>
●格式3:# mount -a [-t <文件系统类型>] [-o <挂装选项>]
1)格式1:用于挂装 /etc/fstab中未列出的文件系统。
●使用-t选项可以指定文件系统类型。
●若-t选项省略,mount命令将依次试探 /proc/filesystems中不包含nodev的行。
●必须同时指定<设备名>和<挂装点>。
2)格式2:用于挂装 /etc/fstab中已列出的文件系统。
●选择使用<设备名>或<挂装点>之一即可。
●若-o省略,则使用/etc/fstab中该文件系统的挂装选项。
3)格式3:用于挂装/etc/fstab中所有不包含noauto(非自动挂装)挂装选项的文件系统
●-t:若指定此参数,则只挂装 /etc/fstab中指定类型的文件系统。
●-o:用于指定挂装 /etc/fstab中包含指定挂装选项的文件系统。
●若同时指定-t和-o,则为“或者”的关系。 提示
1.挂装点就是文件系统中的一个目录,必须把文件系统挂装在目录树中的某个目录中。
2.挂装点目录在实施挂装操作之前必须存在,若其不存在则应该使用mkdir命令创建。
3.通常挂装点目录必须是空的,否则目录中原有的文件将被系统隐藏。
4.设备名也可以通过文件系统的LABEL或UUID来指定,即设备名可以用LABEL=<label> (-L <label>)或 UUID=<uuid> (-U <uuid>)替换。
下面是几个使用mount命令的例子。
例1:将/dev/sdb5上的ext4文件系统挂装到 /backup
也可以通过UUID来指定设备
例2:将文件系统类型为ext4的逻辑卷 /dev/data/home挂装到 /home
也可以通过UUID来指定设备
例3:将文件系统类型为xfs的逻辑卷 /dev/data/www挂装到 /srv/www
也可以通过UUID来指定设备
例4:将光盘ISO文件挂载到/media。
例5:将/dev/sddl上的NTFS类型的文件系统以读写方式挂装到/mnt/win。
例6:显示当前已经挂装的文件系统。
3.使用umount命令卸载文件系统
文件系统可以被挂装,也可以被卸装。卸装文件系统的命令是umount,该命令可以把文件系统从Linux系统中的挂装点分离。要卸装一个文件系统,可以指定要卸装的文件系统的目录名(挂装点)或设备名。umount命令的格式如下。
注意
如果一个文件系统处于busy状态,则不能卸装该文件系统。如下情况将导致文件系统处于busy状态:
(1)文件系统上面有打开的文件。
(2)某个进程的工作目录在此文件系统上。
(3)文件系统上面的缓存文件正在被使用。
最典型的错误是在挂装点目录下实施卸装操作,此时文件系统处于busy状态。
4.fuser命令
fuser命令可以根据文件(目录、设备)查找使用它的进程,同时也提供了杀死这些进程的方法。fuser命令的详细用法可参考其man手册。下面仅介绍当文件系统处于busy状态时如何卸装文件系统的步骤。
1)查看挂接点有哪些进程需要杀掉。
2)杀死这些进程(向其发送[SIGKILL,91信号)。
3)查看是否还有进程在访问挂接点。
例如:
4)卸载挂接点上的设备。
5.在系统启动时自动挂装文件系统
使用mount命令手动挂装的文件系统在关机时会被自动卸装,但系统再次启动后不会被自动挂装。要在启动时自动挂装文件系统必须修改系统挂装表——配置文件/etc/fstab。系统启动所要挂装的文件系统、挂装点、文件系统类型等都记录在/etc/fstab文件里,例如:
/etc/fstab文件每一行书写一个文件系统的挂装情况,以#开头的行为注释行。文件中每一列的说明如表4-9所示。
表4-9 fstab文件栏位说明
例如,要在系统启动过程中将分区/dev/sdb5上的ext4类型的文件系统挂装到/backup目录,将逻辑卷/dev/data/www上的xfs类型的文件系统挂装到/srv/www目录,将逻辑卷/dev/data/home上的ext4类型的文件系统挂装到/home目录,可以在/etc/fstab文件中添加:
或者使用UUID指定设备。
修改/etc/fstab文件后,执行如下命令使其在当前生效。
注意
若系统在安装过程中没有分配单独的挂载到/home的分区或逻辑卷,那么/home目录下很可能已包含用户数据,将单独的分区或逻辑卷挂载到/home后,原来/home目录的内容将被屏蔽,为此应先执行如下的命令将原来/home目录下的内容同步到新的分区或逻辑卷,为了节省空间还可以删除原来/home目录下的内容。
4.3.2 磁盘限额
1.什么是磁盘限额
在一个有很多用户的系统上,必须限制每个用户的磁盘使用空间,以免个别用户占用过多的磁盘空间影响系统运行和其他用户的使用。限制用户的磁盘使用空间就是给用户分配磁盘限额(quota),用户只能使用额定的磁盘使用空间,超过之后就不能再存储文件。
磁盘限额是系统管理员用米监控和限制用户或组对磁盘使用的工具。磁盘限额可以从两方面限制:其一,限制用户或组可以拥有的mnode数(文件数);其二,限制分配给用户或组的磁盘块的数目(以千字节为单位的磁盘空间)。
另外,设置磁盘限额还涉及如下与限制策略相关的3个概念。
●硬限制:超过此设定值后不能继续存储新的文件。
●软限制:超过此设定值后仍1日可以继续存储新的文件,同时系统发出警告信息,建议用户清理自己的文件,释放出更多的空间。
●宽限期:超过软限制多长时间之内(默认为7天)可以继续存储新的文件。
注意
磁盘限额是以每个使用者、每个文件系统为基础的。如果使用者可以在超过一个以上的文件系统上建立文件,那么必须在每个文件系统上分别设定。
2.CentOS下的磁盘限额支持
磁盘限额由Linux的内核支持,CentOS提供vfsold(vl)、vfsv0(v2)和xfs共3种不同的配额支持。对于ext3/4文件系统,磁盘限额的配置和查看工具山quota软件包提供。quota软件包提供了如表4-10中所示的常用磁盘限额管理工具。对于xfs文件系统,磁盘限额的配置和查看T具由xfsprogs软件包的xfs_quota提供。
表4-10 quota提供的常用磁盘配额管理工具
(续)
3.配置磁盘限额
在CentOS下配置磁盘限额需要经过如表4-11所示的步骤。
表4-11 磁盘限额的配置步骤
表4-12中列出了setquota命令设置磁盘限额的方法。
表4-12 使用setquota命令设置磁盘限额
表4-13中列出了xfs_quota命令设置磁盘限额的方法。
表4-13 使用xfs_quota命令设置磁盘限额
表4-14中列出了查看磁盘限额信息的命令使用方法。
表4-14 查看磁盘限额和限额汇总信息
4.ext4文件系统磁盘限额配置举例
操作步骤4.3 在ext4文件系统上配置磁盘限额
5.xfs文件系统磁盘限额配置举例
操作步骤4.4 在xfs文件系统上配置磁盘限额
4.4 思考与实验
1.思考
1)简述硬盘的技术指标?如何挑选服务器硬盘?
2)fdisk命令有哪些常用的子命令?含义是什么?
3)什么是MBR/GPT,它存放了什么信息?
4)使用LVM比使用固定分区有哪些优点?
5)简述PV-VG-LV-PE的逻辑关系。
6)什么是Linux文件系统?Linux下常用的文件系统有哪些
7)非日志文件系统和日志文件系统有何区别?
8)简述在Linux环境下使用文件系统的一般方法。
(9)如何创建文件系统?创建文件系统的操作类似于Windows下的什么操作?
(10)如何挂装和卸装文件系统?如何使用可移动存储介质(软盘、光盘、USB盘)
(11)如何在系统启动时自动挂装文件系统?简述/etc/fstab文件各个字段的含义。
(12)简述添加新硬盘并扩展现有逻辑卷的步骤。
(13)什么是磁盘限额?为何要设置磁盘限额?什么是硬限制、软限制和宽限期?
(14)磁盘限额可以从哪两方面限制用户和/或组的使用?
2.实验
(1)学会挂装和卸装文件系统。学会使用可移动存储介质(软盘、光盘、USB盘)。
(2)学会使用fdisk、gdisk、parted命令进行硬盘分区。
(3)学会创建不同类型的文件系统。
(4)学会扩展和缩减逻辑卷的大小。
(5)学会操作系统挂装表文件/etc/fstab。
(6)学会设置ext4文件系统和xfs文件系统基于用户和组的磁盘限额。
3.进一步学习
(1)学习RAID、DRBD的相关概念。
(2)学习在Linux下使用mdadm工具配置和管理软RAID。
(3)熟悉并对比不同日志文件系统的优缺点,以便在实际工作中选择使用。
(4)学习使用quotatool(EPEL仓库提供)设置磁盘限额。
(5)学习配置xfs文件系统基于project的磁盘限额。
(6)学习使用warnquota(由RPM包quota-warnquota提供)配置E-mail警告通知。
(7)了解Red Hat集群文件系统GFS和MooseFS分布式文件系统的应用和管理。