您的位置:首页 > 其它

磁盘分区及文件系统管理、磁盘分区机制及文件查找机制

2015-12-19 18:03 267 查看
简要概念
设备类型

块设备:随机访问特性,数据交换单位是“块”;
字符设备:现行访问特性,数据交换单位是“字符”;

设备文件:
设备文件:关联至设的驱动程序,识别设备的入口(设备的访问入口),特殊文件,没有大小只 有设备号。
主设备号:major,区分设备类型,用于标明设备所需要的驱动程序;
次设备号:minor,区分同种类型下的不同设备,是特定设备的访问入口;
(每个设备文件叫一个节点)
创建设备文件:
mknod命令:make block or character special files
mknod [option]....NAME TYPE[Major Minor]
-m MODE:创建后的设备文件的访问权限。(调用用来修改系统权限调用,系统调用的权限 是chmod,而不是调用chmod命令来修改权限)
例:创建一个名称为testdev的主设备号为111次设备号为1的字符型设备文件(有没 有 主设备号所在的驱动并不妨碍我们创建该设备):




查看此设备文件信息:




磁盘
IDE接口:/dev/hd[a-z]
SAS:/dev/sd[a-z]
CentOS6和CentOS7统统将硬盘文件标识为 /dev/sd[a-z]表示每一个分区的标识
引用设备的方式:

设备文件名,卷标,UUID;
设备文件名由ICANN(互联网名称地址分配机构)统一分配。

磁盘分区:MBR类型(划分磁道、柱面、扇区)和GTP类型。
MBR:硬盘上0号磁道0号扇区,主引导扇区。
总共512字节,分为三部分:前446字节是bootloader程序,引导启动操作系统的程序;
后64字节是分区表,每16字节标识一个分区,一共只能有四个 分区,最后2各字节是当前MBR区域的有效性标记;55AA表示有 效否则无效。
四个分区可以有三个主分区和一个扩展分区,也可以一个主分区一个扩展分区,扩展分区中又可 以有n个逻辑分区,扩展分区不能直接被使用。

主分区和扩展分区的标识:1-4 逻辑分区标识:5+。

磁盘分区管理机制简述:
首先每个磁盘分区里面都有很多个块组组成,在这么多的块组里面会有一个超级块的存在管理整个磁盘分区中的块组就好比联邦制度下的总统一样,而这些块组就像是联邦制度下的各个州,顾名思义,在每个州中又会有一个州长管理自己的管辖区也就是自己的块组,这就是每个块组里的块组描述符,块组描述符管理着整个块组里面的元数据区和数据区的所有信息。如图所示:





而在每个这些块组里面为了方便数据文件的管理,每个块组里面又被分割为了无数个小块组,其中有些块组组成了元数据区,而另一些块组成了数据区。元数据区里面存放着该块组文件的元数据,包含文件大小、权属关系、属主属组、时间戳、数据块指针。需要说明的是文件名称并不在元数据区存放,而是在目录文件中存放。元数据区里面又有为了寻找数据区数据而存在的INOD表(INOD_index),里面每一个INODE号都对应着数据区里面数据块的编号。为了方便数据的存放,元数据区又有INODE号位图索引,INODE号位图索引是一串二进制数,每个二进制数标识着每个INODE号的使用情况,0表示该INODE号尚未被使用,1表示已经被使用,它们相互之间是一一对应的关系。同理,在元数据区中也有磁盘块位图索引,每一个二进制数标识着每个数据区中得磁盘块使用情况,0表示该数据块尚未被使用,1表示该磁盘块已经被使用,这是为了系统存放数据时快速的查找那些数据块是空余的,以便于存放数据,而不用全盘扫描寻超空余的磁盘块,大大增加了数据的存放性能。而在每个磁盘分区中的数据区中又会有一部分磁盘块组成磁盘的预留空间,是在整个磁盘分区存满之后超级用户管理员用来操作磁盘的空间。如图所示:






