#for i in `seq 271 350`; do ssh www$i "sed -i \"/servername\volumename/s/^/#/\" /etc/fstab"; done;
#
#for i in `seq 271 350`; do ssh www$i "umount -lf /mnt/servername/volumename"; done;
#
Monthly Archives: August 2013
use smbclient to connect to CIFS share from linux
To connect to a Windows network drive, or CIFS share, you can use a simple Linux utility called smbclient. This is much faster than trying to map a network drive through Windows. You can use this simple tool to test that the file server is working correctly.
# smbclient --user="DOMAIN\fordodone" //10.107.0.101/share_name
Enter DOMAIN\fordodone's password:
Domain=[DOMAIN] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
smb: \>
You can use commands like cd, ls, cp, etc. to interact with the share (similar to FTP).
NetApp decode acp domain option
How does this option function to set a network? The acp.domain option is a convoluted decimal representation of the network portion of the IP address used for acp.
toaster*> options acp
acp.domain 65193
acp.enabled on
acp.netmask 65535
acp.port e0f
Take 65193 and convert it to binary: 1111111010101001. Then split it up into two (or more) octets: 11111110 10101001. Then convert each of the octets back to decimal: 254 169. Then reverse the order: 169 254. That is the acp network. The netmask portion is more straightforward. In this case our ACP network is 169.254/16.
You could hack a quick little one liner:
# for i in `echo "obase=2;65193" |bc | awk 'BEGIN{FS=""} {for(i=1;i<33;i++){printf $i; if(i==8)printf " ";}printf "\n"}'`; do echo "ibase=2;$i" |bc; done|tac | paste - - | sed 's/\t/./'
169.254
#
NetApp remove disk ownership without reboot
To remove disk ownership without going into maintenance mode, you can use these commands. Pro Tip: Don’t remove ownership from disks in an online aggregate, such as the one with your root volume in it.
toaster> priv set diag
Warning: These diagnostic commands are for use by NetApp
personnel only.
toaster*> disk assign 0a.16 -s unowned -f
mysql log slow queries
It’s really helpful to know what queries are choking a database. To enable the mysql
slow query log add these lines to the [mysqld]
configuration section of your my.cnf
or mysql
configuration file and restart mysqld:
slow_query_log=1
slow_query_log_file=/var/log/mysql_slow_queries/dbserver1.log
long_query_time=10
This will log queries that take longer than 10 seconds to the specified file. After you collect some of the logs, work with the application developers to see if some of the queries can be optimized, using more efficient sql, adding indices, etc.
Linux rebuild software RAID1
Set the bash field separator to newline:
IFS="
"
See what disk and partitions are currently up, then generate commands to re-add the missing disk and partitions, then run them:
for i in `cat /proc/mdstat | grep md | cut -d [ -f1 | sed -e 's/\(md[0-9]\).*\(sd[a-z][0-9]\)/mdadm --add \/dev\/\1 \/dev\/\2/' | sed -e 's/sdb/sda/'`; do eval $i; done;
TODO: make it determine which disk to add (/dev/sda or /dev/sdb)
awk average multiple columns
If you have some output lined up in columns, use awk
to average the columns. Here’s some sample output (from a NetApp “toaster> stats show -p flexscale-access”)
# cat sample.txt
73 5480 0 1040 84 0 0 0 0 0 0 0 541
73 6038 39 1119 84 0 0 0 0 0 0 0 475
73 5018 19 859 85 0 0 0 0 0 0 0 348
73 5960 20 1480 80 120 0 320 0 0 0 0 427
73 6098 0 1019 85 0 0 0 0 0 0 0 486
73 5220 0 1220 81 0 0 0 0 0 0 0 288
73 5758 79 1319 81 59 39 319 0 0 0 0 500
73 4419 0 2039 68 0 0 0 0 0 0 0 279
73 5400 0 840 86 0 0 0 0 0 0 0 382
73 5238 0 1299 80 0 0 0 0 0 0 0 389
73 5449 0 1696 76 59 0 199 0 0 0 0 340
73 5478 0 1419 79 0 0 0 0 0 0 0 414
73 5020 20 1000 83 0 0 0 0 0 0 0 405
73 4359 0 1059 80 0 0 0 0 0 0 0 295
73 5838 39 1139 83 0 19 0 0 0 0 0 494
73 6100 40 1720 78 0 0 0 0 0 0 0 480
73 5398 19 1239 81 0 0 0 0 0 0 0 398
73 5089 79 1097 82 0 0 0 0 0 0 0 459
73 6178 19 1159 84 0 39 159 0 0 0 0 487
73 4999 0 1239 80 0 0 0 0 0 0 0 345
73 4820 0 880 84 0 0 0 0 0 0 0 339
73 5467 0 1177 82 0 0 0 0 0 0 0 413
73 4700 60 1480 76 0 0 0 0 0 0 0 337
#
And the column averages:
# cat sample.txt | awk '{for (i=1;i<=NF;i++){a[i]+=$i;}} END {for (i=1;i<=NF;i++){printf "%.0f", a[i]/NR; printf "\t"};printf "\n"}'
73 5371 19 1241 81 10 4 43 0 0 0 0 405
#
Here awk
loops through each field in a row, and adds the value to an array (a[i]) with the key being the field number. Then at the end, it takes the total, and divides by the number of rows (NR) and prints that (without decimals). It separates each field by a tab (\t) and after the end record prints a newline (\n).
You could make it print totals, as well as averages. You could also make it print out the original data, or a field header to know what each column represents...