solaris学习5:文件系统-阿里云开发者社区

开发者社区> 开发与运维> 正文

solaris学习5:文件系统

简介:

solaris的文件系统布局和linux相似,基本都符合FHS规范,但也有自己的不同部分。

1、 一些目录

/kernel 与 /platform 区别: /kernel 启动过程中独立于平台的可加载的核心模块

,/platform 顾名思义就是依赖于平台的可加载的核心模块目录。

/export、/export/home、/home区别: /export默认的公用文件系统的根目录,如/export/home、/export/install、jumpstart、flasharchive等的共享目录。 /export/home 独立文件系统挂载点,x86平台的默认用户home目录(创建用户时的默认home目录路径)。/home 用户家目录位置,独立的 文件系统挂载点(用户自定义的目录路径)。

比如你默认创建一个新用户,home目录在/export/home,那么当你用该用户登录时,会把/export/home挂接到/home下,如果用root登录,那么/home下什么也没有。

 

 一些内存中的系统目录

/dev/fd    与系统当前正在使用的文件描述符关联的特殊文件。

/devices  物理设备主要目录

/etc/mnttab  当前挂载的文件系统

/etc/svc/volatile 和当前系统服务的状态关联的日志文件和参考文件

/proc 存放和进程相关的信息

/tmp

/var/run 各种系统和服务的锁文件、特殊文件、参考文件

设备目录解析

/dev/dsk  块设备文件link  /dev/rdsk 裸磁盘设备link

/dev/fd 文件描述符    

/dev/md 逻辑卷设备管理(LUN)

/dev/pts  伪终端设备

/dev/rmt  裸磁带设备

/dev/sound  声音设备和控制文件

/dev/term  串行设备

其它一些目录

/etc/default 存放不同程序的默认配置信息,如用户帐号的默认配置密码长度等。

/etc/skel 新用户帐号默认的shell初始化文件,比如在此目录下放置一个脚本文件,则会以用户权限去运行该脚本,类似于windows组策略的用户下开机脚本目录。

/etc/inet SMF授权的网络服务配置文件信息

/etc/svc 服务管理工具SMF的数据库和日志文件

/etc/zones  zone的初始化文件和参考文件

/usr/dt CDE桌面环境目录和挂接点  /usr/include  头文件(#include)

 /usr/kernel  独立于平台的可加载的核心模块,但在启动过程中不一定需要

/var/adm 日志文件(syslog、系统帐号等信息)

/var/crash 存放灾难存储文件

/var/svc SMF控制文件和日志

 

2、 文件和目录

solaris OS的文件和目录包括三个部分(其实unix/linux都如此):文件名、I-node、数据块。 文件名存放在目录中,目录以/根目录存放所有文件和子目录信息,即目录的数据块存储子目录、文件(即文件名)和Inode之间的链接。 inode记录两个部分信息:

inode记录文件的所有者、大小等信息(不记录文件名)和该文件的数据块的指针,inode本身是一个数字编号创建文件系统是就有一个固定大小数量的inode列表。 数据块存放文件的内容。

举例:查看cat  /export/home/heliy.txt ,其过程如下:

  • OS先查找/根目录的inode(OS的/根 的inode号为2)
  • 根据inode 2的记录判断用户是否有权限对文件所在目录树进行访问操作,即对/export目录权限判断。
  • 从inode 2 的数据块中查找文件所在目录的inode号
  • 从文件所在目录(/export/home)权限进行判断
  • 根据文件所在目录的inode中查找heliy.txt文件的文件名和inode号
  • 根据文件inode号判断用户对文件的权限
  • 根据文件inode号的指针访问文件heliy.txt的数据块
  • 命令获取数据块的内容并输出

设备文件:我个人的理解是提供到设备的访问连接,不存储数据,也不是驱动。如/devices下的设备文件。

我们常用的文件、目录、符号连接都使用数据块。至于软、硬连接,软连接没有占用空间(比如一个100M文件,它的软连接文件为1k,所以相对文件本身的大小没有占用,但信息的存储肯定会占用一定的空间),硬连接也没占用空间,只是两者的inode一样。大家仔细看下图就明白.

 

3、 文件系统

solaris默认支持的三类文件系统为:

磁盘文件系统ufs、zfs、hsfs(cd-rom的iso等文件)、udfs(dvd文件)、pcfs(fat32、fat16格式) 

网络文件系统 nfs

伪文件系统 tmpfs、swapfs、procfs、mntfs、fdfs(文件描述符文件系统如/dev/fd/0) objfs(内核对象文件系统/system/object目录,内核使用该目录存放当前被内核加载的模块信息) devfs (设备文件系统如/devices)

从用户角度看文件系统:由文件和目录组成

从OS角度看文件系统:控制结构和数据块的结合,占用空间

那么一个solaris的磁盘文件系统如下:

VTOC磁盘卷标--》引导块bootblk--》ufs文件系统(主超级块(第一个柱组(备份超级块-->inode表-->数据块), 第二个柱组(备份超级块-->inode表-->数据块),......  ))

注:VTOC 第一个sector(如分区表等),  引导块bootblk,占用1~15间的15个sector,只有根文件系统有一个激活的引导块,每个文件系统的起始处都会为引导块分配空间。在UFS文件系统中,数据块为8kB(16个sector),另外数据块还以1kB为单位被划成碎片(fragment),solaris的ufs文件系统中,大于8KB的文件会以数据块存储,小于8KB文件以fragment碎片的方式存放,即数据块被分成每个1KB(1024kb)的碎片,比如file1 4KB,file2 3KB,则file1、file2会被存储在一个数据块中,剩余一个1kB碎片。如果file1 6KB ,file2 3KB,则不会将file1、file2存放在一个数据块中,而是file1一个数据块,file2另一个数据块。在创建UFS文件系统时,newfs命令默认会保留1%~10%的空间,通常叫minfree。

 

4、 修复文件系统

系统启动时,OS会根据配置是否需要对文件系统进行fsck扫描,一般不要对在线的文件系统运行fsck扫描,建议在单用户模式下操作。

fsck检测的内容:超级块的一致性、柱组块的一致性、inode的一致性、数据块的一致性。

fsck检测到有问题的文件和目录都放在/lost+found目录里

一般fsck在出现严重问题时会中断并要求root密码进入单用户模式。

fsck -F fstype(文件系统类型) -o b=备份超级块

-y 或Y 以回答yes的交互方式修复

-m 检测但不修复

如:fsck /dev/dsk/c0d0s0

如果无法修复

newfs -N /dev/dsk/c0d0s0  查看所以超级块

fsck -o b=33 /dev/dsk/c0d0s0





      本文转自fuhaixiong 51CTO博客,原文链接:http://blog.51cto.com/heliy/234840,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章