2

时间:2017年08月14日星期一

说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令行与shell脚本编程大全》(第三版)第八章学习总结

第八章:管理文件系统

本章内容

文件系统基础
日志文件系统与写时复制文件系统
文件系统管理
逻辑卷布局
使用Linux逻辑卷管理器

8.1 探索Linux文件系统

8.1.1 基本的Linux文件系统

Linux最初采用的是一种简单的文件系统。

1.ext文件系统

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

ext文件系统名称中的extended部分来自其跟踪的每个文件的额外数据,包括

文件名
文件大小
文件的属主
文件的属组
文件的访问权限
指向存有文件数据的每个硬盘块的指针

2.ext2文件系统

最早的ext文件系统有不少限制,比如文件大小不得超过2GB。在Linux出现后不久,ext文件就升级到了第二代扩展文件系统,叫作ext2。ext2文件系统是ext文件系统基本功能的一个扩展,但保持了统同样的结构。ext2文件系统扩展了索引节点表的格式来保存系统上每个文件的更多信息。

8.1.2 日志文件系统

日志文件系统为Linux系统增加了一层安全性。它不再使用之前先将数据直接写入存储设备再更新索引节点表的做法,而是先将文件的更改写入到临时文件(称作日志,journal)中。在数据成功写到存储设备和索引节点表之后,再删除对应的日志条目。如果系统在数据被写入存储设备之前崩溃或断电了,日志文件系统下次会读取日志文件并处理上次留下的未写入的数据。

Linux中有3中广泛使用的日志方法,每种的保护等级都不相同,如下

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

1.ext3文件系统

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

2.ext4文件系统

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

3.Reiser文件系统

2001年,Hans Reiser为Linux创建了第一个称为ReiserFS的日志文件系统。ReiserFS文件系统只支持回写日志模式,只把索引节点表数据写到日志文件。ReiserFS文件系统也因此成为Linux上最快的日志文件系统之一。

4.JFS文件系统

作为可能依然在用的最老的日志文件系统之一,JFS(Journaled File System,日志化文件系统)是IBM在1990年为期Unix衍生版AIX开发的。然而直到第2版,它才被移植到Linux环境中。

说明:IBM官方称JFS文件系统的第2版为JFS2,但大多数Linux系统提到它时都只用JFS

5.XFS文件系统

XFS日志文件系统是另一种最初用于商业Unix系统而如今走进Linux世界的文件系统。美国硅图公司(SGI)最初在1994年为其商业化的IRIX Unix系统开发了XFS。2002年,它被发布到了适用于Linux环境的版本。

8.1.3 写时复制文件系统

采用了日志式技术,你就必须在安全性和性能之间做出选择。就文件系统而言,日志式的另一种选择是一种叫作写时复制(copy-on-write,COW)的技术。COW利用快照兼顾了安全性和性能。COW文件系统已日渐流行,其中最流行的两种是ZFS和Btrf。

1.ZFS文件系统

ZFS由Sun公司于2005年研发,是一个稳定的文件系统,与Resier4、Btrfs和ext4势均力敌。但尚未获得GPL许可,在未获得GPL许可之前,ZFS有可能无法成为Linux默认的文件系统。

2.Btrf文件系统

Btrf文件系统是COW的新人,也被称为B树文件系统。由Oracle公司于2007年研发。

8.2 操作文件系统

8.2.1 创建分区

命令:fdisk
命令说明:用来帮助管理安装在系统上的任何存储设备上的分区。
命令演示:fdisk /dev/vdb
命令说明:进入fsisk工具的操作界面。(系统为centos7-64bit)

常用fdisk命令

命令:描述
p:显示当前分区
n:添加一个新分区
w:将分区表写入磁盘

8.2.2 创建文件系统

在将数据存储到分区之前,必须用某种文件系统对其进行格式化

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

工具:用途
mkefs:创建一个ext文件系统
mke2fs:创建一个ext2文件系统
mkfs.ext3:创建一个ext3文件系统
mkfs.ext4:创建一个ext4文件系统
mkreiserfs:创建一个ReiserFS文件系统
jfs_mkfs:创建一个JFS文件系统
mkfs.xfs:创建一个XFS文件系统
mkfs.zfs:创建一个ZFS文件系统
mkfs.btrfs:创建一个Btrfs文件系统

并非所有文件系统工具都已经默认安装

命令演示:type mkfs.ext4
命令说明:查看创建ext4文件系统工具是否可用

命令演示:mkfs.ext4 /dev/sdb1
命令说明:对sdb1分区创建一个ext4文件系统

接下来将它挂载到虚拟目录下的某个挂载点

命令演示:mkdir /mnt/my_partition
命令说明:创建文件目录/mnt/my_partition
命令演示:mount -t ext4 /dev/sdb1 /mnt/my_partition
命令说明:将sdb1分区挂载到/mnt/my_partition目录

