Every day I get a daily report from my NAS. It includes bunch of data about ZFS datasets and general machine health. However, one thing was missing - I didn’t really capture hard disk SMART errors.
As disk will report a bunch of values in SMART, I first had to decide which ones to use. A great help here came from BackBlaze as they publish hard drive test data and stats. It is wealth of information and I recommend reading it all. If you decide on shortcut, one of links contains SMART stats they’ve found indicate data failure quite reliably.
First one is Reallocated Sectors Count (5). It is essentially counter of bad sectors found during drive’s operation. Ideally you want this number to be 0. As soon as it starts increasing, one should think about replacing the drive. All my drives so far have this value at 0.
Second attribute I track is Reported Uncorrectable Errors (187). This one shows number of errors that could not be corrected internally using ECC and that resulted in OS-visible read failure. Interestingly only my SSD cache supports this attribute.
One I decided not to track is Command Timeout (188) as, curiously, none of my drives actually report it. Looking into BackBlaze’s data it seems that this one is also the most unreliable of the bunch so no great loss here.
I do track Current Pending Sector Count (197) attribute. While this one doesn’t necessarily mean anything major is wrong and it is transient in nature (i.e. its value can change between some number and 0), I decided to track its value as it indicates potential issues with platter - even if data can be read at later time. This attribute is present (and 0) on my spinning disks while SSD doesn’t support it.
Fifth attribute they mentioned, Uncorrectable Sector Count (198), I do not track. While value could indicate potential issues with platters and disk surface, it is updated only via offline test. As I don’t do those, this value will never actually change. Interestingly, my SSD doesn’t even support this attribute.
I additionally track Power-On Hours (9). I do not have actual threshold nor I plan to replace the drive when it reaches certain value but it will definitely come in handy in correlation with other (potential) errors as all my disks support this attribute. Interestingly, BackBlaze found that failure rates significantly rise after three years. I do expect my drives to last significantly longer as my NAS isn’t stressed nearly as much as BackBlaze’s data center.
Lastly, I track Temperature (194). Again, I track it only to see if everything is ok with cooling. All my drives support it and, as expected, SSD’s temperature is about 10 degrees higher than for spinning drives.
Here is a small and incomplete bash example of commands I use to capture these stats on NAS4Free:
Note that I capture the whole smartctl output into a variable instead of multiple calls. This is just a bit of a time saver and there is no issue (other than speed) with simply calling smartctl multiple times. If you do decide to call it only once, do not forget quotes around “echoed” variable as they instruct bash to preserve whitespace.
PS: For curious, drives I use are 2x WD Red 4 TB (3.5"), 2x Seagate 2 TB (2.5"), and Mushkin 120GB (mSATA) SSD cache.
There is one thing I hate on my NAS4Free server - dark blue color when listing directories using ls command. It is simply an awful choice.
From Linux I knew about LS_COLORS variable and its configuration. However, NAS4Free is not Linux. And while similarities are plentiful, some things are simply not working the same.
Fortunately, one can always consult man page and see FreeBSD uses LSCOLORS variable with wildly different configuration. Curious can look at full configuration but suffice to say I was happy with just changing directory entry from blue (e) to bright blue (E).
To do this in my .bashrc I added:
exportLSCOLORS="^^E^^xfxcxdxbxegedabagacad"
PS: How to preserve .bashrc over reboots is exercise left to reader because it depends on your system. Suffice to say is that either ZFS mount point or simply appending in postinit script work equally well.
Windows 10 releases are numerous. If you are using Microsoft Media Creation Tool to download ISOs, you know how hard is to track them. Fortunately, it is possible to get information about version from ISO file itself.
First order of business is mounting downloaded ISO file. It is as easy as double clicking on it.
Then find Setup.exe; right-click; Properties; and go to Details tab. There under product version you will find the build number - in my case it was 15063.
If you want to know more (e.g. which editions are present in .iso file) we need to open Administrator command prompt (or PowerShell) and run [dism](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/what-is-dism). I will assume, ISO is mounted as disk W: and that your download includes both 32-bit and 64-bit Windows. Adjust path to install.wim as needed.
dism /Get-WimInfo /WimFile:W:\x64\sources\install.esd
Deployment Image Servicing and Management tool
Version: 10.0.15063.0
Details for image : W:\x64\sources\install.esd
Index : 1
Name : Windows 10 Pro
Description : Windows 10 Pro
Size : 15,305,539,033 bytes
Index : 2
Name : Windows 10 Home
Description : Windows 10 Home
Size : 15,127,824,725 bytes
Index : 3
Name : Windows 10 Home Single Language
Description : Windows 10 Home Single Language
Size : 15,129,601,869 bytes
Index : 4
Name : Windows 10 Education
Description : Windows 10 Education
Size : 15,125,050,322 bytes
The operation completed successfully.
As you can see, this disk consists of four editions. Which one gets installed is determined based on your product key.
And you can go even further with investigation, if you give it index parameter:
dism /Get-WimInfo /WimFile:^^W:\x64\sources\install.esd^^ /index:^^1^^
Deployment Image Servicing and Management tool
Version: 10.0.15063.0
Details for image : W:\x64\sources\install.esd
Index : 1
Name : Windows 10 Pro
Description : Windows 10 Pro
Size : 15,305,539,033 bytes
WIM Bootable : No
Architecture : x64
Hal :
Version : 10.0.15063
ServicePack Build : 0
ServicePack Level : 0
Edition : Professional
Installation : Client
ProductType : WinNT
ProductSuite : Terminal Server
System Root : WINDOWS
Directories : 19668
Files : 101896
Created : 2017-03-18 - 19:40:43
Modified : 2017-08-26 - 21:33:30
Languages :
en-US (Default)
The operation completed successfully.
I love dashcam footage from vacation. Not only I get photos of various places I’ve visited but also route I used to get to them. And there are some beautiful drives out there.
My Garmin DriveAssist 50 outputs full HD baseline MP4 videos with constant bitrate that is slightly higher than 8 Mbps. As with all dashcam videos, the quality is not something to get excited about but it isn’t too bad either. My standard process is simply to re-cut these videos to throw out idle time (e.g. while parked). Since I don’t really use them for further editing, compression settings are a bit on aggressive side.
I start by customizing Internet HD 1080p profile as it has most of configuration as I want it. What I do change is Profile level by simply increasing it to High. I consume there videos on my PC and there is simply no reason I could think of to go lower. And yes, High profile works on mobile phone too.
Dashcam videos lend themselves quite well to MP4 compression so I went with average variable rate of 6 Mbps. For moments when a bit more action is happening, a maximum of 8 Mbps should suffice. Note that I use two-pass encoding here in order to squeeze a bit more quality despite lower bitrate. This does double the encoding time but I find it reasonable compromise.
I also uncheck progressive download support as I don’t intend to stream these and this does give a few more bits to encoder.
Lastly, as my camera doesn’t record sound, I turn the audio off.
Moment I’ve been waiting for since Visual Studio 2017 was released is finally (almost) here.
While Community edition is more capable, restrictions on its use within anything but the smallest (or opensource) companies are quite limiting. Whereas developers can (hopefully) get at least Professional or even Enterprise edition, the same cannot be said for people who might need access to code just occasionally or who enjoy making small internal tools. For them Express used to be god-given due to its quite permissive licence.
Preview version does have license restrictions on production use, but my expectation is that final version will have the same licence as 2015.