Difference between revisions of "QNAP"
(adds info about backing up my laptop home directory from the QNAP) |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | The QNAP NAS TS-231 forms the basis of our local network shares and backup | + | [[File:TS-231.jpg|right]] |
+ | |||
+ | The [https://www.qnap.com/i/useng/product/model.php?II=155 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 | 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) | locally on the network, it uses DHCP, with two ethernet nics (dual-homed) | ||
− | Access it at 192.168.1.4 or 192.168.1.5 | + | 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 == | ||
+ | The QNAP uses an operating system called QTS (based on Linux and GPL) | ||
+ | [http://files.qnap.com/news/pressresource/datasheet/QTS4.2.1(EN)_51000-023880-RS_0204.pdf QTS 4.2.1] | ||
== Administration == | == Administration == | ||
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 14:00, 6 January 2017
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]
There is no bash history on QNAP. All 'history' is lost after each session! |
All content should go into user directories because subsequent upgrades could wipe data elsewhere. In other words, do NOT create a /backup folder!
/share/CACHEDEV1_DATA/homes/greg/backups/ is the root for backups storage |
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