Разширяване възможностите на Raspberry Pi с помощта на зареждащ NVMe диск

Оригиналът е на Alex Ellis

3
1170

Възможно е да се направи ъпгрейд на дисковата подсистема на едноплатковия компютър Raspberry Pi с помощта на NVMe флаш диск. Тези дискове обикновено се включват към PCIe шината, което им дава възможност да четат и записват данни със скорости от порядъка на 3000 MB/s.

Зная мнението на критиците на тази идея и по-конкретно, мненията относно реално достижимата скорост за работа и обмен на данни и затова още в самото начало искам да уточня нещо важно.

Raspberry Pi 4 не може да разкрие целия потенциал на един NVMe флаш диск. Но NVMe дисковете имат редица преимущества пред обикновената MicroSD карта. Това са надеждността и скоростта. Закупуването на подобен диск и адаптер за него не изисква кой знае какви големи суми, в сравнение със закупуването на стар М.2. диск. Ако се налага, NVMe дискът може да се използва и за друго, като затова ще се спрем по-надолу.

Ако разполагате с външен SSD с USB интерфейс или М.2 диск, то можете да се възползвате от това ръководство.

Хардуерът

Ето списъка на компонентите, които се използват в този проект:

  • Raspberry Pi 4, като в моя случай се използва версия с 8 GB памет
  • Официалният захранващ блок за Raspberry Pi
  • SD карта памет – достатъчен е капацитет от 16 до 32 GB
  • Четец за SD картата
  • USB-адаптер за NVMe – обърнете внимание, че това трябва да е модел, който поддържа USB3. В противен случай скоростта на работа с данните ще бъде много по-ниска
  • NVMe-диск – М.2 дисковете изглеждат почти по същия начин, но те имат два прореза, а не един
Компонентите преди сглобяването

Поставете NVMe диска в адаптера и го включете към Raspberry Pi, за да може да си направи една бърза проверка.

Вътрешната печатна платка не е закрепена и може да се наложи завиването на две видии

Можех да избера и по-бърз диск от WD Blue, като например, Samsung EVO 970 Plus, само че той е с 50-60 паунда по-скъп. Това е безсмислено, понеже скоростта за обмен на данни така или иначе ще бъде ограничена от USB3 интерфейса на Raspberry Pi и няма смисъл да се дават пари за по-бърз флаш диск.

Настройване на Raspberry Pi и тестване на диска

Изтегляме 32-битовата RaspiOS.

Тези инструкции са валидни и за Ubuntu 20.04. Ако възникнат някакви затруднения, погледнете ето този или този материал.

Нека сега запишем тази операционна система на SD картата, да създадем файла boot.txt в кореновия раздел, да включим картата към Raspberry Pi и да стартираме малкия компютър. След това се включваме към едноплатковия компютър по следния начин:

ssh [email protected]

Обновяваме системата по следния начин:

sudo apt update -qy 
  && sudo apt upgrade -qy

Проверяваме версията на зареждащата програма:

​sudo vcgencmd bootloader_version
Sep 3 2020 13:11:43
version c305221a6d7e532693cc7ff57fddfc8649def167 (release)
timestamp 1599135103

Правим промени зареждането да става от USB дисковете чрез Advanced Options > Boot Order > USB Boot

Избрано е зареждането да става от включеното към USB порта устройство

Докато така или иначе сме в настройките на Raspberry Pi, нищо не ни пречи да отидем в опциите Options > GPU Memory и да променим размера на буферната памет от 65 MB на 16 MB. Ако Raspberry Pi не се използва за работа с графика, по този начин нищо няма да изгубим, а само ще върнем на системата малко оперативна памет.

Включваме Raspberry Pi.

Сега ще използваме компютъра, който ни трябваше за записването на операционната система върху SD картата. Това може да е и друг Raspberry Pi. Включване към този компютър NVMe диска чрез USB порта и SD картата чрез четец. Лично аз за тази цел използвах моя компютър Intel NUC с инсталиран Linux на него.

След като този компютъра зареди, командата lsblk извежда информация за нашия диск:

[email protected]:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 29.7G 0 disk
├─sdb1 8:17 1 256M 0 part
└─sdb2 8:18 1 29.5G 0 part
sdc 8:32 0 465.8G 0 disk
├─sdc1 8:33 0 256M 0 part
└─sdc2 8:34 0 29.5G 0 part

Сега трябва да направим копие на SD картата върху NVMe флаш диска. Тук е важно много внимателно да се гледа какви са имената на дисковете, понеже е възможно да бъде презаписан зареждащия диск на този компютър и той да престане да работи нормално. Ето каква е необходимата команда:

sudo -I
[email protected]:~# time dd if=/dev/sdb of=/dev/sdc bs=1M

Сега вече трябва да заредим Raspberry Pi чрез USB диска и отново да се включим към едноплатковия компютър по следния начин:

ssh [email protected]

След това трябва да инсталираме помощната програма hdparm, с която ще проверим производителността на този диск:

sudo apt install -qy hdparm

Трябва да се получи нещо подобно:

Пробваме да запишем на този диск файл с размер 500 MB от оперативната памет:

[email protected]:~ $ dd if=/dev/zero of=test bs=1048576 count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 2.63385 s, 199 MB/s
[email protected]:~ $

Наистина, ако сравним какво показва Samsung EVO 970 Plus на Raspberry Pi и на моя NUC компютър със 6-ядрен процесор на Intel, то разликата е колкото от земята до небето:

И ако погледнем на скоростта на буферираното четене на данни, става съвсем очевидно че интерфейсът USB3 на Raspberry Pi не дава възможност на този флаш-диск да работи с пълни сили:

  • M.2 SSD, включен чрез USB3 – 33,94 MB/s
  • NVMe, включен чрез USB3 – 344 MB/s
  • NVMe, включен към стандартен десктоп компютър – 2531 MB/s

Интересно е, че в същата ситуация SD картата показва по-добри резултати в сравнение с M.2 флаш диска, a именно – 43,35 MB/s.

Тук искам да подчертая, че пълният потенциал на NVMe дисковете, включени към Raspberry Pi , ще се разкрие, когато получи широко разпространение платката CM4 (Raspberry Pi Compute Module 4), която предлага един PCIe канал, към който могат да бъдат включвани подобни флаш дискове.


Това е. Вече имате на разположение ново хранилище на данни за Raspberry Pi, което е много по-бързо и надеждно от SD картата памет.

5 2 гласа
Оценете статията
Абонирай се
Извести ме за
guest
3 Коментара
стари
нови оценка
Отзиви
Всички коментари