目录
0、观察磁盘分区状态:lsblk、blkid、parted
0.1 lsblk列出系统上的所有磁盘列表
0.2 blkid列出设备的UUID等参数
0.3 parted列出磁盘的分区表类型与分区信息
1、磁盘分区:gdisk、fdisk
1.1 fdisk
2、磁盘格式化(创建文件系统):mkfs
3、文件系统挂载
3.1.1 手动挂载:mount
3.1.2 手动取消挂载:umount
3.2 自动挂载
3.3 重启自动挂载失败解决问题
如果我们想要在系统里面新增一块磁盘时,应该有哪些操作需要做:
- 对磁盘进行划分,以建立可用的硬盘分区
- 对该硬盘分区进行格式化(format),以建立系统可用的文件系统
- 若想要仔细一点,则可对刚刚建立好的文件系统进行检验
- 在Linux系统下,需要建立挂载点(亦即是目录),并将它挂载上来
0、观察磁盘分区状态:lsblk、blkid、parted
目前磁盘分区主要有MBR以及GPT两种格式,这两种格式所使用的的分区工具不太一样,因此我们需要去知道目前系统有哪些磁盘以及分区方式等等信息
0.1 lsblk列出系统上的所有磁盘列表
可以把lsblk看做 list block device 的缩写,也就是列出所有存储设备的意思
lsblk【-dfimpt】【device】
选项与参数:
-d:仅列出磁盘本身,并不列出该磁盘的分区数据
-f:同时列出该磁盘内的文件系统名称
-i:使用ASCII的字符输出,不要使用复杂的编码(在某些环境下很有用)
-m:同时输出该设备在/dev下面的权限信息(rwx的数据)
-p:列出该设备的完整文件名,而不是列出最后的名字而已
-t:列出该磁盘设备的详细信息,包括磁盘阵列机制、预读写的数据量大小等
列出本系统下所有的磁盘与磁盘内的分区信息:
目前系统主要有个sr0以及一个nvme0n1设备
lsblk默认输出的信息:
NAME:设备的文件名,会省略/dev等前导目录
MAJ:MIN:分别为主要与次要设备代码(内核识别的设备就是通过这两个代码实现的)
RM:是否为可拆卸设备(removable device),如光盘、USB磁盘等
SIZE:容量
TYPE:是磁盘(disk)、分区(partition)还是只读存储器(rom)等输出
MOUNTPOINT:挂载点
列出/dev/nvme0n1设备内所有数据的完整文件名:
0.2 blkid列出设备的UUID等参数
UUID时全局唯一标识符(universally unique identifier),Linux会将系统内所有的设备都给予一个独一无二的标识符,这个标识符可以拿来挂载或是使用这个设备或文件系统
补充:lsblk -f也可列出设备的UUID
0.3 parted列出磁盘的分区表类型与分区信息
parted devicename print
列出/dev/nvme0n1磁盘的相关信息
Model:磁盘的模块名称(厂商)
Disk:磁盘的总容量
Sector size(logical/physical):磁盘的每个逻辑/物理扇区容量
Partition Table:分区表格式(MBR/GPT)
msdos是基于MBR的
这些是分区数据
1、磁盘分区:gdisk、fdisk
MBR分区表请使用fdisk分区,GPT分区表请使用gdisk分区
为讲解fdisk命令,新建了两块磁盘来供我们使用(sda与nvme0n2)
1.1 fdisk
语法:
fdisk 设备名称
输入m查看命令
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
介绍其中常用的目录:
d delete a partition 删除一个磁盘分区
n add a new partition 新增一个磁盘分区
p print the partition table 在屏幕上显示分区表
w write table to disk and exit 保存退出
q quit without saving changes 不保存退出
先查看一下我们的分区表(此时是没有分区的)
创建一个分区的各个流程
新增分区:n
p primary (0 primary, 0 extended, 4 free) 主分区
e extended (container for logical partitions) 扩展分区选择分区类型:p/e
分区位置:1-4
选择起始扇区位置和结束扇区位置
结束扇区的位置除了选择数字外还可以使用+/-来选择容量大小,因为通过512B*扇区数量来计算比较麻烦
全部流程:
创建一个主分区
创建一个扩展分区
创建一个逻辑分区(逻辑分区是位于扩展分区内的)
此时我们来查看一下分区表
保存退出
查看路径下的sda磁盘(1-4是给主分区和逻辑分区使用的)
1.2 fdisk
语法:gdisk 设备名称
gdisk跟fdisk使用方法几乎一样,这里就不做多介绍了
补充:使用partprobe更新Linux内核的分区表信息,因为有时候Linux还在使用磁盘,为了防止和系统出问题,所以分区表有时候没有被更新,这个时候有两种方法来处理:一种为重新启动,另一种就是利用partprobe命令
partprobe【-s】加上选项-s可以把信息打印到屏幕上
2、磁盘格式化(创建文件系统):mkfs
mkfs命令有一个-t选项可以供我们指定要构建的文件系统的类型
-t, --type type
Specify the type of filesystem to be built. If not specified, the default filesystem type (currently ext2) is used
mkfs其实是一个综合命令,当我们使用mkfs -t xfs时,他就会去找mkfs.xfs相关的参数给我们使用;当我们使用mkfs -t ext4时,他就去找mkfs.ext4的相关参数,所以mkfs -t xfs(mkfs -t ext4)与使用mkfs.xfs(mkfs.ext4)是一样的
使用不同的文件系统,它输出的效果是不同的
3、文件系统挂载
挂载点是一个目录,这个目录是进入磁盘分区(其实是文件系统)的入口
在挂载前,你需要确认一下:
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中
- 单一目录不应该重复挂载多个文件系统
- 要作为挂载点的目录,理论上应该都是空目录才行
如果用来挂载的目录不为空,那么挂载了文件系统之后,原目录下的东西就会暂时地消失
3.1.1 手动挂载:mount
mount -a
mount -l
mount 【-t 文件系统】LABEL=‘ ’ 挂载点
mount 【-t 文件系统】UUID=‘ ’ 挂载点
mount 【-t 文件系统】设备文件名 挂载点
选项与参数:
-a:依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来
-l:单纯的输入mount会显示目前挂载的信息,加上-l可增列Label名称
-t:可以加上文件系统种类来指定欲挂载的类型
-n:在默认情况下,系统会将实际挂载的情况即时写入/etc/mtab中,所以可使用-n来避免写入
-o:后面可以接一些挂载时额外加上的参数
这个时候,我们就可以进入挂载点来使用磁盘
取消挂载后,在磁盘中创建的文件还会存在于磁盘,但挂载点下已经无法找到了,因为取消了挂载就取消了进入此磁盘的入口
3.1.2 手动取消挂载:umount
umount 设备名/文件系统/挂载点
3.2 自动挂载
如何开机时自动把我们的文件挂载好,直接到/etc/fstab中去修改就行
系统挂载的一些限制:
- 根目录时必须挂载的,而且优先级一定要先于其他挂载点被挂载进来
- 其他挂载点必须为已建立的目录,可任意指定,但一定要遵循必须的系统目录架构原则(FHS)
- 所有挂载点在同一时间之内只能挂载一次
- 所有硬盘分区在同一时间之内挂载一次
- 如若进行卸载,你必须先将工作目录已到挂载点(及其子目录)之外
/etc/fstab文件内容:
这个文件就是我们利用mount命令进行挂载时,将所有选项与参数写入的文件
这个文件共有六部分
第一栏:磁盘文件名/UUID/LABEL name
第二栏:挂载点(目录)
第三栏:磁盘分区的文件系统
第四栏:文件系统参数
第五栏:是否能被dump备份命令作用
第六栏:是否以fsck检验扇区
修改文件内容使之能够开机自动挂载
保存退出后,我们重启看看
3.3 重启自动挂载失败解决问题
当我们的磁盘出现问题(此处把磁盘的分区删除了)时,重启时挂载不上怎么办
解决方案:
在启动界面选择第一项,并按e进入编辑
进入此界面后,在linux开头到quiet结尾的句子最后加上rd.break
加入后按ctrl+x继续启动,进入紧急模式
进入紧急模式输入root密码
输入mount -n -o remount,rw /sysroot重新挂载根目录
chroot /sysroot切换文件系统
vim /etc/fstab编辑文件,将挂载错误的文件系统删除或注销(sda1的那一行删除)
最后两个exit退出根文件系统和紧急模式 等待系统启动