当我们为Linux系统新增硬盘之后,如果不做一些操作,该硬盘是无法被成功识别的。而要做的操作就是分区和挂载。
一、分区
1.1 文件系统
在Linux中会使用树形文件来作为数据存储的结构,也就是所谓的目录加文件的形式。但对于磁盘等各种存储设备来说,无论是什么形式的数据,最终都会转换为0和1。也就是说,磁盘的物理存储方式决定了其根本不会存在文件和目录的概念。当然,对用户来说,0和1也是毫无意义的?此时就需要在用户和磁盘之间建立一种类似于“翻译”的机制,而Linux中文件系统+虚拟文件系统(Virtual File System,VFS)的解决方案就是这种翻译机制的实现。
那么什么是文件系统呢?所谓文件系统就是操作系统用于确定磁盘或分区上相关文件的方式和数据结构,简单说就是磁盘上组织文件的方法。在使用磁盘前,都需要对磁盘进行初始化操作,并将一些数据结构写到磁盘上,其目的就是建立对应的文件系统。当然,这些操作在某些操作系统中被称为格式化。
对于Linux而言,支持多种文件系统,如;ext2、ext3、ext4、xfs,zfs、iso9660、vfat、msdos、smbfs、nfs等,此外还能通过加载其他模块的方式来支持更多的文件系统。尽管Linux能够支持的文件系统很多,但是对于大部分的Linux系统而言,它们都具有类似的数据结构,如:超级块(superblock)、i节点(inode)、数据块(datablock)、目录块(directory block)等。
- 超级块:包含文件系统的总体信息,是文件系统的核心,一般在磁盘中会有多个超级块,从而避免当磁盘出现坏块而导致文件系统无法使用的情况。
- inode:用于存储所有与文件有关的元数据,如:文件的所有者、权限等属性数据以及指向的数据块。需要说明一点的是,inode中不包括文件名和文件内容。
- 数据块:是真实存放文件数据的部分,一个数据块默认情况下是4KB。
- 目录块:包括文件名和文件在目录中的位置,并包括文件的inode节点信息等。
1.2 如何进行分区
磁盘在使用前需要对其进行分区。磁盘的分区主要分为两类,即主分区和扩展分区。受制于磁盘的分区表大小(MBR大小为512字节,其中分区表占64字节),由于每个分区信息使用16字节,所以一块磁盘最多只能创建4个主分区,为了能支持更多分区,可以使用扩展分区(扩展分区中可以划分更多逻辑分区),但是即便这样,分区还是要受主分区+扩展分区最多不能超过4个的限制。在完成磁盘分区后,需要进行创建文件系统的操作,最后将该分区挂载到系统中的某个挂载点才可以使用。
下面开始进行分区的介绍。事先声明一点,本文使用虚拟机来进行演示。
- 增加虚拟硬盘
右击对应的虚拟机,在弹出的菜单中选择“设置”,如下所示:
点击之后就来到了设置页面,如下所示:
接着点击“添加”,出现下图所示的页面:
接着选择“硬盘”,点击“下一步”后出现下图所示页面:
这里选择默认的“SCSI”即可。继续点击“下一步”,出现下图所示的页面:
这里选择默认的“创建新虚拟磁盘”,并点击“下一步”。点击之后出现下图所示页面:
由于只是测试,因此分配1G大小即可,并选择“将虚拟磁盘存储为单个文件”,之后继续点击“下一步”,出现下图所示页面:
最后点击完成即可。此时发现在设置页面上已经出现了新添加的硬盘,如下所示:
点击“确定”,接着开启或者重新启动虚拟机后,使用fdisk -l命令进行查看,发现已经有/dev/sdb设备,如下图所示:
这就是新添加的磁盘在操作系统中对应的设备文件。其大小是1073MB(我在创建磁盘时给的大小是1GB,由于操作系统之间计算容量的差别,所以会存在一定的误差)。下面开始介绍如何进行分区。
- 进行分区
接着是对新增加的/dev/sdb磁盘进行分区。首先输入fdisk /dev/sdb,如下图所示:
这里需要输入字母n,这个字母代表new,也就是新建分区,如下图所示:
然后系统会进行提示,询问是创建扩展分区(extended)还是主分区(primary),这里选择p,如下图所示:
在分区号中输入数字1,代表这是第一个分区,如下图所示:
下面要输入首个柱面开始的位置,也就是该处输入2048;然后输入最后一个柱面的位置,也就是输入2097151表示将所有的空间划给这个分区,如下图所示:
最后输入字母w,代表将刚刚创建的分区写入分区表。这样就完成了第一步分区操作,如下图所示:
到此,分区已经完毕。此时可以使用fdisk -l进行查看,查看结果如下所示:
然后在刚刚创建的分区中格式化文件系统,这里使用的是ext4文件系统。使用到的命令如下所示:
mkfs -t ext4 /dev/sdb1 或 mkfs.ext4 /dev/sdb1
执行结果如下所示:
接着使用如下命令来查看是否分区成功:
lsblk -f
执行结果如下所示:
当然,能够查看磁盘分区信息的命令除了lsblk外,还有如下几个:
- df -T:查看已挂载的分区和文件类型
- fdisk -l : 只能显示分区,无法显示文件系统类型
- lsblk -l:查看分区的文件系统类型,包括挂载和未进行挂载的分区
- file -s 分区名称:查看指定挂载分区的文件系统类型
大家按照自己的需求选用对应的命令即可。
二、挂载
2.1 手动挂载
手动挂载就是使用mount命令来进行挂载。在Linux系统下, 创建了文件系统的分区后还需要经过挂载才能使用。以上面的例子来说,新建的磁盘分区为/dev/sdb1,比如需要将其挂载到/root/newDisk目录下,此时使用到的命令为:
[root@localhost ~]# mount /dev/sdb1 newDisk
执行之后可以通过如下命令来查看是否挂载成功:
df -h|grep sdb1
执行结果如下所示:
2.2 自动挂载
所谓自动挂载就是通过修改/etc/fstab配置文件来实现开机启动后的自动挂载。因为使用mount命令进行的挂载在计算机重启之后就会失效。
使用reboot命令重启虚拟机,重启后再次使用df -h | grep sdb1查看结果如下所示:
从上面结果可知,如果只是单纯用mount进行挂载,在服务器重启后挂载的磁盘确实失效了。
下面我们来对/etc/fstab配置文件进行修改,可以使用如下命令进行直接修改:
echo "/dev/sdb1 /root/newDisk ext4 defaults 0 0" >> /etc/fstab
这句话的意思是直接在/etc/fstab配置文件中追加echo输出的文本信息。当然,也可以使用vi命令打开/etc/fstab文件后进行追加。
对于上述命令而言,大致可以分为六个部分:
- /dev/sdb1(第一部分):表示待挂载的磁盘
- /root/newDisk(第二部分):表示磁盘需要挂载到哪个目录下
- ext4(第三部分):表示挂载使用的文件系统。
- defaults(第四部分):表示使用系统默认的挂载参数。
- 0(第五部分):用于决定dump命令在进行备份时是否要将这个分区存档,默认设0。
- 0(第六部分):用于设定系统启动时是否对该设备进行fsck,这个值只可能是3种,其中1表示保留给根分区,2表示其他分区使用(检查完根分区后检查)或者0表示不尽兴任何检查。
执行完毕后再次重启系统后,再次执行df -h|grep sdb1查看结果如下所示:
到此,关于让Linux操作系统识别新增硬盘就介绍完毕,希望对大家有所帮助。