Difference between revisions of "QNAP"

From Freephile Wiki
Jump to navigation Jump to search
(link to product page)
(adds info about backing up my laptop home directory from the QNAP)
 
(3 intermediate revisions by the same user not shown)
Line 7: Line 7:
 
locally on the network, it uses DHCP, with two ethernet nics (dual-homed)
 
locally on the network, it uses DHCP, with two ethernet nics (dual-homed)
 
Access it via your network share (at 192.168.1.4  or 192.168.1.5) or externally at http://cloud.equality-tech.com
 
Access it via your network share (at 192.168.1.4  or 192.168.1.5) or externally at http://cloud.equality-tech.com
 +
 +
== Backups ==
 +
 +
{{ambox|
 +
|text = There is no bash history on QNAP. All 'history' is lost after each session!}}
 +
 +
{{ambox|
 +
|text = All content should go into user directories because subsequent upgrades could wipe data elsewhere. In other words, do NOT create a /backup folder!
 +
 +
<code>/share/CACHEDEV1_DATA/homes/greg/backups/</code> is the root for backups storage
 +
}}
 +
 +
I've created rsync scripts in the 'admin' users home directory which will backup <kbd>eqt</kbd> and <kbd>greg-laptop</kbd>  nb: greg-laptop is ONLY the ''home'' directory, not the full disk.
 +
 +
