文件系统

基于层次管理文件

目录:路径影射 文件:存储空间存储的一段流式数据,对数据可以做到按名存取

文件系统:层次结构 倒置树状结构 有索引 /:原始起点 /dev/pts/2: 最左侧/表示目录 其他/表示路径分隔符

文件的路径表示

  • 绝对路径: 从根开始表示出的路径

  • 相对路径:从当位置开始表示出的路径

文件名使用法则

  • 严格区分字符大小写:file File FILE

  • 目录也是文件,在同一路径下,两个文件不能同名

  • 支持使用除/以外的任意字符

  • 最长不能超过255个字符

  • 以.开头的为隐藏文件

    • .为当前目录

    • ..为当目录的上一级目录

用户都有家目录:home 用户的起始目录:普通用户管理文件的位置

工作目录: /etc/sysconfig/network-scripts/ifcfg-eno1688 basename: 基名 最右侧的文件或目录名 dirname: basename 左侧的目录

常用命令

相关的环境变量

  • $PWD:当前工作目录

  • $OLDPWD: 上一次的工作目录

-rw-r--r--. 1 root root 1363 Jul 31 17:27 init_master.sh

  • -:文件类型 -,d,b,c,l,s,p

  • -rw-r--r--.: 左三:文件属主权限 中三文件属组的权限 右三其他用户权限

  • root: 文件属主

  • root: 文件属组

  • 1363: 文件大小 Byte字节

  • Jul 31 17:27: 最后修改时间

  • init_master.sh 文件名

程序编译方式

Linux公共库 glibc GNU标准类库

  • 动态链接

  • 静态编译

进程的类型

终端: 硬件设备 ,关联一个用户接口 与终端相关:通过终端启动 与终端无关:操作引导启动过程 当中自动启动

操作系统的组成

  • 静态: kernel, application

FHS

  • /bin 供所有用户可用的基础命令程序文件

  • /sbin 供系统管理员使用的工具程序

  • /boot 引导加载器必须用到的各静态文件 kernel initramfs(initrd), grub等

  • /dev 特殊文件或硬件设备文件

    • 设备有两种类型:字符设备(线性设备),块设备(随机设备)

  • /etc 系统程序中的配置文件

  • /home 用户的家目录 普通用户家目录集中位置,一般每个普通用户的家目录默认为此目录下与用户名同名的子目录 /home/USERNAME

  • /root 管理员的家目录 可选

  • /lib 为系统启动或根文件系统上的应用程序(/bin, sbin等)提供共享库,以及内核提供的内核模块

    • libc.so.*: 动态链接的C库

    • ld*:运行时链接器与加载器

    • modules: 用户于存储内核模块的目录

  • /lib64:64系统特有的存放64位共享库的路径

  • /media: 便携式设备的挂载点,cdrom, floppy等

  • /mnt: 其他文件系统的临时挂载点

  • /opt: 附加应用程序的安装位置 第三方程序,可选路径

  • /srv 当前主机为服务提供的数据

  • /tmp 为那些会产生临时文件的程序提供时用于存储临时文件的目录,可供所有用户执行写操作,有特殊权限

  • /usr user Hierarchy 全局共享的只读数据

    • bin, sbin

    • lib, lib64

    • include c程序头文件

    • share 架构特有的文件的存储位置,命令自带文档和手册页

    • local 另一个层级目录

    • x11RG x-widow程序的安装位置

    • src 程序源码文件的存储位置

  • /usr/local Local Hierarchy 让系统管理 员安装本地应用程序,也通常安装第三方程序

  • /var Hierarchy 存储常发生变化的数据的目录

  • proc 虚拟文件系统,用于内核及进程存储其相关信息,它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/,因此其完整的路径为/proc/sys/net/ipv4/ip_forward

  • sys sysfs虚拟文件提供了种比proc更为理想的访问内核数据的途径 其主要作用管理Linux设备提供一种统一的模型接口

Linux的文件系统

  • -: 常规文件, 即f

  • d: 目录文件

  • b: block device 块设备 以“block”为单位随机访问

  • c: character device 字符设备文件,支持以“character”为单位进行线性访问

    • major number: 主设备号,用于标识设备类型,进而确定要加载的驱动程序

    • minor number: 次设备号,用于标识同一类型中的不同的设备

  • l:symbolic link; 符号链接文件

  • p:pipe 命名管道

  • s:socket 套接字文件

目录管理命令

路径的基名为命令的操作对象,基名之前的路径必须存在

mkdir

make directories

  • -p 自动按需创建父路径

  • -v verbose 显示详细过程

  • -m mode 创建时自动设置权限

rmdir

remove empty directories 删除空目录

  • -p 自动删除路径空目录

  • -v verbose 显示详细过程

tree

tree [options] [directory]

  • -d 只显示目录

  • -L Level 显示目录层级

