一、文件系统简介
文件系统是操作系统用于明确 磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。从系统角度来看,文件系统是对文件文件存储空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
1、对文件操作的实际意义
文件被删除:inode被标记为空闲,此inode指向的磁盘块被标记为空闲;如果inode被引用了多次,且此次删除未使得其引用计数降低为的话,这意味着文件被删除仅删除了一个访问路径;
文件复制:创建一个新文件,并原文件中数据在新文件指向的磁盘块中再写一次的过程;
文件移动:在同一个分区移到:移动文件仅是改变了文件访问路径;跨分区移到:在新分区创建文件,把数据复制过去,删除原分区数据;
2、Linux的文件系统的类型:
ext(2,3,4), xfs, ffs, ufs, reiserfs, jfs, vfat(fat32), ntfs 交换文件系统:swap 网络文件系统:nfs, smbfs(cifs) 分布式文件系统:ceph 光盘文件系统:isso9660 btrfs,
二、linux分区的创建
1、物理意义 硬盘分区: 磁道:track 扇区:sector 柱面:cylinder: 分区根据柱面划分 MBR:Master Boot Record 主引导记录 512Bytes: 引导启动OS 446bytes: 程序,bootloader 64bytes: 分区表,每16bytes标记一个分区,一共4分区 2bytes: 5A, MBR有效性标记 1T: 3主+1扩展(切割1个或多个逻辑) 2、逻辑分区意义 分区创建基本命令 查看:fdisk -l [DEVICE]... 创建分区:fdisk [DEVICE] 交互式界面,有许多子命令 p: 显示磁盘分区表 n: new,新建分区 d: delete,删除分区 t: 修改分区的系统ID l: 列表出所有已经的系统ID w: 保存并退出 q: 不保存退出 [root@localhost ~]# fdisk /dev/sdb Command (m for help): n 创建主分区 Command action e extended 逻辑分区 p primary partition (1-4) 主分区 p Partition number (1-4): 1 第一个分区 First cylinder (1-2610, default 1): 开始块 Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +6G 划分6g容量 Command (m for help): t 修改文件类型 Selected partition 1 Hex code (type L to list codes): 8e 文件类型(Linux LVM) Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p 查看分区 Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xba762e8d Device Boot Start End Blocks Id System /dev/sdb1 1 393 6156741 8e Linux LVM 分区总的信息 3、让内核读取到分区信息 对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表: CentOS 5: # partprobe [DEVICE] CentOS 6: partx -a [DEVICE] kpartx -af [DEVICE] 4、链接文件 创建链接: ln [-sv] SRC DEST 硬链接: 不能对目录文件创建硬链接; 硬链接不能跨分区 创建硬链接会增加inode引用计数 符号链接: 可以对目录创建 不受分区限制 对文件创建符号链接不会增加引用计数 [root@dingchao tmp]# ln zip.sh / 创建一个硬链接 [root@dingchao tmp]# ls -li 查看inode节点 1179963 -rw-r--r-- 2 root root 0 Jul 12 00:00 zip.sh [root@dingchao /]# ls -li 1179963 -rw-r--r-- 2 root root 0 Jul 12 00:00 zip.sh inode节点相同 创建软连接 [root@dingchao tmp]# ln -s zip.sh /etc 创建软连接 [root@dingchao tmp]# ls -al 查看文件 -rw-r--r-- 2 root root 0 Jul 12 00:00 zip.sh 源文件 [root@dingchao tmp]# cd /etc [root@dingchao etc]# ls -al lrwxrwxrwx 1 root root 6 Jul 12 10:17 zip.sh -> zip.sh 目标链接文件 5、创建文件系统: mkfs : make file system -t FSTYPE [DEVICE] mkfs -t FSTYPE = mkfs.FSTYPE mkfs -t ext4 = mkfs.ext4 注意:CentOS
Linux内核是模块化的,这些模块支持动态装载和卸载;
文件系统可能会被直接打包进内核,也可以被编译成内核模块;
6、文件格式化
mke2fs: -t {ext2|ext3|ext4}:指定文件系统 -b {1024|2048|4096}:指定块大小 -L LABEL: 打标 -j: 相当于 -t ext3 -i #: 每多少字节给创建一个inode,此字节数不应该少小块大小 -N #: 直接指定可用的inode数; -m #: 指定预留空间占整个分区空间的百分比;默认为5; -O:指定分区特性
物理磁盘结构示意图
7、文件系统挂载
文件系统挂载:默认只有管理员才有权限
将额外的分区与根文件系统上的某目录建立关联关系的过程;
目录中的原有文件会被隐藏
挂载点:另一个文件系统的访问入口
挂载: mount DEVICE MOUNT_POINT
固定挂载点:/mnt, /media
mount [option]... [-t fstype] [-o option] 设备 挂载点 挂载点: 1、事先存在; 2、使用空闲目录; 常用的挂载选项: -t fstype:指定文件系统类型 -r: readonly, 只读挂载 -w: read and write, 读写挂载 -L LABEL:以卷标方式指定设备, mount -L MYDATA 挂载点 -U UUID: 以UUID的方式指定设备,mount UUID='uuid' 挂载点, mount -U uuid 挂载点 -a: 自动挂载所有(/etc/fstab文件中定义的)的支持自动挂载设备 -n: 挂载时,不更新/etc/mtab文件 -o option: async:异步I/O,数据写操作先于内存完成,而后再根据某种策略同步至持久设备中 sync: 同步I/O, atime/noatime: 文件和目录被访问时是更新最近一次的访问时间戳 auto/noauto:设备是否支持mount的-a选项自动挂载 diratime/nodiratime: 目录被访问时是更新最近一次的访问时间戳 dev/nodev: 是否支持在此设备上使用设备; exec/noexec: 是否允许执行此设备上的二进制程序文件 suid/nosuid: 是否支持在此设备的文件上使用suid remount: 重新挂载,通常用于不卸载的情况下重新指定挂载选项 ro: 只读 rw: 读写 user/nouser: 是否允许普通挂载此文件设备 acl: 在此设备是支持使用facl,默认不支持; [root@localhost ~]# mount /dev/sdb1 /tmp/mnt 挂载设备sdb1到/tmp/mnt目录下