ฉันจะยืดอายุการ์ด SD ของฉันได้อย่างไร


252

ฉันไม่ใช่ทุกคนที่ต้องการซื้อฮาร์ดดิสก์ USB แต่ฉันรู้ว่าการ์ด SD ไม่เหมาะสำหรับการอ่านและเขียนซ้ำ ๆ

มีขั้นตอนใดบ้างที่ฉันสามารถใช้เพื่อยืดอายุการ์ด SD ของฉันในขณะที่ Raspberry Pi ใช้งานอยู่


19
หากคุณเขียนด้วยความเร็วสูงสุดตลอดเวลาทั้งกลางวันและกลางคืน 24 / 7-16gb จะมีอายุประมาณ 30 วัน ที่การใช้งานปกติคุณสามารถคาดหวังได้ประมาณ 27 ปีจาก 10,000 รอบการเขียน ถ้าใช้ 100,000 รอบการเขียนมากกว่า 50 ปี ยิ่งการ์ดยิ่งมีอายุนานก็จะต้องขอบคุณตรรกะการปรับระดับการสวมใส่ที่ฉลาด
Piotr Kula

ว้าวดีมากที่รู้ฉันไม่รู้เกี่ยวกับจุดแรกของ 16gb sd นาน 30 วันด้วยการเขียนความเร็วเต็ม ฉันคิดว่าการบันทึกวิดีโออย่างต่อเนื่องไปยัง sd แล้วถ่ายโอนไม่ใช่ความคิดที่ดีที่สุด
SSH

3
คุณจะได้รับประโยชน์จากโซลูชันเหล่านี้ทำไมไม่จ่ายเพียง $ 10 ทุกสองสามปี
Alexander

คำตอบ:


244

วิธีการเหล่านี้ควรเพิ่มอายุการใช้งานของการ์ด SD โดยลดจำนวนการอ่าน / เขียนด้วยวิธีต่าง ๆ :

ปิดการใช้งาน Swap

การสลับเป็นกระบวนการของการใช้ส่วนหนึ่งของการ์ด SD เป็นหน่วยความจำระเหย สิ่งนี้จะเพิ่มจำนวนแรมที่มี แต่จะส่งผลให้มีการอ่าน / เขียนจำนวนมาก ไม่น่าจะเพิ่มประสิทธิภาพอย่างมีนัยสำคัญ

ปิดใช้งานการสลับโดยใช้swapoffคำสั่ง:

sudo swapoff --all

คุณต้องป้องกันไม่ให้มันกลับมาหลังจากรีบูต:

  • สำหรับ Raspbian ที่ใช้dphys-swapfileเพื่อจัดการไฟล์ swap (แทนที่จะเป็น swap พาร์ติชั่น "ปกติ") คุณสามารถsudo apt-get remove dphys-swapfileลบมันออกอย่างถาวร ดีที่สุดที่จะลบเพราะการตั้งค่าเป็นCONF_SWAPSIZE0 ตามที่อธิบายในคำตอบนี้ดูเหมือนจะไม่ทำงานและยังคงสร้างไฟล์ swap ขนาด 100MB หลังจากรีบูต
  • สำหรับการกระจายอื่น ๆ ที่ใช้ swap partition แทนไฟล์ swap ให้ลบบรรทัดที่เหมาะสมออก /etc/fstab

การปิดใช้งานการทำเจอร์นัลบนระบบไฟล์

การใช้ระบบไฟล์เจอร์นัลเช่นext3หรือext4ไม่มีเจอร์นัลเป็นตัวเลือกในการลดการอ่าน / เขียน ข้อเสียเปรียบที่ชัดเจนของการใช้ระบบไฟล์ที่ปิดใช้งานการทำเจอร์นัลคือการสูญเสียข้อมูลอันเป็นผลมาจากการลงจากหลังม้าที่ไม่สง่างาม

คุณสามารถปิดการบันทึกในโดยการติดตั้งเป็นext3ext2

คุณสามารถปิดการใช้งานการบันทึกรายวันext4บนไดรฟ์ที่ไม่ได้ประกอบเข้าไปดังนี้

tune4fs -O ^has_journal /dev/sdaX
e4fsck –f /dev/sdaX
sudo reboot

ธงเมานต์ยามเที่ยง

กำหนด noatime ติดธงพาร์ทิชันที่อาศัยอยู่ใน SD card /etc/fstabโดยเพิ่มส่วนตัวเลือกของพาร์ทิชันใน

การอ่านการเข้าถึงระบบไฟล์จะไม่ส่งผลให้มีการปรับปรุงข้อมูล atime ที่เกี่ยวข้องกับไฟล์อีกต่อไป ความสำคัญของการตั้งค่า noatime คือมันไม่จำเป็นต้องใช้ระบบเพื่อทำการเขียนไปยังระบบไฟล์สำหรับไฟล์ที่กำลังอ่านอยู่ เนื่องจากการเขียนอาจมีราคาค่อนข้างแพงดังที่กล่าวไว้ในหัวข้อก่อนหน้านี้อาจส่งผลให้ได้รับประสิทธิภาพที่วัดได้ โปรดทราบว่าข้อมูลเวลาเขียนลงในไฟล์จะยังคงได้รับการอัปเดตต่อไปทุกครั้งที่มีการเขียนไฟล์ลงไปเมื่อเปิดใช้งานตัวเลือกนี้

