📄 00000003.htm
字号:
同样,SCSI驱动器用/dev/sda,/dev/sdb等等描述,对应的子设备名字是/dev/sda1, <BR>/dev/sda2等等。 <BR> <BR> Linux对IDE光驱用硬盘的命名方式,不过光盘不存在分区问题,所以可以直接使用设 <BR>备名,例如把第二IDE从盘上的CDROM连结到/mnt/cdrom的命令是 <BR> <BR> mount /dev/hdd /mnt/cdrom <BR> <BR> mount命令最常用的两个命令开关是-t和-o ,-t命令用来标志准备挂接的文件系统的 <BR>类型,(在下一小节中详细介绍),-o选项用来设置一些选项,最主要的选项是ro和rw <BR>。这两个选项定义了对文件系统的存取方式,如果使用ro选项,那么这个文件系统将以 <BR>只读方式连入,无法修改上面的任何信息。缺省的设置是rw。 <BR> <BR> 连结了一个文件系统之后,就可以向这个系统对应的目录进行操作,效果就是操作对 <BR>应的文件系统,如果要把这个文件系统卸下,使用umount命令,其格式是: <BR> <BR> umount 连结点 <BR> <BR> 例如,在上面的例子中,把连结在/mnt/floppy的软盘文件系统卸下的命令是 <BR> <BR> umount /mnt/floppy <BR> <BR> 注意由于这个过程会改变目录结构,因此必须在没有任何进程访问/mnt/floppy下的文 <BR>件,也没有任何用户的当前目录是/mnt/floppy或者它的下级目录时才能完成,否则会返 <BR>回一个 device is busy的错误。在有些UNIX系统中你可以用umount –f 的方法来强行 <BR>越过这个限制,但这是一种极其粗野的方式,只有你明确地知道你到底在干什么才可以 <BR>,在Linux中这个功能已经被取消。(有一个有趣的问题,如果你的文件系统是级联的,那 <BR>么在拆卸下级文件系统之前上一层文件系统不能被拆卸)由于这个原因,在有人使用系统 <BR>的情况下拆卸服务器的文件系统几乎是不可能的。如果你实在要这样干,请参考系统配 <BR>置那一章,将系统切换到单用户模式,这个过程会把所有用户从系统上踢掉,然后再完 <BR>成你的拆卸过程。 <BR> <BR> 作为一种保护机制,已经mount的cd-rom不能通过按下面板上的按钮直接弹出,而必须 <BR>首先执行umount命令,当然也可以用eject命令完成umount和弹出的自动操作。对于软盘 <BR>没有这样的保护,所以你必须注意不要弹出一个已经连结的软盘,如果你这么做了,由 <BR>于unix的文件工作方式,除非这个软盘是以read only方式连入,否则几乎肯定会出现问 <BR>题。 <BR> <BR> mount和umount都需要超级用户权限才能执行,另外,它们都支持-a选项,mount –a <BR>挂接在/etc/fstab中定义的所有可挂接文件系统;umount –a卸下所有定义在/etc/mta <BR>b中得已挂接文件系统。每当挂接一个文件系统时,系统自动在/etc/mtab中增加一条纪 <BR>录;当这个系统被卸下时自动把纪录清除。直接输入不带参数的mount指令将会显示当前 <BR>已挂接的文件系统。 <BR> <BR> 2.1.4 VFS、缓冲和ext2 <BR> <BR> 每一种UNIX变体都有其独特的文件系统实现方式,Linux文件系统的实现依赖于所谓e <BR>xt2文件系统,但是它也支持其他许多种出自其他操作系统的文件系统实现。在这个方面 <BR>,Linux引入了虚拟文件系统(VFS)的概念,任何文件系统连接入Linux时都必须先经过 <BR>VFS映射成为标准的文件系统。只要增加VFS到具体文件系统的映射,就可以让Linux支持 <BR>新的文件系统。一般说Linux必须在ext2文件系统上启动,但是也存在用基于MSDOS的某 <BR>种文件系统来实现它的可能。 <BR> <BR> VFS的最大一个影响也许是在缓冲文件方面。如同在MS-DOS上经常看到的那样,Linux <BR>也使用内存高速缓冲磁盘的读写。事实上,为了提高性能,Linux被设计为将“几乎所有 <BR>”的空余内存都用来作为磁盘缓冲,这个设计使得Linux具有UNIX类系统中最高的磁盘效 <BR>能。(如果你对这个有兴趣,那么,有些人曾经宣布,在Linux+PeniumII+IDE上运行ta <BR>r+zip比Sun solaris+SCSI上快一倍左右,原因是solaris不使用磁盘缓冲。)它的缓冲 <BR>对读写都同样有效,为此,系统必须每隔一段时间将缓冲区中的内容和磁盘中的内容进 <BR>行同步,如果在同步间隙中掉电,未写入的数据将会丢失。在拆卸任何文件系统或者关 <BR>机、重新启动之前,系统内核将自动同步其内容。当然你也可以使用sync命令来进行这 <BR>个同步。 <BR> <BR> 尽管如此,仍然可能由于某些原因使得文件系统未能正确同步,通常造成这种现象的 <BR>原因是掉电,因此,缺省的系统启动脚本会在每次重新启动时自动检测文件系统,并且 <BR>启动fsck程序修理那些没有正确同步的文件系统。(fsck是系统管理员用来修理文件系 <BR>统的主要工具,它的用法我们将在“日常维护”中介绍。)这个命令有时要耗费很长的 <BR>时间。 <BR> <BR> Ext2是Linux的标准文件系统,与任何UNIX文件系统类似,它将磁盘分割成为一系列数 <BR>据块,再由数据块构成块组。每个文件由唯一的I节点(inode)描述,它包含文件的存放 <BR>和权限信息。象一切UNIX一样,Linux在内存中缓冲inode表来加快文件的存取。 <BR> <BR> (如果这些内容会让你糊涂,那么不要紧,你并不需要了解ext2的具体实现。实际上 <BR>对于一个非内核设计者来说理解ext2的实现的唯一理由是要去挽救一个已经被灾难完全 <BR>摧毁的文件系统。然而,备份和恢复会容易的多,不是吗?) <BR> <BR> 2.1.5 其它文件系统 <BR> <BR> Linux支持许多文件系统,“支持”的意思是说你可以把载有这些文件系统的磁盘分区 <BR>或者什么其他的设备直接连接到Linux文件系统中。一般情况下,如果要连接一个不是e <BR>xt2的文件系统,你需要在mount命令行中用-t指令明确地给出文件系统的类型。Linux系 <BR>统目前支持的文件系统类型主要有: <BR> <BR> minix:最早的MINIX系统的文件系统 <BR> <BR> ext2:Linux的标准文件系统,它还有一个比较早的形式即ext,目前已经不用 <BR> <BR> msdos:这就是标准的MSDOS文件系统 <BR> <BR> umsdos:这是一个特殊的文件系统实现,可以用MSDOS来存贮类似UNIX的长文件名文件 <BR> <BR> vfat:这是windows 95/98使用的文件系统,支持windows 95长文件名 <BR> <BR> iso9660:CD-ROM的标准文件系统 <BR> <BR> hpfs:OS/2用的文件系统 <BR> <BR> ntfs:windows nt 4.0用的文件系统(使用它要小心,目前这个功能还不是很可靠, <BR>绝对不要把一个NTFS文件系统连接成rw的方式!) <BR> <BR> ufs:BSD用的文件系统 <BR> <BR> sysv:System V系列的一些UNIX使用的文件系统。 <BR> <BR> Ext2和ISO9660通常不需要使用类型说明,而msdos/win95文件系统则常常需要明确地 <BR>说明其为msdos或者vfat,例如,在/dev/hdb2上装有一个windows 95文件系统,那么, <BR>将它连结到/mnt/win95的命令是 <BR> <BR> mount /dev/hdb2 /mnt/win95 –t vfat <BR> <BR> 偶尔你必须为连结到文件系统中的msdos软盘说明其类型: <BR> <BR> mount /dev/fd0 /mnt/floppy –t msdos <BR> <BR> <BR> 2.2 系统内核基础 <BR> <BR> 下面我们要解释有关系统内核的一些东西。必须记住,GNU+Linux的一个特色是如此之 <BR>多的程序可以使用,因此几乎所有的东西都可以用你自己的东西替换掉,除了系统内核 <BR>。 <BR> <BR> 2.2.1 什么是内核 <BR> <BR> <BR> Linux将系统的一些关键性程序分离出来构成所谓操作系统内核。象大部分UNIX操作系 <BR>统的内核那样,Linux内核必须完成下面的一些任务: <BR> <BR> 管理对文件系统的读写,把对文件系统的操作映射成对磁盘或其他块设备的操作 <BR> <BR> 管理程序的运行,为程序分配资源,并且处理程序之间的通讯 <BR> <BR> 管理存储器,为程序分配内存,并且管理虚拟内存 <BR> <BR> 管理输入输出,将设备映射成设备文件 <BR> <BR> 管理网络 <BR> <BR> 文件系统的概念我们已经在前面一节中介绍过了,内核必须包含VFS管理程序以及将各 <BR>种具体文件系统映射成VFS的程序。另外的几项功能差不多也象文件系统一样复杂,首先 <BR>是对于内存的管理。 <BR> <BR> Linux使用虚拟存储管理方式,利用现代处理器的页面映射能力,在x86处理器上,Li <BR>nux使用4GB地址空间,系统的物理存贮器通常总是少于这个数字。操作系统除了使用物 <BR>理存储器外,也支持将硬盘空间映射成为虚拟内存。所有存贮器(物理内存和虚拟内存 <BR>)分成大小相等的页面,在x86系统中,每一页的大小是4kB,通过给出页号和页面内偏 <BR>移量对某个内存地址进行访问,在物理内存紧张的时候,操作系统必须把某些没有使用 <BR>的页面从内存移动到硬盘上以便腾出空闲的页面供程序使用,这个过程称为对换。 <BR> <BR> 显然对换需要虚拟存储空间,通常情况下Linux用交换分区来处理这个问题,在硬盘上 <BR>开设一个独立的分区专门用于映射虚拟内存,这种分区称为交换分区。交换分区可以并 <BR>且经常不止一个,之所以这样是由于早期的Linux核心要求每个交换分区不能超过128MB <BR>。对于较重负荷的服务器,交换内存用到256MB甚至更多都是很正常的事情,因此那时的 <BR>系统经常有多个交换分区,目前这个限制已经去除,但仍有人使用多于一个的交换分区 <BR>。 <BR> <BR> 核心的另外一个任务是执行用户程序,为此核心必须支持可执行文件格式。Linux使用 <BR>多种可执行文件的格式,诸如elf,a.out等等(与ms-dos不同,没有办法从名字上区分 <BR>一个文件到底是什么格式,核心只关心二进制文件的具体形式)。 <BR> <BR> 除此之外,所有的设备驱动程序都必须包含在系统内核之中,依靠这些驱动程序操作 <BR>系统才能够对硬件进行操作。 <BR> <BR> 2.2.2 可加载模块和设备驱动程序 <BR> <BR> 在一些系统中内核的运行参数以及内核中包含的设备驱动程序都只能在系统启动时装 <BR>入,因此要想改变系统硬件或者对硬件的运行参数进行调整,唯一的选择是重新启动。 <BR>Linux支持在运行期间加载核心模块。 <BR> <BR> 模块(modules)是Linux的概念,它意味着可以将一些功能的程序分离出来,动态地加 <BR>入和撤出内核。通常这种实现的目的是减少内核需要的物理存储空间(内核不能对换, <BR>也不使用虚拟内存映射)以及使系统的配置更灵活。尽管理论上随意加入和拆卸内核的 <BR>功能容易使内核陷入危险中,但是Linux的实现使得加载一个内核模块实际是相当安全的 <BR>。 <BR> <BR> 必须注意的是,一个放在模块中的程序和直接放在内核映像文件(例如,在许多系统 <BR>上的/vmlinuz)中的并没有什么不同,把某个部分当成模块还是直接放入内核映像的理 <BR>由通常只是为了方便。例如,尽管可以把软驱的驱动程序作成可加载模块,但是对于一 <BR>个经常使用软盘的用户来说这只会带来烦恼,因为在使用软盘之前他必须将驱动模块调 <BR>入,相反,对于一个普通用户,ntfs驱动程序可以合情合理地做成模块,因为需要访问 <BR>windows NT分区的几率肯定是很小的。网卡和声卡驱动程序也通常做成模块的形式,因 <BR>为它们的种类实在太多,在内核中包含所有的驱动程序肯定是一种疯狂的想法。 <BR> <BR> 内核模块可以用insmod命令加载,用rmmod命令卸载,其语法是: <BR> <BR> /sbin/insmod 模块名 <BR> <BR> /sbin/rmmod 模块名 <BR> <BR> 而使用lsmod命令可以显示当前加入的内核模块。 <BR> <BR> 由于许多模块的加载都涉及到复杂的版本、相互依赖等问题,所以Linux文档提倡使用 <BR>更简单的modprobe命令来加载模块: <BR> <BR> /sbin/modprobe 模块名 <BR> <BR> 需要指出的是,模块是在编译系统内核时设定的,通常在/lib/modules目录下有一个 <BR>目录,其名字是你的内核版本号(比如:2.2,14),而各种模块都包含在这个目录下, <BR>名字是xxxx.o,xxxx是模块名,而.o是缺省的扩展名。在使用上面的各个命令时,不需 <BR>要使用扩展名也不需要使用路径。例如,使用/lib/modules/2.2.14/ipv4/ip_masq_qua <BR>ke.o的命令为 <BR> <BR> /sbin/modprobe ip_masq_quake.o <BR> <BR> 也存在另外一种方案,这种方式中,当核心需要某个模块时,它自动去寻找对应的模 <BR>块文件并且将它加载到系统中。这是通过正确地编译内核实现的,不过,一般不推荐使 <BR>用这样的办法,因为增大了出现意外事故的几率。 <BR> <BR> 2.2.3 内核不做什么 <BR> <BR> Linux内核是一个比较复杂的程序,技术上讲,它不同于一些现代操作系统所采用的微 <BR>内核,相反,许许多多的东西被加入到了内核之中。但是,比起许多其他系统,Linux内 <BR>核是非常小而且简单的。另外,许多东西虽然是Linux的一部分但是和内核完全无关,拆 <BR>卸它们至少在理论上不会影响系统的正常运转。 <BR> <BR> 首先的可以拆卸或者替换的东西是命令解释程序,再就是X-Window,这些东西只是几 <BR>个应用程序,它们并不运行在核心态中,对于Linux它们也不是绝对必要的(然而,这种 <BR>说法也许只有理论上的意义,一个没有shell的Linux几乎肯定是不可操作的)。 <BR> <BR> 2.3 shell和配置程序 <BR> <BR> 作为一个UNIX系统管理者,你必须了解shell。Linux在对shell的依赖方面比其它UNI <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -