Image for post
Image for post
OpenZFS Logo

The Zettabyte File System (ZFS) is a file system and volume manager in one tool. I’ll be using ZFS to create a NAS from:


Image for post
Image for post
Tensorflow 2.0

In the previous article in this series, we compiled OpenCV, a computer vision library. While OpenCV may be able to do inference, training must be done on a training framework. Tensorflow is a modern tool used for design, training, and inference of neural networks. This technology has revolutionized computer vision since Yann LeCun developed the convolutional neural network (CNN) in 1989. In this author’s opinion, the application of the CNN to computer vision is what finally ended the AI winter and kickstarted the AI revolution. The study of neural networks will be imperative in our introduction to computer vision.

Introduction

To…


In the previous articles, we’ve built the ZFS kernel module to access the new dRAID vdev, setup and mounted our ZFS storage pool, then shared it with the network through NFS. Now, we will optimize and maintain our ZFS storage pool, to both increase performance and to create safety from data loss.

Distributed RAID Theory

Image for post
Image for post
dRAID is the new hotness.

Declustered RAID (dRAID) allows us to distribute parity throughout all disks, but to be effective at doing this, disks are ideally the same size. dRAID has fixed stripe width and pads missing data as zeros. Therefore, it’s best and most efficient to use drives of the same capacity.


Image for post
Image for post
Git SCM Logo

Github unfortunately does not offer private repositories without a paid account. But you can still set one up on your home server. My Jetson TX2 makes for a great low power server, hosting my home NAS. In this article, we’ll set up our own secure, private Git server to host various code, scripts, and configuration files.

Setting up Git Server

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

Create git repository as the root user.

# mkdir /srv/git
# chown -R root:git /srv/git
# chmod -R 0774 /srv/git

Create…


Image for post
Image for post
OpenCV Logo

Introduction to OpenCV

OpenCV is for computer vision. There are a number of programming language interfaces: C++, Python, Java and Matlab. OpenCV also runs on various operating systems, such as Windows, Linux, Android and Mac OS, as well as a number of different architectures. The library has a long history of industry adoption and help from Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, and Toyota, as well as algorithms being implemented from CVPR papers and other academic publications. …


1. Setup Passwordless SSH Access

Try to minimizing your typing and save your fingers some pain. You’ll be connecting a lot to SSH, so setup passwordless access from your client. If you haven’t already, generate your public/private key:

$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa): Enter passphrase (empty for no passphrase): (empty) Enter same passphrase again: (empty) Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub. The key fingerprint is: SHA256:+GadNpFhcnbE1k2/eNQRBBfeRY1SnyvIjfrcmIVME0k simeon@burmese The key's randomart image is: +---[RSA 2048]----+ | E.++@B| | ..= =.X| | . =+.. +=| | …

Introduction

In this article, we’ll be setting up a VNC server and client on a Jetson Xavier NX that will allow us to connect to an XFCE4 desktop environment. While the tutorial is specific to the aforementioned platform, the instructions should also work for other Jetson products running Ubuntu 18.04.

For most of my development work, SSH terminals are enough to accomplish what I need. But when visualizations are required, or the data output is graphical in nature, then it’s extremely helpful to have a GUI.

TigerVNC

Image for post
Image for post
TigerVNC Logo

Developing on a headless server means that we need to be able to create a…


If you haven’t yet setup a basic ZFS storage pool yet, please do so first by following the article, A Gentle Introduction to ZFS, Part 2: Storage Pools and Hard Disk Drives on the Jetson TX2.

In this article, we’ll be sharing our ZFS storage pool with our home network and also measuring the performance of the network channel. We’ll be developing this solution on Jetpack R32.4.4 (Ubuntu 18.04, aarch64).

What are Network File Systems?

Image for post
Image for post
IETF Logo

The Network File System (NFS) is a standard for accessing server network storage as a local file system on a client. The first version was developed within Sun Microsystems (Oracle)


Image for post
Image for post
ZFS Storage Pool Configurations (Source: Louwrentius)

If you haven’t yet read about ZFS and compiled the source, please do so by following the previous article, A Gentle Introduction to ZFS, Part 1: Compiling ZFS on Ubuntu 18.04 (aarch64), before continuing.

Introduction

ZFS storage pools are very powerful. What used to require proprietary OS support or hardware RAID cards is now freely available as open source software. Democratized RAID for the masses. Let’s set up a storage pool to demostrate the decisions that go into the configuration, both software and hardware.

ZFS Storage Pools

Simeon Trieu

Imaging Systems Ninjaneer, Computer Vision, Photographer and Videographer, VR Athlete, Pianist

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store