ไดเรกทอรีใน RAM

ไดเรกทอรีที่ใช้อย่างมากเช่น/var/tmp/และอาจ/var/logถูกย้ายไปที่ RAM ใน/etc/fstabลักษณะนี้:

tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0

ซึ่งจะอนุญาตให้/var/tmpใช้ RAM 50MB เป็นพื้นที่ดิสก์ ปัญหาเดียวของการทำเช่นนี้คือไดรฟ์ที่ติดตั้งใน RAM จะไม่คงอยู่ในการรีบูต ดังนั้นหากคุณติดตั้ง/var/logและระบบของคุณพบข้อผิดพลาดที่ทำให้รีบูตคุณจะไม่สามารถหาสาเหตุ

ไดเรกทอรีในฮาร์ดดิสก์ภายนอก

นอกจากนี้คุณยังสามารถติดตั้งบางไดเรกทอรีในฮาร์ดดิสก์ USB ถาวร รายละเอียดเพิ่มเติมสามารถพบได้ในคำถามนี้

Raspberry Pi ยังสามารถบู๊ตพาร์ติชั่นรูทได้จากไดรฟ์ภายนอก นี่อาจเป็นผ่าน USB หรืออีเธอร์เน็ตและหมายความว่าการ์ด SD จะถูกใช้เพื่อมอบสิทธิ์ให้กับอุปกรณ์อื่นเท่านั้นในระหว่างการบู๊ต สิ่งนี้ต้องใช้การแฮ็คเคอร์เนลเล็กน้อยเพื่อให้บรรลุผลเพราะฉันไม่คิดว่าเคอร์เนลเริ่มต้นรองรับที่เก็บข้อมูล USB คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่คำถามนี้หรือนี้โพสต์บล็อกภายนอก


17
noatimeควรเป็นค่าเริ่มต้น
อเล็กซ์แชมเบอร์เลน

3
@AlexChamberlain: noatimeไม่ใช่ค่าเริ่มต้นอย่างน้อยใน Arch
Jivings

20
มันอยู่ใน Raspian รุ่นล่าสุด
Oli

4
ตามนี้: superuser.com/a/168126/105936มันไม่ได้เป็นความคิดที่ดีที่จะนำ/var/tmpไปสู่หน่วยความจำ /tmpบางทีคุณอาจจะสับสนกับ
inf3rno

1
โปรดทราบว่าหากnoatimeทำให้คุณเกิดปัญหาคุณสามารถใช้relatimeซึ่งจะช่วยลดการเขียนดิสก์ในการอ่านแทนการลบออกทั้งหมด
Mark Booth

79

หากตัวเลือกของJivingsไม่สามารถทำได้สำหรับแอปพลิเคชันของคุณตัวเลือกอื่นเพื่อยืดอายุการใช้งานของคุณก็คือการใช้การ์ด SD ที่ใหญ่กว่าที่คุณต้องการ

ออกจากพื้นที่ว่างมากมาย

การ์ด SD ที่ดีที่สุดใช้อัลกอริธึมการปรับระดับการสึกหรอเพื่อลดจำนวนครั้งที่แต่ละบล็อกถูกเขียนดังนั้นหากการ์ด SD มีขนาดใหญ่กว่าที่คุณต้องการการสึกหรอสามารถแพร่กระจายไปทั่วพื้นที่ว่างขนาดใหญ่กว่ามาก

เหตุผลที่ทำให้การปรับระดับการสึกหรอมีความสำคัญมากคือระบบไฟล์บางระบบเช่นFAT (รูปแบบเริ่มต้นสำหรับการ์ด SD จำนวนมาก) ใช้ค้อนเซกเตอร์เดียวกันซ้ำแล้วซ้ำอีก

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ให้ดูคำตอบสำหรับคำถามจริงหรือไม่ว่าการ์ด SD / MMC ไม่ได้ปรับระดับด้วยคอนโทรลเลอร์ของตัวเอง? มากกว่าในElectronics Stack Exchangeโดยเฉพาะคำตอบนี้

สถิติหนึ่งที่น่าสนใจจากคำตอบนี้ก็คือ

ใช้การ์ด 2GB และเขียนมันเริ่มต้นซ้ำแล้วซ้ำอีกโดยเฉลี่ยประมาณ 10TB ก่อนที่การ์ดจะตายและไม่สามารถเขียนได้อีกต่อไป

แต่สิ่งที่น่ากังวลก็คือ

การ์ด SD จะไม่แจ้งให้คุณทราบเมื่อข้อมูลไม่ดีเช่นไม่คืนข้อผิดพลาด I / O เหมือนกับฮาร์ดไดรฟ์ PC

สิ่งนี้อาจทำให้การเลือกระบบไฟล์ของคุณมีความสำคัญหากคุณต้องการรับประกันการจัดเก็บที่เชื่อถือได้

