您的位置:首页 > 其它

磁盘与文件系统管理之二

2016-01-25 15:19 246 查看
设备文件:

b:block,块设备,随机访问设备,比如硬盘

c:character,字符设备,线性访问设备,比如键盘

ls -l /dev下设备文件的特殊字段(普通文件中的大小字段):
主设备号(major number)
标识设备类型

此设备号(minor number)

标识同一设备类型中的不同设备

mknod:创建设备文件
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m mode 指定权限

echo "hello" > /dev/pts/0:向终端发送hello字符,如果刚好有用户在pts/0上登陆,则终端会显示hello字符。

硬盘设备的设备文件名
IDE,ATA:hd
SATA:sd
SCSI:sd
USB:sd
a,b....来自同一类型下的不同设备

IDE:
第一个IDE口:主、从

/dev/hda,/dev/hdb

第一个IDE口:主、从
/dev/hdc,/dev/hddhda:
hda{1-4}:第n个主分区

hda5:第一个逻辑分区
这是因为MBR里面只有64字节标识分区表,而每16位标识一个分区,为了不混淆,1-4的编号特定给主分区或扩展分区用,而扩展分区要再划分成逻辑分区才能使用,所以逻辑分区从5号开始。且磁盘容量满足一下公式:
逻辑1+逻辑2+...逻辑n=这些逻辑分区共同的扩展分区容量

所有的扩展分区+所有的主分区容量=硬盘容量

分区表操作命令:fdisk
fdisk -l:查看当前系统上的分区详情

高级格式化命令:mkfs
格式化过程:管理员使用mkfs命令唤醒一个进程,进程会根据你指定的文件系统类型去内核查看并加载对应模块,然后使用模块的功能进行格式化。

Q:为什么文件系统要做成内核模块

因为大部分文件系统所提供的功能都是相似的,如果每个命令都根据相对应的文件系统进行编写,那么程序无疑是庞大而冗余的,而如果做成内核模块,再把功能做成统一接口向用户提供,则大大精简了程序,这个接口我们就叫做VFS(虚拟文件系统,virtual filesystem)。所以当我们要指定某一文件系统类型的时候,内核必须含有相对应的文件系统类型模块。

挂载点相关知识:
当我们新建一个分区时,系统并不能马上识别这个分区,这个时候我们可以用partprobe命令重读分区表,当分区表格式化完成的时候,linux也不能马上使用这个文件系统,必须把这个文件系统挂载在相对应的路径上,这个路径我们就叫做挂载点。

挂载点必须在当前linux系统所在的分区上,且一个挂载点只能挂载一个分区,如果挂载多个,那么会隐藏第一个被挂载的分区,这是因为:

假设/tmp在当前分区上,我们有两个分区a和b,a挂载在/dev上,b挂载在a上,这个时候如果把/tmp挂载在b上将会造成一个死循环,为了避免这种情况发生,我们规定一个挂载点只能挂载一个分区。

管理磁盘分区:
fdisk /dev/sda

p:显示当前硬件的分区,包括没保存的改动

n:新建新分区(new)

p:主分区 (primary)
e:逻辑分区(extend)

d:删除一个分区(delete)

w:保存退出

q:不保存退出

t:修改分区类型

l:显示所支持的所有类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fdisk