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: 自动修复;