1 文件系统概念
是一个软件,是存储在磁盘的某个位置上,并不是在某个分区上,但是文件系统的数据是在分区上的。
能够把一个分区里的存储数据划分为两片,第一片是元数据存储区,另一片是数据存储区, 数据存储区又划分为一个个的逻辑存储单元。
目录磁盘块: 分为两块,第一段是inode号码, 第二段是此目录能直接找到的文件名
2 du 和 df 介绍
du 命令:
显示目录大小 -s -h eg: [root@chinadaas13 mnt]# du -sh disk1 显示目录和子目录总共大小 4.0K disk1
df 命令:
显示整个磁盘分区情况 和inode的使用情况 eg: [root@chinadaas13 mnt]# df -lh 如下就表示分为三个分区, Linux所有文件都是从/上开始找的,因此所有外设需要挂在到/下否则linux文件系统是找不到这个设备的 文件系统 容量 已用 可用 已用%% 挂载点 /dev/sda3 5.4T 9.3G 5.1T 1% / tmpfs 32G 72K 32G 1% /dev/shm /dev/sda1 985M 45M 890M 5% /boot df -i 表示查看已经使用和剩余的inode个数。 [root@chinadaas13 mnt]# df -i 文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点 /dev/sda3 364740608 389247 364351361 1% / tmpfs 8245182 3 8245179 1% /dev/shm /dev/sda1 64000 43 63957 1% /boot
3 设备文件:
设备文件: b: 按块为单位,随机访问的设备; c:按字符为单位,线性设备; b: 硬盘 c: 键盘 /dev 主设备号 (major number) 标识设备类型 次设备号 (minor number) 标识同一种类型中不同设备 mknod mknod [OPTION]... NAME TYPE [MAJOR MINOR] -m MODE eg: 创建设备: mknod mydev c 66 0 创建字符设备,主设备号为66 次设备号为0 设备名称为mydev 设备文件是作为设备的访问入口,必须要确保主设备号要和某类设备关联起来。
4 硬盘设备:
硬盘设备的设备文件名: IDE类型, ATA:以hd开头 SATA类型:以sd开头 SCSI类型: 以sd开头 USB类型: 以sd开头 a,b,c,...来区别同一种类型下硬盘如果有多块的话,不同的硬盘以 a,b,c...来区别 IDE: 一般有两个口, 每一个IDE口上总线可以接2块盘,这样一共是4个盘,分别标示如下 第一个IDE口:主、从 /dev/hda, /dev/hdb 第二个IDE口:主、从 /dev/hdc, /dev/hdd sda, sdb, sdc, ... hda: hda1: 第一个主分区 hda2: hda3: hda4: hda5: 第一个逻辑分区, 逻辑分区从5开始计数
fdisk 命令:
管理磁盘分区:创建/删除分区 创建逻辑/主/扩展 分区 调整分区类型 fdisk /dev/sda fdisk后面必须要跟上设备 而不是分区, 可以在里面创建新的分区 同时删除已经有的分区 Command (m for help): m 输入m后有如下命令: p: 显示当前硬件的分区,包括没保存的改动 n: 创建新分区 e: 扩展分区 p: 主分区 d: 删除一个分区 w: 保存退出 q: 不保存退出 t: 修改分区类型 L: l: 显示所支持的所有类型 partprobe
Linux VFS:
virtual filesystem ,沙漏模型, 调用者通过这个接口,最终实现调用到不同类型的文件系统。 linux文件类型有: ext3 ext4 ext2 reiserfs(susie系统的) iso9660 swap cifs nfs xfs jfs2 ocfs2 gfs2
打开磁盘的某个文件:
去找元数据(表明了是否有要找的文件 以及文件存储的地方), 存储数据要存放在什么地方, 怎么知道文件存储的位置,
存储空间: 划分为block(磁盘块/文件系统块), 这个块和磁盘没关系,是文件系统管理磁盘空间的逻辑结构,每一个块都有编号,从0开始,
元数据区中,文件是谁,文件占用多少个block 都会标记到,如果访问某文件,系统会自动帮助定位到对应block中。
如果两个文件内容不同,是不能存放在同一个磁盘快中。
如果两个文件指向了同一个磁盘快,那么这两个文件就是硬链接。
一个磁盘快按照内容来讲,只能属于一个文件,只不过有多个路径而已,这多个路径就是硬链接。
而如果一个磁盘快是1K,一个文件是2byte,那么这个文件在Linux中依旧会占用这个磁盘快, 因此能看到 真正使用多少空间 文件占用多少空间,而后者往往大于前者。
每个文件的标示信息是inode,或者indexnode, 成千上万的文件就需要一定存储空间的元数据空间,文件系统创建那时刻起,元数据空间就预留出来了。
磁盘上创建文件--->: 1 指定inode 2 找磁盘快来存储相关数据
文件系统高级命令:
[root@chinadaas11 ~]# cat /proc/filesystems 查看支持的文件系统 nodev sysfs nodev rootfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev tmpfs nodev devtmpfs nodev binfmt_mis ...... 创建文件系统: mkfs: make file system -t FSTYPE(文件系统类型) 文件名称 eg: mkfs -t ext2 /dev/sda5 创建格式为ext2的文件 上述写法可以简写成: mkfs -t ext2 = mkfs.ext2 mkfs -t ext3 = mkfs.ext3 专门管理ext系列文件: mke2fs -j: 创建ext3类型文件系统 -b BLOCK_SIZE: 指定块大小,默认为4096;可用取值为1024、2048或4096; eg mke2fs -b 2048 /dev/sda5 -L LABEL:指定分区卷标; mke2fs -L mydata /dev/sda5 -m #: 指定预留给超级用户的块数百分比 -i #: 用于指定为多少字节的空间创建一个inode,默认为8192;这里给出的数值应该为块大小的2^n倍; -N #: 指定inode个数; -F: 强制创建文件系统; -E: 用户指定额外文件系统属性; blkid: 查询或查看磁盘设备的相关属性 UUID TYPE LABEL e2label: 用于查看或定义卷标 e2label 设备文件 卷标: 设定卷标 tune2fs: 调整文件系统的相关属性 -j: 不损害原有数据,将ext2升级为ext3; 是不能降级的 -L LABEL: 设定或修改卷标; -m #: 调整预留百分比; -r #: 指定预留块数; -o: 设定默认挂载选项; acl -c #:指定挂载次数达到#次之后进行自检,0或-1表关闭此功能; -i #: 每挂载使用多少天后进行自检;0或-1表示关闭此功能; -l: 显示超级块中的信息; dumpe2fs: 显示文件属性信息 -h: 只显示超级块中的信息 fsck: 检查并修复Linux文件系统 -t FSTYPE: 指定文件系统类型 -a: 自动修复 e2fsck: 专用于修复ext2/ext3文件系统 -f: 强制检查; -p: 自动修复;