Linux目录结构简析

Linux继承了unix操作系统结构清晰的特点。在linux下的文件结构非常有条理。但是,上述的优点只有在对linux相当熟悉时,才能体会到。现在,虫虫就把linux下的目录结构简单介绍一下。
/vmlinuz
  我们已经知道,每一个linux都有一个内核(vmlinuz),我们在这个内核上添加上可以完成各种特定功能的 模块,每个模块就体现在 linux中各种不同的目录上。当然,各种不同的发行套件,其目录有细小的差别,但主要结构都是一样的。我们还要将linux的功能模块和各种应用程序结 合起来,这样,才能使你的 linux系统为你服务。在/vmlinuz目录下存放的就是系统的内核。还记得我们在配置lilo时,提到过这个内核吗?
/bin
  显而易见,bin 就是二进制(binary)英文缩写。在一般的系统当中,你都可以在这个目录下找到linux常用的命令。在有的版本中你还会找到一些和根目录下相同的目录。
/boot
  在这个目录下存放的都是系统启动时要用到的程序。我们在使用lilo引导linux的时候,会用到这里的一些信息。
/dev
  dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外 部设备的驱动程序。这一点和我们常用的windows, dos操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。 例如:我们在系统中键入:cd /dev/cdrom 我们就可以看到光驱中的文件了。同样道理,我们键入:cd /dev/mouse 就可以看看鼠标的相关文件。在这个目录下,有一个null设备,这个东西本身没有任何意义。如果你向这个目录写入文件或内容,他们统统有去无回。
/cdrom
  这个目录在你刚刚安装系统的时候是空的。你可以将光驱文件系统挂在这个目录下。例如:mount /dev/cdrom /cdrom
/etc
  etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。我们要用到的网络配置文件,文件系统,x系统配置文件,设备配置信息,设置用户信息等都在这个目录下。以后,虫虫还会详细讲解这个目录下的内容。
/sbin
  这个目录是用来存放系统管理员的系统管理程序。
/home
  如果我们建立一个用户,用户名是"xx",那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。
/lib
  lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,一旦发生问题,你的系统就不能工作了,到时候你别说虫虫没有提醒你呀。
/lost+found
  这个目录在大多数情况下都是空的。但是如果你正在工作突然停电,或是没有用正常方式关机,在你重新启动机器的时候,有些文件就会找不到应该存放的地方,对于这些文件,系统将他们放在这个目录下,就象为无家可归的人提供一个临时住所。
/mnt
  这个目录在一般情况下也是空的。你可以临时将别的文件系统挂在这个目录下。
/proc
  可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。
/root
  如果你是以超级用户的身份登录的,这个就是超级用户的主目录。
/tmp
  用来存放不同程序执行时产生的临时文件。
/usr
  这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。

“/usr”目录下比较重要的部分有:
      /usr/X11R6 X-WINDOWS系统(version 11, release 6)
      /usr/X11 同/usr/X11R6 (/usr/X11R6的符号连接)
      /usr/X11R6/bin 大量的小X-WINDOWS应用程序(也可能是一些在其它子目录下大执行文件的符号连接)。  

      /usr/doc LINUX的文档资料(在更新的系统中,这个目录移到/usr/share/doc)。
      /usr/share 独立与你计算机结构的数据,譬如,字典中的词。
      /usr/bin和/usr/sbin 类似与“/”根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。
      /usr/local 本地管理员安装的应用程序(也可能每个应用程序有单独的子目录)。在“main”安装后,这个目录可能是空的。这个目录下的内容在重安装或升级操作系统后应该存在。
      /usr/local/bin 可能是用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接。

 

/proc目录的内容:
       /proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。
       /proc/devices 当前运行内核所配置的所有设备清单。
       /proc/dma 当前正在使用的DMA通道。/proc/filesystems 当前运行内核所配置的文件系统。
       /proc/interrupts 正在使用的中断,和曾经有多少个中断。
       /proc/ioports 当前正在使用的I/O端口。
       举例,使用下面的命令能读出系统的CPU信息。
       cat /proc/cpuinfo

总结来说:
       · 用户应该将文件存在/home/user_login_name目录下(及其子目录下)。
       · 本地管理员大多数情况下将额外的软件安装在/usr/local目录下并符号连接在/usr/local/bin下的主执行程序。
       · 系统的所有设置在/etc目录下。
       · 不要修改根目录(“/”)或/usr目录下的任何内容,除非真的清楚要做什么。这些目录最好和LINUX发布时保持一致。
       · 大多数工具和应用程序安装在目录:/bin, /usr/sbin, /sbin, /usr/x11/bin,/usr/local/bin。
       · 所有的文件在单一的目录树下。没有所谓的“驱动符”。

 

linux目录架构
/   根目录
/bin    常用的命令 binary file 的目录
/boot   存放系统启动时必须读取的档案,包括核心 (kernel) 在内
     /boot/grub/menu.lst   GRUB设置
     /boot/vmlinuz   内核
     /boot/initrd     核心解压缩所需 RAM Disk
