HOME → 1 Raspberry Pi → 02 運用・管理 → 

Raspberry Pi 4 Reverse Proxy Server SSD化による高速化

Raspberry Pi 運用・管理
Raspberry Pi 4 nginx Reverse Proxy Server
USB接続の SSD化によるディスクアクセス速度の向上
 
Raspberry Pi 4 + nginx で構築した Reverse Proxy Server は、Proxyキャッシュの読み書きで microSDカード を酷使している。
 
「SD Card Copier」によるSSDへのコピー方式を採用した
 
以下、MicroSDカードの寿命対策と処理速度の向上を目的に、SSD化を図った記録。
 
 

 

スポンサー リンク

 

 
 
 
 
 
1. SSD化を行う目的と達成手段
 
Reverse Proxy System の稼働環境。
Reverse Proxy System の稼働環境
 
nginx で構築した『Reverse Proxy Server』の下で、『nginx + wordpress』の Webサーバー【ドメイン別・3台】を運用している。
 
 
SSD化の目的。
処理速度の向上。(特に、キャッシュの読み書き。)
 USB接続のSSDで動かすと、一桁以上のディスクアクセス速度の向上が見込めるらしい。→ この後、キャッシュをRAM化した。
 
Raspberry Pi 4 に於けるUSB起動の状況。
■ラズパイ3B、3B+では、マイクロSDレスでUSBブートできる。
■ラズパイ4は、マイクロSDレスでのUSBブートはサポートされていない。
Raspberry Pi OS 64bit beta では、USB Boot が既に組み込まれている。
 
Raspberry Pi 4 現状での、SSD化の方法。
案A:microSDカードをブートローダとして使う方式
 rootをSSDへコピーする。
案B:EEPROMのブートローダを書き換える方式
 Raspberry Pi 4ではボード上にEEPROMが装備されており、この中に bootloaderが格納されているので、これを書き換えて起動できるようにする。
 
今回は案Aの、「SD Card Copier」によるSSDへのコピー方式を採用した。
「SD Card Copier」によるSSDへのコピー方式を採用した
 
 
SSD化を行うに最適な環境
 
本番稼働を止めないでSSD化を行う為に、
SSD化を行うに最適な環境
 
本番稼働はしているが『テスト中』のRaspberry Pi 4 を停止し、SSD化の作業を実施。

コピー処理に時間が掛かるので、LANケ-ブルをぬいて、ネットワークを遮断した状態でSSD化の作業を行った。

こうすると、『本番環境と同じIPアドレス』で作業ができ、SSD化が完了した時点で、LANケ-ブルを差し替えるだけで、即、本番移行が可能になる。
 
※:SSD化した【microSDカード】と【SSD】を、『他の Raspberry Pi』に移設しても動作しない
 
 
 
2. SSDの準備
 
 
Raspberry Pi 4のUSB端子は電源が弱いため、SSDの接続には、
「セルフパワーの USB HUB」を使用するか、
「電源アダプター付の SATA - USB3.0変換アダプタ」が、
必要である。
 
今回利用したSSDと、電源アダプター付の SATA - USB3.0変換アダプタ。

今回利用したSSDと、電源アダプター付の SATA - USB3.0変換アダプタ
 
参考:下記の変換アダプタで、電源供給コネクタをUSB2.0に挿して使用してもOKだった。
参考:下記の変換アダプタで、電源供給コネクタをUDB2.0に挿して使用してもOKだった
 
 
※:変換アダプタやSSDのモデルによっては・・・
USBに、マウスやキーボードを接続すると、
・デスクトップにカミナリ印が表示される。
・"Under-voltage detected!"とのメッセージが表示される。
・赤い電源のLEDが消えたり点いたりする

どうやら電力不足になるようで、
マウスやキーボードを外せば、ギリギリ動く。
 
 
Raspberry Pi に接続するSSDの条件。
①.パーティション形式:MBR
②.ファイルシステム:EXT4
 
MBR ディスクへの変換
SSDが GPT ディスコの場合、コントロールパネルの「管理ツール」→「コンピューターの管理」→「ディスクの管理」で、左端のディスク名を右クリックして、【MBR ディスクへの変換】を行う。
MBR ディスクへの変換
 
EXT4 でフォーマットする方法。
フリーソフト「AOMEI Partition Assistant Standard」を使用すれば、Windows環境でフォーマット可能。
 
「AOMEI Partition Assistant Standard」で、SSDを選択して右クリックし「パーティションを作成」を選択。
「AOMEI Partition Assistant Standard」で、SSDを選択して右クリックし「パーティションを作成」を選択
 
ファイルシステムのプルダウンメニューから、「EXT4」を選択する。
ファイルシステムのプルダウンメニューから、「EXT4」を選択する
 