หมายเหตุสุดท้ายประการหนึ่ง: การเพิ่มขนาดของการ์ด SD เป็นสองเท่าอาจทำให้อายุการใช้งานเพิ่มขึ้นเป็นสองเท่า

นั่นคือถ้าคุณมีการ์ด SD 2 GB ที่มีฟรี 200 MB แล้วเปลี่ยนเป็นการ์ด 4 GB จะให้พื้นที่ว่าง 11 เท่าความสามารถในการปรับระดับและอายุการใช้งานที่ยืนยาวในขณะที่เปลี่ยนเป็นการ์ด 16 GB จะให้ 71 ครั้งฟรี ช่องว่าง


ในการอนุญาตให้การ์ด SD ทำการปรับระดับการสึกหรอในสถานที่แรกนั้นจะต้องมีการแจ้งให้ทราบว่าบล็อกใดที่ใช้งานได้ฟรี fstrimสามารถช่วยในการทำเช่นนั้น
JimmyB

ไม่จำเป็นต้องใช้การตัดส่วน แต่ถ้าไม่มีบล็อกจะถูกนำกลับมาใช้ใหม่เฉพาะเมื่อระบบปฏิบัติการใช้บล็อกซ้ำมากกว่าเมื่อหยุดใช้งาน เท่าที่ฉันรู้ว่า trim เป็นฟังก์ชั่น SSD และไม่รองรับการ์ด SD ซึ่งเข้าถึงได้โดยโปรโตคอลที่ง่ายกว่ามาก
Mark Booth

@ มาร์คจุดแรกของคุณถูกต้อง - สำหรับประเด็นที่สองของคุณมีMMC_ERASEคำสั่ง(เป็นทางเลือก) ที่กำหนดไว้ในมาตรฐาน MMC / SD เพื่อจุดประสงค์นี้ ถึงแม้ว่า SD-Cards ทั้งหมดที่ฉันได้ลองมีเพียงอันเดียว (- อันที่มาพร้อมกับ Pi ของฉัน) จริง ๆ แล้วมันรองรับ
JimmyB

ขนาดพาร์ติชั่นมีความสำคัญในกรณีนี้หรือไม่? ฉันหมายถึงถ้าฉันมีการ์ด 16GB และระบบที่มีพาร์ติชัน ext4 พิเศษ 4GB, มันจะใช้ประโยชน์จาก 12GB ที่เหลือสำหรับการปรับระดับการสึกหรอหรือไม่?
natenho

เป็นการยากที่จะบอก @natenho ใช่สำหรับการ์ด SD ที่มีการปรับระดับการสวมใส่ที่ดีไม่มีสำหรับใครที่มีการใช้งานที่แย่
Mark Booth

25

สิ่งเดียวที่ฉันเห็นคือไม่ต้องเปลี่ยนการ์ด SD

การสลับการ์ด Sd น่าจะเป็นสิ่งที่สามารถฆ่าการ์ด SD ของคุณได้

หากคุณต้องการ RAM เพิ่มเติมคุณสามารถลองใช้ zram ได้ที่โพสต์บนhttp://raspberry.pi.gw.gd/t50-Using-ZRAM.htmlให้รายละเอียดเกี่ยวกับการใช้ ZRAM บนราสเบอร์รี่ pi

ข้อมูลเพิ่มเติมสำหรับ zram บนhttp://en.wikipedia.org/wiki/ZRam

นอกจากนี้การ์ด SD รุ่นล่าสุดนั้นมีความแข็งแกร่งมากกว่าการ์ดรุ่นเก่ามากการซื้อการ์ด SD ระดับ 10 แบบใหม่น่าจะเป็นตัวเลือกที่ดีคือคุณต้องการเห็นมันเป็นเวลานาน


14

คุณสามารถลองใช้ Puppy Linux ซึ่งเป็น ram-resident อย่างสมบูรณ์ มีขนาดเล็กมากและรวดเร็วอย่างเห็นได้ชัดเนื่องจากทำงานในหน่วยความจำอย่างสมบูรณ์โดยการคัดลอกอิมเมจหน่วยความจำ (ในการ์ด SD ในกรณีของคุณ) ไปยัง RAM ตอนบูตจากนั้นทำการล้างการเปลี่ยนแปลงเป็นระยะ ๆ เพื่อจัดเก็บ ความถี่ของการบันทึกนี้ถูกควบคุมโดยผู้ใช้รวมถึงด้วยตนเอง

Puppy ใช้ระบบไฟล์ aufs แบบเลเยอร์หรือเก่ากว่า unionfs กับระบบไฟล์ Linux มาตรฐานใด ๆ เช่น ext3 หรือ ext4 นอกจากนี้ยังสามารถอยู่ใน FAT หรือพาร์ทิชัน NTFS

มีอย่างน้อยสองรุ่นของลูกสุนัขที่ออกแบบมาเป็นพิเศษสำหรับ RPi ซึ่งหนึ่งในนั้นสร้างขึ้นโดย "Puppy Master" Barry Kauler

