charpter6 存储结构与磁盘划分

一切从/开始

文件系统层次化标准(FHS,Filesystem Hierarchy Standard)、 udev 硬 件命名规则以及硬盘分区的规划方法。
Linux系统中的一切文件都是从“根(/)”目录开始的,并按照 文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。 文件名称区分大小写,文件名称不得包含/。
《That's how linux should learn》——charpter6
《That's how linux should learn》——charpter6
绝对路径指的是从根目录(/)开始写起的文件或目录名称,而相 对路径则指的是相对于当前路径的写法。

物理设备的命名规则

udev 设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev 目录下的 设备文件。
《That's how linux should learn》——charpter6
现在 IDE (集成开发环境)设备已经很少见了,所以一般的硬盘设备都会是以“/dev/sd”开头。硬盘的分区编号规则:
➢ 主分区或扩展分区的编号从 1 开始,到 4 结束;
➢ 逻辑分区从编号 5 开始
/dev 目录中 sda 设备 之所以是 a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的 插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。
分区的数字编码不一定是强制顺延下来 的,也有可能是手工指定的。因此 sda3 只能表示是编号为 3 的分区,而不能判断 sda 设备上 已经存在了 3 个分区。
《That's how linux should learn》——charpter6

文件系统与数据资料

文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。
➢ Ext3 :是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。
➢ Ext4:Ext3 的改进版本,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系 统能够批量分配 block 块,从而极大地提高了读写效率。
➢ XFS:是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的 日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB, 这几乎满足了所有需求。
在拿到了一块新的硬盘存储设备后,需要先分区,然后再格
式化文件系统,最后才能挂载并正常使用。
Linux 系统中有一个名为 super block 的“硬盘地图”。Linux在里面记录着整 个文件系统的信息。Linux 只是把每个文件的权限与属性记录在 inode 中,而且每个文件占用一个独立的 inode 表格,该表格的大小默认为128 字节,里面记 录着如下信息:
➢ 该文件的访问权限(read、write、execute);
➢ 该文件的所有者与所属组(owner、group);
➢ 该文件的大小(size);
➢ 该文件的创建或内容修改时间(ctime);
➢ 该文件的最后一次访问时间(atime);
➢ 该文件的修改时间(mtime);
➢ 文件的特殊权限(SUID、SGID、SBIT);
➢ 该文件的真实数据地址(point)
文件的实际内容则保存在 block 块中(大小可以是 1KB、2KB 或 4KB),一个 inode 的 默认大小为 128B(Ext3),记录一个 block 则消耗 4B。当文件的 inode 被写满后,Linux 系 统会自动分配出一个 block 块,用于像 inode 那样记录其他 block 块的信息,把各个 block 块的内容串到一起,就能够让用户读到完整的文件内容了。对于存储文件内容的 block 块,有下面两种常见情况(以 4KB 的 block 大小为例进行说明):
➢ 情况 1:文件很小(1KB),但依然会占用一个 block,因此会潜在地浪费 3KB。
➢ 情况 2:文件很大(5KB),那么会占用两个 block(5KB-4KB 后剩下的 1KB 也要占 用一个 block)。
Linux内核中的软件层为用户程序提供了一个VFS (Virtual File System, 虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作。
《That's how linux should learn》——charpter6

挂载硬件设备

当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就 是“挂载”。

mount命令

mount 命令用于挂载文件系统,格式为“mount 文件系统 挂载目录”。
《That's how linux should learn》——charpter6
对于比较新的 Linux 系统来讲,一般不需要使用-t 参数来指定文件系统的类 型,Linux 系统会自动进行判断。而 mount 中的-a 参数,会在执行后自动检查 /etc/fstab 文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。
把设备/dev/sdb2 挂载到/backup 目录, mount /dev/sdb2 /backup,但系统在重启后挂载就会失效,也就是说我们需要每次开机后都手动挂载一下。如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式 “设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”写入到/etc/fstab 文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就 能一劳永逸了。
《That's how linux should learn》——charpter6
如果想将文件系统为 ext4 的硬件设备/dev/sdb2 在开机后自动挂载到/backup 目录上,并 保持默认权限且无需开机自检,就需要在/etc/fstab 文件中写入下面的信息,这样在系统重启 后也会成功挂载。
vim /etc/fstab
在后边添加:
/dev/sdb2 /backup ext4 defaults 0 0

umount命令

umount 命令用于撤销已经挂载的设备文件,格式为“umount [挂载点/设备文件]”。挂载操作就是把硬件设备与目录进行关联的动作,因此卸载操作只需要说明想要取消关联的设备文件或挂载目录的其中一项即可,一般不需要加其他额外的参数。 如:umount /dev/sdb2

添加硬盘设备(虚拟机硬件模拟)

虚拟机设置,添加。
有了硬件设备后接下来就是分区,格式化,挂载,测试。
分区
fdisk命令用于管理磁盘分区,格式为“fdisk [磁盘名称]”,它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。交互式管理。
《That's how linux should learn》——charpter6q:不保存直接退出。
进行格式化操作——mkfs
在 Shell 终端中输入 mkfs 名后再敲击两下用于补齐命令的 Tab 键,会:
输出mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat , mkfs 命令很贴心地把常用的文件系统名称用后缀的方式保存成了多个命令文 件,用起来也非常简单—mkfs.文件类型名称。例如要格式分区为 XFS 的文件系统,则命令 应为 mkfs.xfs /dev/sdb1。
挂载
1、首先创建一个用于挂载设备的挂载点目录。 mkdir /newFS
2、使用mount命令将存储设备与挂载点进行关联。
mount /dev/sdb1 /newFS/
3、最后,使用df -h 命令来查看挂载状态和硬盘使用量信息。df -h

du命令

du:用于查看文件数据占用量的。格式为“du [选项] [文件]”。
使用 du -sh /*命令来查看在 Linux 系统根目录下所有一级目录分别占用的空间大小。du -sh /newFS/
最后,别忘了,想让这个设备文件的挂载永久有效,则需要把挂载 的信息写入到配置文件中: vim /etc/fstab
/dev/sdb1 /newFS xfs defaults 0 0

添加交换分区

SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常 用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设 计目的是为了解决真实物理内存不足的问题。但由于交换分区毕竟是通过硬盘设备读写数据的, 速度肯定要比物理内存慢,所以只有当真实的物理内存耗尽后才会调用交换分区的资源。
在生产环境中,交换分区的大小一般为真实物理内存的 1.5~2 倍
fdisk /dev/sdb
使用 SWAP 分区专用的格式化命令 mkswap,对新建的主分区进行格式化操作: mkswap /dev/sdb2
使用 swapon 命令把准备好的 SWAP 分区设备正式挂载到系统中。我们可以使用 free -m 命 令查看交换分区的大小变化
free -m
swapon /dev/sdb2
free -m
为了能够让新的交换分区设备在重启后依然生效,需要按照下面的格式将相关信息写入 到配置文件中,并记得保存:
vim /etc/fstab
/dev/sdb2 swap swap defaults 0 0

磁盘容量配额

使用 quota 命 令进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota 命令还有软限制和硬限制的功能。
➢ 软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
➢ 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。
注意:RHEL 7 系统中已经安装了 quota 磁盘容量配额服务程序包,但存储设备却默认没有开启 对 quota 的支持,此时需要手动编辑配置文件,让 RHEL 7 系统中的/boot 目录能够支持 quota 磁盘配额技术。
想让硬盘设备支持 quota 磁盘容量配额服务, RHEL 7 系统使用的是 uquota 参数。
vim /etc/fstab
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults,uquota 1 2

xfs_quota命令

xfs_quota命令是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令, 格式为“xfs_quota [参数] 配额 文件系统”。
-c 参数用于以参数的形式设置要执行的命令;
-x参数是专家模式,让运维人员对 quota服务进行更多复杂的配置。

edquota命令

edquota 命令用于编辑用户的 quota 配额限制,格式为“edquota [参数] [用户] ”。
-u 参数表示要针对哪个用户进行设置;
-g 参数表示要针对哪个用户组进行设置。

软硬方式连接

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

ln命令

ln 命令用于创建链接文件,格式为“ln [选项] 目标”,在使用 ln 命令时,是否添加-s 参数,将创建出性质不同的两种“快捷方式”。
《That's how linux should learn》——charpter6
创建一个软链接:
[[email protected] ~]# echo “Welcome to linuxprobe.com” > readme.txt
[[email protected] ~]# ln -s readme.txt readit.txt
[[email protected] ~]# cat readme.txt
Welcome to linuxprobe.com
[[email protected] ~]# cat readit.txt
Welcome to linuxprobe.com
[[email protected] ~]# ls -l readme.txt
-rw-r–r-- 1 root root 26 Jan 11 00:08 readme.txt
可以看到,原始文件的硬盘连接数还是1
[[email protected] ~]# rm -f readme.txt
[[email protected] ~]# cat readit.txt
cat: readit.txt: No such file or directory
创建一个硬链接,即相当于针对原始文件的硬盘存储位置创建 了一个指针:
[[email protected] ~]# echo “Welcome to linuxprobe.com” > readme.txt
[[email protected] ~]# ln readme.txt readit.txt
[[email protected] ~]# cat readme.txt
Welcome to linuxprobe.com
[[email protected] ~]# cat readit.txt
Welcome to linuxprobe.com
[[email protected] ~]# ls -l readme.txt
-rw-r–r-- 2 root root 26 Jan 11 00:13 readme.txt
可以看到,创建硬链接后,原始文件的硬盘链接数增加到了2.
[[email protected] ~]# rm -f readme.txt
[[email protected] ~]# cat readit.txt
Welcome to linuxprobe.com

相关文章:

  • 2022-01-24
  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
  • 2021-10-31
  • 2022-01-07
  • 2022-01-31
猜你喜欢
  • 2021-05-29
  • 2021-08-17
  • 2021-11-14
  • 2022-12-23
  • 2021-07-18
  • 2021-12-22
  • 2021-10-12
相关资源
相似解决方案