第6章 磁盘结构与磁盘划分

序言

文件系统层次化标准(FHS,Filesystem Hierarchy Standard)、udev硬件命名规则以及硬盘分区的规划方法。

6.1 一切从“/”开始

在Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,Linux系统中一切都是文件

  • Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。
  • Linux系统中的文件和目录名称是严格区分大小写的。
  • 文件名称中不得包含斜杠(/)

Linux系统中的文件存储结构,按照文件系统层次化标准(FHS),如图6-1所示。
在这里插入图片描述

在Linux系统中,最常见的目录以及所对应的存放内容如表6-1所示。

目录名称应放置文件的内容
/boot开机所需文件–内核,开机菜单以及所需配置文件等
/dev以文件形式存放任何设备与接口
/etc配置文件
/home用户家目录
/bin存放单用户模式下还可以操作的命令
/lib开机时用到的函数库,以及/bin与/sbin下面的命令用到的函数库
/sbin开机过程中需要的命令
/media用于挂载设备文件的目录
/opt放置第三方的软件
/root系统管理员的家目录
/srv一些网络服务的数据文件目录
/tmp任何人都可以使用的“共享”临时目录
/usr/local用户自行安装的软件
/usr/sbinLinux系统开机时不会用到的软件/命令/脚本
/usr/share帮助与说明文件,也可放置共享文件
/var主要存放经常变化的文件,如日志
/lost+found当文件系统发生错误的时,将一些丢失的文件片段存放在这里

在Linux系统中另外还有一个重要的概念——路径。

  • 路径指的是如何定位到某个文件,分为绝对路径与相对路径。
  • 绝对路径指的是从根目录(/)开始写起的文件或目录名称。
  • 相对路径则指的是相对于当前路径的写法。

6.2 物理设备的命名规则

在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。

  1. 系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;
  2. udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。

Linux系统中常见的硬件设备的文件名称如表6-2所示。
在这里插入图片描述
一般的硬盘设备都会是以“/dev/sd”开头的。而一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配)
硬盘的分区编号也很有讲究:
3. 主分区或扩展分区的编号从1开始,到4结束;
4. 逻辑分区从编号5开始。

在这里插入图片描述

  1. 首先,/dev/目录中保存的应当是硬件设备文件;
  2. 其次,sd表示是存储设备;
  3. 然后,a表示系统中同类接口中第一个被识别到的设备.
  4. 最后,5表示这个设备是一个逻辑分区。

6.3 文件系统与数据资料

用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。

  • Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。
  • Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。
  • XFS:是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。XFS文件系统最卓越的亮点应该当属可支持高达18EB的存储容量。

Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。
在这里插入图片描述

6.4 挂载硬件设备

,在拿到一块全新的硬盘存储设备后要先分区,然后格式化,最后才能挂载并正常使用。
当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就是 挂载

6.4.1 mount命令

mount命令 用于挂载文件系统,格式为“mount 文件系统 挂载目录”。
挂载是在使用硬件设备前所执行的最后一步操作。只需使用mount命令把硬盘设备或分区与一个目录文件进行关联,然后就能在这个目录中看到硬件设备中的数据了。

  • 对于比较新的Linux系统来讲,一般不需要使用-t参数来指定文件系统的类型,Linux系统会自动进行判断。
  • 而mount 中的-a参数则厉害了,它会在执行后自动检查/etc/fstab文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。

在这里插入图片描述
例如,要把设备/dev/sdb2挂载到/backup目录,只需要在mount命令中填写设备与挂载目录参数就行,系统会自动去判断要挂载文件的类型,因此只需要执行下述命令即可:

[root@linuxprobe ~]# mount /dev/sdb2 /backup

如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 自检 优先级”(各字段的意义见表6-4)写入到/etc/fstab文件中。
在这里插入图片描述
如果想将文件系统为ext4的硬件设备/dev/sdb2在开机后自动挂载到/backup目录上,并保持默认权限且无需开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。