disk

持久存储数据

接口类型

  • IDE(ata):并口 133MB/s

  • SCSI: 并口 ultrascsi320 320MB/S; UltraSCSI640 640MB/S 100iops

  • SATA: 串口 6gbps 150-200iops

  • SAS: 串口 6gbps

  • USB: 串口, 480MB/S

  • 并口: 同一线缆可以接多块设备

    • IDE: 两个 主,从

    • SCSI: 宽带16-1 窄带8-1

  • 串口:同一线缆可以接一个设备

    iops: io per second

硬盘

  • 机械硬盘 硬件设备

    • 同轴旋转 固定角速旋转

    • track 磁道

    • sector:扇区 512bytes

    • cylinder 柱面 分区划分是基于柱面进行的

    • 平均寻道时间

      • 5400rpm/7200rpm/10000rpm/15000rpm

  • 固态 400iops 电气设备

    • PCI-e接口

    • 桌面多为sata接口

mknod

创建块设备或字符设备文件 mknod - make block or character special files

设备文件命名

由ICANN命名

  • IDE: /dev/hd[a-z]

  • SCSI,SATA,USB,SAS: /dev/sd[a-z]

引用设备的方式

  • 设备的文件名

  • 卷标

  • UUID

Centos6和7系统将硬盘设备文件标识为/dev/sd[a-z]

磁盘分区

  • MBR: 0 sector

    • master Boot Record

      • 分为三部分

      • 446bytes bootloader 程序 引导启动操作系统的程序

      • 64bytes 分区表 每16个字节标识一个分区,一共只能有四个分区

        • 4主分区

        • 3y1扩展:

          • n逻辑分区

        • 主分区为1-4

        • 逻辑分区为5+

      • 2byte: MBR区域的有效性标识; 55AA为有效

fdisk 命令

  1. 查看磁盘的分区信息

    fdisk -l [-u] [device...] 列出指定磁盘设备上的分区情况

  2. 管理分区

    fdisk device

    fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能,所有的操作均在内存中存中完成,没有直接同步到磁盘;直到使用w命令保存到磁盘上

常用命令

  • n: 创建新分区

  • d:删除已有分区

  • t:修改分区类型

  • l: 查看所有已知ID

  • w: 保存并退出

  • q: 不保存并退出

  • m:查看帮助信息

  • p:显示所有分区信息

注意:在已经分区并且已经挂载其中的某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别

查看分区:

通知内核强制重读磁盘分区表

  • centos5 : partprobe [device]

  • centos6,7: partx, kpartx

    • partx -a [device]

    • kpartx -af [device]

分区创建工具:parted stdisk

创建文件系统

格式化:

  • 低级格式化 分区之前进行 划分磁道

  • 高级格式化 分区之后进行 创建文件系统

元数据区,数据区

  • 元数据区:inodex(index node)

    • 文件:大小、权限 、属主,属组,时间戳, 数据块指针

  • 数据区 block

链接文件: 存储数据指针的空间当中存储的是真实文件的访问链接 设备文件:存储数据指针的空间当中存储的是设备号(major minor)

bitmap位图索引

  • inode位图索引

  • block位置索引

superblock gdt 块组描述符

文件定位:先找根的inode,然后找根的数据块,数据块是子目录与inode,若是目录继续查找目录数据块,若文件则是文件的数据块

vfs

virtual file system Linux的文件系统:ext2(无日志功能) ext3 ext4 xfs reiserfs btrfs(btree) 光盘:iso9660 网络文件系统:nfs,clfs 内核级分布式文件系统:ceph windows的文件系统:vfat,ntfs 伪文件系统:proc,sysfs,tmpfs, hugepagefs Unix的文件系统: UFS,FFS, JFS 交换文件系统:swap 用户空间的分布式文件系统:mogilefs, moosefs, glusterfs

文件系统管理工具

创建文件的工具

mkfs mkfs.ext2 mkfs.ext3...

检测及修复文件系统的工具

fsck fsck.ext2 fsck.ext3...

查看其属性的工具

dumpe2fs tune2fs

调整文件系统特性

tuner2fs

内核级文件系统的组成部分: 文件系统驱动:由内核提供 文件系统箮理工具:由用户空间的应用程序提供

blkid

查看磁盘类型

Centos6 如何使用xfs文件系统

$ yum -y installl xfsprogs

mke2fs

ext系列专用管理工具:mke2fs

  • -t [ext2|ext3|ext4] 指定要创建的文件系统类型

  • -b [1024|2048|4096] 指定文件系统的块大小

  • -L LABEL 指明卷标

  • -j 创建有日志功能的文件系统

    • mke2fs -j =

  • -i # bytes-per-inode 每多少字节一个inode 指明inode与字节的比率

  • -N # 直接指明要给此文件系统创建的inode的数量

  • -m # 指定预留空间,百分比

  • -O FEATURE 以指定的特性创建目标文件系统