สำหรับข้อมูลเพิ่มเติมไปที่http://puppylinux.org/wikka/Puppi


12

คนส่วนใหญ่ที่นี่พูดคุยเกี่ยวกับสมมติฐานของพวกเขาและไม่ fom ประสบการณ์ส่วนตัว

ฉันใช้ RaspberryPi กับ RasPBX เป็นสวิตช์บอร์ดของ บริษัท พร้อม 8 ส่วนขยายและแฟกซ์ เรามี 3 ฐาน ip และหนึ่งบรรทัดผ่าน LinkSYS SPA3000 ใช้เวลาเพียง 1 เดือนสำหรับ SDCard ของ Kingston ที่เริ่มต้นใช้งานเพื่อกัดฝุ่น

ฉันยังคงทำการทดลองและไม่มีข้อมูลสำรอง BTW the Pi เชื่อมต่อกับ APC UPS ฉันตั้งค่า RasPBX ใหม่ทั้งหมดตั้งแต่เริ่มต้น แต่คราวนี้ฉันย้าย / var / log และ / var / lib / mysql ไปยัง NAS องค์กรของเรา SD นี้ยังคงตกลงหลังจาก 3 เดือน

จากนั้นเรามีฤดูร้อนที่ร้อนแรงมาก ในช่วงเดือนที่สามปี่เริ่มตรวจไม่พบอีเธอร์เน็ตจากสีน้ำเงิน แล้ววันหนึ่งฉันก็พบว่าไฟ LED ทั้งหมดสลัวและไม่สามารถบู๊ตได้

ฉันแทนที่ Pi ด้วยกล่องใหม่ที่ใช้งานได้จริง คำสั่งที่ผิดปกติเริ่มทำงานหลังจากที่ทำให้เครื่องเย็นลง แต่มันใช้งานได้ค่อนข้างผิดปกติและเมื่อบู๊ตกับ RasPBX โหมดวิดีโอจะไม่เปลี่ยนเป็นกราฟิก มันเลอะจริงๆ ฉันสั่งชุดฮีทซิงค์ตั้งแต่นั้น Pi ใหม่ใช้งานได้ตอนนี้นานกว่า 2 เดือน 7/24

ดังนั้นถ้าคุณจะใช้ pi ในสภาพแวดล้อม 7/24 อย่าถูกฮีทซิงค์ - ซื้อฮีทซิงค์และหลีกเลี่ยงการใช้ / var / log และไดเรกทอรีไม่ว่างอื่น ๆ ผ่านการ์ด SD


การทำให้แน่ใจว่า var / log บนอุปกรณ์ที่เหมาะสมฟังดูเหมือนคำแนะนำที่ดี ในเดือนแรกที่มีปัญหาคุณได้เก็บกล่องข้อความเสียงไว้ในการ์ด USD ด้วยหรือไม่ ฉันแค่สงสัยว่าการ์ด uSD ที่มีความทนทานสูงเช่นเดียวกับที่ออกแบบมาสำหรับการใช้งาน Dash Cam อาจจะดีกว่าสำหรับการปรับใช้ RasPBX ของฉันหากฉันตัดสินใจเปิดใช้งานกล่องข้อความเสียง
Mark Booth

11