说明:这种挂载文件系统的方法只能临时挂载文件系统。当重启Linux系统时,文件系统并不会自动挂载。要强制Linux启动时自动挂载新的文件系统,可以将其添加到/etc/fstab文件。

8.2.3 文件系统的检查与修复

命令:fsck
命令说明:检查和修复大部分类型的Linux文件系统。
    (ext、ext2、ext3、ext4、ReiserFS、JFS、XFS)

fsck命令行选项

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

8.3 逻辑卷管理

8.3.1 逻辑卷管理布局

逻辑卷管理的核心在于如何处理安装在系统上的硬盘分区。在逻辑卷管理的世界里,硬盘称作物理卷(physical volume,PV)。每个物理卷都会映射到硬盘上特定的物理分区。

逻辑卷管理环境

clipboard.png

8.3.2 Linux中的LVM

Linux LVM是由Heinz Mauelshagen开发的,于1998年发布到了Linux社区。它允许你在Linux上用简单的命名行管理一个完整的逻辑卷管理环境。

8.3.3 使用Linux LVM

1.定义物理卷

创建过程的第一步就是将硬盘上的物理分区转换成Linux LVM使用的物理卷区段。使用fdisk命令的t命令改变分区类型。

命令:pvcreate
命令说明:定义用户物理卷的物理分区
命令演示:pvcreate /dev/sdb1
命令说明:定义用户物理卷的/dev/sdb1物理分区

命令:pvdisplay
命令说明:显示已创建的物理卷列表
命令演示:pvdisplay /dev/sdb1
命令说明:查看/dev/sdb1物理分区是否为物理卷

2.创建卷组

下一步是从物理卷中创建一个或多个卷组。

命令:vgcreate
命令说明:创建卷组
命令演示:vgcreate Voll /dev/sdb1
命令说明:使用/dev/sdb1分区上创建的物理卷,创建了一个名为Voll的卷组

命令:vgdisplay
命令说明:查看卷组的细节
命令演示:vgcreate Voll
命令说明:查看名为Voll的卷组的细节

3.创建逻辑卷

Linux系统使用逻辑卷来模拟物理分区,并在其中保存文件系统。

命令:lvcreate
命令说明:创建逻辑卷
命令演示:lvcreate -l 100%FREE -n lvtest Voll
命令说明:在名为Voll的卷组上创建一个名为lvtest的卷组,并指定逻辑区段数

命令:lvdisplay
命令说明:查看逻辑卷的详细情况
命令演示:lvdisplay Voll
命令说明:查看卷组Voll下的逻辑卷信息

4.创建文件系统

运行完lvcreate命令之后,逻辑卷就已经产生了,但它还没有文件系统。

命令演示:mkfs.ext4 /dev/Voll/lvtest
命令说明:在Voll卷组下的lvtest逻辑卷中创建一个ext4文件系统

创建好了新的文件系统之后,可以用标准的Linux mount 命令来将这个卷挂载到虚拟目录中。

命令:mount /dev/Voll/lvtest /mnt/my_partition
命令说明:将/dev/Voll/lvtest卷挂载到/mnt/my_partition目录

5.修改LVM

Linux LVM的好处在于能够动态修改文件系统,因此最好有工具能够让你实现这些操作。

Linux LVM命令

命令:功能
vgchange:激活和禁用卷组
vgremove:删除卷组
vgextend:将物理卷加到卷组中
vgreduce:从卷组中删除物理卷
lvextend:增加逻辑卷的大小
lvreduce:减小逻辑卷的大小

窍门:在手动增加或减小逻辑卷的大小时,要特别小心。逻辑卷中的文件系统需要手动修整来处理大小上的变化。大多数文件系统都包含了能够重新格式化文件系统的命令行程序,比如用于ext2、ext3和ext4文件系统的resize2fs程序。

Tip:8.3这一章节太过于底层,楼主学完也是懵逼状态。目前还未接触到这么底层,有使用的时候,需要重复学习噢。

8.4 小结

在Linux上使用存储设备需要懂一点文件系统的知识。当工作在Linux系统下时,懂得如何在命令行下创建和处理文件系统能帮上你的忙。本章介绍了fdisk、fsck、pvcreate、pvdisplay、vgcreate、vgdisplay、lvcreate、lvdisplay、vgremove、vgextend、vgreduce、lvextend、lvreduce命令。

本章学习命令个人总结如下

vgchange:激活和禁用卷组
fdisk:创建分区、查看分区信息等
fsck:检查和修复大部分类型的Linux文件系统
pvcreate:定义物理卷
pvdisplay:查看物理卷
vgcreate:创建卷组
vgdisplay:查看卷组
lvcreate:创建逻辑卷
lvdisplay:查看逻辑卷
vgchange:激活和禁用卷组
vgremove:删除卷组
vgextend:将物理卷加到卷组中
vgreduce:从卷组中删除物理卷
lvextend:增加逻辑卷的大小
lvreduce:减小逻辑卷的大小

妙手空空
1.3k 声望370 粉丝

博观而约取,厚积而薄发