设备文件

说到分区就涉及到设备文件,在刚接触file类型时介绍过块设备和字符设备,这些文件放在/dev

DevFile.png

其中的file大小显示有两个数,第一个数是主设备号(major)标识某一类设备,第二个是次设备号(minor)标识一类设备不同设备,这些设备号是由Linux内核自己识别的。操作系统通过调用这些个设备文件来读取文件,这些文件我们也可以自己创建。

创建设备文件
语法:mknod [option] ... name type [major minor]

-m    #设置权限

createDev.png

操作系统如何识别磁盘?通过设备的接口来识别,系统中IDE、ATA标识为HD,主板上有2个IED接口,一个IDE接口可以接2块硬盘。STTA、SCSI、USB标识为SA。这么多硬盘如何识别第一块和第二块,Linux内核以字母标识磁盘个数a:第一块;b:第二块以此类推。Linux用数字表示分区,1-4标识主分区(1-4也可以用于扩展分区);逻辑分区从5开始。

dev.png

格式化分为低级格式化与高级格式化,低级是为磁盘划分磁道高级为分区装载文件系统,文件系统是一种软件是内核中的一个功能,没有文件系统的设备称作裸设备。关于格式化后面介绍。

分区

fdisk

fdisk由IBM开发,针对MBR分区类型的工具

fdisk

-l    #列出设备的分区表

fdisk-l.png
/proc/partitions这个文件里也记录着我们系统的分区表
logical05.png
sdb就是我们第二块硬盘了,用这个命令尝试给sdb来分区。
fdisk02.png
输入m或help来查看帮助信息
fdisk03.png

fdisk是一个交互式的分区工具,常用命令如下。

m    #显示帮助信息
d    #删除分区
n    #新建分区
    p    #创建主分区
    e    #创建扩展分区
l    #显示Linux支持的分区类型
t    #更改分区类型
p    #显示当前的分区列表
w    #保存并退出
q    #退出不保存更改

输入n新建分区,上面括号内提示0个主分区(剩余4个分区可用),0个扩展分区。p是主分区e是扩展分区
fdisk04.png

我们分区号1-4,这是主分区,默认是1。选1
fdisk05.png

要注意的是CentOS6中按柱面来分区

CentOS6

CentOS7中按扇区来分区

fdisk06.2.png

为什么第一个扇区为什么默认从2048开始?

分割区 预设起点是第2048 sector预设终点是第7815023sector第 0sector到第2047 sector刚好共2048个sectors是在分割区预设的用于给其他程序设计人员使用。
2048 個 sectors = 512 x 2048 = 1048576 bytes = 1 MiB大小不属于分割区里面。
>原文链接

第一个扇区用默认值,一个扇区512byte还得算需要多少个扇区(太麻烦),我们更习惯于用多少GB来算,Linux给我们提供了一种更加直观的方式设置。

fdisk07.png

上图所说的是:第一个扇区用 +多少个扇区或用+后面跟上单位{k,M,G},我们用第二种方式来给第一个分区设置5G大小的容量。
建立完成后用p来显示分区表,/dev/sdb1第一个分区,开始的分区结束的分区block大小,ID号,系统类型。

fdisk08.png

其中ID代表磁盘的分区类型,我们用l命令来查看。

fdisk09.png

常用的磁盘ID有

5    #扩展分区
82    #交换分区
83    #Linux系统分区
8e    #LVM(逻辑卷管理)

此时我们已经有1个主分区了,再建立1个扩展分区在其上建立逻辑分区。

extended.png

如果我们扇区分完了,再建立分区,会显示没有扇区。

Partition number (3,4, default 3): 
No free sectors available

logical.png
Adding logical partition 这里的逻辑分区默认从5开始
接着建立一个分区,我们可以用t把它的类型变成swap分区。
logical02.png

如果此时我们已经分完区了可以用w保存并退出。
logical03.png

可以看到磁盘已同步,那此时在/dev/会有我们写入的设备文件
logical04.png

gdisk

gdisk针对GPT分区类型的工具,MBR与GPT有区别,MBR不支持2T以上的分区,GPT可以支持大的分区,在安装系统时我们可以强制使用GPT格式

支持最大卷为2TB(terabytes) 并且每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)的主启动记录 (MBR)
GUID 分区表 (GPT) 磁盘分区样式支持最大卷为 18 EB (exabytes) 并且每磁盘最多有 128 个分区。

gpt.png
这里的输入先按Tab键写入inst.gpt,这样就会以gpt格式来分区,下面的安装与常规安装一样。下面我们对一块新硬盘来进行gdisk类型分区。