ฉันได้เปรียบเทียบโซลูชันทั้งหมดที่ใช้ประโยชน์ TMPFS และคำตอบที่ดีที่สุดคือการสังเคราะห์สคริปต์เตรียม - dirs (ดูhttp://grenzdebiel.dyndns.org/wordpress/?p=98 ) กับเหมาะสม / etc / ค่าเริ่มต้น / tmpfs ( (ดูhttp://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/ )

ขั้นตอนที่จำเป็นในการแสดงบนราสเบียนคือ:

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เพื่อให้ daemons ทั้งหมดเริ่มต้น

ดูที่สุดสิ่งที่มีอยู่ในกรณีของฉัน

4. ทำให้สคริปต์ทำงานchmod 755 /etc/initd/prepare-dirsได้

5. ตรวจสอบให้แน่ใจว่าสคริปต์จะเริ่มต้นก่อนการบูตก่อนที่ daemons ของคุณจะเริ่มต้น: 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

แค่นั้นแหละ.


Puppy Linux ใช้ TMPFS สำหรับทุกสิ่งเช่นกัน
DocSalvager

7

ปิดการใช้งาน Swapfile:

sudo dphys-swapfile swapoff

ไม่จำเป็นต้องถอนการติดตั้งอย่างไรก็ตามหากคุณไม่ได้ใช้งานและต้องการพื้นที่คุณสามารถลบออกได้อย่างปลอดภัย คำสั่งสำรองที่จะลบ:

ถอนการติดตั้ง sudo dphys-swapfile

การใช้งาน: / sbin / dphys-swapfile {ตั้งค่า | swapon | swapoff | ถอนการติดตั้ง}


5

ความทนทานของเซลล์แฟลช:

  • สำหรับแฟลชเซลล์หลายระดับ (MLC) มากถึง 10,000 รอบการเขียนต่อเซกเตอร์กายภาพ
  • สำหรับแฟลชเซลล์ระดับเดียว (SLC) สูงถึง 100,000 รอบการเขียนต่อเซกเตอร์กายภาพ
  • SSD ที่ใหม่กว่าให้ 1 ล้านรอบการเขียนต่อเซกเตอร์จริง

มันเป็นคณิตศาสตร์อย่างหมดจดในการ์ดขนาดใหญ่และการสึกหรอตามปกติ หากคุณต้องเขียนถึงแฟลชการ์ดชนิด MLC 8GB ทั้งกลางวันและกลางคืนซ้ำแล้วซ้ำอีกมันจะใช้เวลาประมาณ 30 วันในการฆ่ามัน

ตอนที่ 99 ที่ Techsnap พูดถึงการเสื่อมสภาพ SSD และ Allen อธิบายว่ามันเป็นไปไม่ได้ที่จะเสื่อมสภาพ SSD ในการใช้งานในชีวิตประจำวันและเราไม่จำเป็นต้องกังวลเกี่ยวกับการปิดใช้งาน swap, crons และทุกสิ่ง มันใช้งานได้ทันที! การปรับระดับการสึกหรออัจฉริยะจะดูแลทุกอย่าง

การสวมใส่ตามปกติที่เสนอโดย KINGSTONควรให้ชีวิต 27 ปีกับชีวิตในกล้องดิจิตอลระดับมืออาชีพ

สำหรับกล้อง DSLR ทั่วไปคุณอาจเติมมันทุกๆสองสามเดือน .. ขึ้นอยู่กับว่าคุณเดินทางไปมากแค่ไหน เมื่อพิจารณาถึง Pi หากคุณทดลองจัดสรรและแฟลชซ้ำบ่อยๆอาจต้องเสียค่าใช้จ่ายเพิ่มเติม โดยปกติเมื่อคุณมีความสุขกับ distro ... คุณจะไม่กระพริบเป็นเวลาหลายเดือนหรือหลายปี ดังนั้นเพื่อยืดเวลาการสวมใส่ SD จึงเป็นการดีที่จะทำตามคำแนะนำในการลด IO บน SD

ราคาแฟลชลดลงและเทคโนโลยีดีขึ้นมาก

การ์ด SD ส่วนใหญ่จะมีอายุการใช้งานยาวนานกว่าสองหรือสามรุ่นของอุปกรณ์และในเวลานั้นจะได้รับการพิจารณาว่ามีขนาดเล็กและช้าเกินไปที่จะใช้กับการอัพเกรดที่ดีกว่าและราคาถูกกว่า!


Raspberry Pi ตั้งค่าด้วยเว็บแคมเพื่อความปลอดภัยอาจเขียนข้อมูล 24/7 ฉันเดาว่ากรณีนี้ SSD น่าจะดีกว่า
ผิดปกติมาก

1
ใช่ แต่มันไม่ได้เขียนภาคทั้งหมดตามลำดับเวลาทั้งหมด มีการจัดการสำหรับการสึกหรอน้อยที่สุดและข้อมูลใหม่จะเข้าสู่เซกเตอร์ / พื้นที่การเข้าถึงน้อยที่สุด วิดีโอจะไม่เขียนทับไฟล์ระบบไฟล์หรือไฟล์เพจจิ้ง คุณจะได้รับแฟลชไดรฟ์ 16GB กี่ชั่วโมง? โดยปกติกล้องวงจรปิดจะสามารถเข้าถึงได้ใน 15-30 วันต่อมา! ใช้ไดรฟ์ 1 TB แทนหรือ NAS เพื่อจัดเก็บเพื่อวัตถุประสงค์ในอดีต แม้ในระยะสั้นสำหรับการจัดเก็บและถ่ายโอนคุณจะได้รับการ์ด SD นานหลายปี! ดีกว่า แต่ใช้ 32gb SD แต่เพิ่มโฟลเดอร์เป็น 16GB- คุณจะเพิ่มเวลาเป็นสองเท่าในการใช้เทคนิคนั้น!
Piotr Kula

4
@ppumkin คุณช่วยเล่าให้เราฟังว่าคุณใช้การ์ด SD ของคุณอย่างไรใน RPi ของคุณ? พวกเราหลายคน (Google "sd ราสเบอร์รี่ที่เสียหาย SD") ได้พบกับความล้มเหลวร้ายแรง (ฉันมากกว่าหนึ่งรวมถึง Kingston ตอนนี้ที่คุณพูดถึง) ด้วยการตั้งค่าเริ่มต้น Raspbian ของพวกเขาแม้จะมีจำนวนผู้ขายที่น่าประทับใจ ... SD แต่ตัวเลขในเอกสารของคุณยังคงไม่ได้รับการยืนยันโดยไม่มีการอ้างอิงถึงปัญหา RPi SD (ฉันควรบอกว่าเป็นที่รู้จักกันดีหรือไม่) การฝึกฝนภาคสนามที่แท้จริงของคุณหรือดีกว่า: กรณีศึกษาทดลอง debunking SD
Sz.

1
ดูทุกสิ่งที่ฉันพูดถึงมีการเชื่อมโยงไปยังการอ้างอิง ตกลงคุณต้องการทราบวิธีใช้งานหรือไม่ ฉันไม่! เพราะพี่เป็นเรื่องใหญ่มากในตูด! การ์ด SD ทำงานล้มเหลวและไม่ใช่ความผิดการ์ด SD ทั้งฮาร์ดแวร์หรือซอฟต์แวร์ Pi กำลังปิดกั้นสิ่งเหล่านี้ ฉันคิดว่ามันเป็นแรงดันไฟฟ้าที่ไม่เสถียรที่ได้จากแหล่งจ่ายไฟ USB ราคาถูก B + ใหม่มีหน่วยงานกำกับดูแลอยู่ ขอบคุณพระเจ้า! WiFi คงที่นี้เสียงตอบรับและฉันขอให้พระเจ้าสร้างการ์ด SD ฉันยังคงต้องการสั่งซื้อบางส่วน แต่ฉันกำลังเล่นกับ Netduino ในขณะนี้ยังไม่มี SD ขัดข้อง
Piotr Kula

1
@ppumkin ฉันใช้ SanDisk ไม่ใช่อีเบย์ มีความแตกต่างอย่างมากระหว่าง reflashing การ์ด SD (สำหรับนำมาใช้ใหม่ในกล้อง, พูด) และใช้เป็นบ้านของระบบปฏิบัติการ คุณควรเจาะจงมากขึ้นว่าคุณใช้ของคุณอย่างไรและพวกเขาใช้เวลานานแค่ไหน ไม่จำเป็นสำหรับฉันที่จะแสดงความคิดเห็น Lunakids ซ้ำ แต่ฉันเห็นด้วยอย่างเต็มที่กับเขาหรือเธอ .
RolfBly

4

ดังที่ได้กล่าวมาแล้วปัญหาหลักคือไฟล์และไดเรกทอรีซึ่งไม่คุ้มค่าที่จะถูกบันทึกระหว่างการรีบูตเครื่อง แต่เขียนบ่อยๆเช่นไฟล์แคชไฟล์ดาวน์โหลดโฟลเดอร์เป็นต้น

Raspbian และ Debian และ Ubuntu มีแพ็คเกจที่เรียกว่าunburden-home-dirซึ่งมีจุดประสงค์หลักคือการเชื่อมโยงไฟล์ดังกล่าวไปยังสถานที่ที่มีปัญหาน้อยกว่าเช่นการtmpfsติดตั้งหรือฮาร์ดดิสก์ภายนอกซึ่งไม่น่าจะสวมใส่ออกไป

โดยทั่วไปแล้วจะทำงานเมื่อเข้าสู่ระบบภายใต้ X และกำหนดเป้าหมายไปยังไฟล์แคชของแอปพลิเคชัน GUI แต่ยังสามารถเรียกได้จากสคริปต์หรือเช่นนั้นและกำหนดค่าสำหรับไฟล์โดยพลการในไดเรกทอรีหลักของผู้ใช้


3

นี่คือคำแนะนำของฉันสำหรับ Debian 8.0 (Jessie)

พวกเขาจะอยู่บนพื้นฐานและiotop -bktoqqq iostat -dzp 5คุณควรรันคำสั่งเหล่านี้ก่อนเพื่อรับทราบปัญหาและวิธีแก้ไข

1. ปิดการแลกเปลี่ยน

sudo systemctl disable dphys-swapfile
sudo rm /var/swap

2. ใช้ตัวเลือกการเมานท์และ RAM

เมานต์พาร์ติชั่นทั้งหมดบนการ์ด SD ด้วยnoatime,commit=1800ตัวเลือกและติดตั้งไดเรกทอรีต่อไปนี้เป็น 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

กระทำจะชะลอการเขียนและรวบรวมพวกเขาก่อน

3. บันทึกไฟล์บันทึกที่บ่อยที่สุดไปที่ /var/tmp/log/

ดูคำอธิบายของฉันฉันจะลดการเขียนลงในล็อกไฟล์ได้อย่างไร

4. หยุด Chromium จากการตอกการ์ด SD

เมื่อปรากฎว่า Chromium เขียนอย่างหนักและไม่สามารถหยุดได้ (ดู176727 , 52663 ) สิ่งนี้มีผลต่อแคชและไดเรกทอรีข้อมูลผู้ใช้ โครเมี่ยม / เทคนิคและเคล็ดลับอธิบายวิธีการนี้สามารถเคลื่อนย้ายไปที่ RAM เนื่องจาก Raspberry มี RAM ไม่มากแท็บ Suspender ที่แนะนำจึงมีประโยชน์สำหรับการบันทึก RAM

ก) แคช

