linux运维笔记:Linux文件系统
1-文件系统知识
分区就是给房子打隔断,常见文件系统就是装修
2-文件系统的作用
文件系统决定文件在磁盘上是怎么存放的
3-分区与文件系统的关系
我们通过 fdisk 命令对一个磁盘进行分区以后,并不能直接挂在目录存放数据实体。我们还需要格式化操作,才能存放数据。
由于分区没有格式化之前,操作系统是无法识别系统上磁盘分区格式,也就无法存取文件目录属性和权限等内容,把分区格式化成操作系统支持的某个文件系统后,再存放数据,系统就会根据这个文件系统的格式进行存取文件了。
4-ext2文件系统细节
操作系统中的数据,分为文件内容和文件属性两部分,其中文件内容就是文件的实体数据(block 里),而文件的属性就是文件类型、权限、属主、修改时间等信息。操作系统会将上述文件的属性内容放入磁盘文件系统的 iNode 中,而把文件的实体数据存放于对应的 block 中,除了 iNode和 block 信息外,操作系统还会记录文件系统的整体信息于 superblock 中, superblock 包括整个文
件系统的 iNode 和 block 的总的数量、已使用的数量、剩余数量等信息。
superblock 也称为 metadata 元数据(超级块存放文件的元数据信息)。
5-什么是文件系统
在计算机系统中,简单地说,文件系统就是一种存储和组织计算机数据文件的机制或方法,它使得对计算机文件系统内数据的访问和查找变得更容易、简单。
严格的说,文件系统是实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型。
6-Linux支持的文件系统
当今的 linux 系统核心可以支持多种文件系统类型:如 Btrfs、 JFS、 ReiserFS、 ext、 ext2、 ext3、ext4、 ISO9660、 XFS、 Minx、 MSDOS、 UMSDOS、 VFAT、 NTFS、 HPFS、 NFS、 SMB、 SysV、 PROC 等。
还有一种值得注意的文件系统是 Filesytem in Userspace(FUSE),这种文件系统可以将文件系统的请求通过 VFS 虚拟文件系统发送回会用空间。
文件系统 类型名称 用途
Second Extended
filesystem ext2 最常用的 linux 文件系统
Three Extended
filesystem ext3 ext2 的升级版,带日志功能
Minix filesystem minix Minix 文件系统,很少用
RAM filesystem ramfs 内存文件系统,速度超快
Network File
System(NFS) NFS 网络文件系统,由 SUN 发明,主要用于远程文件共享
DOS-FAT filesystem ms-dos ms-dos 文件系统
VFAT filesystem vfat Windos95/98 采用的文件系统
NT filesystem ntfs Windows NT 采用的文件系统
HPFS filesystem hpfs OS/2 采用的文件系统
proc filesystem proc 虚拟的进程文件系统
ISO 9660 filesystem iso9660 大部分光盘所用的文件系统
UFS filesystem ufs Sun os 所用的文件系统
Apple Mac filesystem hfs Macintosh 机采用的文件系统
Novell filesystem ncpfs Novell 服务器所采用的文件系统
SMB filesystem smbfs Samba 的共享文件系统
XFS filesystem xfs 由 SGI 开发的先进的日志文件系统,支持超大容量文件
JFS filesystem jfs IBM 的 AIX 使用的日志文件系统
ReiserFS filesystem reiserfs 基于平衡树结构的文件系统 suse
7-相关操作系统使用的文件系统
SUSE linux 的默认文件系统 ReiserFS 文件系统
IBM 的 AIX 使用的 jfs 日子文件系统
Sun OS 所用的文件系统 ufs
Centos7 采用 XFS 文件系统
Centos6 采用 ext4 文件系统
Centos5 采用 ext3 文件系统
8-基础概念解释
1-什么是 iNode
i 节点(iNode)是用来存储文件的属性信息的;而数据块(逻辑块)是用来存储文件实体内容的如果要格式化一个分区,需要 hiding 分区的 iNode 大小和 block 大小才行,一个 etx2 文件系统一般都会包含至少 iNode 内容与 block 区域两部分区域,也叫逻辑块或数据块,它是操作系统存储数据的最小单位,而 iNode 表记录文件属性以及文件内容放置在哪一块内的信息(所谓的指针功能),除了包含文件的属性之外,它还包括一个指针,这个指针就指向文件内容存放的数据块的位置,好让操作系统能够读取到文件的实体内容。
在 iNode 中一般包括如下文件属性信息:
文件的拥有者和所属用户组
文件的访问权限设定
文件的类型
文件的访问、修改等时间
文件的大小
文件的各种标志,如 SUID 和 SGID 等
指向文件内容数据块的指针
一个 iNode 的大小通常为 128 字节(ext4 中的 iNode 大小将扩展到 256 字节)
iNode 不包含文件名
2-什么是块设备
块设备就是以块(比如磁盘扇区)为单位收发数据的设备,他们支持缓冲和随机访问(不必顺序读取块,而是可以在任何时候访问任何块)等特性。块设备包括硬盘、 CD-ROM 和 RAM 盘等。
3-什么是字符设备
与块设备相对的是字符设备,字符设备没有可以进行物理寻址的媒体,字符设备包括串行端口和磁带设备,只能逐字逐符地读取这些设备中的数据。
4-什么是逻辑块
逻辑块就是前面提到的 block 的概念。
硬盘的最小存储单位是扇区,而数据存储的最小单位则不是扇区,因为用扇区来存储效率非常低。
为了提高硬盘的读取数据效率,就有了逻辑块的概念,也叫作数据块,逻辑块实在每个分区进行格式化创建文件系统时所指定的“最小存储单位”,这个最小存储单位是以扇区为基础的,所以逻辑块的大小一般为扇区的 2 的 n 次方倍数。
小结:
超级块:记录文件系统的控制与管理信息,元数据区。
block 和 inode 的个数和大小,及其已用和未用数量。
文件系统的载入时间、最近一次写入数据时间、最近一次执行 fsck 进行磁盘检查的时间等有效位, 0 为已载入, 1 为未载入。
组描述:记录本块组从何处开始。
块位示图:使用位示图记录哪些块已用,哪些块未用。
inode 位示图:使用位示图记录 iNode 的使用情况。
inode 区:各 inode 组成的区域,每个 inode 都有一个唯一的编号,数据存储区。
数据块区:各 block 组成的区域,用于存放文件数据。
9-文件系统新增文件流程操作
1) 先确定用户对于新增文件的目录是否具有 w 与 x 的权限,若有的话才能新增
2) 根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入
3) 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,并更新 inode 的 block 指向数据
4) 将刚刚写入的 inode 与 block 数据同步更新到 inode bitmap 与 block bitmap 中,并更新superblock 的内容
10-常规运用选择
对于 centos5.x 系列,常规应用就选默认的 ext3 文件系统即可
对于 centos6.x 系列,常规应用就选默认的 ext4 文件系统即可
对于 centos7.x 系列,常规应用就选默认的 xfs 文件系统即可
注意:如果服务器数量少,怎样选择都可以;如果海量服务器,考虑成本和新能,折中选。
11-测试磁盘的读写速度
1-测试写入速度 dd 命令
[root@znix ~]# dd if=/dev/zero of=/tmp/100M bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 2.96654 s, 35.3 MB/s
[root@znix ~]# ll -h /tmp/100M
-rw-r--r-- 1 root root 100M Sep 18 10:01 /tmp/100M
2-测试读取速度 hdparm
[root@znix ~]# hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 102 MB in 0.81 seconds = 125.23 MB/sec