1. 存储分区
1.1 存储设备管理
在Linux系统中所有的设备都会以文件的形式存储,设备一般保存在/dev目录下面。因此磁盘、SD卡也会以文件的形式保存在/dev目录下,一般磁盘以sda、sda1、sda2 ...,sdb为命名,SD卡以mmcblk0、mmcblk1等命名,这里以插入一块SD卡为例子:
如图1.1.1和1.1.2所示,插入SD卡后,/dev目录下新增了mmcblk0和mmcblk0p1两个文件,其中mmcblk0就是新插入的SD卡文件,而mmcblk0p1则是这个SD卡上的分区文件。
1.2 存储设备分区
上面讲到了分区文件,分区的目的就是便于管理,比如在Windows系统我们一般会分C盘,D盘,E盘等,而mmcblk0p1就是mmcblk0的第一个分区,也就是类似C盘。
Linux只能创建4个主分区,如果需要创建更多的分区那么就必须创建逻辑分区,其中逻辑分区需要占用一个主分区。
在Linux中,我们可以通过查看/proc/partitions文件来查看当前系统下全部的分区:
cat /proc/partitions
结果如图1.2.1所示:
可以看到刚插入的SD卡已经出现在了分区表内。
fdisk命令是用于磁盘分区的工具,可以创建、编辑、删除和显示硬盘分区。它是一个强大且常用的命令,适用于各种Linux发行版,可以通过以下命令安装:
sudo apt install fdisk
fdisk是一个交互式的软件,通过fdisk打开要进行分区管理的磁盘文件即可进入交互式命令行,对刚插入的SD卡操作如图:
sudo fdisk /dev/mmcblk0
进入交换命令后可以输入m,回车后可以看到使用说明,这里有几个常用的命令说明:
p:打印分区表n:添加新分区d:删除分区w:将分区表写入磁盘并退出q:退出而不保存更改
首先查看mmcblk0上已存在的分区:
把这个分区删掉:
然后使用SD卡全部空间新建两个一样大的分区:
保存退出,然后重新查看全部分区表如图1.2.5所示:
可以看到现在有两个分区了。
2. 文件系统
Linux操作系统支持很多不同的文件系统,比如ext2、ext3、FAT等等,而Linux把对不同文件系统的访问交给了VFS(虚拟文件系统),VFS能访问和管理各种不同的文件系统。所以有了分区之后就需要把它格式化成具体的文件系统以便VFS访问。
格式化的命令非常的简单,使用mkfsmake filesystem)命令:
mkfs [-t 文件系统格式] 装置文件名
-t:可以接文件系统格式,例如ext2、ext3、vfat等
这里,我们把刚刚mmcblk0新建的两个分区分别格式化为ext4和vfat系统:
用df命令可以查看挂载后的文件系统格式,将分区1、2分别挂载到/mnt/p1和/mnt/p2,结果见图2.1.2:
可以看到分区1、2都格式化为了对应的文件系统。
3. 挂载与使用
挂载指的就是将设备文件中的顶级目录安装到Linux根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。因此我们需要将有文件系统的分区挂载到一个目录上,这样对这个目录操作就相当于对这个设备的该分区进行操作。
df命令可以检查文件系统的磁盘空间占用情况、查看文件系统挂载情况等,利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
使用方法:
df [-ahikHTm] [目录或文件名]
-h:以人类可读的方式显示输出结果(例如,使用 KB、MB、GB 等单位)。-T:显示文件系统的类型。-t:<文件系统类型>:只显示指定类型的文件系统。-i:显示 inode 使用情况。-k:这个选项会以 KB 作为单位显示磁盘空间使用情况。-a:该参数将显示所有的文件系统,包括虚拟文件系统,例如proc、sysfs等。如果没有使用该选项,默认情况下,df命令不会显示虚拟文件系统。
但是此时mmcblk0的两个分区均未被挂载,df命令无法看到他的文件系统情况,因此需要mount命令来将文件系统挂载到/mnt目录下,一般约定俗成可移动设备都挂载在/mnt目录下,而不是直接挂载到根目录下,mount命令的使用方法如下:
mount [-t vfstype] [-o options] device dir
常用的几个选项有:
-t:指定挂载设备的文件系统。-o ro:用只读模式挂载。-o rw:用可读写模式挂载。o sync:在同步模式下执行。
挂载完成后使用df命令查看,结果如图3.1.1所示:
可以看到两个分区都已经成功挂载了,此时可以通过跟访问其他目录一样访问该目录了。
如果需要将该SD卡拆卸带走,可以使用umount命令将分区取消挂载,然后重新挂载到另外的机器上即可使用。
umount的使用方法:
umount [-ahnrvV][-t <文件系统类型>][挂载点]
其中常用参数的含义为:
-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统。-t:仅卸除选项中所指定的文件系统。
卸载结果如图3.1.2所示: