Unix/Linux 文件系统基础



文件系统是在分区或磁盘上文件的逻辑集合。分区是信息的容器,如果需要,可以跨越整个硬盘驱动器。

您的硬盘驱动器可以有多个分区,这些分区通常只包含一个文件系统,例如一个文件系统容纳/文件系统,另一个容纳/home 文件系统

每个分区一个文件系统允许对不同的文件系统进行逻辑维护和管理。

在 Unix 中,一切都被视为文件,包括物理设备,如 DVD-ROM、USB 设备和软盘驱动器。

目录结构

Unix 使用分层文件系统结构,就像一棵倒置的树,根目录 (/) 在文件系统的底部,所有其他目录都从那里延伸。

Unix 文件系统是具有以下属性的文件和目录的集合:

  • 它有一个根目录 (/),其中包含其他文件和目录。

  • 每个文件或目录都由其名称、所在的目录和唯一的标识符(通常称为inode)唯一标识。

  • 按照惯例,根目录的inode编号为2,而lost+found目录的inode编号为3inode编号01未使用。可以通过为ls 命令指定-i 选项查看文件 inode 编号。

  • 它是自包含的。一个文件系统与另一个文件系统之间没有依赖关系。

目录具有特定用途,并且通常保存相同类型的信息,以便于查找文件。以下是 Unix 主要版本中存在的目录:

序号 目录及说明
1

/

这是根目录,它应该只包含文件结构顶层所需的目录

2

/bin

这是可执行文件所在的位置。所有用户都可以使用这些文件

3

/dev

这些是设备驱动程序

4

/etc

管理程序目录命令、配置文件、磁盘配置文件、有效用户列表、组、以太网、主机,以及发送重要消息的位置

5

/lib

包含共享库文件,有时还包含其他与内核相关的文件

6

/boot

包含用于启动系统的文件

7

/home

包含用户和其他帐户的主目录

8

/mnt

用于挂载其他临时文件系统,例如cdromfloppy分别用于CD-ROM驱动器和软盘驱动器

9

/proc

包含所有进程,这些进程由进程号或其他对系统动态的信息标记为文件

10

/tmp

保存系统启动之间使用的临时文件

11

/usr

用于各种目的,可以被许多用户使用。包括管理命令、共享文件、库文件和其他文件

12

/var

通常包含可变长度的文件,例如日志和打印文件以及任何可能包含可变数量数据的其他类型文件

13

/sbin

包含二进制(可执行)文件,通常用于系统管理。例如,fdiskifconfig实用程序

14

/kernel

包含内核文件

浏览文件系统

现在您已经了解了文件系统的基础知识,您可以开始浏览所需的文件。以下命令用于浏览系统:

序号 命令及说明
1

cat filename

显示文件名

2

cd dirname

移动到指定的目录

3

cp file1 file2

将一个文件/目录复制到指定位置

4

file filename

识别文件类型(二进制、文本等)

5

find filename dir

查找文件/目录

6

head filename

显示文件的开头

7

less filename

从文件末尾或开头浏览文件

8

ls dirname

显示指定目录的内容

9

mkdir dirname

创建指定的目录

10

more filename

从开头到结尾浏览文件

11

mv file1 file2

移动或重命名文件/目录的位置

12

pwd

显示用户当前所在的目录

13

rm filename

删除文件

14

rmdir dirname

删除目录

15

tail filename

显示文件的结尾

16

touch filename

创建一个空文件或修改现有文件或其属性

17

whereis filename

显示文件的位置

18

which filename

如果文件在您的 PATH 中,则显示文件的位置

您可以使用手册页帮助检查此处提到的每个命令的完整语法。

df 命令

管理分区空间的第一种方法是使用df (disk free)命令。命令df -k (disk free)显示以千字节为单位的磁盘空间使用情况,如下所示:

$df -k
Filesystem      1K-blocks      Used   Available Use% Mounted on
/dev/vzfs        10485760   7836644     2649116  75% /
/devices                0         0           0   0% /devices
$

