参考:Ubuntu 下的磁盘管理
作者:~莘莘
发布时间: 2021-07-11 17:51:08
网址:https://blog.csdn.net/lcx1837/article/details/118633544?spm=1001.2014.3001.5501
Linux 磁盘管理基本概念
Linux 的磁盘管理体系和Windows 有很大的区别,在Windows 下经常会遇到“分区”这个概念,在Linux 中一般不叫“分区”而叫“挂载点”。“挂载点”就是将一个硬盘的一部分做成文件夹的形式,这个文件夹的名字就是“挂载点”,不管在哪个发行版的Linux 中,用户是绝对看到不到C 盘、D 盘这样的概念的,只能看到以文件夹形式存在的“挂载点”。
文件/etc/fstab 详细的记录了Ubuntu 中硬盘分区的情况,如图2.8.1.1 所示:
在图2.8.1.1 中有一行“/ was on /dev/sda1 during installation”,意思是根目录“/”是在/dev/sda1上的,其中“/”是挂载点,“/dev/sda1”就是我们装Ubuntu 系统的硬盘。由于我们的系统是安装在虚拟机中的,因此图2.8.1.1 没有出现实际的硬盘。可以通过如下命令查看当前系统中的磁盘:
ls /dev/sd*
上述命令就是打印出所有以/dev/sd 开头的设备文件,如图2.8.1.2 所示:
在图2.8.1.2 中有四个磁盘设备文件,其中sd 表示是SATA 硬盘或者其它外部设备,最后面的数字表示该硬盘上的第n 个分区,比如/dev/sda1 就表示磁盘sda 上的第一个分区。图2.8.1.2中都是以/dev/sda 开头的,说明当前只有一个硬盘。如果再插上U 盘、SD 卡啥的就可能会出现/dev/sdb,/dev/sdc 等等。如果你的U 盘有两个分区那么可能就会出现/dev/sdb1、dev/sdb2 这样
的设备文件。比如我现在插入我的U 盘,插入U 盘会提示U 盘是接到主机还是虚拟机,如图2.8.1.3 所示:
设置好图2.8.1.3 以后,点击“确定”按钮U 盘就会自动连接到虚拟机中,也就是连接到Ubuntu 系统中,我们再次使用命令“ls /dev/sd*”来查看当前的“/dev/sd*”设备文件,如图2.8.1.4所示:
从图2.8.1.4 可以看出,相比图2.8.1.2 多了/dev/sdb 和/dev/sdb1 这两个文件,其中/dev/sdb就是U 盘文件,/dev/sdb1 表示U 盘的第一个分区,因为我的U 盘就一个分区。
磁盘和目录的容量查询命令
df:列出文件系统的整体磁盘使用量,主要查看单个文件系统的使用量。
du:评估某个目录下文件的使用量大小,主要查看单个文件的大小。
磁盘管理命令
本节我们学习一下跟磁盘操作有关的命令,这些命令如下:
1、挂载命令mount
我们创建好分区并且格式化(下面3、4讲到)以后肯定是要使用硬盘或者U盘的,那么如何访问磁盘呢?比如我的U 盘就一个分区,为/dev/sdb1,如果直接打开文件/dev/sdb1 会发现根本就打不开!我们需要将/dev/sdb1 这个分区挂载到一个文件夹中,然后通过这个文件访问U 盘,磁盘挂载命令为mount,命令格式如下:
mount [参数] -t [类型] [设备名称] [目的文件夹]
命令主要参数有:
-V 显示程序版本。
-h 显示辅助信息。
-v 显示执行过程详细信息。
-o ro 只读模式挂载。
-o rw 读写模式挂载。
-s-r 等于-o ro。
-w 等于-o rw。
挂载点是一个文件夹,因此在挂载之前先要创建一个文件夹,一般我们把挂载点放到“/mnt”目录下,在“/mnt”下创建一个tmp 文件夹,然后将U 盘的/dev/sdb1 分区挂载到/mnt/tmp 文件夹里面,操作如图2.8.2.3 所示:
在图2.8.2.3 中我们将U 盘以fat 格式挂载到目录/mnt/tmp 中,然后我们就可以通过访问/mnt/tmp 来访问U 盘了。
sudo mount /磁盘设备文件 /创建好的挂载目录文件夹 // 挂载
sudo umount /挂载目录 // 卸载
sudo mount -o iocharset=utf8 /磁盘设备文件 /创建好的挂载目录文件夹
//普通挂载中文目录名会出现乱码,使用此方法挂载中文目录名解决中文乱码
2、卸载命令umount
当我们不再需要访问已经挂载的U 盘,可以通过umount 将其从卸载点卸除,命令格式如下:
umount [参数] -t [文件系统类型] [设备名称]
-a 卸载/etc/mtab 中的所有文件系统。
-h 显示帮助。
-n 卸载时不要将信息存入到/etc/mtab 文件中
-r 如果无法成功卸载,则尝试以只读的方式重新挂载。
-t<文件系统类型> 仅卸载选项中指定的文件系统。
-v 显示执行过程。
上面我们将U 盘挂载到了文件夹/mnt/tmp 里面,这里我们使用命令umount 将其卸载掉,操作如图2.8.2.4 所示:
在图2.8.2.4 中,我们使用命令umount 卸载了U 盘,卸载以后当我们再去访问文件夹/mnt/tmp的时候发现里面没有任何文件了,说明我们卸载成功了。
3、磁盘分区命令fdisk
如果要对某个磁盘进行分区,可以使用命令fdisk,命令格如下:
fdisk [参数]
主要参数如下:
- -b<分区大小> 指定每个分区的大小。
- -l 列出指定设备的分区表。
- -s<分区编号> 将指定的分区大小输出到标准的输出上,单位为块。
- -u 搭配“-l”参数,会用分区数目取代柱面数目,来表示每个分区的起始地址。
比如我要对U 盘进行分区,千万不要对自己装Ubuntu 系统进行分区!!!可以使用如下命令:
sudo fdisk /dev/sdb
结果如图2.8.2.1 所示:
在图2.8.2.1 中提示我们输入“m”可以查看帮助,因为fdisk 还有一些子命令,通过输入“m”可以查看都有哪些子命令,如图2.8.2.2 所示:
图2.8.2.2 中常用的命令如下:
- p 显示现有的分区
- n 建立新分区
- t 更改分区类型
- d 删除现有的分区
- a 更改分区启动标志
- w 对分区的更改写入到硬盘或者存储器中。
- q 不保存退出。
由于我的U 盘里面还有一些重要的文件,所以现在不能进行分区,这里现在就不演示fdisk的分区操作了,后面我们讲解裸机例程的时候需要将可执行的bin 文件烧写到SD 卡中,烧写到SD 卡之前需要对SD 卡进行分区,到时候在详细讲解如何使用fdisk 命令对磁盘进行分区。
sudo fdisk -l //列出所有分区信息
sudo fdisk -l /dev/sdb //列出 sdb 分区信息
sudo fdisk /dev/sda //操作 sda 分区
sudo fdisk /dev/sdb //操作 sdb 分区
删除分区:
添加新分区:
- 创建1号分区,假设创建的1号分区大小为1GB,第一个默认是从第2048个扇区开始的(最开始0-2048个扇区里面应该用来记录分区表信息的吧),最后一个扇区计算一下:
(1GB=1,073,741,824B)/512B(一个扇区512个字节)=2097152个扇区,所以最后一个扇区=2097152+2048=2,099,200
-
创建2号分区时,第一个扇区默认是2,101,248=2099200+2048,最后一个扇区=2101248+2097152=4,198,400
-
创建3号分区时,第一个扇区默认是4,200,448=4198400+2048,最后一个扇区使用默认值(即最大值,对应磁盘所剩下的最大空间),直接回车就行
-
操作完毕后,输入 w 命令写入磁盘。
创建好的3个分区如下:
4、格式化命令mkfs
fdisk 创建好一个分区以后,我们需要对其格式化,也就是给这个分区上创建一个文件系统,比如FAT、EXT等,Linux 下的格式化命令为mkfs,命令格式如下:
mkfs [参数] [-t 文件系统类型] [分区名称]
主要参数如下:
fs 指定建立文件系统时的参数
-V 显示版本信息和简要的使用方法。
-v 显示版本信息和详细的使用方法。
比如我们要格式化U 盘的分区/dev/sdb1 为FAT 格式,那么就可以使用如下命令:
mkfs –t vfat /dev/sdb1
sudo mkfs -t vfat /dev/sdb1 //格式化 /dev/sdb1 分区为 FAT 格式(文件系统)
sudo mkfs -t vfat /dev/sdb2 //格式化 /dev/sdb2 分区为 FAT 格式(文件系统)
sudo mkfs -t vfat /dev/sdb3 //格式化 /dev/sdb3 分区为 FAT 格式(文件系统)
在Windows下显示三个磁盘:
Windows下有个工具,可以把快速将SD卡和U盘分区后再格式化成一个盘。