จำกัด ขนาดแคชและย้ายไปยังแรมโดยการแก้ไข/etc/chromium-browser/customizations/00-rpi-varsไป

CHROMIUM_FLAGS="--disable-quic --enable-fast-unload --enable-tcp-fast-open --disk-cache-size=10000000 --media-cache-size=5000000"

ตอนนี้แคชมีขนาดเล็กพอที่จะย้ายไปยังดิสก์ RAM โดยเปลี่ยนXDG_CACHE_HOMEรายการใน/etc/security/pam_env.confเป็น

XDG_CACHE_HOME  DEFAULT=/tmp/@{PAM_USER}/cache

ตอนนี้ผู้ใช้สองคนของฉันมีแคชของเบราว์เซอร์ขนาดเล็กใน RAM หากนั่นไม่เพียงพอสำหรับคุณเปลี่ยนแคชหรือ / tmp / size ตามความจำเป็น

b) ข้อมูลผู้ใช้

นอกจากนี้ข้อมูลผู้ใช้ dir ( .config/chromium/) ประสบกับการเขียนจำนวนมาก โปรไฟล์ซิงค์-ภูตถูกแนะนำโดยโครเมี่ยม / เทคนิคและเคล็ดลับ ได้รับการพัฒนาเพื่อจัดการโปรไฟล์เบราว์เซอร์ของคุณใน tmpfs และซิงค์เป็นระยะ ๆ กลับไปที่ดิสก์ทางกายภาพของคุณ น่าเสียดายที่แพ็คเกจนี้ยังไม่ได้เป็นส่วนหนึ่งของการกระจาย Raspbian 8.0 (Jessie) ดังนั้นฉันยังไม่ได้ทดสอบสิ่งนี้

