前言

我之前在linux系统下制作启动盘,都提示我要先把u盘卸载,虽然使用unmount命令解决了,但是不清楚为什么。最近的任务是在内网k8s集群上安装glusterfs作为存储类,官方文档的步骤中提到几个命令,意思是先分区(fdisk),再格式化磁盘(mkfs),不懂linux磁盘管理就很懵逼了。没有时间系统去了解linux的磁盘管理,但是我旁边放着一本《Linux命令行大全》,其中有一章讲解存储介质,又看了一篇讲解linux磁盘的博客,就完全可以理解是怎么回事了。

磁盘表示

Linux 系统中所有的硬件设备都是通过文件的方式来表现和使用的,这些文件称为设备文件,硬盘对应的设备文件一般被称为块设备文件。管理存储设备首先要挂载,linux桌面的发展使得设备只要连上系统就自动挂载并工作,但是对于服务器还可能需要手动操作。linux在自动挂载设备后会自动设置设备的名称,设备所在的文件目录是/dev, ls /dev 看到如下图所示:

4283eb9b6afb4b6ac6c53d0502c2d4ed.png

其中,存储设备名称为:/fd(软盘),/hd(IDE接口硬盘),/lp(打印机),/sr(光驱),/sd(SCSI硬盘,重点)。现代linux系统把所有类硬盘的设备(硬盘,u盘,内存卡等)都当做SCSI,也就是所有这些设备挂载到这个目录下。ls /sd*如下:

songkaizong@songkaizong-pc:~$ ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1

命名规则是用 "a-z" 表示,比如 /dev/sda 表示第一块磁盘,/dev/sdb 表示第二块磁盘。我的机器有2个类硬盘设备,一个硬盘一个u盘,所以a代表硬盘,b代表u盘,a1,a2是硬盘的2个分区,b1是u盘的分区。

使用如下命令查看某一个磁盘的所有分区明细:

sudo fdisk -l /dev/sd[a,b,...]

挂载和卸载

这里挂载与卸载对应的应当是分区,而不是整个磁盘。

使用mount 命令挂载硬盘,这个一般系统会自动挂载。

使用unmount命令卸载磁盘,在进行分区与格式化时,必须先执行卸载操作,如umount /dev/sdb1 卸载我的u盘1分区。

分区与格式化

分区是使用磁盘的基础,在分区完成后还需要对分区进行格式化,并把格式化后的文件系统挂载到 Linux 系统之后才能存储文件。

分区

使用sudo fdisk /dev/sdb 对磁盘进行分区,这个分区有非常完善的提示,下面是一个例子,根据提示更改了分区类型为83 Linux,最后输入w保存生效:

d39106acb6e919c3f4af5476e0b2e1ed.png

格式化

使用mkfs命令格式化分区,如sudo mkfs -t ext3 /dev/sdb1,意思是把机器上第2个磁盘设置第1个分区,,格式化为ext3文件系统。更多参数去查文档。

命令汇总

etc/fstab 列出了系统启动时挂载的设备

df -h

ls /dev/sd*

sudo fdisk -l /dev/sdb

mount | grep /dev

sudo fdisk /dev/sdb

mkfs.xfs -i size=512 -f /dev/sdb1

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