T-02-Linux-磁盘与文件系统管理

系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区槽不可太大也不能太小, 太大会造成磁盘容量的浪费,太小则会产生文件无法储存的困扰。此外,我们所讨论的文件的权限与属性分别记录在文件系统的哪个区块内?现在,为了虚拟化与大容量磁盘,现在的 CentOS 7 默认使用大容量效能较佳的 xfs 当预设文件系统,这也是需要我们了解的东西。

1. Linux 文件系统

1.1. Linux支持的文件系统及VFS

首先来看看 Linux 支持的文件系统有:

  • 传统文件系统:ext2、minix、FAT(用vfat模块)、iso9660(光盘)等;
  • 日志式文件系统:ext3、ext4、ReiserFS、Windows's NTFS、IBM's JFS、SGI's XFS、ZFS
  • 网络文件系统:NFS、SMBFS

想要知道你的 Linux 支持的文件系统有哪些,可以察查看底下这个目录:



系统目前已加载到内存中支持的文件系统则有:



整个 Linux 的系统都是透过一个名为 Virtual Filesystem Switch 的核心功能去读取 filesystem 的。 也就是说,整个 Linux 认识的 filesystem 其实都是 VFS 在进行管理,我们使用者并不需要知道每个 partition 上头的 filesystem 是什么,VFS 会主动的帮我们做好读取的动作。
VFS文件系统示意图

1.2. Linux文件系统特性

由于文件系统建立在磁盘上面,因此在讨论文件系统之前我们先来说一下磁盘分区。

1.2.1. 磁盘分区与文件系统挂载

1. 磁盘物理组成

磁盘一个碟片组成示意图

磁盘可能有多个碟片,所有碟片的同一个磁道我们称为磁柱 (Cylinder), 早期磁柱是文件系统的最小单位,也就是分区的最小单位。近来有 GPT 这个可达到 64bit 纪录功能的分区表, 现在我们使用扇区 (sector) 号码来作为分区单位。

2. MBR分区表与GPT分区表
  • MBR分区表
  • 主引导记录(Master Boot Record, MBR):记录整块硬盘分区的状态,446字节;
  • 分区表(partition table):记录整块硬盘分区的状态,64字节。(4组记录区,始末柱面)

MBR分区表

扩展分区

扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。扩展分区可以持续划分出逻辑分区

  • GPT分区表

因为过去一个扇区大小就是 512bytes 而已,不过目前已经有 4K 的扇区设计出现!为了兼容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。
GPT 将磁盘所有区块以此 LBA(预设为 512bytes ) 来规划,而第一个 LBA 称为 LBA0 (从 0 开始编号)。 与 MBR 仅使用第一个 512bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份。(1+32+1→128)

GPT分区表
3. 文件系统与磁盘的挂载

『挂载』就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下; 也就是说,进入该目录就可以读取该分区的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』。

挂载

1.2.2. 文件系统特性

1. 磁盘分区格式化

磁盘分区完毕后还需要进行格式化(format),之后操作系统才能够使用这个文件系统。为什么需要进行格式化呢?这是因为每种操作系统所设定的文件属性/权限并不相同,为了存放这些文件所需的数据,就需要将分区进行格式化以成为操作系统能够利用的文件系统格式(filesystem)

因此,每种操作系统能够使用的文件系统并不相同。 举例来说,windows 98 以前的微软操作系统主要利用的文件系统是 FAT (或 FAT16),windows 2000 以后的版本有所谓的 NTFS 文件系统,至于Linux 的正统文件系统则为 Ext2 (Linux second extended file system, ext2fs)这一个。此外,在默认的情况下,windows 操作系统是不会认识 Linux 的 Ext2 的。

传统的磁盘与文件系统之应用中,一个分区就是只能够被格式化成为一个文件系统,所以我们可以说一个 filesystem 就是一个 partition。但是由于新技术例如LVM与软件磁盘阵列(software raid)可以将一个分区格式化为多个文件系统(例如LVM),也能够将多个分区合成一个文件系统(LVM, RAID)!所以说,目前我们在格式化时已经不再说成针对 partition 来格式化了,通常我们称呼一个可被挂载的数据为一个文件系统而不是一个分区

文件系统的运作与操作系统的文件数据有关。如Linux 操作系统的文件包括内容、权限和属性。文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。

2. 索引式文件系统(index allocation)
  • FAT格式
    FAT格式的文件系统没有inode,长时间使用后文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差。这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起,以方便数据读取。
    FAT数据存储
  • ext2格式
  • inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的区块号码;
  • bolck:实际记录文件的内容,若文件太大时,会占用多个block;
  • superblock:记录此文件系统的整体信息,包括inode与block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。
inode/block数据存储

