USBハードディスクを購入したいというわけではありませんが、SDカードは読み取りと書き込みを何度も繰り返すのには適していません。
Raspberry Piで使用されているSDカードの寿命を延ばすために実行できる手順はありますか?
USBハードディスクを購入したいというわけではありませんが、SDカードは読み取りと書き込みを何度も繰り返すのには適していません。
Raspberry Piで使用されているSDカードの寿命を延ばすために実行できる手順はありますか?
回答:
これらの方法は、さまざまな方法で読み取り/書き込みの回数を最小限に抑えることにより、SDカードの寿命を延ばす必要があります。
スワップは、SDカードの一部を揮発性メモリとして使用するプロセスです。これにより、使用可能なRAMの量が増えますが、読み取り/書き込みの数が多くなります。パフォーマンスが大幅に向上することはほとんどありません。
swapoff
次のコマンドでスワップを無効にします。
sudo swapoff --all
また、再起動後に戻ってくるのを防ぐ必要があります。
sudo apt-get remove dphys-swapfile
に永久に削除できます。この回答でCONF_SWAPSIZE
説明されているようにを0に設定しても機能しないようで、再起動後に100MBのスワップファイルが作成されるため、削除するのが最善です。/etc/fstab
ext3
またはext4
ジャーナルなしのジャーナリングファイルシステムの使用は、読み取り/書き込みを減らすオプションです。ジャーナリングを無効にしたファイルシステムを使用することの明らかな欠点は、不適当なマウント解除(つまり、電源障害、カーネルのロックアップなど)の結果としてのデータ損失です。
ext3
としてマウントすることにより、ジャーナリングを無効にできext2
ます。
次のext4
ように、マウントされていないドライブでジャーナリングを無効にできます。
tune4fs -O ^has_journal /dev/sdaX
e4fsck –f /dev/sdaX
sudo reboot
noatimeマウントフラグを、SDカードのパーティションのオプションセクションに追加して、SDカードにあるパーティションに割り当てます/etc/fstab
。
ファイルシステムへの読み取りアクセスでは、ファイルに関連付けられたatime情報が更新されなくなりました。noatime設定の重要性は、単純に読み取られているファイルに対してファイルシステムに書き込みを行う必要がないことです。前のセクションで述べたように、書き込みはいくらか高価になる可能性があるため、これにより測定可能なパフォーマンスの向上がもたらされる可能性があります。ファイルへの書き込み時間情報は、このオプションを有効にしてファイルが書き込まれるたびに更新され続けることに注意してください。
以下のような高度に使用されるディレクトリ/var/tmp/
と可能性が/var/log
でRAMに再配置することができ/etc/fstab
、このように:
tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0
これにより/var/tmp
、ディスク容量として50MBのRAMを使用できます。これを行う際の唯一の問題は、RAMにマウントされたドライブが再起動後に保持されないことです。したがって、マウント/var/log
して、システムが再起動するエラーを検出した場合、その理由を見つけることはできません。
永続的なUSBハードディスクにいくつかのディレクトリをマウントすることもできます。この詳細については、この質問をご覧ください。
Raspberry Piは、外部ドライブからルートパーティションを起動することもできます。これはUSBまたはイーサネット経由で可能です。つまり、SDカードは起動中に別のデバイスに委任するためにのみ使用されます。デフォルトのカーネルがUSBストレージをサポートしているとは思わないので、これを行うには少しカーネルハッキングが必要です。詳細については、この質問またはこの外部ブログ投稿を参照してください。
noatime
デフォルトにする必要があります。
noatime
少なくともArchではデフォルトではありません。
noatime
問題が発生する場合は、relatime
完全に削除するのではなく、読み取り時のディスク書き込みを大幅に削減することもできます。
Jivingsが提供するオプションをアプリケーションで使用できない場合、寿命を大幅に延ばす別のオプションは、必要以上に大きい SDカードを使用することです。
ほとんどの適切なSDカードはウェアレベリングアルゴリズムを使用して各ブロックが書き込まれる回数を最小限に抑えているため、SDカードが必要以上に大きい場合、ウェアをより広い空き領域に広げることができます。
ウェアレベリングが非常に重要である理由の一部は、FAT(多くのSDカードのデフォルト形式)などの一部のファイルシステムが同じセクターを何度も繰り返し攻撃することです。
これについての詳細は、質問への回答を参照してください。SD/ MMCカードが独自のコントローラーでレベリングを行うというのは本当ですか?以上の電子スタック所特に、この回答。
この答えからの興味深い統計は、
2GBのカードを取り、何度も何度も書き直すと、平均で約10TBになり、カードが死んで書き込み不可能になります。
でも心配なのは
SDカードは、データが悪いとき、つまり、PCのハードドライブのようにI / Oエラーを返さないことを知らせません。
これにより、信頼できるストレージを保証する必要がある場合、ファイルシステムの選択が重要になることがあります。
最後に、SDカードのサイズを2倍にすると、寿命が2倍以上になります。
つまり、200 MBの空き容量がある2 GBのSDカードがある場合、4 GBのカードに切り替えると11倍の空き容量、ウェアレベリング容量、したがって寿命が得られ、16 GBのカードに切り替えると71倍の空き容量が得られますスペース。
MMC_ERASE
は、MMC / SD標準のどこかでこの目的のために定義された(オプションの)コマンドがあります。すべてのSDカードのうち、実際にサポートしているのは1つ(Piに付属しているもの)だけです。
私が見る唯一のことは、SDカードを交換しないことです。
Sdカードを交換すると、おそらくSDカードが破壊される可能性があります。
さらにRAMが必要な場合は、zramを使用してみてください。http : //raspberry.pi.gw.gd/t50-Using-ZRAM.htmlに投稿があり、raspberry piでのZRAMの使用に関する詳細が提供されています。
zramの詳細については、http://en.wikipedia.org/wiki/ZRamをご覧ください
また、最新のSDカードは古いカードよりもはるかに堅固であることがわかっているため、新しいクラス10 SDカードを購入することは、長持ちすることを望む場合にはおそらく良い選択肢です。
完全にRAMに常駐するPuppy Linuxを実行してみてください。起動時にストレージイメージ(場合によってはSDカード)をRAMにコピーし、変更を定期的にストレージにフラッシュすることにより、メモリ内で完全に実行されるため、非常に小さく高速です。この保存の頻度は、手動を含むユーザー制御です。
パピーは、階層化されたaufsまたは古いunionfsファイルシステムを、ext3やext4などの標準Linuxファイルシステムのいずれかとともに使用します。FATまたはNTFSパーティションに常駐させることもできます。
RPi用に特別に設計されたPuppyのバージョンが少なくとも2つあり、そのうちの1つは「Puppy Master」のBarry Kaulerによって作成されました。
詳細については、http://puppylinux.org/wikka/Puppiにアクセスしてください。
ここでのほとんどの人は、個人的な経験をするのではなく、彼らの仮定について話します。
私はRaspberryPiとRasPBXを、8つの拡張機能とFAXを備えた会社の交換機として使用しています。LinkSYS SPA3000を介した3つのIPベースのトランクと1つの固定電話があります。最初のKingston 4 GB SDCardがほこりをかむのにたった1か月しかかかりませんでした。
私はまだ実験中で、バックアップがありませんでした。ところで、PiはAPC UPSに接続されています。次に、RasPBX全体を最初から再セットアップしましたが、今回は/ var / logと/ var / lib / mysqlを企業のNASに移動しました。このSDは3か月後も大丈夫でした。
その後、私たちは非常に暑い夏を過ごしました。3か月目に、piは突然イーサネットを検出しなくなりました。それからある日、私はそれがすべてのLEDが暗くて起動しないことを発見しました。
Piを、すぐに使える新しいものに交換しました。異常終了したものは、冷却後に機能し始めましたが、かなり不規則に機能し、RasPBXを起動したときにビデオモードがグラフィックに切り替わらないため、80 * 25テキストのままです。本当にめちゃくちゃでした。それ以来、ヒートシンクセットを注文しました。新しいPiは、24時間7月24日に2か月以上使用できます。
したがって、7/24環境でpiを使用する場合は、安くしないでください。ヒートシンクを購入し、SDカード上で/ var / logおよび他のビジーなディレクトリの使用を避けてください。
utilitze TMPFSのすべてのソリューションを比較しました。最良の答えは、スクリプトprepare-dirs(http://grenzdebiel.dyndns.org/wordpress/?p=98を参照)と適切な/ etc / defaults / tmpfs( (http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/を参照)。
raspbianで実行するために必要な手順は次のとおりです。
1.編集/etc/default/tmpfs
および設定:
RAMLOCK=yes
RAMSHM=yes
RAMTMP=yes
次のサイズをお勧めします。
TMPFS_SIZE=10%VM
RUN_SIZE=10M
LOCK_SIZE=5M
SHM_SIZE=10M
TMP_SIZE=25M
2. / etc / fstabを使用して追加のディレクトリを有効にします
tmpfs /var/log tmpfs size=20M,defaults,noatime,mode=0755 0 0
tmpfs /var/cache/apt/archives tmpfs size=100M,defaults,noexec,nosuid,nodev,mode=0755 0 0
tmpfs /var/spool/cups tmpfs size=100M,defaults,noatime,mode=0755 0 0
tmpfs /var/spool/cups/tmp tmpfs defaults,noatime,mode=0755 0 0
3.スクリプト/etc/init.d/prepare-dirs
を使用して不足しているディレクトリを作成し/var/log
、すべてのデーモンが起動するようにします
最後に、私の場合の内容をご覧ください。
4.スクリプトを実行可能にしますchmod 755 /etc/initd/prepare-dirs
。
5.デーモンが開始する前に、ブート時にスクリプトが最初に開始されることを確認します。
update-rc.d prepare-dirs defaults 01 99
の内容/etc/init.d/prepare-dir
:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: prepare-dirs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create needed directories on /var/log/ for tmpfs at startup
# Description: Create needed directories on /var/log/ for tmpfs at startup
### END INIT INFO
# needed Dirs
DIR[0]=/var/log/lighttpd
DIR[1]=/var/log/cups
DIR[2]=/var/log/apt
DIR[3]=/var/log/ConsoleKit
DIR[4]=/var/log/fsck
DIR[5]=/var/log/news
DIR[6]=/var/log/ntpstats
DIR[7]=/var/log/samba
DIR[8]=/var/log/lastlog
DIR[9]=/var/log/exim
DIR[10]=/var/log/watchdog
case "${1:-''}" in
start)
typeset -i i=0 max=${#DIR[*]}
while (( i < max ))
do
mkdir ${DIR[$i]}
chmod 755 ${DIR[$i]}
i=i+1
done
# set rights
chown www-data.www-data ${DIR[0]}
;;
stop)
;;
restart)
;;
reload|force-reload)
;;
status)
;;
*)
echo "Usage: $SELF start"
exit 1
;;
esac
それでおしまい。
Swapfileを無効にします。
sudo dphys-swapfile swapoff
アンインストールする必要はありませんが、使用しておらず、スペースが必要な場合は、安全に削除できます。削除する代替コマンド:
sudo dphys-swapfileのアンインストール
使用法:/ sbin / dphys-swapfile {setup | swapon | swapoff | uninstall}
フラッシュセル耐久性:
大きなカードと通常の摩耗では純粋に数学的です。8GB MLCタイプのフラッシュカードに昼夜を問わず何度も書き込む場合、それを殺すのに約30日かかります。
Techsnapのエピソード99では、SSDの消耗について説明しています。アレンは、日常の使用でSSDを消耗することは不可能であり、スワップ、cronなどを無効にすることを心配する必要はありません。今すぐ動作します!スマートウェアレベリングはすべてを処理します。
キングストンが引用した通常のウェアは、プロのデジタルカメラで27年間の人生を送るはずです。
通常のデジタル一眼レフカメラの場合、数か月に1回それを一杯にするかもしれません。Piを考慮に入れると、頻繁に割り当てと再フラッシュを実験する場合、より多くの料金がかかる可能性があります。通常、ディストリビューションに満足したら...数ヶ月または数年間フラッシュを再フラッシュしません。したがって、SDの摩耗を長引かせるためには、SDのIOを削減するためのアドバイスに従うことをお勧めします。
フラッシュの価格は下がり、テクノロジーははるかに優れています。
ほとんどのSDカードは2世代または3世代のデバイスよりも長持ちしますが、その頃には、小型で使用するには遅すぎると見なされ、はるかに優れた安価なアップグレードが利用可能になります。
前述したように、主な問題はファイルとディレクトリであり、再起動の間に保存する価値はありませんが、頻繁に書き込まれます。つまり、キャッシュファイル、ダウンロードフォルダなどです。
Raspbian、Debian、Ubuntuにはunburden-home-dirというパッケージがあり、その主な目的は、そのようなファイルを、tmpfs
マウントや摩耗しにくい外部ハードディスクなどの問題の少ない場所にシンボリックリンクすることです。
通常、ログイン時にXの下で実行され、GUIアプリケーションのキャッシュファイルを対象としますが、スクリプトなどから呼び出して、ユーザーのホームディレクトリ内の任意のファイル用に構成することもできます。
彼らは基づいているiotop -bktoqqq
とiostat -dzp 5
。最初にこれらのコマンドを実行して、問題とその解決策を理解する必要があります。
sudo systemctl disable dphys-swapfile
sudo rm /var/swap
noatime,commit=1800
オプションを使用してSDカードのすべてのパーティションをマウントし、これらのエントリを次のディレクトリにRAMにマウントします/etc/fstab/
。
/dev/mmcblk0p1 /boot vfat defaults,noatime,commit=1800 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime,commit=1800 0 1
tmpfs /tmp tmpfs size=50M,nodev,nosuid 0 0
tmpfs /var/tmp tmpfs size=10M,nodev,nosuid 0 0
tmpfs /var/cache/samba tmpfs size=5M,nodev,nosuid 0 0
コミットは書き込みを遅延させ、最初にそれらを収集します。
/var/tmp/log/
説明を参照してください。ログファイルへの書き込みを減らすにはどうすればよいですか。
それはクロムが重く書き込み、停止することはできません結局のところ(参照176727、52663を)。これは、キャッシュとユーザーデータディレクトリに影響します。クロム/ヒントとトリックは、これはRAMに移動することができる方法について説明します。Raspberryには多くのRAMがないため、推奨されるタブサスペンダーはRAMの保存に役立ちます。
キャッシュサイズを制限し、編集/etc/chromium-browser/customizations/00-rpi-vars
してRAMに移動します
CHROMIUM_FLAGS="--disable-quic --enable-fast-unload --enable-tcp-fast-open --disk-cache-size=10000000 --media-cache-size=5000000"
キャッシュは、XDG_CACHE_HOME
エントリを次の/etc/security/pam_env.conf
ように変更することでRAMディスクに移動できるほど小さくなりました。
XDG_CACHE_HOME DEFAULT=/tmp/@{PAM_USER}/cache
これで、2人のユーザーのRAMに小さなブラウザーキャッシュができました。それだけでは不十分な場合は、必要に応じてキャッシュまたは/ tmp /サイズを変更します。
また、ユーザーデータディレクトリ(.config/chromium/
)で大量の書き込みが発生します。プロファイル同期デーモンがで推奨されるクロム/ヒントとコツ。これは、tmpfsでブラウザのプロファイルを管理し、定期的に物理ディスクに同期するために開発されました。残念ながら、このパッケージはまだRaspbian 8.0(Jessie)ディストリビューションの一部ではありません。したがって、私はまだこれをテストしていません。
不要なパッケージとファイルをアンインストールして空き容量を増やします。これにより、パーティション全体で摩耗がより均等に広がるはずです。
ここiotop -bktoqqq
でiostat -dzp 5
何度も実行すると、システムがアイドル状態のときに書き込みアクセスが大幅に減少します。何分間もディスクに何も書き込まれません。また、緑色のACT LEDが点滅する心配はありません。どうやらそれは良い書き込みアクセスインジケータではありません。
syslog出力を別のサーバーにストリーミングすることで、書き込みサイクルをわずかに短縮できます。もちろん、そのようなサーバーがsyslogd
稼働していることが前提条件です。ただし、PiはLinuxの愛好家のおもちゃであるため、これはおそらく非常によくあるケースです。:-)
このストリーミングをアクティブにするには、次のようなステートメントを挿入するだけです
*.* @myserver.mydomain
ファイルのほぼ最上部で/etc/rsyslog.conf
、他のすべての行をコメントアウトし、を発行してロギングを再開しservice rsyslog restart
ます。この後、選択したサーバーにメッセージが届くはずです。
これの明らかな有利な副作用の1つは、同じサーバー上の他のマシンと組み合わせてPiを簡単に監視できることです。欠点の1つは、システムの起動およびシャットダウン中に、ネットワーク接続がまだ確立されていないか、すでにシャットダウンされている場合、一部のメッセージが失われる可能性があることです。
journald
それらをsystemdジャーナルに保存するすべてのロギングを行うことに注意してください。またjournald
、rsyslogd
リッスンしているsyslogソケットにログを転送するように構成します。のログファイルにメッセージの追加コピーを配置します/var/log
。journalctl
ログを参照することに慣れている場合(そして、/var/log
慣れているよりもずっとうまく機能する場合)rsyslog
、書き込みを完全に無効にして保存できます。
注:100,000サイクルの制限は、すべてのコンピューティングデバイス(キーボードのキーも含む)に適用される仮説です。適切な冷却条件と適切なシャットダウン/開始サイクルでPiを実行すると、類推するよりも良い結果が得られると思います。
また、これは私の上記の意見を補強するかもしれません。
ユーザーPi [default]に加えて新しいユーザーを追加します。新しいユーザーのホームディレクトリを外部ドライブ[サム/ハードドライブ]に指定します。新しいユーザーにスーパーユーザー権限を付与し、プライマリアカウントとして使用を開始します。
これが役立つことを願っています。
/var/log
とを防ぐことはできません/var/tmp
。また、 適切な冷却が違いを生むという経験からの証拠を持つことは、「信じている」と言うよりもはるかに優れています。
デフォルトのsyslogデーモン(通常rsyslog)の代わりにbusyboxのsyslogデーモン(Raspbian / Debian / Ubuntuのbusybox-syslogdパッケージ内)を使用します。Raspbian / Debian / Ubuntuのデフォルトでは、busyboxのsyslogdはメモリ内のリングバッファーにのみログインし、ディスクにはログインしません。リングバッファのサイズはデフォルトで128kBです。つまり、古いログエントリはすぐにローテーションして消えてしまいます。ただし、より多くのRAMを使用するように構成できます。
それにもかかわらず、これはsyslogデーモンをまったく持たないよりもはるかに優れたソリューションです。つまり、引き続きログインして、およそのログエントリを読み取ることができます。過去数時間または数日(リングバッファの構成されたサイズに応じて)コマンドでlogread
。またlogread -f
、tail -f
同様の動作を取得して、たとえば、フィルタスクリプトを使用して興味深いログエントリのみを保存したり、ネットワークを介してログエントリを転送したりすることもできますstunnel
。
私がやったことのカップル:
dphys-swapfileのchmod(/ etcのどこか-現時点ではPIの近くではない):
sudo chmod a-x dphys-swapfile
ブート時にマイナーエラーが発生します(サービスdphys-swapfileを開始できません)-より良い方法があると仮定します... rc-update ??
また、カメラモジュールから画像をキャプチャし、最終的にWebサーバー(Pi)に配置します。/ dev / ram0をext2にフォーマットし、/ media / ramdriveとしてマウントしました(/etc/init.rcを使用すると思います)。4megで、1回のスナップに十分な大きさです。SDへの書き込みはありません。
サーバー(oululife.dnsdynamic.com)は実験的ですが、Web上にあります。本当に強調するために、「Heartbeat *」のMP4エピソードもストリーミングしました。lighttpd、Mysql、PHP、WordPressを実行します。Web経由でリモートストリーミングを実行しても、ほとんど汗をかくことはなく、負荷平均は約0.2です。オーバークロックは一切ありません。Model-B rev。2、24時間365日。ですから、もしログファイルを他の15個の/ dev / ramXに入れることができれば、Micro-SD 16Gカードは何年も続くと思います。