【前言】
本文将要讲解的功能为Linux环境下对磁盘进行操作。包括分区、格式化、挂载外接移动存储设备等。
该文的写作背景为本人的树莓派需要外接一个固态硬盘作为存储设备,因此,便开始了一系列的折腾。
【开发及部署环境】
开发环境:Raspberry Linux
部署环境:Rspberry Pi3
【实现过程】
一个新磁盘要经过分区、格式化、挂载以后才可以给linux读写文件,如果磁盘已经分区且格式化过,那只要挂载即可。
准备工作
首先我们需要先将我们的移动硬盘或U盘插入我们的设备,然后稍等片刻,使用 fdisk -l 命令查看我们的所有设备。
如果在上述命令敲完后,提示没有权限,则在前面加 sudo (sudo fdisk -l)即可。
这里我们可以看到我们刚借入的硬盘(固态硬盘59.6GB)
开始分区格式化
一切准备就绪后,我们进行对硬盘的分区、格式化操作。这里我们采用linux下的 GPT(GUID)分区。
用 parted 工具,可以支持很多种格式的分区,是linux平台教新的分区工具。
接下来我们使用一系列的命令进行对硬盘的分区操作。
sudo parted # 进入parted工具,输入help可查看帮助 select /dev/sda # 选择你要操作的设备,一定要注意,不要把默认设备误操作了,先使用df工具查看到设备的名称 mklabel gpt # 设定使用的分区类型, 如果要用MBR分区,输入msdos即可。 mkpart # 添加一个分区 输入分区名称,回车 输入使用哪种文件系统,默认ext2,回车 (此处可以随意选,之后重新格式化写入文件系统) 输入分区从第几Mb的位置开始,输入1,从第1Mb开始(最好不要从0开始) 输入分区从第几Mb结束,输入2000,第2000Mb结束 此时已经分区成功,输入print查看目前分区情况
格式化操作
我们使用 parted 工具对对硬盘进行分区操作后,我们一定要进行格式化分区才能被使用!
使用 mkfs 工具可以方便地对分区进行格式化。
fdisk -l # 用该命令查找到分区的设备号,例如是/dev/sda1
mkfs -t ext3 /dev/sda1 # 将sda1分区格式化为ext3格式, 也可以用vfat格成fat32等
由上述的一行代码即可将我们的分区很好地格式化成我们想要的格式。
挂载操作(设置开机自动加载)
格式化好我们的分区后,我们将其进行挂载,才能在系统中使用。
通常情况下,我们采用 /mnt 目录作为我们的外接存储设备的挂载点,我们在该目录下新建一个目录作为我们的挂载地址(可以看成今后要使用的盘符)。
我们切换到 /mnt 目录下:cd /mnt
新建一个目录,本人命名为 d(暗喻D盘)。使用命令:mkdir d
接下来我们使用 mount 命令将我们刚才格式化好的分区挂载到 /mnt/d 目录下。(mount /dev/sda1 /mnt/d)
当然卸载也很方便,如果我们不继续使用的话,可以将其卸载 。(unmount /mnt/d)
用mount命令手动挂载的磁盘,重启后就没了,需要重新挂载,这个时候可以通过修改 /etc/fstab 文件来实现开机自动挂载。
使用命令:vi /etc/fstab 或者nano /etc/fstab
在最后一行添加:/dev/sda1 /mnt/d ext3 default 0 0
保存完成后,我们便实现了开机自动挂载的功能。
【可能遇到的问题】
1、ext格式不支持
FAT 格式U盘mount 本身就能支持,但如果你的U盘或移动硬盘使用的是exFAT 格式,mount会说不支持。没关系,安装 exfat-fuse软件之后 mount就支持了。
sudo apt-get install exfat-fuse
2、ntfs格式不在支持(同上)
sudo apt-get install fuse-utils ntfs-3g
3、用 fdisk -l 查看不出来外接硬盘
第一种原因是硬盘电压不足,没有正常运行。如果是树莓派的话,很有可能,需要给硬盘进行额外供电。固态硬盘应该不需要。
第二种原因是如果分区是 fat32 或 ext3 等文件系统,此时可以用parted工具里输入 print 查看。
出处:https://www.cnblogs.com/7tiny/p/8285239.html
=======================================================================================
树莓派加载外接USB硬盘
我们计划编写一个程序来长时间捕捉摄像头画面,那么就需要一个比较大的存储空间来存放我们拍摄的图片,我们从小角落找到一个同样“积灰已久”的固态硬盘。
windows下使用过的硬盘,推荐格式化成FAT32格式,该格式是兼容Linux系统文件格式的,NTFS格式兼容性不是特别好,可能读写会出问题。
当然直接用linux fdisk命令格式化成 ext2/3/4 也是可以的,但是后续在windows环境下读写又是新问题,如果硬盘不是准备永久挂载在linux系统下使用,还是建议用FAT32格式使用。
windows10/11 下已经不提供格式成 FAT32 的入口,我们可以下载奥梅分区助手快速格式化成想要的格式。
使用命令查看固态硬盘是否被识别
lsusb
可以看到,第二个usb设备便是我们的usb固态硬盘设备了(M.2硬盘放到了USB硬盘盒进行外接)
使用 fdisk 命令查看硬盘属性
fdisk -l
使用 mount 挂载硬盘设备,将磁盘挂载到 /mnt/sda1 路径下
虽然网上有很多教程说配置一个配置文件(具体配置我就不说了),然后让设备开机自动挂载,但我个人极不推荐,修改配置文件开机自动挂载虽然貌似一劳永逸,但在硬盘设备发生变更时,大概率因为忘记同步修改配置文件,会造成无法启动系统的严重故障,折腾不说还可能需要重装系统解决...其实启动不频繁情况下,手动装载也不费事。
mount /dev/sda3 /mnt/sda1
然后使用 df 命令查看存储占用详情
df
可以看到硬盘成功挂载。
出处:参考链接
=======================================================================================
个人使用
我自己在挂载外接硬盘的时候,当时也是想着一劳永逸的方式,让它自动挂载,但是如果出现挂载失败的情况,确实无法进入系统,曾经为也因此重装系统过。
不过可以通过修改参数,跳过挂载失败的硬盘直接进入系统,但我还是建议使用脚本挂载硬盘,可以设置这个脚本开机启动项里。
脚本如下: