对Linux而言,其哲学思想之一就是一切皆文件,因此Linux之上所有设备的操作都是通过文件接口来实现的,也就是说在访问设备的时候就如同访问一个文件一样,因为他们使用的都是文件系统接口。
设备也分种类,如:
1、块设备:block 其存取单位是“块”,如硬盘
2、字符设备:char 存取单位是“字符”,如键盘
每个设备都有一个文件作为他的访问入口,次文件我们称之为设备文件;该文件关联至一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信
设备号码:用来表示设备,不同类别的设备有不同的设备号,同一类别的设备有不同的设备或多个设备,因此就有主设备和次设备号。
主设备号:major number,标识设备类型
次设备号:minor number,标识同一类型下的不同设备
我们可以通过ls -l /dev 来查看设备文件的设备号码,如:
其中c开头的是字符设备,也就是char的首字母。所以,同理,块设备就是b开头
主设备号和次设备号通过逗号隔开,前面为主设备号,后面为此设备号
在这里有不同的打头字母,对应不同的文件类型。
b 块设备 如:硬盘
c 字符设备 如:键盘
d 目录文件
l 链接文件
s 套接字文件
为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口磁盘设备的设备文件命名
磁盘设备的设备文件命名
IDE:/dev/hd
SCSI,SATA,SAS,USB:/dev/sd
不同设备表示方法:在设备文件名后面追加一些字母a-z来表示
/dev/sda, /dev/sdb, /dev/sdc….
同一设备上的不同分区:采用数字递增的方式,如1,2…
/dev/sda1, /dev/sda2,… /dev/sdb1, /dev/sdb2…..
机械式硬盘
磁道:每个盘片上被划分成N个同心圆,称之为磁道
扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区
柱面:每个磁盘上面相同位置都会有以个相同的编号,所有相同编号的磁道称之为柱面
扇区的划分
将每一个磁道按512个字节为单位划分为等分,叫做扇区的划分 每个扇区512字节,而文件的最小单位是“块” 每个“块”由连续的8个扇区组成 大小也就是4KB
磁盘如何分区
1)外磁道的读写速度比内侧磁道的读写速度快。
2)磁盘的分区是根据柱面来划分的
3)每个盘面上的一个柱面只能属于一个分区,而且由外向内多个柱面组合成一个分区来使用,因此越靠外的柱面其读写速率越高,所以通常我们将每个盘面最外侧的柱面划分成系统分区。
0磁道0扇区
在磁盘之上有个叫做0磁道0扇区是被预留出来的,它不属于任何分区,这个扇区称之为MBR,严格意义上讲应该叫做用来存储MBR的一段空间。该扇区的大小为512bytes,专门用来存储mbr,即主引导记录,分为三部分:
1)446bytes:存储boot loader,引导加载器;
2)64bytes,存储分区表,有多少个分区,每个分区从哪里开始到哪里结束;其中每16bytes标识一个分区,因此,一块硬盘最多只能有4个主分区;
3)2bytes,前面信息的有效标识(或者叫做结束标志),用四个16进制来表示55AA, 标识前面510bytes是有效的
一块磁盘最多只能划分四个主分区,要么划分3个主分区+1个扩展分区(N个逻辑分区)
磁盘分区管理工具:fdisk parted sfdisk
查看:fdisk -l [DEVICE] 例如:fdisk -l /dev/sda 查看sda硬盘,也可以不跟最后的选项,直接查看有几个硬盘及分区信息
创建分区:fdisk 是一个交互式界面,有许多子命令
p:显示磁盘分区表
n:新建分区
d:删除分区
t:修改分区的系统ID
l:列表出所有已建好的系统ID
w:保存并退出
q :不保存退出
查看内核是否已经识别新的分区:cat /proc/partitions
对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表:
Centos 5 之上:
#partprobe [DEVICE]
Centos 6和7:
#partx -a [DEVICE]
#kpartx -af [DEVICE]
创建文件系统
1、mkfs命令
mkfs -t FSTYPE=mkfs.FSTYPE
mkfs -t ext4=mkfs.ext4
mkfs -L 设定卷标
2、 mke2fs -t {ext2|ext3|ext4} 指定文件系统
mke2fs -b {1024|2048|4096} 指定块大小
mke2fs -L LABEL 打标
mke2fs -i # 每多少字节给创建一个iNode,次字节数不应该小于块大小
mke2fs -N # 直接指定可用的iNode数
mke2fs -m # 指定预留空间占整个分区空间的百分比,默认为5
mke2fs -O 指定分区特性
*对交换分区使用特定的工具mkswap来创建交换分区,但前提是要先调整设备分区类型为8e
3、blkid:查看指定块设备的属性信息
-L‘卷标名’:可以查看到卷标名所对应的磁盘分区
-U‘UUID’ :可以查看到UUID所对应的磁盘分区
4、tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统的超级块信息:
-L 修改卷标
-m # :修改预留空间百分比
-O[^]FEATURE:启用指定特性,特性前加^,表示关闭此种特性
-o[^]mount-options:开启或关闭指定的挂在选项
-U UUID :修改UUID
5文件系统的检测
因进程意外终止或系统崩溃等情况导入写入操作费正常终止时,可能会导致文件损坏;此时。应该修复文件系统,注意:需要离线修复
工具:fsck e2fsck (file system check 文件系统检查的简写)
fsck所支持的选项
-t:fstype
-a:自动修复错误
-r:交互式修复错误
e2fsck:专用于修改ext系列文件系统
-y:对问题自动回答yes
-f:强制进行检测
超级块
作用:存储文件系统的大小、有多少是空的和已经提哦啊满的占多少,以及他们各自的总数和其他诸如此类的信息。 要使用一个分区来进行数据访问,那么第一个要访问的就是超级块。所以,如果超级块坏了,那磁盘也基本没救了。
包括:文件系统的大小、空闲块数目、空闲块索引表、空闲i节点数目……等等
文件系统的挂载
磁盘分区要想被使用必须先挂载,所谓挂载是指将额外的分区与分文件系统上的某目录建立关联关系的过程(默认只有管理员才有权限)。注意:如果该目录中有文件,则目录中的原有文件会被隐藏
挂载工具:mount 的使用:mount DEVICE MOUNT_POINT
DEVICE:所需要挂载的磁盘分区
MOUNT_POINT:挂载点:另一个文件系统的访问入口 固定挂载点:/mnt /media
挂载点需要具备以下俩点:
1 事先存在
2 使用空闲目录
常用的挂载选项:mount [option]…[-t fstype] [-o option]
-t fstype 指定文件系统类型
-r :只读挂载
-w:读写挂载
-a:自动挂载所有(/etc/fstab文件中定义的)的支持自动挂载设备
-n:挂载时,不更新/etc/mtab文件
-B:绑定目录到另一个目录上
-o option:
atime/noatime:文件和目录被访问时是更新最近一次的访问时间戳
auto/noauto:设备是否支持mount 的-a 选项自动挂载
dev/nodev:是否支持在此设备上使用设备
exec/noexec:是否允许执行此设备上的二进制程序文件
suid/nosuid:是否支持在此设备的文件上使用suid
remount:重新挂载,通常用于不卸载的情况下重新制定挂载选项
ro:只读
rw :只写
acl:在此设备是支持使用facl,默认不支持
注意:上述选项可多个同时使用,彼此之间用逗号分隔
默认挂载选项:rw,suid,dev,auto,exec,nouser(不允许普通挂载此文件设备),async(异步I/O,数据写操作先与内存完成,而后再根据某种策略同步至持久设备中)
挂载交换分区
启用:swapon
swapon [option]…[device]
-a:激活所有的交换分区
-p priority:指定优先级(用数字来表示)
关闭:swapoff
-a:禁用所有
内存及交换分区的使用信息查看:free
-m:以MB为单位
-g:以GB为单位
mem:物理内存的使用情况
swap:交换分区的使用情况
三种方式查看所有已经挂载的设备
1 mount
2 cat /proc/mounts
3 cat /proc/mtab
_ueditor_page_break_tag_
设备自动挂载
自动挂载的设备的配置文件:/etc/fstab
该文件的语法格式:每行定义一个要挂载的文件系统,有一下6个字段
1、挂载的设备:可以使一下几种方式
设备文件
LABEL
UUID:centos 7目前使用的方式
2、挂载点
3、文件系统类型
4、挂载选项:mount命令中的选项,挂载选项可以有多个,彼此间用逗号分隔
5、转储频率(备份频率):
0:从不
1:每天
2:每隔一天
6、自检次序
0:不自检,额外创建的文件系统都无须自动自检
1:首先自检,通常只有根文件系统需要
2:次级自检,不同的设备可以使用同一个自检次序
3:依次在2之后
…
使用mount -a 可以重新加载/etc/fstab 文件中的所有挂载项
原创文章,作者:cszdz123,如若转载,请注明出处:http://www.178linux.com/40054
评论列表(1条)
文章对磁盘分区的要点,进行了完整的表述,对于硬盘基础知识可以结合图片来详细说明。同时对于命令的使用,没有很好的练习,对于学习linux,只有多练习,才能发现问题。时间实践真理的唯一标准哦。