某些目录,例如/devices,在 kbytes、used 和 avail 列中显示 0,容量也显示 0%。这些是特殊(或虚拟)文件系统,尽管它们位于 / 下的磁盘上,但它们本身不会占用磁盘空间。

df -k输出在所有 Unix 系统上通常相同。以下是它通常包含的内容:

序号 列及说明
1

Filesystem

物理文件系统名称

2

kbytes

存储介质上可用的总千字节空间

3

used

已使用的总千字节空间(由文件使用)

4

avail

可用于使用的总千字节数

5

capacity

文件使用的总空间百分比

6

Mounted on

文件系统安装到的位置

您可以使用-h (human readable) 选项以更易于理解的表示法显示大小的输出。

du 命令

du (disk usage) 命令允许您指定目录以显示特定目录的磁盘空间使用情况。

如果您想确定特定目录占用了多少空间,此命令很有用。以下命令显示每个目录消耗的块数。单个块的大小可能是 512 字节或 1 千字节,具体取决于您的系统。

$du /etc
10     /etc/cron.d
126    /etc/default
6      /etc/dfs
...
$

-h选项使输出更容易理解:

$du -h /etc
5k    /etc/cron.d
63k   /etc/default
3k    /etc/dfs
...
$

挂载文件系统

必须挂载文件系统才能被系统使用。要查看当前挂载到系统上的内容(可供使用),请使用以下命令:

$ mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw,nodiratime)
devpts on /dev/pts type devpts (rw)
$

按照 Unix 约定,/mnt目录是临时挂载点(例如 CDROM 驱动器、远程网络驱动器和软盘驱动器)所在的位置。如果您需要挂载文件系统,可以使用以下语法的 mount 命令:

mount -t file_system_type device_to_mount directory_to_mount_to

例如,如果您想将CD-ROM挂载到目录/mnt/cdrom,您可以键入:

$ mount -t iso9660 /dev/cdrom /mnt/cdrom

这假设您的 CD-ROM 设备称为/dev/cdrom,并且您想将其挂载到/mnt/cdrom。有关更具体的详细信息,请参阅 mount 手册页,或在命令行键入 mount -h 以获取帮助信息。

挂载后,您可以使用 cd 命令通过刚刚创建的挂载点浏览新可用的文件系统。

卸载文件系统

要卸载(删除)系统中的文件系统,请使用umount命令并指定挂载点或设备。

例如,要卸载 cdrom,请使用以下命令:

$ umount /dev/cdrom

mount 命令允许您访问文件系统,但在大多数现代 Unix 系统上,自动挂载功能使此过程对用户不可见,并且不需要任何干预。

用户和组配额

用户和组配额提供了机制,通过该机制,单个用户或特定组内所有用户使用的空间量可以限制为管理员定义的值。

配额围绕两个限制运行,如果空间量或磁盘块数量开始超过管理员定义的限制,则允许用户采取一些措施:

  • 软限制 - 如果用户超过定义的限制,则会有一个宽限期,允许用户释放一些空间。

  • 硬限制 - 无论宽限期如何,达到硬限制后,将无法再分配任何文件或块。

有一些命令可以管理配额:

序号 命令及说明
1

quota

显示用户或组的磁盘使用情况和限制

2

edquota

这是一个配额编辑器。可以使用此命令编辑用户或组的配额

3

quotacheck

扫描文件系统以查找磁盘使用情况,创建、检查和修复配额文件

4

setquota

这是一个命令行配额编辑器。

5

quotaon

此命令通知系统在一个或多个文件系统上启用磁盘配额。

6

quotaoff

此命令通知系统在一个或多个文件系统上禁用磁盘配额。

7

repquota

此命令打印指定文件系统的磁盘使用情况和配额摘要。

您可以使用手册页帮助检查此处提到的每个命令的完整语法。

广告