文件查找机制简述:
我们都知道在linux中一切皆文件,当我们要寻找一个文件或目录时(以/var/log/messages为例)。首先根目录文件存放在内核中,它是一个开机自启动的文件,当根目录启动之后在元数据区会有根目录所对应的INODE号通过数据块指针在数据区寻找到根目录下的磁盘块,里面存放了根目录下可以直接找到的一级文件和目录并且有相对应的INODE信息,寻找到var目录后会有它所对应的INODE编号,再返回元数据区找到var目录的INODE号,再经过数据块指针找到var目录的所在的数据区的磁盘块,里面又存放着var目录下能够直接找到的一级文件和目录,再在里面寻找到messages的相对应的INODE编号,再返回到元数据区寻找到messages相对应的该INODE编号,再通过数据块指针寻找到数据区的messages磁盘块,里面就存放着messages文件的所有信息。

fdisk命令:
1.查看磁盘的分区信息:
fdisk -l [-u] [device...] 列出指定磁盘设备上的分区情况;



2.管理分区:
fdisk DEVICE
fdisk提供了一个交互式接口来管理分区,它有许多子命令分别用于不同的管理功能,所有的操 作均在内存中完成,没有直接同步到磁盘,知道使用w命令保存到磁盘上。

常用命令:n:创建新分区
d:删除新分区
t:修改新分区类型
l: 查看所有类型的ID
w:保存并退出
q:不保存并退出
m:查看帮助信息
p: 显示现有分区信息
以dev/sda为例创建一个新分区:
~]# fdisk /dev/sda 如图:输入n创建新分区



因为已经创建扩展分区,所以现在只能创建逻辑分区,输入l创建逻辑分区,如图:



之后会选择起始柱面,这里选择默认,之后系统会提示指定创建分区大小,这里选择10G,如图:



然后输入w保存并退出,用fdisk -l查看分区信息,该逻辑分区sda5已经存在,如图:



注:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成之后无法识别。用cat/proc/partitions查看新创建的磁盘有没有被内核识别。
通知内核重读磁盘分区表:~]# partx -a DEVICE

创建文件系统
我们创建完分区之后只有把它格式化并创建文件系统才能够使用它。
linux中常用的文件系统:ext2,ext3,ext4,xfs,relserfs,btrfs

文件系统管理工具
创建文件系统工具:mkfs
检测及修复文件系统的工具:fsck
查看其属性的工具:dumpe2fs,tune2fs
调整文件系统特性:tune2fs
ext系列文件系统的专用工具:mke2fs,e2lable,tune2fs,dumpe2fs,e2fsck

mke2fs使用方法
mke2fs [OPTIONS] device
-t {ext2|ext3|ext4}:指明要创建的文件系统类型
mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
-b {1024|2048|4096}:指明文件系统的块大小;
-L LABEL:指明卷标;
-j:创建有日志功能的文件系统ext3;
mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
-i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个 INODE
-N #:直接指明要给此文件系统创建的inode的数量;
-m #:指定预留的空间,百分比;
-O [^]FEATURE:以指定的特性创建目标文件系统
例:在sda5分区中创建ext4文件系统,block大小为2048,预留空间为2%,卷标为MYDATA.

~]# mke2fs -text4 -LMYDATA -M2 -b2048 /dev/sda5



e2label命令:卷标的查看与设定
查看:e2label device
设定:e2label device LABEL

tune2fs命令:查看或修改ext系列文件系统的某些属性
adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;
(注意:块大小创建后不可修改)

tune2fs [OPTIONS] device
-l:查看超级块的内容;

修改指定文件系统的属性:
-j:ext2 --> ext3;
-L LABEL:修改卷标;
-m #:调整预留空间百分比;
-O [^]FEATHER:开启或关闭某种特性
-o [^]mount_options:开启或关闭某种默认挂载选项
acl
^acl
例:修改sda5的卷标名称:

~]# tune2fs -Lmydata /dev/sda5



使用dumpe2fs [-h] device 查看文件系统的属性信息:
~]# dumpe2fs -h /dev/sda5



