If you care about how fault tolerant your storage is, you might -find these articles and papers interesting. They have formed how I -think of when designing a storage system.
- --
-
-
- USENIX :login; Redundancy -Does Not Imply Fault Tolerance. Analysis of Distributed Storage -Reactions to Single Errors and Corruptions by Aishwarya Ganesan, -Ramnatthan Alagappan, Andrea C. Arpaci-Dusseau, and Remzi -H. Arpaci-Dusseau - -
- ZDNet -Why -RAID 5 stops working in 2009 by Robin Harris - -
- ZDNet -Why -RAID 6 stops working in 2019 by Robin Harris - -
- USENIX FAST'07 -Failure -Trends in a Large Disk Drive Population by Eduardo Pinheiro, -Wolf-Dietrich Weber and Luiz AndreÌ Barroso - -
- USENIX ;login: Data -Integrity. Finding Truth in a World of Guesses and Lies by Doug -Hughes - -
- USENIX FAST'08 -An -cAnalysis of Data Corruption in the Storage Stack by -L. N. Bairavasundaram, G. R. Goodson, B. Schroeder, A. C. -Arpaci-Dusseau, and R. H. Arpaci-Dusseau - -
- USENIX FAST'07 Disk -failures in the real world: what does an MTTF of 1,000,000 hours mean -to you? by B. Schroeder and G. A. Gibson. - -
- USENIX ;login: Are -Disks the Dominant Contributor for Storage Failures? A Comprehensive -Study of Storage Subsystem Failure Characteristics by Weihang -Jiang, Chongfeng Hu, Yuanyuan Zhou, and Arkady Kanevsky - -
- SIGMETRICS 2007 -An -analysis of latent sector errors in disk drives by -L. N. Bairavasundaram, G. R. Goodson, S. Pasupathy, and J. Schindler - -
Several of these research papers are based on data collected from -hundred thousands or millions of disk, and their findings are eye -opening. The short story is simply do not implicitly trust RAID or -redundant storage systems. Details matter. And unfortunately there -are few options on Linux addressing all the identified issues. Both -ZFS and Btrfs are doing a fairly good job, but have legal and -practical issues on their own. I wonder how cluster file systems like -Ceph do in this regard. After, all the old saying, you know you have -a distributed system when the crash of a compyter you have never heard -of stops you from getting any work done. The same holds true if fault -tolerance do not work.
- -Just remember, in the end, it do not matter how redundant, or how -fault tolerant your storage is, if you do not continuously monitor its -status to detect and replace failed disks.
+ +A while back, I was asked by a friend how to stream the desktop to +my projector connected to Kodi. I sadly had to admit that I had no +idea, as it was a task I never had tried. Since then, I have been +looking for a way to do so, preferable without much extra software to +install on either side. Today I found a way that seem to kind of +work. Not great, but it is a start.
+ +I had a look at several approaches, for example +using uPnP +DLNA as described in 2011, but it required a uPnP server, fuse and +local storage enough to store the stream locally. This is not going +to work well for me, lacking enough free space, and it would +impossible for my friend to get working.
+ +Next, it occurred to me that perhaps I could use VLC to create a +video stream that Kodi could play. Preferably using +broadcast/multicast, to avoid having to change any setup on the Kodi +side when starting such stream. Unfortunately, the only recipe I +could find using multicast used the rtp protocol, and this protocol +seem to not be supported by Kodi.
+ +On the other hand, the rtsp protocol is working! Unfortunately I +have to specify the IP address of the streaming machine in both the +sending command and the file on the Kodi server. But it is showing my +desktop, and thus allow us to have a shared look on the big screen at +the programs I work on.
+ +I did not spend much time investigating codeces. I combined the +rtp and rtsp recipes from +the +VLC Streaming HowTo/Command Line Examples, and was able to get +this working on the desktop/streaming end.
+ ++ ++vlc screen:// --sout \ + '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{dst=projector.local,port=1234,sdp=rtsp://192.168.11.4:8080/test.sdp}' +
I ssh-ed into my Kodi box and created a file like this with the +same IP address:
+ ++ ++echo rtsp://192.168.11.4:8080/test.sdp \ + > /storage/videos/screenstream.m3u +
Note the 192.168.11.4 IP address is my desktops IP address. As far +as I can tell the IP must be hardcoded for this to work. In other +words, if someone elses machine is going to do the steaming, you have +to update screenstream.m3u on the Kodi machine and adjust the vlc +recipe. To get started, locate the file in Kodi and select the m3u +file while the VLC stream is running. The desktop then show up in my +big screen. :)
+ +When using the same technique to stream a video file with audio, +the audio quality is really bad. No idea if the problem is package +loss or bad parameters for the transcode. I do not know VLC nor Kodi +enough to tell.
+ +Update 2018-07-12: Johannes Schauer send me a few +succestions and reminded me about an important step. The "screen:" +input source is only available once the vlc-plugin-access-extra +package is installed on Debian. Without it, you will see this error +message: "VLC is unable to open the MRL 'screen://'. Check the log +for details." He further found that it is possible to drop some parts +of the VLC command line to reduce the amount of hardcoded information. +It is also useful to consider using cvlc to avoid having the VLC +window in the desktop view. In sum, this give us this command line on +the source end + +
+ ++cvlc screen:// --sout \ + '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{sdp=rtsp://:8080/}' +
and this on the Kodi end
+ +
+ ++echo rtsp://192.168.11.4:8080/ \ + > /storage/videos/screenstream.m3u +
Still bad image quality, though. But I did discover that streaming +a DVD using dvdsimple:///dev/dvd as the source had excellent video and +audio quality, so I guess the issue is in the input or transcoding +parts, not the rtsp part. I've tried to change the vb and ab +parameters to use more bandwidth, but it did not make a +difference.
+ +I further received a suggestion from Einar Haraldseid to try using +gstreamer instead of VLC, and this proved to work great! He also +provided me with the trick to get Kodi to use a multicast stream as +its source. By using this monstrous oneliner, I can stream my desktop +with good video quality in reasonable framerate to the 239.255.0.1 +multicast address on port 1234: + +
+ ++gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! \ + videoconvert ! queue2 ! \ + x264enc bitrate=8000 speed-preset=superfast tune=zerolatency qp-min=30 \ + key-int-max=15 bframes=2 ! video/x-h264,profile=high ! queue2 ! \ + mpegtsmux alignment=7 name=mux ! rndbuffersize max=1316 min=1316 ! \ + udpsink host=239.255.0.1 port=1234 ttl-mc=1 auto-multicast=1 sync=0 \ + pulsesrc device=$(pactl list | grep -A2 'Source #' | \ + grep 'Name: .*\.monitor$' | cut -d" " -f2|head -1) ! \ + audioconvert ! queue2 ! avenc_aac ! queue2 ! mux. +
and this on the Kodi end
+ +
+ ++echo udp://@239.255.0.1:1234 \ + > /storage/videos/screenstream.m3u +
Note the trick to pick a valid pulseaudio source. It might not +pick the one you need. This approach will of course lead to trouble +if more than one source uses the same multicast port and address. +Note the ttl-mc=1 setting, which limit the multicast packages to the +local network. If the value is increased, your screen will be +broadcasted further, one network "hop" for each increase (read up on +multicast to learn more. :)!
+ +Having cracked how to get Kodi to receive multicast streams, I +could use this VLC command to stream to the same multicast address. +The image quality is way better than the rtsp approach, but gstreamer +seem to be doing a better job.
+ ++ ++cvlc screen:// --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{mux=ts,dst=239.255.0.1,port=1234,sdp=sap}' +
As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
I was surprised today to learn that a friend in academia did not -know there are easily available web services available for writing -LaTeX documents as a team. I thought it was common knowledge, but to -make sure at least my readers are aware of it, I would like to mention -these useful services for writing LaTeX documents. Some of them even -provide a WYSIWYG editor to ease writing even further.
- -There are two commercial services available, -ShareLaTeX and -Overleaf. They are very easy to -use. Just start a new document, select which publisher to write for -(ie which LaTeX style to use), and start writing. Note, these two -have announced their intention to join forces, so soon it will only be -one joint service. I've used both for different documents, and they -work just fine. While -ShareLaTeX is free -software, while the latter is not. According to a -announcement from Overleaf, they plan to keep the ShareLaTeX code -base maintained as free software.
- -But these two are not the only alternatives. -Fidus Writer is another free -software solution with the -source available on github. I have not used it myself. Several -others can be found on the nice -alterntiveTo -web service. - -If you like Google Docs or Etherpad, but would like to write -documents in LaTeX, you should check out these services. You can even -host your own, if you want to. :)
- + +Five years ago, +I +measured what the most supported MIME type in Debian was, by +analysing the desktop files in all packages in the archive. Since +then, the DEP-11 AppStream system has been put into production, making +the task a lot easier. This made me want to repeat the measurement, +to see how much things changed. Here are the new numbers, for +unstable only this time: + +
Debian Unstable:
+ ++ count MIME type + ----- ----------------------- + 56 image/jpeg + 55 image/png + 49 image/tiff + 48 image/gif + 39 image/bmp + 38 text/plain + 37 audio/mpeg + 34 application/ogg + 33 audio/x-flac + 32 audio/x-mp3 + 30 audio/x-wav + 30 audio/x-vorbis+ogg + 29 image/x-portable-pixmap + 27 inode/directory + 27 image/x-portable-bitmap + 27 audio/x-mpeg + 26 application/x-ogg + 25 audio/x-mpegurl + 25 audio/ogg + 24 text/html ++ +
The list was created like this using a sid chroot: "cat +/var/lib/apt/lists/*sid*_dep11_Components-amd64.yml.gz| zcat | awk '/^ +- \S+\/\S+$/ {print $2 }' | sort | uniq -c | sort -nr | head -20"
+ +It is interesting to see how image formats have passed text/plain +as the most announced supported MIME type. These days, thanks to the +AppStream system, if you run into a file format you do not know, and +want to figure out which packages support the format, you can find the +MIME type of the file using "file --mime <filename>", and then +look up all packages announcing support for this format in their +AppStream metadata (XML or .desktop file) using "appstreamcli +what-provides mimetype <mime-type>. For example if you, like +me, want to know which packages support inode/directory, you can get a +list like this:
+ ++ ++% appstreamcli what-provides mimetype inode/directory | grep Package: | sort +Package: anjuta +Package: audacious +Package: baobab +Package: cervisia +Package: chirp +Package: dolphin +Package: doublecmd-common +Package: easytag +Package: enlightenment +Package: ephoto +Package: filelight +Package: gwenview +Package: k4dirstat +Package: kaffeine +Package: kdesvn +Package: kid3 +Package: kid3-qt +Package: nautilus +Package: nemo +Package: pcmanfm +Package: pcmanfm-qt +Package: qweborf +Package: ranger +Package: sirikali +Package: spacefm +Package: spacefm +Package: vifm +% +
Using the same method, I can quickly discover that the Sketchup file +format is not yet supported by any package in Debian:
+ ++ ++% appstreamcli what-provides mimetype application/vnd.sketchup.skp +Could not find component providing 'mimetype::application/vnd.sketchup.skp'. +% +
Yesterday I used it to figure out which packages support the STL 3D +format:
+ ++ ++% appstreamcli what-provides mimetype application/sla|grep Package +Package: cura +Package: meshlab +Package: printrun +% +
PS: A new version of Cura was uploaded to Debian yesterday.
+ +As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
Recently, I needed to automatically check the copyright status of a -set of The Internet Movie database -(IMDB) entries, to figure out which one of the movies they refer -to can be freely distributed on the Internet. This proved to be -harder than it sounds. IMDB for sure list movies without any -copyright protection, where the copyright protection has expired or -where the movie is lisenced using a permissive license like one from -Creative Commons. These are mixed with copyright protected movies, -and there seem to be no way to separate these classes of movies using -the information in IMDB.
- -First I tried to look up entries manually in IMDB, -Wikipedia and -The Internet Archive, to get a -feel how to do this. It is hard to know for sure using these sources, -but it should be possible to be reasonable confident a movie is "out -of copyright" with a few hours work per movie. As I needed to check -almost 20,000 entries, this approach was not sustainable. I simply -can not work around the clock for about 6 years to check this data -set.
- -I asked the people behind The Internet Archive if they could -introduce a new metadata field in their metadata XML for IMDB ID, but -was told that they leave it completely to the uploaders to update the -metadata. Some of the metadata entries had IMDB links in the -description, but I found no way to download all metadata files in bulk -to locate those ones and put that approach aside.
- -In the process I noticed several Wikipedia articles about movies -had links to both IMDB and The Internet Archive, and it occured to me -that I could use the Wikipedia RDF data set to locate entries with -both, to at least get a lower bound on the number of movies on The -Internet Archive with a IMDB ID. This is useful based on the -assumption that movies distributed by The Internet Archive can be -legally distributed on the Internet. With some help from the RDF -community (thank you DanC), I was able to come up with this query to -pass to the SPARQL interface on -Wikidata: - -
-SELECT ?work ?imdb ?ia ?when ?label -WHERE -{ - ?work wdt:P31/wdt:P279* wd:Q11424. - ?work wdt:P345 ?imdb. - ?work wdt:P724 ?ia. - OPTIONAL { - ?work wdt:P577 ?when. - ?work rdfs:label ?label. - FILTER(LANG(?label) = "en"). - } + +8th July 2018+@@ -440,21 +375,27 @@ Archive: Q1140317,Quite regularly, I let my Debian Sid/Unstable chroot stay untouch +for a while, and when I need to update it there is not enough free +space on the disk for apt to do a normal 'apt upgrade'. I normally +would resolve the issue by doing 'apt install <somepackages>' to +upgrade only some of the packages in one batch, until the amount of +packages to download fall below the amount of free space available. +Today, I had about 500 packages to upgrade, and after a while I got +tired of trying to install chunks of packages manually. I concluded +that I did not have the spare hours required to complete the task, and +decided to see if I could automate it. I came up with this small +script which I call 'apt-in-chunks':
+ ++ ++#!/bin/sh +# +# Upgrade packages when the disk is too full to upgrade every +# upgradable package in one lump. Fetching packages to upgrade using +# apt, and then installing using dpkg, to avoid changing the package +# flag for manual/automatic. + +set -e + +ignore() { + if [ "$1" ]; then + grep -v "$1" + else + cat + fi } -- -If I understand the query right, for every film entry anywhere in -Wikpedia, it will return the IMDB ID and The Internet Archive ID, and -when the movie was released and its English title, if either or both -of the latter two are available. At the moment the result set contain -2338 entries. Of course, it depend on volunteers including both -correct IMDB and The Internet Archive IDs in the wikipedia articles -for the movie. It should be noted that the result will include -duplicates if the movie have entries in several languages. There are -some bogus entries, either because The Internet Archive ID contain a -typo or because the movie is not available from The Internet Archive. -I did not verify the IMDB IDs, as I am unsure how to do that -automatically.
- -I wrote a small python script to extract the data set from Wikidata -and check if the XML metadata for the movie is available from The -Internet Archive, and after around 1.5 hour it produced a list of 2097 -free movies and their IMDB ID. In total, 171 entries in Wikidata lack -the refered Internet Archive entry. I assume the 70 "disappearing" -entries (ie 2338-2097-171) are duplicate entries.
- -This is not too bad, given that The Internet Archive report to -contain 5331 -feature films at the moment, but it also mean more than 3000 -movies are missing on Wikipedia or are missing the pair of references -on Wikipedia.
- -I was curious about the distribution by release year, and made a -little graph to show how the amount of free movies is spread over the -years:
- -
- -
I expect the relative distribution of the remaining 3000 movies to -be similar.
- -If you want to help, and want to ensure Wikipedia can be used to -cross reference The Internet Archive and The Internet Movie Database, -please make sure entries like this are listed under the "External -links" heading on the Wikipedia article for the movie:
- --* {{Internet Archive film|id=FightingLady}} -* {{IMDb title|id=0036823|title=The Fighting Lady}} --Please verify the links on the final page, to make sure you did not -introduce a typo.
- -Here is the complete list, if you want to correct the 171 -identified Wikipedia entries with broken links to The Internet -Archive: Q1140317, -Q458656, -Q458656, -Q470560, -Q743340, -Q822580, -Q480696, -Q128761, -Q1307059, -Q1335091, -Q1537166, -Q1438334, -Q1479751, -Q1497200, -Q1498122, -Q865973, -Q834269, -Q841781, -Q841781, -Q1548193, -Q499031, -Q1564769, -Q1585239, -Q1585569, -Q1624236, -Q4796595, -Q4853469, -Q4873046, -Q915016, -Q4660396, -Q4677708, -Q4738449, -Q4756096, -Q4766785, -Q880357, -Q882066, -Q882066, -Q204191, -Q204191, -Q1194170, -Q940014, -Q946863, -Q172837, -Q573077, -Q1219005, -Q1219599, -Q1643798, -Q1656352, -Q1659549, -Q1660007, -Q1698154, -Q1737980, -Q1877284, -Q1199354, -Q1199354, -Q1199451, -Q1211871, -Q1212179, -Q1238382, -Q4906454, -Q320219, -Q1148649, -Q645094, -Q5050350, -Q5166548, -Q2677926, -Q2698139, -Q2707305, -Q2740725, -Q2024780, -Q2117418, -Q2138984, -Q1127992, -Q1058087, -Q1070484, -Q1080080, -Q1090813, -Q1251918, -Q1254110, -Q1257070, -Q1257079, -Q1197410, -Q1198423, -Q706951, -Q723239, -Q2079261, -Q1171364, -Q617858, -Q5166611, -Q5166611, -Q324513, -Q374172, -Q7533269, -Q970386, -Q976849, -Q7458614, -Q5347416, -Q5460005, -Q5463392, -Q3038555, -Q5288458, -Q2346516, -Q5183645, -Q5185497, -Q5216127, -Q5223127, -Q5261159, -Q1300759, -Q5521241, -Q7733434, -Q7736264, -Q7737032, -Q7882671, -Q7719427, -Q7719444, -Q7722575, -Q2629763, -Q2640346, -Q2649671, -Q7703851, -Q7747041, -Q6544949, -Q6672759, -Q2445896, -Q12124891, -Q3127044, -Q2511262, -Q2517672, -Q2543165, -Q426628, -Q426628, -Q12126890, -Q13359969, -Q13359969, -Q2294295, -Q2294295, -Q2559509, -Q2559912, -Q7760469, -Q6703974, -Q4744, -Q7766962, -Q7768516, -Q7769205, -Q7769988, -Q2946945, -Q3212086, -Q3212086, -Q18218448, -Q18218448, -Q18218448, -Q6909175, -Q7405709, -Q7416149, -Q7239952, -Q7317332, -Q7783674, -Q7783704, -Q7857590, -Q3372526, -Q3372642, -Q3372816, -Q3372909, -Q7959649, -Q7977485, -Q7992684, -Q3817966, -Q3821852, -Q3420907, -Q3429733, -Q774474
+for p in $(apt list --upgradable | ignore "$@" |cut -d/ -f1 | grep -v '^Listing...'); do + echo "Upgrading $p" + apt clean + apt install --download-only -y $p + for f in /var/cache/apt/archives/*.deb; do + if [ -e "$f" ]; then + dpkg -i /var/cache/apt/archives/*.deb + break + fi + done +done +The script will extract the list of packages to upgrade, try to +download the packages needed to upgrade one package, install the +downloaded packages using dpkg. The idea is to upgrade packages +without changing the APT mark for the package (ie the one recording of +the package was manually requested or pulled in as a dependency). To +use it, simply run it as root from the command line. If it fail, try +'apt install -f' to clean up the mess and run the script again. This +might happen if the new packages conflict with one of the old +packages. dpkg is unable to remove, while apt can do this.
+ +It take one option, a package to ignore in the list of packages to +upgrade. The option to ignore a package is there to be able to skip +the packages that are simply too large to unpack. Today this was +'ghc', but I have run into other large packages causing similar +problems earlier (like TeX).
+ +Update 2018-07-08: Thanks to Paul Wise, I am aware of two +alternative ways to handle this. The "unattended-upgrades +--minimal-upgrade-steps" option will try to calculate upgrade sets for +each package to upgrade, and then upgrade them in order, smallest set +first. It might be a better option than my above mentioned script. +Also, "aptutude upgrade" can upgrade single packages, thus avoiding +the need for using "dpkg -i" in the script above.
+ +As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
- -14th October 2017-I find it fascinating how many of the people being locked inside -the proposed border wall between USA and Mexico support the idea. The -proposal to keep Mexicans out reminds me of -the -propaganda twist from the East Germany government calling the wall -the âAntifascist Bulwarkâ after erecting the Berlin Wall, claiming -that the wall was erected to keep enemies from creeping into East -Germany, while it was obvious to the people locked inside it that it -was erected to keep the people from escaping.
- -Do the people in USA supporting this wall really believe it is a -one way wall, only keeping people on the outside from getting in, -while not keeping people in the inside from getting out?
+ +30th June 2018+So far, at least hydro-electric power, coal power, wind power, +solar power, and wood power are well known. Until a few days ago, I +had never heard of stone power. Then I learn about a quarry in a +mountain in +Bremanger i +Norway, where +the +Bremanger Quarry company is extracting stone and dumping the stone +into a shaft leading to its shipping harbour. This downward movement +in this shaft is used to produce electricity. In short, it is using +falling rocks instead of falling water to produce electricity, and +according to its own statements it is producing more power than it is +using, and selling the surplus electricity to the Norwegian power +grid. I find the concept truly amazing. Is this the worlds only +stone power plant?
+ +As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.