[root@linuxprobe ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 4 19:26:23 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
/dev/mapper  /rhel-swap swap swap defaults 0 0
/dev/cdrom  /media/cdrom iso9660 defaults 0 0
/dev/sdb2 /backup ext4 defaults 0 0

6.4.2 umount命令

umount命令 用于撤销已经挂载的设备文件,格式为“umount [挂载点/设备文件]”。

  • 我们挂载文件系统的目的是为了使用硬件资源,而卸载文件系统就意味不再使用硬件的设备资源;
  • 相对应地,挂载操作就是把硬件设备与目录进行关联的动作,
  • 因此卸载操作只需要说明想要取消关联的设备文件或挂载目录的其中一项即可,一般不需要加其他额外的参数。
[root@linuxprobe ~]# umount /dev/sdb2

6.5 添加硬件设备

6.5.1 du命令

du命令是一个用于查看文件数据占用量。其格式为“du [选项] [文件]”。
简单来说,该命令就是用来查看一个或多个文件占用了多大的硬盘空间。
我们还可以使用du -sh /*命令来查看在Linux系统根目录下所有一级目录分别占用的空间大小。

6.6 添加交换分区

SWAP(交换)分区 是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。
使用SWAP分区专用的格式化命令mkswap,对新建的主分区进行格式化操作:

[root@linuxprobe ~]# mkswap /dev/sdb2

使用swapon命令把准备好的SWAP分区设备正式挂载到系统中。我们可以使用free -m命令查看交换分区的大小变化(由2047MB增加到7167MB):

[root@linuxprobe ~]# free -m
total used free shared buffers cached
Mem: 1483 782 701 9 0 254
-/+ buffers/cache: 526 957Swap: 2047 02047
[root@linuxprobe ~]# swapon /dev/sdb2
[root@linuxprobe ~]# free -m
total used free shared buffers cached
Mem: 1483 785 697 9 0 254
-/+ buffers/cache: 530 953Swap:716707167

为了能够让新的交换分区设备在重启后依然生效,需要按照下面的格式将相关信息写入到配置文件中,并记得保存:

[root@linuxprobe ~]# vim /etc/fstab
/dev/sdb2 swap swapdefaults 0 0

6.7 磁盘容量配额

root管理员就需要使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。

  • quota命令 进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota命令还有软限制和硬限制的功能。
  • 软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
  • 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。

6.7.1 xfs_quota命令

xfs_quota命令 是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令,格式为“quota [参数] 配额 文件系统”。
xfs_quota命令 是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令,格式为“quota [参数] 配额 文件系统”。其中,-c参数用于以参数的形式设置要执行的命令;-x参数是专家模式,让运维人员能够对quota服务进行更多复杂的配置。
例:
硬盘使用量的软限制和硬限制分别为3MB和6MB;创建文件数量的软限制和硬限制分别为3个和6个。

 [root@linuxprobe ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom'  /boot
[root@linuxprobe ~]# xfs_quota -x -c report /boot

当配置好上述的各种软硬限制后,尝试切换到这个普通用户,然后分别尝试创建一个体积为5MB和8MB的文件。可以发现,在创建8MB的文件时受到了系统限制:

[root@linuxprobe ~]# su - tom
[tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=5M count=1

6.7.2 edquota命令

edquota命令 用于编辑用户的quota配额限制,格式为“edquota [参数] [用户]”。
在为用户设置了quota磁盘容量配额限制后,可以使用edquota命令按需修改限额的数值。其中,-u参数表示要针对哪个用户进行设置;-g参数表示要针对哪个用户组进行设置。
edquota命令会调用Vi或Vim编辑器来让root管理员修改要限制的具体细节。

[root@linuxprobe ~]# edquota -u tom
Disk quotas for user tom (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda 6144 3072 8192 1 3 6
[root@linuxprobe ~]# su - tom
Last login:Mon Sep 7 16:43:12 CST 2017 on pts/0
[tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1
1+0 records in
1+0 records out
8388608 bytes (8.4 MB) copied, 0.0268044 s, 313 MB/s
[tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=10M count=1
dd:error writing ‘/boot/tom’:Disk quota exceeded
1+0 records in
0+0 records out
8388608 bytes (8.4 MB) copied, 0.167529 s, 50.1 MB/s

6.8 软硬方式链接

在Linux系统中存在硬链接和软连接两种文件。

  • 硬链接(hard link):可以将它理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。
    注意:硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode连接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。
    我们不能跨分区对目录文件进行链接
  • 软链接(也称为符号链接[symbolic link]):仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。
    当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。

ln命令
ln命令 用于创建链接文件,格式为“ln [选项] 目标”,在使用ln命令时,是否添加**-s参数**,将创建出性质不同的两种“快捷方式”。
在这里插入图片描述

[root@linuxprobe ~]# echo "Welcome to linuxprobe.com" > readme.txt
[root@linuxprobe ~]# ln -s readme.txt readit.txt
[root@linuxprobe ~]# cat readme.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# ls -l readme.txt
-rw-r——r—— 1 root root 26 Jan 11 00:08 readme.txt
root@linuxprobe ~]# rm -f readme.txt
[root@linuxprobe ~]# cat readit.txt
cat:readit.txt:No such file or directory

接下来针对一个原始文件创建一个硬链接,即相当于针对原始文件的硬盘存储位置创建了一个指针,这样一来,新创建的这个硬链接就不再依赖于原始文件的名称等信息,也不会因为原始文件的删除而导致无法读取。同时可以看到创建硬链接后,原始文件的硬盘链接数量增加到了2。

[root@linuxprobe ~]# echo "Welcome to linuxprobe.com" > readme.txt
[root@linuxprobe ~]# ln readme.txt readit.txt
[root@linuxprobe ~]# cat readme.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# ls -l readme.txt
-rw-r——r—— 2 root root 26 Jan 11 00:13 readme.txt
[root@linuxprobe ~]# rm -f readme.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值