5. พื้นที่ว่างบนการ์ด SD

เพิ่มพื้นที่ว่างด้วยการถอนการติดตั้งแพ็คเกจและไฟล์ที่คุณไม่ต้องการ สิ่งนี้ควรกระจายการสึกหรอให้ทั่วพาร์ติชันของคุณมากขึ้น

ทำ!

ตอนนี้ทำงานiotop -bktoqqqและiostat -dzp 5อีกครั้งและเห็นการลดลงอย่างมีนัยสำคัญในการเข้าถึงการเขียนเมื่อระบบไม่ได้ใช้งาน ไม่มีสิ่งใดถูกเขียนลงดิสก์ของฉันเป็นเวลาหลายนาที และไม่ต้องกังวลเกี่ยวกับACT ไฟ LED สีเขียวกระพริบ เห็นได้ชัดว่ามันไม่ใช่ตัวบ่งชี้การเข้าถึงการเขียนที่ดี


2

สามารถลดรอบการเขียนเพียงเล็กน้อยได้โดยการสตรีมเอาต์พุต syslog ไปยังเซิร์ฟเวอร์อื่น แน่นอนว่าการมีเซิร์ฟเวอร์ที่มีการsyslogdทำงานเป็นเงื่อนไขที่จำเป็น อย่างไรก็ตามด้วย Pi เป็นของเล่นสำหรับผู้ที่ชื่นชอบลินุกซ์นี่อาจเป็นกรณี :-)

เพื่อเปิดใช้งานการสตรีมนี้เพียงแค่ใส่คำสั่งเช่น

*.*    @myserver.mydomain

ที่สวยมากด้านบนของของไฟล์ที่/etc/rsyslog.confแสดงความคิดเห็นออกทั้งหมดสายอื่น ๆ service rsyslog restartและเริ่มต้นการเข้าสู่ระบบโดยการออก หลังจากนี้ควรมีข้อความเข้ามาในเซิร์ฟเวอร์ที่เลือก

ผลข้างเคียงที่ชัดเจนอย่างหนึ่งของข้อดีนี้คือคุณสามารถตรวจสอบ Pi ของคุณร่วมกับเครื่องจักรอื่น ๆ บนเซิร์ฟเวอร์เดียวกันได้อย่างง่ายดาย ข้อเสียประการหนึ่งคือในระหว่างการเริ่มต้นระบบและการปิดระบบคุณอาจสูญเสียข้อความบางส่วนเมื่อการเชื่อมต่อเครือข่ายยังไม่ได้รับการจัดตั้งขึ้นหรือถูกปิดไปแล้ว


โปรดทราบว่าระบบ Linux ที่ทันสมัย ​​(รวมถึง CentOS 7 และ Debian 8 และระบบที่ใช้ระบบเช่น Raspbian 8) จะทำการบันทึกข้อมูลทั้งหมดjournaldที่เก็บไว้ใน systemd journal พวกเขายังกำหนดค่าjournaldให้ส่งต่อบันทึกไปยังซ็อกเก็ต syslog ที่rsyslogdกำลังฟังอยู่ /var/logที่สถานที่สำเนาเพิ่มเติมของข้อความในล็อกไฟล์ที่อยู่ภายใต้ หากคุณคุ้นเคยกับjournalctlการเรียกดูบันทึกของคุณ (และมันทำงานได้ดีกว่า/var/logเมื่อคุณคุ้นเคย) คุณสามารถปิดการใช้งานrsyslogและบันทึกการเขียนบางส่วนได้อย่างสมบูรณ์
Curt J. Sampson

1