ext系列文件系统的管理工具:

用于实现文件系统检测的工具

因进程意外中止或系统崩溃等 原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统; 建议,离线进行;

ext系列文件系统的专用工具: e2fsck : check a Linux ext2/ext3/ext4 file system e2fsck [OPTIONS] device -y:对所有问题自动回答为yes; -f:即使文件系统处于clean状态,也要强制进行检测;

fsck:check and repair a Linux file system -t fstype:指明文件系统类型; fsck -t ext4 = fsck.ext4 -a:无须交互而自动修复所有错误; -r:交互式修复;

journal

性能损失 元数据要写两次

符号链接 权限:lrwxrwxrwx

硬链接 指向同一个inode的多个文件路径 特性

  • 目录不支持硬链接

  • 硬链接不能跨文件系统

  • 创建硬链接会增加inode引用计数

    符号链接 指向一文件路径的另一个文件路径

    创建

    特性

  • 符号链接与文件是两个各自独立 的文件,各有自己的inode,对原文件不会增加引用计数

  • 支持对目录创建的符号链接,可以跨文件系统

  • 删除符号链接文件,不影响原文件,但删除原文件,符号指定的路径不存在,此时会变成无效链接

注意:符号链接的文件大小是其指定的文件的路径字符串的字节数

创建:

CentOS 6如何使用xfs文件系统:

blkid命令:

swap文件系统:

mount命令和umount命令

首先要“挂载”:mount命令和umount命令

交换分区的启用和禁用:

设定除根文件系统以外的其它文件系统能够开机时自动挂载:/etc/fstab文件

两个命令 df和du

删除文件

将此文件指向的所有data block标记为未使用状态,将此文件的inode标记为未使用

复制与移动文件

复制:新建文件

移动:

  • 同一文件系统上,改变的仅是其路径

  • 在不同文件系统,复制数据到目标文件,并删除原文件

符号链接:

  • 权限:lrwxrwxrwx

  • 权限受链接的文件管理

硬链接

  • 指向同一个inode

挂载光盘设备

光盘设备文件

  • IDE:/dev/hdc

  • SATA:/dev/sr0

符号链接文件

  • /dev/cdrom

  • /dev/cdrw

  • /dev/dvd

  • /dev/dvdrw

挂载U盘

  • fdisk

  • mount

dd命令:convert and copy a file

用法 dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

  • bs=# block size 复制单元大小

  • count=# 复制数量

磁盘拷贝 dd if=/dev/sda of=/dev/sdb

备份MBR dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MRB中的boot loader: dd if=/dev/zero of=/dev/sda bs=256 count=1

两个特殊设备

/dev/null: 数据黑洞 /dev/zero: 吐零机

压缩及解压缩工具

压缩比 压缩目的: 时间换空间 cpu的时间->磁盘空间

  • compress/uncompress .z

  • gzip/gunzip .gz

  • bzip2/bunzip2 .bz2

  • xz/unxz .xz

  • zip/unzip

  • tar

  • cpio

gzip/gunzip/zcap

  • zcap 展开压缩包

  • -d 解压缩 相当于gunzip

  • -# 指定压缩比 默认6 数字越大压缩比越大(1-9)

  • -c 将压缩结果输出到标准输出

    • gzip -c FILE > compress.file

bzip2/bunzip2/bcat

bzip [option] FILE

  • -d 解压缩 相当于bunzip2

  • -# 指定压缩比 默认6 数字越大压缩比越大(1-9)

  • -k 保留原文件

xz/unxz/xzcat lzma/unlzma/lzcat

xz [option] FILE

  • -d 解压缩

  • -# 指定压缩比,默认是6,数字越大压缩比越大(1-9)

  • -k 保留原文件

归档 tar/cpio

tar [options] file

  • -c -f 创建归档

  • -x 展开归档

  • -C 展开到指定目录

  • -t 查看归档的文件列表

  • -cf 创建归档

  • -xf file.tar -C 目录

  • -tf 展开

  • -v 打印详细输出

归档完成后通需要压缩, 给合此前的压缩工具,就实现多个文件了

归档并压缩

  • -z gzip

    • tar -zct /PATH/TO/FIle.tar.gz FILE...

    • tar -zxf /PATH/TO/FIle.tar.gz

  • -j: bzip2

    • tar -jct /PATH/TO/FIle.tar.bz2 FILE...

    • tar -jxf /PATH/TO/FIle.tar.bz2

  • -J:xz

    • tar -Jct /PATH/TO/FIle.tar.xz FILE...

    • tar -Jxf /PATH/TO/FIle.tar.xz

zip/unzip

最通用的压缩工具 压缩比有限 即能归档又能压缩 后缀名.zip

Last updated

Was this helpful?