画面左上の、「適用」をクリックする。
画面左上の、「適用」をクリックする
 
「パーティションを作成」の確認画面になるので、「続行」をクリックする。
「パーティションを作成」の確認画面になるので、「続行」をクリックする
 
「はい」をクリックする。
「はい」をクリックする
 
「パーティションを作成」が完了。
「パーティションを作成」が完了
 
 
EXT4 でのフォーマット要領
 
「AOMEI Partition Assistant Standard」で、SSDを選択して右クリックし「パーティションのフォーマット」を選択。
「AOMEI Partition Assistant Standard」で、SSDを選択して右クリックし「パーティションのフォーマット」を選択
 
ファイルシステムのプルダウンメニューから、「EXT4」を選択する。
ファイルシステムのプルダウンメニューから、「EXT4」を選択する
 
画面左上の、「適用」をクリックする。
画面左上の、「適用」をクリックする
 
「パーティションをフォーマット」の確認画面になるので、「続行」をクリックする。
「パーティションをフォーマット」の確認画面になるので、「続行」をクリックする
 
「パーティションをフォーマット」が完了。
「パーティションをフォーマット」が完了
 
 
SSD化用の microSDカードについて
 
SSD化用の microSDカード。
容量は小さくて良く、且つ、スピードも求められないので、
本番で稼働中の 64GB を 32GB のものに縮小コピーして利用した。
 
microSDカードは、本番で稼働中のものをコピーして使用。
本番で稼働中の microSDカードは、バックアップ用として残しておく。

本番で稼働中の 64GB を 32GB のものに縮小コピーして利用した
 
参考:
 
 
 
3. 「SD Card Copier」によるSSDへのコピー
 
 
raspberry pi 4 の、USBに接続されたストレージに、rootをコピーする
 
 
Raspberry Pi 4 のUSBにSSDを接続すると、「リムーバルメディアが挿入されました」の画面が表示される。
Raspberry Pi 4 のUSBにSSDを接続すると、「リムーバルメディアが挿入されました」の画面が表示される
 
「アクセサリ」にある「SD Card Copier」を起動する。
「アクセサリ」にある「SD Card Copier」を起動する
 
Copy From Device(コピー元)に【microSDカード】を選択し、Copy To Device(コピー先)に【SSD】を選択して、且つ、「New Partition UUIDs」にチェックを入れて「Start」をクリックする。
Copy From Device(コピー元)に【microSDカード】を選択し、Copy To Device(コピー先)に【SSD】を選択して、且つ、「New Partition UUIDs」にチェックを入れて「Start」をクリックする
 
確認メッセージに【SSD名】が表示されるので、「Yes」をクリックする。
確認メッセージに【SSD名】が表示されるので、「Yes」をクリックする
 
「Copy complete.」が表示されて完了。「OK」をクリックして、SD Card Copierを終了する。
「Copy complete.」が表示されて完了。「OK」をクリックして、SD Card Copierを終了する。
 
 
 
4. 起動情報の変更
 
 
Linuxのカーネルロードを、【microSDカード】から【SSD】に変更する
 
 
メニューバーから「LXTerminal」を起動する。
メニューバーから「LXTerminal」を起動する
 
「LXTerminal」で、blkid(UUIDに対応するディスクパーティションの確認)コマンドを入力する。
sudo blkid
 
【microSDカード】の『PARTUUID』と、【SSD】の『PARTUUID』が表示される。
【microSDカード】の『PARTUUID』と、【SSD】の『PARTUUID』が表示される
 
 
画面を開いたまま、もう一つ「LXTerminal」を起動する。
画面を開いたまま、もう一つ、メニューバーから「LXTerminal」を起動する
 
 
2つ目の「LXTerminal」で、【cmdline.txt】ファイルを編集する。
sudo mousepad /boot/cmdline.txt
 
 
【cmdline.txt】の中に記述されているPARTUUID=」を、【microSDカード】の『PARTUUID』から、【SSD】の『PARTUUID』に変更する。
【cmdline.txt】の中に記述されている「PARTUUID=」を、【microSDカード】の『PARTUUID』から、【SSD】の『PARTUUID』に変更する
 
 

 Raspbian のブートプロセス
.ROM内のルーチンが、ブートパーティションから【bootcode.bin】を読み込んで実行する。
.【bootcode.bin】が、ブートパーティションから【loader.bin】を読み込んで実行する。
.【loader.bin】が、ブートパーティションから【start.elf】を読み込んで実行する。
.【start.elf】が、Linuxカーネルをロードして実行する。
 ■ ブートパーティションにある「config.txt」に基づいてデバイスを設定する
 ■ 「config.txt」の 'kernel=' 行に指定されたLinuxカーネルをロードして実行する。
 ■ その際に、ブートパーテイションにある「cmdline.txt」の内容が、カーネルコマンドオプションとして与えられる。

 
 