/dev    系统周边设备    
/etc    系统相关设定文件
     /etc/DIR_COLORS   设定颜色
     /etc/HOSTNAME   设定用户的节点名
     /etc/NETWORKING   只有YES标明网络存在
     /etc/host.conf 文件说明用户的系统如何查询节点名
     /etc/hosts 设定用户自已的IP与名字的对应表
     /etc/hosts.allow 设置允许使用inetd的机器使用
     /etc/hosts.deny 设置不允许使用inetd的机器使用
     /etc/hosts.equiv 设置远端机不用密码
     /etc/inetd.conf 设定系统网络守护进程inetd的配置
     /etc/gateways 设定路由器
     /etc/protocols 设定系统支持的协议
     /etc/named.boot 设定本机为名字服务器的配置文件
     /etc/sysconfig/network-scripts/ifcfg-eth0   设置IP
     /etc/resolv.conf    设置DNS 
     /etc/X11  X Window的配置文件,xorg.conf 或 XF86Config 這两个 X Server 的设定档
     /etc/fstab    记录开机要mount的文件系统
     /etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel
     /etc/issue 记录用户登录前显示的信息
     /etc/group 设定用户的组名与相关信息
     /etc/passwd 帐号信息
     /etc/shadow 密码信息
     /etc/sudoers 可以sudo命令的配置文件
     /etc/securetty 设定哪些终端可以让root登录
     /etc/login.defs 所有用户登录时的缺省配置
     /etc/exports 设定NFS系统用的
     /etc/init.d/   所有服务的预设启动 script 都是放在這里的,例如要启动或者关闭
     /etc/xinetd.d/  這就是所谓的 super daemon 管理的各项服务的设定档目录
     /etc/modprobe.conf   内核模块额外参数设定
     /etc/syslog.conf   日志设置文件
/home   使用者家目录
/lib    系统会使用到的函数库
     /lib/modules   kernel 的相关模块
     /var/lib/rpm   rpm套件安装处
/lost+found    系統不正常产生错误时,会将一些遗失的片段放置于此目录下
/mnt     外设的挂载点
/media   与/mnt类似
/opt     主机额外安装的软件
/proc    虚拟目录,是内存的映射 

      /proc/version   内核版本
       /proc/sys/kernel   系统内核功能
/root    系统管理员的家目录
/sbin    系统管理员才能执行的指令
/srv     一些服务启动之后,这些服务所需要取用的资料目录
/tmp     一般使用者或者是正在执行的程序暂时放置档案的地方
/usr     最大的目录,存许多应用程序和文件
    /usr/X11R6:   X-Window目录
    /usr/src:    Linux源代码
    /usr/include:系统头文件
    /usr/openwin 存放SUN的OpenWin
    /usr/man 在线使用手册
    /usr/bin           使用者可执行的 binary file 的目录
    /usr/local/bin     使用者可执行的 binary file 的目录
    /usr/lib           系统会使用到的函数库
    /usr/local/lib     系统会使用到的函数库
    /usr/sbin          系统管理员才能执行的指令
    /usr/local/sbin    系统管理员才能执行的指令
/var   日志文件
    /var/log/secure    记录登入系统存取资料的档案,例如 pop3, ssh, telnet, ftp 等都会记录在此案中
    /var/log/wtmp     记录登入者的信息资料, last
    /var/log/messages  几乎系统发生的错误信息
    /var/log/boot.log  记录开机或者是一些服务启动的时候,所显示的启动或关闭信息
    /var/log/maillog   记录邮件存取或往來( sendmail 与 pop3 )的使用者记录

    /var/log/cron      记录 crontab 這个例行性服务的內容
    /var/log/httpd, /var/log/news, /var/log/mysqld.log, /var/log/samba, /var/log