如图可看出文件系统的卷标名已经改为mydata
dumpe2fs命令:显示ext系列文件系统的属性信息
dumpe2fs [-h] device(事例如上)

用于实现文件系统检测的工具:因进程意外中止或系统崩溃等 原因导致定稿操作非正常终止时,可能会 造成文件损坏;此时,应该检测并修复文件系统,建议,离线进行。

e2fsck : check a Linux ext2/ext3/ext4 file system

e2fsck [OPTIONS] device
-y:对所有问题自动回答为yes;
-f:即使文件系统处于clean状态,也要强制进行检测;

fsck:check and repair a Linux file system
-t fstype:指明文件系统类型;
fsck -t ext4 = fsck.ext4
-a:无须交互而自动修复所有错误;
-r:交互式修复;
文件系统的使用:当我们为磁盘分区创建文件系统之后并不意味着就能使用该磁盘,因为没有路径去打 开它。所以我们就需要把该文件系统挂载到某个目录下。

首先要“挂载”:mount命令和umount命令

根文件系统这外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某 个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”.

挂载点:mount_point,用于作为另一个文件系统的访问入口;
(1) 事先存在;
(2) 应该使用未被或不会被其它进程使用到的目录;
(3) 挂载点下原有的文件将会被隐藏;
mount命令:
mount [-nrw] [-t vfstype] [-o options] device dir

命令选项:
-r:readonly,只读挂载;
-w:read and write, 读写挂载;
-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止 此特性;
-t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount 会通过blkid来判断要挂载的设备的文件系统类型;
-L LABEL:挂载时以卷标的方式指明设备;
mount -L LABEL dir
-U UUID:挂载时以UUID的方式指明设备;
mount -U UUID dir

-o options:挂载选项
sync/async:同步/异步操作;
atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
remount:重新挂载;
acl:支持使用facl功能;
# mount -o acl device dir
# tune2fs -o acl device
ro:只读
rw:读写
dev/nodev:此设备上是否允许创建设备文件;
exec/noexec:是否允许运行此设备上的程序文件;
auto/noauto:是否自动运行此设备
user/nouser:是否允许普通用户挂载此文件系统;
suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效; defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
例:把上文创建好的文件系统挂载至/mmnt目录,要求只读挂载,挂载时禁止程序自动运行,且不 更新文件的访问时间戳

~]# mount -r -onoexec -onoatime /dev/sda5 /mnt



查看当前系统所有已挂载的设备:
# mount
# cat /etc/mtab
# cat /proc/mounts

umount命令:卸载已经挂载的设备
umount device|dir
(注意:正在被进程访问到的挂载点无法被卸载)
查看被哪个或哪些进程占用:
# lsof MOUNT_POINT
# fuser -v MOUNT_POINT

终止所有正在访问某挂载点的进程:
# fuser -km MOUNT_POINT

设定除根文件系统以外的其它文件系统能够开机时自动挂载:/etc/fstab文件

每行定义一个要挂载的文件系统及相关属性:
6个字段:
(1) 要挂载的设备:
设备文件;
LABEL
UUID
伪文件系统:如sysfs, proc, tmpfs等
(2) 挂载点
swap类型的设备的挂载点为swap;
(3) 文件系统类型;
(4) 挂载选项
defaults:使用默认挂载选项;
如果要同时指明多个挂载选项,彼此间以事情分隔;
defaults,acl,noatime,noexec
(5) 转储频率
0:从不备份;
1:每天备份;
2:每隔一天备份;
(6) 自检次序
0:不自检;
1:首先自检,通常只能是根文件系统可用1;
2:次级自检
...

mount -a:可自动挂载定义在此文件中的所支持自动挂载的设备;



要想设置文件系统开机自动挂在就需要把该文件系统增加到该文件中
例:把上述挂载的文件系统设定为开机自动挂载。

使用vim编辑/etc/fstab文件并把/dev/sda5加入进去




保存退出后在命令行中输入 mount -a可自动挂载定义在此文件中的所支持自动挂载的设备。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: