ma系列之-17-磁盘和文件系统1


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

猜你喜欢

转载自chengjianxiaoxue.iteye.com/blog/2250092