<think>好的,用户现在问的是关于“disk数据结构简析”。我需要先确定用户指的是哪种上下文中的“disk数据结构”。因为“disk”这个词在计算机科学中可以指硬盘、磁盘的数据结构,也可能是指数据库中的数据结构,或者是某种特定的磁盘管理结构,比如文件系统中的结构。 首先回顾一下之前的对话历史。用户之前问过“四级物理地址”,涉及到内存管理和页表结构。现在的问题可能延续存储管理的主题,但转向磁盘的数据结构。因此,用户可能是在学习操作系统的存储管理,或者是数据库的物理存储结构。 接下来,我需要分析用户的具体需求。用户可能想了解磁盘上数据的组织方式,例如文件系统如何管理磁盘空间,或者数据库如何在磁盘上存储数据。也有可能用户指的是磁盘本身的物理结构,比如磁道、扇区等。 考虑到用户之前的问题是关于内存管理的,现在转向磁盘,可能是在学习存储系统的层次结构,从内存到磁盘的过渡。因此,用户可能需要了解文件系统的数据结构,如超级块、inode、目录结构等,或者是磁盘分区和格式化的相关知识。 另外,用户可能对磁盘的数据结构有更具体的兴趣,比如磁盘调度算法中用到的数据结构,或者是RAID中的磁盘数据分布结构。但根据问题中的“简析”,用户可能希望得到一个概述性的介绍,而不是深入某个特定方面。 需要确认是否应该涵盖物理结构和逻辑结构。物理结构包括磁道、扇区、柱面等,而逻辑结构涉及文件系统的组织方式,如FAT、EXT4、NTFS等不同的文件系统结构。此外,可能还需要提到磁盘分区表,如MBR或GPT。 可能用户是计算机专业的学生,正在准备考试或做项目,需要了解磁盘数据的基础知识。或者是一位开发者,在优化存储性能时需要了解磁盘数据结构。因此,回答需要兼顾基础概念和实际应用,同时保持结构清晰,层次分明。 需要确保回答中使用正确的术语,并且解释清楚每个数据结构的作用和相互关系。例如,文件系统中的超级块存储文件系统的元数据,inode存储文件元数据,数据块存储实际内容等。同时,可能需要提到磁盘的块(block)和簇(cluster)的概念,以及它们在空间分配中的作用。 还要注意用户可能对现代文件系统如EXT4、Btrfs或ZFS的特性感兴趣,但根据问题中的“简析”,可能需要保持基础,不深入具体文件系统的细节。此外,可能需要简要提及磁盘缓存、缓冲区管理相关的数据结构,但这可能属于操作系统层面的内容,而非磁盘本身的数据结构。 总结,回答应该包括磁盘的物理结构、逻辑结构(如文件系统的基本组成)、分区表,以及可能的访问方法相关的数据结构。需要分点说明,结构清晰,使用例子或比喻帮助理解。同时,确保技术术语准确,符合中文表达习惯,避免过于晦涩。</think>以下是磁盘(存储设备)数据结构的核心解析,重点涵盖**物理结构**与**逻辑结构**两个层面: --- ### **一、物理结构** 磁盘(如机械硬盘)的物理数据结构由硬件设计决定: 1. **磁道(Track)** - 盘片表面同心圆轨道,数据存储的物理路径。 2. **扇区(Sector)** - 磁道的最小存储单元,传统硬盘每扇区$512$字节,现代支持$4K$(高级格式化)。 3. **柱面(Cylinder)** - 多个盘片同一半径磁道的集合,优化磁头移动效率。 4. **块(Block)** - 操作系统对扇区的逻辑抽象,通常由多个扇区组成(如$4K$块=8个$512$B扇区)。 --- ### **二、逻辑结构(文件系统层)** 文件系统通过数据结构管理磁盘空间与文件存储,以**EXT4**(Linux)为例: 1. **超级块(Superblock)** - 存储文件系统元数据:块大小、总块数、inode数量等。 - 备份超级块用于故障恢复。 2. **块组描述符(Block Group Descriptor)** - 划分磁盘为多个块组,记录每个块组的空闲块和inode信息。 3. **inode表(inode Table)** - 存储文件元数据:权限、大小、时间戳、数据块指针等。 - **EXT4 inode结构**: ```c struct ext4_inode { __le16 i_mode; // 文件类型与权限 __le64 i_size; // 文件大小 __le32 i_block[EXT4_N_BLOCKS]; // 直接/间接/双间接块指针 // ... 其他字段 }; ``` 4. **目录项(Directory Entry)** - 记录文件名与对应inode号的映射,支持哈希树加速查找。 5. **数据块(Data Block)** - 实际存储文件内容或目录结构。 --- ### **三、磁盘访问相关数据结构** 1. **分区表** - **MBR(主引导记录)**:传统方案,支持4个主分区(最大$2TB$)。 - **GPT(GUID分区表)**:现代方案,支持更多分区与更大容量。 2. **I/O调度队列** - 内核通过**电梯算法**(如CFQ、Deadline)组织磁盘请求队列,优化寻道时间。 --- ### **四、示例:文件读取流程** 1. 应用程序调用`read()` → 内核通过文件路径查找目录项获取inode号。 2. 从inode中解析数据块地址 → 转换为物理扇区号(LBA)。 3. 磁盘控制器将LBA转换为(柱面, 磁头, 扇区)物理坐标。 4. 磁头移动到指定位置读取数据 → 返回至应用程序。 --- ### **五、高级存储结构** 1. **RAID**:多磁盘组合的冗余阵列(如RAID-0/1/5),通过条带化/镜像提升性能与可靠性。 2. **LVM(逻辑卷管理)**:抽象物理磁盘为可动态调整的逻辑卷。 3. **日志(Journaling)**:文件系统通过写入日志保证崩溃一致性(EXT4的`journal`块)。 --- 如需深入特定文件系统(如NTFS、ZFS)或SSD的FTL(闪存转换层)设计,可进一步说明需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值