Linux内所有的数据都是以文件
的形式存在,所以Linux系统中最重要的地方就在于目录树(directory tree)
结构。
目录树结构如下:
挂载
挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,进入该目录即可读取该分区,这个动作我们称为挂载
。这个进入点的目录我们称为挂载点
。挂载点一定是目录。
从图中可以看出可以将不同的目录挂载在不同的分区上。
可以在
/etc/fsta
里修改开机挂载内容。同时又以下限制:
-
/
目录必须挂载,并且要先于其他挂载点挂载; - 其他mount porint必须为已创建的目录,可任意指定,但一定要遵守必须的系统目录架构原则(FHS);
- 所有的mount point在同一时间之内,只能挂载一次。
文件属性和权限
改变权限命令:
- chgrp:改变文件所属群组;
- chown:改变文件拥有者;
- chmod:改变文件的权限。
-R为递归,文件次目录的所有文件都会变更。
也可以使用chown user.group file
的方式同时改变拥有者和群组。
cp
命令会将文件拥有者属性和权限都复制过去。
文件权限数字表达为:r:4; w:2;x:1
符号类型改变文件权限:拥有者表达方式u=user, g=group, o=other a=all
权限则用+ - =
来表示添加、删除和赋予。
文件种类与扩展名
文件种类
- 普通文件,第一个字符为
-
,包含文本、二进制文件、数据格式文件等; - 目录:
d
- 链接文件:
l
- 设备文件
- 区块设备文件,
b
- 字符设备文件,
c
- 区块设备文件,
- 数据接口文件:socket
s
- 管道文件(pipe):FIFO(first in first out)
p
linux文件目录
/bin
:可执行文件目录,该目录的指令可在单人维护模式下被执行。
/boot
: 放置开机启动文件,包括linux kernel和开机菜单、开机所需配置文件等。kernel文件名为vmlinuz
/dev
:设备与周边设备存放目录;
/etc
:系统主要配置文件目录。只有root用户可修改。
/lib
:系统函数库存放文件,驱动文件也放在这;
/media /mnt
:媒体存放目录以及挂载目录;
/opt
:第三方软件存放目录;
/srv
:一些www ftp等服务数据存放目录
/tmp
:一般使用者或正在执行的程序暂放文件的地方。任何人都可以读取,需要定期清理;
/home
:默认使用者主文件夹;
/root
:root用户主文件夹;
/last+found
:ext2/3/4文件格式会产生的一个目录,当文件系统发生错误时,一些遗失的片段会放置在该目录下。
/proc
:进程信息、设备状态、网络状态目录
/usr
:unix software resource缩写,
文件默认权限umask
来查看和修改。显示的是被减去的权限。
文件系统存放
superblock
:记录文件系统的整体信息,包括inode/block的总量、使用量、剩余量以及文件系统的格式和相关信息;
inode
:记录文件的属性,一个文件占用一个inode,同时记录文件的数据所在的block号码;
block
:实际记录文件的内容,可能占用多个block。
EXT2
EXT2文件系统划分了多个block group
,每个区块有独立的inode/block/superblock系统。ext2系统所支持的block大小为1K/2K/4K(Bytes)这三种。block的大小导致了文件系统磁盘容量的大小不同
ext2文件系统的block的限制如下:
- block大小和数量在格式化完后就固定了;
- 每个block内最多只能放置
一个文件
的数据; - 如果文件大于block的大小,则一个文件占用多个block数量;
- 如果文件小于block,则该block的剩余容量就不会被其他文件占用。
当小文件过多(日志文件)时,格式化成4K的block会浪费很大空间;而大型文件假如格式化成1K的block时则需要占用数量更多的block,则inode也要记录更多block号码,会导致文件系统不良的读写性能。因此要针对是什么服务器进行专门区分。
inode
inode记录的数据:
- 该文件的读取模式;
- 文件的拥有者和群组;
- 文件的容量;
- 文件的创建或状态改变时间ctime;
- 最近一次读取时间atime;
- 最近一次修改时间mtime;
- 定义文件特殊的flag;
- 文件真正指向pointer;
inode特点: - 每个inode 大小固定为128Bytes(最新系统可到256)
- 每个文件仅占用一个inode;
- 文件系统能够创建的文件数量和inode数量相关;
- 系统读取文件先找到inode,然后分析权限,最后读取block内容。
superblclock
superblock记录了整filesystem相关信息:
- block和inode总量;
- 未使用与已使用inode、block数量;
- block和inode的大小;
- filesystem的挂载时间、写入时间、检验磁盘时间等;
- 一个vaild bit数值(挂载为0,未挂载为1)
查询superblock命令dumpe2fs
链接
在linux下面链接文件有两种,一种类似Windows快捷方式的软链接
,一种是通过文件系统的inode链接来产生新文件名,而不产生新文件,这种称为硬链接
。
二文件名只与目录相关,而文件内容则与inode相关。使用hard link设置链接文件时,磁盘的空间与inode的数目都不会改变,hard link只是某个目录下block多写入一个关联数据,既不会增加inode也不消耗block数量。
hard link限制
- 不能跨file system;
- 不能link 目录;
hard link相比symbolic link安全,因为其中一个目录的文件被删掉,另外目录存放的数据还是安全的。
ln命令用法
ln [-sf] 源文件 目标文件
-s:symbolic link,不加任何参数的话则默认hardlink
-f:如果目标文件存在,则将目标文件移除后再创建
磁盘管理
观察分区
lsblk
:list block device列出系统上的所有磁盘列表;
parted
:列出磁盘的分区表类型与分区信息;
gdisk
和fdisk
:MBR分区使用fdisk,GPT使用gdisk,不要对正在使用的分区进行分区操作,需要先将分区卸载掉,然后在进行分区操作。
mkfs
make filesystem格式化分区。