家庭实验室系列文章-如何迁移树莓派系统到更大的 SD 卡?
前言
其实这个专题很久很久之前就想写了,但是一直因为各种原因拖着没动笔。
因为没有资格,也没有钱在一线城市买房 (); 但是在要结婚之前,婚房又是刚需。
我和太太最终一起在一线城市周边的某二线城市买了房。
再之后,一起装修,她负责非电相关,我负责电 网相关的装修。
家庭组网,家庭实验室就这么一步一步随着家庭的组建而组建了起来:
- 家庭有线无线组网
 - 智能家居
 - NAS
 - 公网 IP 和 IPv6
 - Wake Online (WOL)
 - 家庭网络安全 (看了防火墙日志,才知道被攻击频率能有多高)
 - 玩转树莓派
 - 组建 Full Mesh VPN 网络
 - 手机 PAD 远程控制电脑
 - ...
 
有了所谓的"家庭实验室", 我的自身专业技能有了更多实验机会和试炼场,对新的技术了解不再浮于表面;
有了所谓的"家庭实验室", 即使两地奔波,也能通过手机看到我们,以及小孩经历的每一个点点滴滴,幸福萦绕心头。..
理工男难得这么矫情一下,此为前言。..
树莓派简介
Reference:
- 可以是你的小型,双显示平,台式电脑
 - 也可以是机器人大脑,智能家居中心,媒体中心,网络人工智能核心,工厂控制器等等。
 
本质上是个硬件基于 arm64 CPU, 软件 OS 基于 Linux 的电脑/开发板/设备。..
具有丰富的接口:
- USB-C
 - HDMI
 - 有线网卡
 - ...
 
和良好的生态:
- 作为边缘设备 (IoT) 网关等
 - 作为软路由
 - 作为 NAS 多媒体中心
 - ...
 
具有很高的可玩性和定制化的能力。

熟悉 Linux 的对与树莓派可以轻松上手。
更换 SD 卡背景
树莓派默认的存储是 micro SD(TF) 卡,刚开始我是用的 32G 的 TF 卡,性能也一般。
正好双十一,数码 3C 设备降价,就想着买个速度快的/容量大的 TF 卡做替换。
看了一圈,看中了这一款并下单:

看中的就是它的速度:
- 读取速度高达 190MB/s
 - 写入速度高达 130MB/s
 
下单!
如何迁移树莓派系统到更大的 SD 卡?
收到后,开干!

前提
- Linux 电脑 (MAC 也行,本次演示用 Linux 电脑;windows 电脑,可以选择用傲梅的轻松备份)
 - 树莓派
 - 旧的 TF 卡
 - 新的 TF 卡和读卡器
 
概述
- Linux 是基于文件的操作系统:Linux 以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在 Linux 的文件类型上就是:普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。
 - 直接利用 
dd命令进行文件的全量迁移- 先迁移到一个中间设备上,全量系统的文件名叫做:``
 - 再从中间设备迁移到新 TF 卡上
 
 - 再利用树莓派的 
raspi-config完成扩容 
详细步骤
备份旧数据
将树莓派关机,取下 TF 卡,插入到 Linux 电脑中,并查看该设备的路径:
lsblk
结果如下图:

这里 TF 卡对应的设备名为:sdb, 对应的路径是:/dev/sdb
执行 dd 进行数据备份,将全量数据备份到 Linux 主机的 非 sdb 目录下:
sudo dd if=/dev/sdb bs=1M of=backup-sd-card-1.img
结果如下图:

该 backup-sd-card-1.img 文件就是整个的树莓派系统,包括所有的普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。
迁移到新设备
将 TF 卡从 Linux 电脑上取下,插入新的 TF 卡,并查看该设备的路径:
lsblk
结果如下图:

这里新的 TF 卡对应的设备名仍为:sdb, 对应的路径仍是:/dev/sdb
执行 dd 进行数据迁移,将 backup-sd-card-1.img 迁移到新的 TF 卡上:
sudo dd if=backup-sd-card-1.img bs=1M of=/dev/sdb

如上图,这样就迁移完成可以准备开机了。(这里看到最后一行的速度时有种不详的预感,46.2MB/s -- 看来写入速度可能达不到宣称的那么高)
新 TF 卡插入树莓派并启动扩容
将新 TF 卡插入树莓派并启动,如果此时执行 df -h 查看文件系统大小,会发现还是只有 32G. 我们需要进行逻辑上的扩容:
运行:
sudo raspi-config
具体如下图:





重启后,再查看 df -h 空间已经扩上了:
casey in raspberrypi in 192.168.2.8 ~
❯ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       189G   11G  171G   7% /
devtmpfs        763M     0  763M   0% /dev
tmpfs           925M  172K  925M   1% /dev/shm
tmpfs           370M  860K  370M   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   31M  222M  13% /boot
检查树莓派系统上的各项服务,如:k3s pi-hole 等也正常运行。
达到期望的效果了吗?
容量肯定达到了。但是读写速度呢?
我们测一下,使用 hdparm 和 fio 分别测试随机读和随机写(这是更符合 OS 系统盘的使用场景的):
hdparm 测试
casey in raspberrypi in 192.168.2.8 ~ took 5s
❯ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 238.3G  0 disk
|-mmcblk0p1 179:1    0   256M  0 part /boot
`-mmcblk0p2 179:2    0   238G  0 part /
hdparm -tT /dev/mmcblk0
结果如下:

- Buffer disk read: 43.23 MB/s
 
fio
cd ~
fio -filename=randw-singlethread -fallocate=none -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=libaio -bs=32k -size=1000M -runtime=30s -numjobs=1 -name=hdparm-randwsinglethread
结果如下:

- IOPS 为:448
 - 写入速度只有:14MB/s
 
总结
本文是:家庭实验室系列文章 - 玩转树莓派 的一章。
树莓派要更换系统盘,可比 windows 轻松多了,直接使用 dd 命令即可完成。
但是,测试后,笔者不建议大家使用 TF 卡用作树莓派系统盘,因为速度实在是上不去。
TF 的读写速度比 SSD 差远了,这是体质硬伤。建议后续大家玩树莓派直接使用 SSD 用作系统盘(可能需要额外供电).
EOF
本文由东风微鸣技术博客 EWhisper.cn 编写!
家庭实验室系列文章-如何迁移树莓派系统到更大的 SD 卡?的更多相关文章
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第四章:更高级的数据管理
		
在这一章我们将学习如何正确地删除分类信息,如何向数据库填充种子数据,如何使用Code First Migrations基于代码更改来更新数据库,然后学习如何执行带有自定义错误消息的验证. 注意:如果你 ...
 - HBase 系列(二)—— HBase 系统架构及数据结构
		
一.基本概念 一个典型的 Hbase Table 表如下: 1.1 Row Key (行键) Row Key 是用来检索记录的主键.想要访问 HBase Table 中的数据,只有以下三种方式: 通过 ...
 - .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引
		
系列文章索引: .NET面试题解析(01)-值类型与引用类型 .NET面试题解析(02)-拆箱与装箱 .NET面试题解析(03)-string与字符操作 .NET面试题解析(04)-类型.方法与继承 ...
 - 不从SD卡启动树莓派2
		
本文你可以学到: berryboot使用,kali安装,开挂的MobaXterm,以及关于通过LABEL和UUID挂载的小技巧. 本文默认你有一定Linux基础,同时针对刚入门的水平,因为这是我的折腾 ...
 - OMAPL138制作SD卡启动介质及重装Linux系统
		
OMAPL138制作SD卡启动盘及重装Linux系统 手里的创龙的OMAPL138平台的系统SSH坏掉了,我重新移植了openssh还是不好使,没有办法了只能重装OMAPL138的系统了,按照创龙给的 ...
 - 4安德鲁斯.2.2在系统,具有系统权限的应用程序无法读取或写入SD卡
		
有两个解决方案: 1.通过改动android系统的源代码,开放SD卡的读写权限,具体的改动方法和说明.能够參考网上资料http://www.ifeegoo.com/android-debug-stat ...
 - 第36章 	SDIO—SD卡读写测试—零死角玩转STM32-F429系列
		
第36章 SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
 - linux系统下sd卡的备份与恢复
		
linux系统下sd卡的备份与恢复 现在各种的开发板都是从sd卡上面启动的,因此大修改工作之前很有必要备份一下. 备份 在linux系统下用读卡器读取sd卡 用df -h命令看分区的路径 一般都是/d ...
 - AM335X的SD卡更新系统学习记录
		
一般利用一张SD卡就能进行系统的更新,以前一直不知是什么原理,最近了解了下,对了解到的内容做个记录.使用的是AM335X平台,系统是Linux,文件系统是EXT3: 1.首先需要一张分好分区的SD卡( ...
 - 车牌识别LPR系统系列文章汇总
		
这里的LPR的的几篇文章是之前项目的一些相关资料的整理,涉及实验室内部的资料就没有放上来,希望能对想了解这方面的同学,有所帮助,那怕了解个大概也好.知道整体的思路就好.当初就是一个人瞎摸索,走了很多的 ...
 
随机推荐
- 【Azure Logic App】使用Outlook.com发送邮件遇到429报错
			
问题描述 在Logic App中使用 Outlook.com组件发送邮件,遇见了outlook connection报429的错误 {"error":{"code&quo ...
 - 【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题
			
问题描述 Azure Cache for Redis 服务在传输和存储数据时是如何加密呢? 问题回答 一:关于Azure cache for Redis服务在数据传输过程中是如何加密的? 为了确保在A ...
 - 动态less 解决 vue main.js
			
// 引入主题文件 // eslint-disable-next-line no-unused-expressions import('./theme/color/' + config.theme + ...
 - Springboot K8s Job 一次性任务 如何禁用端口监听
			
问题:SpringBoot一次性任务执行时,也会默认监听服务端口,当使用k8s job运行时,可能多个pod执行存在端口冲突 解决办法:命令行禁用SpringBoot一次性任务启动时端口占用 java ...
 - AAC编解码移植之基本简介
			
一 概念 AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术.由Fraunhofer IIS.Dolby Laborato ...
 - python 文件操作常用方法
			
一 python文件创建 import os import argparse def file_write(file_name,msg): f = open(file_name,"a&quo ...
 - AQS很难,面试不会?看我一篇文章吊打面试官
			
AQS很难,面试不会?看我一篇文章吊打面试官 大家好,我是小高先生.在这篇文章中,我将和大家深入探索Java并发包(JUC)中最为核心的概念之一 -- AbstractQueuedSynchroniz ...
 - FLTK基于cmake编译以及使用(Windows、macOS以及Linux)
			
最近因为一些学习的原因,需要使用一款跨平台的轻量级的GUI+图像绘制 C/C++库.经过一番调研以后,最终从GTK+.FLTK中选出了FLTK,跨平台.够轻量.本文将在Windows.macOS以及L ...
 - 引领AI创意教育新浪潮,瑞云AIGC实训平台解决方案来了
			
过去的2023年,AI(人工智能)成为了年度科技圈关键词,各行各业都在AI化,据统计,AIGC市场规模预计到2030年将达到万亿级别,这不仅是市场的趋势,更是创新的机遇. 教育行业更是如此,许多高校和 ...
 - 如何从容的打包上传图片对象--File,Blob,BASE64详解及转换方法
			
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 File() File() 构造器创建新的 File 对象实例. 语法 var myFile = new File(bits, name[ ...