访问原理
Windows系统中, 所有东西都是存于硬盘上。启动系统后,先确定硬盘,再确定硬盘上的分区以及每个分区所对应文件系统,最后是存放在某个分区特定的文件系统中的文件。也就是说,Windows是通过 “某个硬盘-硬盘上的某个分区-分区上的特定文件系统-特定文件系统中的文件” 这样的顺序来访问到一个文件的。
Linux 系统一切都存放于唯一的虚拟文件系统中,而整个虚拟文件系统组织结构,随每次内核系统的启动在内存中建立,这个虚拟文件系统是树状的结构,以一个根目录开始。启动系统后,先有加载虚拟文件系统,再识别出各个硬盘, 再把某个硬盘的某个分区挂载到这个 虚拟文件系统的某个子树上(即分区用某个子目录来表示),再确定分区对应的子目录文件系统,最后的文件就存放在这个特定的文件系统中。 也就是说, Linux 系统是通过 “虚拟文件系统-硬盘-硬盘上的分区-分区上的特定文件系统-特定文件系统中的文件” 这样的顺序来访问一个文件。
与Windows中把硬盘分区看成 C, D, E 盘符不同, Linux 中一开始就没有硬盘的概念,就只有一个纯粹的虚拟文件系统。如果想要使用哪个硬盘的某个分区,就把那个分区 “挂载” 到某个子目录之下,这样硬盘中的分区,文件系统,目录等内容就呈现到了那个子目录里面。也就是说,在 Linux 中,我们使用硬盘中的数据,实际是先把硬盘的某个分区“挂载” 到某个子目录下,然后通过那个子目录来访问的。
系统组织
Windows系统中,文件大致可以分为两种:系统文件和用户文件 。一般来说系统文件默认存放于C盘,当然也可以在安装时选择其他盘;用户文件可由用户自由选择到任意分区。
Linux 系统中,主要有两个概念: 虚拟文件系统中的文件和 Linux操作系统内核。逻辑上可以认为前者属于上层,后者在下层。 Linux 把除了系统内核以外的一切文件都看作是虚拟文件系统中的文件。无论是硬件、软件、数据还是内存中的东西,我们都可以在虚拟文件系统中的相应子目录对他们进行访问和操作,而实现这些操作的就是Linux操作系统内核。 Linux内核(kernel)是系统的心脏,是运行程序和管理硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。在启动 Linux 系统的时,先把内核加载到内存中,内核本身提供了文件管理、设备管理、内存管理、CPU进程调度管理、网络管理等功能,等内核运行起来之后,就在内存中建立起相应的虚拟文件系统,最后就是内核利用它提供的那些功能,通过管理文件的方式,来管理虚拟文件系统中的硬件软件等各种资源。
Linux主要目录速查表
/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始。当在终端里输入/home,其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
/boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有:
/etc/inittab
/etc/fstab
/etc/init.d
/etc/X11
/etc/sysconfig
/etc/xinetd.d
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
~表示当前用户的家目录
~edu表示用户edu的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root:系统管理员root的家目录
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr:应用程序存放目录
/usr/bin:存放应用程序
/usr/share:存放共享数据
/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
/usr/local:存放软件升级包
/usr/share/doc:系统说明文件存放目录
/usr/share/man:程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
/var/log:随时更改的日志文件
/var/spool/mail:邮件存放的目录
/var/run:程序或服务启动后,其 PID 存放在该目录下
挂载点与磁盘分区
1. 初次接触 linux
只要划分 "/" 及 “交换分区swap”就好,个人学习电脑的话推荐这样划分。
交换分区相当于Windows中的“虚拟内存”,如果内存低的话(1-4G),物理内存的两倍,高点的话(8-16G)要么等于物理内存,要么物理内存+2g左右。
2. 进阶分区方式
将重要的目录分别独立出来而不与根目录放在一起,其中一个主要原因是某个频繁的磁盘分区出问题时,至少不会影响到根目录系统,恢复数据比较容易。
下面是比较符合容量大或读写频繁特征的目录,具体分区大小根据这台主机用途来划分
/boot
/home
swap
/
不管哪种方式,尽可能多的预留空间不分配,方便后期灵活扩容。