Ext2 文件系统在格式化的时候基本上是区分为多个区块群组 (block group) 的,每个区块群组都有独立的 inode/block/superblock 系统。

在文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装开机管理程序, 这是个非常重要的设计,因为如此一来我们就能够将不同的开机管理程序安装到个别的文件系统最前端,而不用覆盖整颗磁盘唯一的 MBR, 这样也才能够制作出多重引导
ext2文件系统示意图
  • data block:用于放置数据文件,ext2支持1K、2K及4K三种-----决定了最大磁盘容量
  • inode table:记录文件属性以及实际数据放在哪个block-----决定了最大单一文件容量
  • inode对照表:记录使用与未使用的inode号码
  • block对照表:记录使用与未使用的block号码
  • 文件系统描述:描述每个block群组的开始和结束的block,以及每个区段在block中的位置
  • superblock:记录整个文件系统相关信息的地方

Superblock 记录了文件系统的所有基本信息,因此,它很重要!一般来说, superblock 的大小为 1K。一个文件系统应该仅有一个 superblock,实际中除了第一个 block group 以外也可能会有 superblock ,主要是做为第一个 block group 内 superblock 的备份。

inode table
inode table结构示意图

2. 文件系统的操作

2.1. 查看磁盘与目录容量

  • df:列出文件系统的整体磁盘使用量
    df命令
  • du:查看文件系统的磁盘使用量(常用在查看目录所占磁盘空间)
    du命令

2.2. 硬链接与符号链接

在 Linux 底下的链接文件有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录),这种称为符号链接(symbolic link); 另一种则是通过文件系统的 inode 连结来产生新档名,而不是产生新文件!这种称为硬链接 (hard link)

  • hard link

hard link基于的事实是对于一个文件来说,其文件名只与目录有关,而文件内容则与 inode 有关,因此,hard link 只是在某个目录下新增一条文件名链接到某 inode 号码的关连记录而已。hard link不能夸文件系统,也不能链接目录

  • symbolic link

symbolic link 就是在建立一个独立的文件,而这个文件会让数据的读取指向他 link 的那个文件的文件名。symbolic Link 与 Windows 的快捷方式可以划上等号,由于 symbolic link 所建立的文件为一个独立的新的文件,所以会占用掉 inode 与 block。

链接

3. 磁盘管理的操作

3.1. 磁盘分区

由于目前磁盘分区主要有 MBR 以及 GPT 两种格式,这两种格式所使用的分区工具不太一样。一般分别使用 fdisk 和 gdisk 来处理MBR和GPT分区,同时支持以上两种分区格式的有parted。
三种查看磁盘分区的命令

  • lsblk 列出系统上的所有磁盘列表
    lsblk命令
  • blkid 列出设备的UUID(全局唯一标识符)等参数
    blkid命令
  • parted 列出磁盘的分区表类型与分区信息
    parted命令

3.2. 磁盘格式化

其实,我们所说的格式化,更应该被称为创建文件系统(make filesystem)

  • XFS 文件系统 mkfs.xfs
    XFS 文件系统 mkfs.xfs
  • ext4 文件系统 mkfs.xfs
    ext 文件系统 mkfs.ext4

3.3. 文件系统检验

下面两个xfs_repair 或 fsck.ext4,这都是用来检查与修正文件系统错误的指令。通常只有身为 root 且你的文件系统有问题的时候才使用这个指令,否则在正常状况下使用此一指令,可能会造成对系统的危害!通常使用这个指令的场合都是在系统出现极大的问题,导致你在 Linux 开机的时候得进入单人单机模式下进行维护的行为时,才必须使用此一指令!

  • xfs_repair 处理XFS文件系统
    xfs_repair命令
  • fsck.ext4 处理 ext4 文件系统
    fsck.ext4命令

3.4. 文件系统挂载与卸载

  • mount 挂载
    mount命令
  • umount 卸载
    umount命令

二么士

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 真想为你唱支歌 可我不是夜莺 唱不出夜莺啼血的深情 真想为你写首诗 可我不是诗人 写不出那浪漫婉转的诗章 真想与你...
    亚民阅读 186评论 0 1
  • 【今日话题】如果让你用三个关键词总结过去三个月的自己,你会用哪三个词,为什么? 1.读书:参加了猫叔的小灶后,读的...
    SophieRealWorld阅读 168评论 0 1
  • 内心渴望的自由谁能给你, 你想要的所谓尊严谁又能给你, 心里没有太阳穿多少件棉袄都不感觉温暖, 磕磕绊绊就是生活本...
    柳柳2018丰盛女神阅读 253评论 0 2
  • 今天我去爸爸单位爸爸三楼有个叔叔,他会玩无人机, 他也带了一个无人机,这个叔叔姓王,叫王斌。我问他叔叔你的...
    我自己喜欢的事活着阅读 111评论 0 0