gdisk01.png
这里没有MBR分区BSD分区等等(由于gdisk是整篇文章写完补充的,可能目标硬盘都是sdb,这点需要注意。)。
与fdisk一样输入?或help来获取命令帮助信息。
gdisk-help02.png

这与fdisk一样新建分区,输入n后发现这里没有扩展分区而且主分区一共可以有128个,第一个扇区默认2048开始,容量还是用可视化的符号来写入,后面的分区类型默认是8300类型,输入l打印所有的分区类型。
gdisk03.png

可以看到已经分完区了,接下来格式化与挂载。
gdisk04.png

mkfs

在分区后写入文件系统可以用mkfs命令(make file system)

-t    #指定文件系统

这里的mkfs的-t与下图中命令功能相同,比如mkfs -t xfs 设备文件等同于mkfs.xfs 设备文件
mkfs.png

接下来说说mkfs,mkfs写文件系统那么它肯定支持非常多类型文件系统,在开发这个工具时它并不是把所有功能都写进去,它通过调用vfs(虚拟文件系统)由来调用其他功能,也就是说把每个写入都做成了程序用于调用(比如上面的mkfs.xxx),它和所有文件系统都有接口。当mkfs格式化时会调用vfs来进行写入。

查看系统支持的文件系统

[root@localhost ~]# cat /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/
binfmt_misc.ko.xz  exofs/             jbd2/              overlayfs/
btrfs/             ext4/              lockd/             pstore/
cachefiles/        fat/               mbcache.ko.xz      squashfs/
ceph/              fscache/           nfs/               udf/
cifs/              fuse/              nfs_common/        xfs/
cramfs/            gfs2/              nfsd/              
dlm/               isofs/             nls/ 

现在我们只是分完区而已并没有格式化(写入文件系统),用mkfs -t fileSystem devicePath
filesystem.png
写入成功了。要注意sdb1是主分区,sdb2是扩展分区是对下面的逻辑分区的一个指针,所以格式化请选择sd2下面的逻辑分区进行格式化。

我们仅仅写入文件系统暂时还无法使用它进行存储数据。系统在读取数据时先从根分区进入去相应的文件夹(这个文件夹属于其他分区)读取文件,设备格式化后是无法再根分区无法找到的,我们需要给第二块硬盘与第一块做个关联这就是挂载。

挂载设备(补充取消挂载与切换挂载目录)

用法:mount [options...] src des

-t  #指定文件系统类型(有可能mount无法读取文件系统类型).
-o(options)
    rw(read write) #读写
    ro(read only)  #只读
    sync  #不适用缓存直接写入硬盘
    async  #使用缓存,数据先写入内存,等待空闲时写入硬盘(危险)。
    noatime  #不更显文件访问时间戳
    atime  #更新文件访问时间戳(会增加知性步骤,浪费性能)

mount不加参数显示所有挂载点,这里来把我们格式化的分区挂载到根分区下。

mount /dev/sdb1 /sdb1    #挂载目标(sdb1也称挂载点)必须是/下的目录,不能在/上挂载。
mount /dev/sdb5 /sdb5

mkswap是在设备或文件中设置一个Linux交换区域。设置sdb6分区后,用swapon /dev/sdb6开启(swapoff是关闭)/proc/meminfo这个文件写着关于进程信息,我们主要关注SwapTotal这个数据。
mkswap.png

移除挂载

umount dst_path 移除挂载,无法卸载可能是文件被使用。
如果挂载的目录有文件,挂在后目录中内容并没消失,只是暂时覆盖。挂载的磁盘目录下的lost+found的文件夹是硬盘文件出错时会将错误文件防盗lost+found里。

自动挂载

这里需要说明下,有些设备重启后就不再挂载了,要实现自动挂载得去/etc/fstab中去添加内容

# /etc/fstab
# Created by anaconda on Fri Feb 23 02:04:19 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# UUID=ID号 挂载点 文件系统 默认选项 是否开机检查 是否备份
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=3297e0c1-3bf7-4a20-a89e-52777ee2253f /boot xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

这里的UUID用blkid查看
blkid.png

UUID=3d8b3bee-2e3f-4b6-8b8c-9da3a8cee31c /sdb1 xfs     defaults        0 0
UUID=f7face40-7e5b-4daf-baac-faa4d916b0e7 /sdb5 xfs     defaults        0 0
UUID=8bc381c5-aabd-42db-9c14-e019ee4b989d /sdb6 xfs     defaults        0 0

将以上内容添加后重新启动后即可自动挂载。

问题:分区时指定分区类型对写入文件系统有什么影响吗?或者说分区类型具体有什么作用。

参考链接

标签: none

讨论讨论讨论!