存储结构与磁盘划分
一切从“/” 开始
- Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。
- Linux系统中的文件目录名称是严格区分大小写的。并且文件名称中不能包含斜杠(/)。
- Linux系统中的文件存储结构图:
- Linux系统中常见的目录名称以及相应内容
目录名称 | 应放置文件的内容 |
---|---|
/boot | 开机所需文件——内核、开机菜单以及所需配置文件等 |
/dev | 以文件形式存放任何设备与接口 |
/etc | 配置文件 |
/home | 用户家目录 |
/bin | 存放单用户模式下还可以操作的命令 |
/lib | 开机时用到的函数库,以及/bin 与 /sbin 下面的命令要调用的函数 |
/sbin | 开机过程中需要的命令 |
/ media | 用于挂载设备文件的目录 |
/opt | 放置第三方的软件 |
/root | 系统管理员的家目录 |
/srv | 一些网络服务的数据文件目录 |
/tmp | 任何人均可使用的 “ 共享” 临时目录 |
/proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
/usr/local | 用户自行安装的软件 |
/usr/sbin | Linux系统开机时不会使用到的软件/命令/脚本 |
/usr/share | 帮助与说明文件,也可放置共享文件 |
/var | 主要存放经常变化文件,如日志 |
/lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
- Linux系统中一个重要的概念——路径,指的是如何定位到某个文件,分为绝对路径和相对路径。
- 绝对路径 : 是指从根目录(/)开始写起的文件或目录名称,
- 相对路径 : 是指相对于当前路径的写法。
物理设备的命名规则
- 系统内核中的 udev 设备管理器会自动把硬件名称规范起来
- udev 设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理 /dev 目录下的设备文件。
- 一般的硬盘设备都是以 “/dev/sd”开头的。而一台主机上可以有多块硬盘,因此系统采用 a~p 来代表16块不同的硬盘 (默认从a开始分配), 而且硬盘的分区编号也很有讲究:
- 主分区或扩展分区的编号从 1 开始,到 4 结束;
- 逻辑分区从编号 5 开始。
- /dev 目录中 sda 设备之所以是 a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为 /dev/sda。
- 分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。因此 sda3 只能表示是编号为3的分区,而不能判断 sda 设备上已经存在了 3 个分区。
- /dev/sda5 设备文件名称包含的信息,如下图:
- 说明:首先/dev/目录中保存的应当是硬件设备文件;其次,sd表示是存储设备;然后,a表示系统中同类接口中第一个被识别到的设备,最后,5表示这个设备是一个逻辑分区。
- 硬盘科普:
- 硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中,第一个扇区最重要,它里面保存着主引导记录与分区表信息。
- 就第一个扇区来讲,主引导记录需要占用446字节,分区表为64字节,结束符占用 2 字节;其中分区表中每记录一个分区信息就需要 16 字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这 4 个分区就是 4 个主分区。第一个扇区中的数据信息如下图:
- 注意: 所谓扩展分区,严格讲并不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。
- /dev/sdb8 :这个系统中第二块识别到的硬件设备中分区编号为8的逻辑分区的设备文件。
文件系统与数据资料
- 文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。
- Linux系统支持数十种文件系统,最常见的文件系统如下:
- Ext3: 是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。
- Ext4: Ext3的改进版,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容量高达 1EB (1EB = 1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系统能够批量分配block 块,从而极大地提高了读写效率。
- XFS: 是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,他的优势在发生意外宕机后尤其明显,既可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极地的计算和存储性能。并且它最大可支持的存储容量为 18EB。
- 计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux 内核中的软件层为用户程序提供了一个 VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。
挂载硬件设备
mount 命令
- mount命令用于挂载文件系统,格式为
mount 文件系统 挂载目录
- mount 命令参数表:
参数 | 作用 |
---|---|
-a | 挂载所有在/etc/fstab中定义的文件系统 |
-t | 指定文件系统的类型 |
umount命令
- umount命令用于撤销已挂载的设备文件,格式:
umount [挂载点/设备文件]
添加硬盘设备
fdisk 命令
- fdisk 命令用于管理磁盘分区,它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。格式为
fdisk [磁盘名称]
- fdisk 命令中的参数以及作用
参数 | 作用 |
---|---|
m | 查看全部可用的参数 |
n | 添加新的分区 |
d | 删除某个分区信息 |
l | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区信息 |
w | 保存并退出 |
q | 不保存直接退出 |
du命令
- du命令用于查看文件数据占用量,简单来说,就是用来查看一个或多个文件占用了多大的硬盘空间,格式:
du [选项] [文件]
- **du -sh /***命令用来查看Linux系统根目录下所有一级目录分别占用的空间大小。
添加交换分区
- SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。
- 交换分区的划分建议:在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍
- mkswap命令:SWAP分区专用的格式化命令
- free -m命令 : 查看交换分区的大小变化
- vim /etc/fstab : 分区配置文件。
磁盘容量配额
- quota 命令:可进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。
- quota 命令还有软限制和硬限制的功能。
- 软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用
- 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作
xfs _quota 命令
- xfs_quota 命令是一个专门针对XFS文件系统来管理 quota 磁盘容量配额服务而设计的命令,格式为:
quoua [参数] 配额 文件系统
- 其中 -c参数用于以参数的形式设置要执行的命令;
- -x 参数是专家模式,让运维人员能够对quota服务进行更多复杂的配置。
edquota命令
- edquota命令 用于编辑用户的quota配额限制,格式为
edquota [参数] [用户]
- -u参数表示要针对哪个用户进行设置;
- -g参数表示要针对哪个用户组进行设置。
- edquota命令会调用Vi或Vim编辑器来让 root 管理员修改要限制的具体细节。
软件方式链接
- 在Linux系统中存在硬链接和软链接两种文件
- 硬链接(hard link): 可以将它理解为一个“指向原始文件inode 的指针”,系统不为它分配独立的inode和文件。所以,硬链接文件和原文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode连接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。
- **软链接(也称为符号链接[symbolic link]):**仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原文件系统被删除后,链接文件也将失效,与Windows系统中的快捷方式具有一样的性质。
- ln命令:用于创建链接文件,格式为:
ln [选项] 目标
- ln命令中可用的参数以及作用
参数 | 作用 |
---|---|
-s | 创建“符号链接”(如果不带-s参数,则默认创建硬链接) |
-f | 强制创建文件或目录的链接 |
-i | 覆盖前先询问 |
-v | 显示创建链接的过程 |