There is also a Duplicity script in /share/CACHEDEV1_DATA/homes/greg/backups/backup_home_to_qnap_san.sh but that's '''not tested/operational'''
  
 
== Operating System ==
 
== Operating System ==
Line 15: Line 30:
 
Under the covers, the QNAP is a Linux box, so if you want to reset someones password, you can just use the <code>passwd</code> command as usual.
 
Under the covers, the QNAP is a Linux box, so if you want to reset someones password, you can just use the <code>passwd</code> command as usual.
  
[[Category:Company]] [[Category:Cloud]] [[Category:Network]] [[Category:NAS]] [[Category:Storage]] [[Category:Server]] [[Category:Backups]]
+
== NAS Report ==
 +
Here is a script which generates a script, and then runs it.  Not sure why it's not just a plain script, but hey it's a neat trick.  If you want to just use the script it generates, see /tmp/nasreport after invoking this.
 +
<code>cat ./nas_report.sh </code>
 +
<source lang="bash">
 +
#!/bin/sh
 +
rm -f /tmp/nasreport
 +
touch /tmp/nasreport
 +
chmod +x /tmp/nasreport
 +
cat <<EOF >>/tmp/nasreport
 +
#!/bin/sh
 +
#
 +
# NAS Report by Patrick Wilson
 +
# see: http://forum.qnap.com/viewtopic.php?f=185&t=82260#p366188
 +
#
 +
#
 +
echo "*********************"
 +
echo "** QNAP NAS Report **"
 +
echo "*********************"
 +
echo " "
 +
echo "NAS Model:      \$(getsysinfo model)"
 +
echo "Firmware:      \$(getcfg system version) Build \$(getcfg system 'Build Number')"
 +
echo "System Name:    \$(/bin/hostname)"
 +
echo "Workgroup:      \$(getcfg system workgroup)"
 +
echo "Base Directory: \$(dirname \$(getcfg -f /etc/config/smb.conf Public path))"
 +
echo "NAS IP address: \$(ifconfig \$(getcfg network 'Default GW Device') | grep addr: | awk '{ print \$2 }' | cut -d: -f2)"
 +
echo " "
 +
echo "Default Gateway Device: \$(getcfg network 'Default GW Device')"
 +
echo " "
 +
ifconfig \$(getcfg network 'Default GW Device') | grep -v HWaddr
 +
echo " "
 +
echo -n "DNS Nameserver(s):"
 +
cat /etc/resolv.conf | grep nameserver | cut -d' ' -f2
 +
echo " "
 +
echo " "
 +
echo "HDD Information:"
 +
echo " "
 +
alpha='abcdefghijklmnopqrstuvwxyz'
 +
drives=\$(getcfg Storage 'Disk Drive Number')
 +
for ((i=1;i<=drives;++i)) ; do
 +
  echo -n "HDD\$i -"
 +
  if [ ! -b /dev/sd\${alpha:\$i-1:1} ] ; then
 +
      echo "Drive absent"
 +
  else
 +
      hdparm -i /dev/sd\${alpha:\$i-1:1} | grep "Model"
 +
      echo " "
 +
      parted /dev/sd\${alpha:\$i-1:1} print
 +
      echo " "
 +
      /sbin/get_hd_smartinfo -d \$i
 +
      echo " "
 +
  fi
 +
done
 +
echo "Volume Status"
 +
echo " "
 +
mdadm -D /dev/md0 /dev/md1 2>/dev/null
 +
echo " "
 +
cat /proc/mdstat
 +
echo " "
 +
echo "Disk Space:"
 +
echo " "
 +
df -h | grep -v qpkg
 +
echo " "
 +
echo "Mount Status:"
 +
echo " "
 +
mount | grep -v qpkg
 +
echo " "
 +
echo "Contents of \$(dirname \$(getcfg -f /etc/config/smb.conf Public path)):"
 +
echo " "
 +
ls -lF \$(dirname \$(getcfg -f /etc/config/smb.conf Public path))/
 +
echo " "
 +
echo "Windows Shares:"
 +
echo " "
 +
for i in \$(grep \] /etc/config/smb.conf | sed 's/^\[//g' | sed 's/\]//g' | grep -v global) ;do
 +
  echo -n "\$i:"
 +
  testparm -s -l --section-name="\$i" --parameter-name=path 2>/dev/null
 +
done
 +
echo " "
 +
echo "QNAP Media Scanner / Transcoder processes running: "
 +
echo " "
 +
/bin/ps | grep medialibrary | grep -v grep
 +
echo " "
 +
echo -n "MediaLibrary Configuration file: "
 +
ls -alF /etc/config/medialibrary.conf
 +
echo " "
 +
echo "/etc/config/medialibrary.conf:"
 +
cat /etc/config/medialibrary.conf
 +
echo " "
 +
echo "iTunes Music Store: \$(getcfg -f /etc/config/mt-daapd.conf general mp3_dir)"
 +
echo " "
 +
echo "Memory Information:"
 +
echo " "
 +
free | grep -v cache:
 +
echo " "
 +
echo "NASReport completed on \$(date +'%Y-%m-%d %T') (\$0) "
 +
echo " "
 +
EOF
 +
sleep 2
 +
clear
 +
/tmp/nasreport
 +
</source>
 +
 
 +
== Utilities ==
 +
The NAS is not a full linux box.  It only comes with a limited subset of commands, and some of those are provided by [https://busybox.net BusyBox].  To see the output below, just run the <code>busybox</code> command.
 +
<pre>
 +
BusyBox v1.01 (2016.05.31-18:24+0000) multi-call binary
 +
 
 +
Usage: busybox [function] [arguments]...
 +
  or: [function] [arguments]...
 +
 
 +
        BusyBox is a multi-call binary that combines many common Unix
 +
        utilities into a single executable.  Most people will create a
 +
        link to busybox for each function they wish to use and BusyBox
 +
        will act like whatever it was invoked as!
 +
 
 +
Currently defined functions:
 +
        [, addgroup, adduser, ash, awk, basename, bunzip2, busybox, bzcat, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, df, dirname, dmesg, dos2unix, du, echo, egrep, env, expr, false, fdisk, fgrep, find, free, getty, grep, gunzip, gzip, halt, head, hexdump, hostname, hwclock, id, ifconfig, init, insmod, install, ip, kill, killall, klogd, linuxrc, ln, logger, login, ls, lsmod, md5sum, mkdir, mknod, mktemp, modprobe, more, mount, mv, nameif, netstat, nslookup, openvt, passwd, pidof, ping, ping6, pivot_root, poweroff, ps, pwd, rdate, readlink, reboot, renice, reset, rm, rmdir, rmmod, route, sed, sh, sha1sum, sleep, sort, strings, swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, test, tftp, time, top, touch, tr, traceroute, true, tty, umount, uname, uniq, unix2dos, unzip, uptime, usleep, vi, wc, wget, which, whoami, xargs, yes, zcat
 +
</pre>
 +
 
 +
There are also a number of commands which are NOT provided by busybox.
 +
* <code>ls -al /mnt/HDA_ROOT/usr/bin |grep -v busybox</code>
 +
* <code>ls -al /mnt/HDA_ROOT/usr/sbin </code>
 +
 
 +
[[Category:Company]]
 +
[[Category:Cloud]]
 +
[[Category:Network]]
 +
[[Category:NAS]]
 +
[[Category:Storage]]
 +
[[Category:Server]]
 +
[[Category:Backups]]

Latest revision as of 15:00, 6 January 2017

TS-231.jpg

The QNAP NAS TS-231 forms the basis of our local network shares and backup

2x 2TB Western Digital "Red" drives in RAID 1 configuration = 1.8 TB storage

locally on the network, it uses DHCP, with two ethernet nics (dual-homed) Access it via your network share (at 192.168.1.4 or 192.168.1.5) or externally at http://cloud.equality-tech.com

Backups[edit | edit source]

I've created rsync scripts in the 'admin' users home directory which will backup eqt and greg-laptop nb: greg-laptop is ONLY the home directory, not the full disk.

There is also a Duplicity script in /share/CACHEDEV1_DATA/homes/greg/backups/backup_home_to_qnap_san.sh but that's not tested/operational

Operating System[edit | edit source]

The QNAP uses an operating system called QTS (based on Linux and GPL) QTS 4.2.1

Administration[edit | edit source]

Under the covers, the QNAP is a Linux box, so if you want to reset someones password, you can just use the passwd command as usual.

NAS Report[edit | edit source]

Here is a script which generates a script, and then runs it. Not sure why it's not just a plain script, but hey it's a neat trick. If you want to just use the script it generates, see /tmp/nasreport after invoking this. cat ./nas_report.sh

#!/bin/sh
rm -f /tmp/nasreport
touch /tmp/nasreport
chmod +x /tmp/nasreport
cat <<EOF >>/tmp/nasreport
#!/bin/sh
#
# NAS Report by Patrick Wilson
# see: http://forum.qnap.com/viewtopic.php?f=185&t=82260#p366188
#
# 
echo "*********************"
echo "** QNAP NAS Report **"
echo "*********************"
echo " "
echo "NAS Model:      \$(getsysinfo model)"
echo "Firmware:       \$(getcfg system version) Build \$(getcfg system 'Build Number')"
echo "System Name:    \$(/bin/hostname)"
echo "Workgroup:      \$(getcfg system workgroup)"
echo "Base Directory: \$(dirname \$(getcfg -f /etc/config/smb.conf Public path))"
echo "NAS IP address: \$(ifconfig \$(getcfg network 'Default GW Device') | grep addr: | awk '{ print \$2 }' | cut -d: -f2)"
echo " " 
echo "Default Gateway Device: \$(getcfg network 'Default GW Device')" 
echo " "
ifconfig \$(getcfg network 'Default GW Device') | grep -v HWaddr
echo " "
echo -n "DNS Nameserver(s):" 
cat /etc/resolv.conf | grep nameserver | cut -d' ' -f2
echo " "
echo " "
echo "HDD Information:"
echo " "
alpha='abcdefghijklmnopqrstuvwxyz'
drives=\$(getcfg Storage 'Disk Drive Number')
for ((i=1;i<=drives;++i)) ; do
   echo -n "HDD\$i -"
   if [ ! -b /dev/sd\${alpha:\$i-1:1} ] ; then
      echo "Drive absent"
   else
      hdparm -i /dev/sd\${alpha:\$i-1:1} | grep "Model"
      echo " "
      parted /dev/sd\${alpha:\$i-1:1} print
      echo " "
      /sbin/get_hd_smartinfo -d \$i
      echo " "
   fi
done
echo "Volume Status"
echo " "
mdadm -D /dev/md0 /dev/md1 2>/dev/null
echo " "
cat /proc/mdstat
echo " "
echo "Disk Space:"
echo " "
df -h | grep -v qpkg
echo " "
echo "Mount Status:" 
echo " "
mount | grep -v qpkg
echo " "
echo "Contents of \$(dirname \$(getcfg -f /etc/config/smb.conf Public path)):"
echo " "
ls -lF \$(dirname \$(getcfg -f /etc/config/smb.conf Public path))/
echo " "
echo "Windows Shares:" 
echo " "
for i in \$(grep \] /etc/config/smb.conf | sed 's/^\[//g' | sed 's/\]//g' | grep -v global) ;do 
   echo -n "\$i:"
   testparm -s -l --section-name="\$i" --parameter-name=path 2>/dev/null 
done
echo " "
echo "QNAP Media Scanner / Transcoder processes running: "
echo " " 
/bin/ps | grep medialibrary | grep -v grep
echo " " 
echo -n "MediaLibrary Configuration file: " 
ls -alF /etc/config/medialibrary.conf
echo " " 
echo "/etc/config/medialibrary.conf:"
cat /etc/config/medialibrary.conf
echo " "
echo "iTunes Music Store: \$(getcfg -f /etc/config/mt-daapd.conf general mp3_dir)"
echo " "
echo "Memory Information:" 
echo " "
free | grep -v cache:
echo " "
echo "NASReport completed on \$(date +'%Y-%m-%d %T') (\$0) "
echo " "
EOF
sleep 2
clear
/tmp/nasreport

Utilities[edit | edit source]

The NAS is not a full linux box. It only comes with a limited subset of commands, and some of those are provided by BusyBox. To see the output below, just run the busybox command.

BusyBox v1.01 (2016.05.31-18:24+0000) multi-call binary

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, addgroup, adduser, ash, awk, basename, bunzip2, busybox, bzcat, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, df, dirname, dmesg, dos2unix, du, echo, egrep, env, expr, false, fdisk, fgrep, find, free, getty, grep, gunzip, gzip, halt, head, hexdump, hostname, hwclock, id, ifconfig, init, insmod, install, ip, kill, killall, klogd, linuxrc, ln, logger, login, ls, lsmod, md5sum, mkdir, mknod, mktemp, modprobe, more, mount, mv, nameif, netstat, nslookup, openvt, passwd, pidof, ping, ping6, pivot_root, poweroff, ps, pwd, rdate, readlink, reboot, renice, reset, rm, rmdir, rmmod, route, sed, sh, sha1sum, sleep, sort, strings, swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, test, tftp, time, top, touch, tr, traceroute, true, tty, umount, uname, uniq, unix2dos, unzip, uptime, usleep, vi, wc, wget, which, whoami, xargs, yes, zcat

There are also a number of commands which are NOT provided by busybox.

  • ls -al /mnt/HDA_ROOT/usr/bin |grep -v busybox
  • ls -al /mnt/HDA_ROOT/usr/sbin