cmdline.txt」のオプション
root=PARTUUID=ea7d04d6-02 → [KNL] Root filesystem
rootfstype=ext4 → [KNL] Set root filesystem type

この他に、CPUシリアル番号、MACアドレス、デイスプレイの解像度など多くのパラメータがあり、『他の Raspberry Pi』に【microSDカード】と【SSD】を移設すると動作しない

 
 

 PARTUUID とは
パーティションを識別するためのUUID。
MBRパーティションテーブルの場合、ディスク識別子とパーティション番号を連結することにより形成される。
サンプル:ea7d04d6-02

 UUID(Universally Unique Identifier) とは
オブジェクトを一意に識別するための識別子で、これを使ってUSBデバイスのSSDを特定している。
サンプル:ea7d04d6-02

 
 
 
5. 再起動と確認
 
再起動すると、デスクトップに MicroSDカードの中身の「boot」と「rootfs」のアイコンが表示されるようになる。
再起動すると、デスクトップに MicroSDカードの中身の「boot」と「rootfs」のアイコンが表示されるようになる
 
ディスク情報を確認する。
df -h
 
yaopi@Reverse-Proxy:~ $ df -h
ファイルシス         サイズ     使用     残り 使用% マウント位置
/dev/root                  228G    9.0G   208G    5%    /
devtmpfs                   1.8G          0    1.8G     0%    /dev
tmpfs                         2.0G          0    2.0G    0%     /dev/shm
tmpfs                         2.0G     8.6M   1.9G    1%     /run
tmpfs                         5.0M     4.0K   5.0M    1%     /run/lock
tmpfs                         2.0G          0    2.0G    0%     /sys/fs/cgroup
tmpfs                          32M     4.0K    32M    1%     /tmp
tmpfs                          16M          0    16M     0%     /var/tmp
/dev/sda1                 253M     53M  200M   21%     /boot
tmpfs                        391M         0   391M     0%    /run/user/1001
/dev/mmcblk0p2       29G   8.9G     19G   32%    /media/yaopi/rootfs
/dev/mmcblk0p1     253M    53M   200M   21%   /media/yaopi/boot
 
黄色の部分:/dev/root のサイズが SSDの 228G になっている。
水色の部分:元のMicroSDのマウントポイント。
 
I/O統計情報 sysstat のインストール。
sudo apt-get install sysstat
 
I/O統計情報 iostat の実行結果。
I/O統計情報 iostat の実行結果
 
【microSDカード】へのアクセスが無くなり、【SSD】での R/W になった。
又、他のサーバーの【microSDカード】と比べると、 R/W 速度が格段に向上した。
 
処理速度の向上
 
効果。
①.PageSpeed Insights での評価スコアが上がった。
②.同時アクセス数が増加した。
 
 
『PageSpeed Insights』における、評価スコアの変化。

Google Map 表示 & 画像が多いサイト:【パソコン】が「67」から「84」に、「17」ポイント上がった。
『PageSpeed Insights』における【パソコン】の評価スコア。 「67」から「84」に、「17」ポイント上がった。
 
Google Map の表示が無いサイト:【モバイル】が「65」から「91」に、「26」ポイント上がった。
Google Map の表示が無いサイト:【モバイル】が「65」から「91」に、「26」ポイント上がった
 
 
SSD化の結果
SSD化を行った結果は、今迄の対策の中で最も効果が大きく、
大正解だった。
WordPressは体感できるほど早くなり、
一度により沢山のリクエストが捌けるようになった。
 
 
 
6. SSD化後のバックアップ
 
A:SSDから、B:microSDカードへのバックアップ要領。
SSDから microSDカードへのバックアップ要領
 
バックアップ用のmicroSDカード。
Raspberry Piが起動できる状態のもの。
SSD化前の、microSDカードが望ましい。
 
microSDカードを、USBに挿したときのデバイス一覧(lsblk)。
microSDカードをUSBに挿したときのデバイス一覧
 
「SD Card Copier」で、コピー元にSSDを選択し、コピー先にバックアップ用のmicroSDカードを指定する。「New Partition UUIDs」にはチェックを入れない。
「SD Card Copier」で、コピー元にSSDを選択し、コピー先にバックアップ用のmicroSDカードを指定する。「New Partition UUIDs」にはチェックを入れない。
 
これでコピーした「microSDカード」を使用すれば、「microSDカード」のみで起動し、問題なく稼働する。
 
 
参考:
 
以上。
(2020.08.03)
 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください