樹莓派默認從tf卡啟動系統,io性能太弱了。最近入手了Argon ONE外殼,可以通過usb外接一個m.2 sata接口的固態硬盤;那么,折騰一下從ssd吧。
方案調查
一番查資料,目前支持兩種啟動方案:
- 升級固件,這也是網上推薦的主流方案。這個方案需要先用原版的raspbian升級固件,這樣就可以直接設置從USB設備引導。
找到的靠譜教程如下:
1. New Raspberry Pi 4 Bootloader USB / Network Boot Guide
2. Raspberry Pi 4 Ubuntu USB Boot (No SD Card)
然鵝,我現在用的是Ubuntu系統,這個方案折騰起來比較麻煩,可能還需要重裝系統。pass
- 從tf卡引導,將根目錄替換成ssd的分區。這樣理論上兼容性更好,而且可以在現有的系統上升級。不猶豫,馬上開搞。
參考教程:Raspberry Pi 4 USB Boot Config Guide for SSD / Flash Drives
方案實施
- 復制現有系統到ssd,注意,這個操作會清空SSD上面的數據
dd bs=4M if=/dev/mmcblk0 of=/dev/sda
- 確認usb設備id,我的是
174c:55aa
lsusb
Bus 002 Device 003: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb
- 修改cmdline.txt,樹莓派是通過這個文件來確認系統啟動目錄的,直接修改fstab無效
# 備份
cp cmdline.txt cmdline.txt.bak
# 修改為如下內容:
## 1. 注意將XXXX:XXXX替換為上一步獲取的usb id
## 2. 注意root=的配置,需要和硬盤對應的LABEL或者UUID一致(如果是dd復制的數據,這塊應該不用改)
usb-storage.quirks=XXXX:XXXX:u net.ifnames=0 dwc_otg.lpm_enable=0 console=serial
0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline
rootwait fixrtc
- 更新
/etc/fstab
,這一步其實不是必須的,為了不造成迷惑,還是和cmdline.txt
的配置保持一致了。 - reboot之后就可以看到
/
目錄已經切換到ssd上面了
ubuntu@rpi:~$ findmnt -n -o SOURCE /
/dev/sdb2
- 不服跑個分,io速度提升10倍,哈哈:
sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
Category Test Result
HDParm Disk Read 185.42 MB/s
HDParm Cached Disk Read 185.55 MB/s
DD Disk Write 92.6 MB/s
FIO 4k random read 4429 IOPS (17716 KB/s)
FIO 4k random write 5109 IOPS (20439 KB/s)
IOZone 4k read 21790 KB/s
IOZone 4k write 19337 KB/s
IOZone 4k random read 16226 KB/s
IOZone 4k random write 20809 KB/s
Score: 4777