หมายเหตุ: ขีด จำกัด 100,000 รอบเป็นสมมติฐานที่ใช้กับอุปกรณ์คอมพิวเตอร์ทุกเครื่องแม้แต่ปุ่มในแป้นพิมพ์ฉันเชื่อว่าการใช้ Pi ในสภาพการระบายความร้อนที่เหมาะสมและรอบการปิด / เปิดที่เหมาะสมจะให้ผลลัพธ์ที่ดีกว่าแทนที่จะไปเปรียบเทียบ

นอกจากนี้อาจเพิ่มความคิดเห็นข้างต้นของฉัน

เพิ่มผู้ใช้ใหม่นอกเหนือจากผู้ใช้ Pi [ค่าเริ่มต้น] ชี้โฮมไดเร็กตอรี่ของผู้ใช้ใหม่ในไดรฟ์ภายนอก [thumb / hard drive] มอบสิทธิ์ผู้ใช้ขั้นสูงสำหรับผู้ใช้ใหม่และเริ่มใช้เป็นบัญชีหลักของคุณ

ฉันหวังว่านี่จะช่วยได้..


ฉันพยายามพิมพ์ให้น้อยลงเพื่อประหยัดบนคีย์บอร์ด;)
Piotr Kula

เพิ่มผู้ใช้ใหม่จะได้ป้องกันไม่ให้ยุ่งและ/var/log /var/tmpนอกจากนี้การมีหลักฐานจากประสบการณ์ ว่าการระบายความร้อนที่เหมาะสมนั้นสร้างความแตกต่างได้ดีกว่าการพูดว่า "ฉันเชื่อ"
RolfBly

0

ใช้ busybox 'syslog daemon (ในแพ็คเกจbusybox-syslogdบน Raspbian / Debian / Ubuntu) แทน syslog daemon เริ่มต้น (ปกติจะเป็น rsyslog) โดยค่าเริ่มต้นบน Raspbian / Debian / Ubuntu syslogd ของ busybox จะบันทึกเฉพาะในบัฟเฟอร์วงแหวนในหน่วยความจำและไม่ลงบนดิสก์ ค่าเริ่มต้นวงแหวนบัฟเฟอร์มีขนาด 128kB โดยค่าเริ่มต้นคือรายการบันทึกเก่าจะหมุนเวียนค่อนข้างเร็วและหายไป แต่คุณสามารถกำหนดค่าให้ใช้ RAM เพิ่มเติมได้

อย่างไรก็ตามนี่เป็นทางออกที่ดีกว่าการไม่มี syslog daemon เลยนั่นคือคุณยังสามารถเข้าสู่ระบบและอ่านรายการบันทึกของประมาณ ไม่กี่ชั่วโมงที่ผ่านมาหรือวัน (ขึ้นอยู่กับขนาดที่กำหนดของ buffer แหวน) logreadที่มีคำสั่ง นอกจากนี้คุณยังสามารถใช้logread -fเพื่อให้tail -fพฤติกรรมเช่นเก็บเฉพาะรายการบันทึกที่น่าสนใจโดยใช้สคริปต์ตัวกรองหรือเพื่อส่งต่อรายการบันทึกผ่านเครือข่ายอื่น ๆ เช่นการใช้stunnelหรือเช่น


-1

สองสิ่งที่ฉันทำ:

chmod ของ dphys-swapfile (บางแห่งใน / อื่น ๆ - ไม่ใกล้ PI ในขณะนี้) ไปที่:

sudo chmod a-x dphys-swapfile

ฉันได้รับข้อผิดพลาดเล็กน้อยในการบูต (ไม่สามารถเริ่มบริการ dphys-swapfile) - สมมติว่ามีวิธีที่ดีกว่า ... rc-update ??

นอกจากนี้ฉันจับภาพจากโมดูลกล้องเพื่อวางบนเว็บเซิร์ฟเวอร์ของฉัน (Pi) ในที่สุด ฉันฟอร์แมต / dev / ram0 เป็น ext2 แล้วติดตั้งเป็น / media / ramdrive (โดยใช้ /etc/init.rc ฉันคิดว่า) มัน 4 megs ใหญ่พอสำหรับการถ่าย ไม่มีการเขียนไปยัง SD

เซิร์ฟเวอร์ (oululife.dnsdynamic.com) กำลังทดลอง แต่อยู่บนเว็บ ในการเน้นมันออกมาจริงๆฉันปล่อยให้มันสตรีมตอน MP4 ของ 'Heartbeat *' ด้วย มันทำงานบน lighttpd, Mysql, PHP, WordPress และแม้กระทั่งเมื่อฉันสตรีมบนเว็บจากระยะไกลมันแทบจะไม่ทำให้เหงื่อแตกโหลดเฉลี่ยประมาณ 0,2 ไม่มีการโอเวอร์คล็อกเลย Model-B rev. 2 เพิ่มขึ้น 24/7 ดังนั้นถ้าฉันสามารถนำ logfiles ของฉันไปสู่อีก 15 / dev / ramX ฉันคิดว่าการ์ด Micro-SD 16G ของฉันจะมีอายุนานขึ้น ....

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.