<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.csclub.uwaterloo.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=M4burns</id>
	<title>CSCWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.csclub.uwaterloo.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=M4burns"/>
	<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/Special:Contributions/M4burns"/>
	<updated>2026-04-06T08:54:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3589</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3589"/>
		<updated>2014-05-18T17:59:02Z</updated>

		<summary type="html">&lt;p&gt;M4burns: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
The private IP is 10.15.134.130, only available from aspartame on the interface with IP 10.15.134.1. You may have to remove the default route from the routing table in order to successfully contact the machine with ssh.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a slightly smaller number due to hidden size constraints and rounding.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Enable iSCSI and configure default authentication.&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
9. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
10. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
11. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently disconnected, could be connected to psilodump or directly to another machine.&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x136GB 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr_users&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Old users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID6&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3372</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3372"/>
		<updated>2013-02-04T22:06:13Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* Other notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
Private IP TBD.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a slightly smaller number due to hidden size constraints and rounding.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Enable iSCSI and configure default authentication.&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
9. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
10. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
11. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
===Transferring old files from ginseng===&lt;br /&gt;
&lt;br /&gt;
====Method A====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
====Method B====&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
===Exporting Kerberized NFS from Debian Sid===&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
===iSCSI block device mount optimizations===&lt;br /&gt;
&lt;br /&gt;
tmyklebu made some changes to /sys/block/sda/queue. The following is now in /etc/rc.local on aspartame:&lt;br /&gt;
&lt;br /&gt;
 echo 2048 &amp;gt; /sys/block/sda/queue/read_ahead_kb&lt;br /&gt;
 echo 32768 &amp;gt; /sys/block/sda/queue/max_sectors_kb&lt;br /&gt;
 echo 4096 &amp;gt; /sys/block/sda/queue/nr_requests&lt;br /&gt;
 echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
We should increase the iSCSI configs node.session.queue_depth and node.session.cmds_max during next maintenance window.&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently set to standalone filer+shelf, not set up&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to phlogiston, not set up (phlogiston is off)&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID6&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3371</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3371"/>
		<updated>2013-02-04T18:18:33Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* NetApp Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
Private IP TBD.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a slightly smaller number due to hidden size constraints and rounding.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Enable iSCSI and configure default authentication.&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
9. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
10. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
11. Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
4. Set up the netapp filesystem and transfer old files from ginseng:&lt;br /&gt;
&lt;br /&gt;
===Method A===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
===Method B===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
5. &#039;&#039;&#039;Exporting Kerberized NFS from Debian Sid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently set to standalone filer+shelf, not set up&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to phlogiston, not set up (phlogiston is off)&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID6&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3370</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3370"/>
		<updated>2013-02-04T18:17:05Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* Other notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
Private IP TBD.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a slightly smaller number due to hidden size constraints and rounding.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Enable iSCSI and configure default authentication.&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
9. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
10. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
11 Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
4. Set up the netapp filesystem and transfer old files from ginseng:&lt;br /&gt;
&lt;br /&gt;
===Method A===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
===Method B===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
5. &#039;&#039;&#039;Exporting Kerberized NFS from Debian Sid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The default kernel in Debian sid (stable, 2.6.32) does not support the necessary crypto suites to export kerberized NFS to newer kernels. You MUST upgrade the kernel, nfs-common, and nfs-kernel-server packages to AT LEAST squeeze-backports.&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently set to standalone filer+shelf, not set up&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to phlogiston, not set up (phlogiston is off)&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID6&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3369</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3369"/>
		<updated>2013-02-04T08:33:04Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* NetApp Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
Private IP TBD.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
&lt;br /&gt;
This section describes how to create a volume on the NetApp and export it as an iSCSI target. For further NetApp configuration instructions, refer to the NetApp documentation.&lt;br /&gt;
&lt;br /&gt;
1. Login to the NetApp. You&#039;ll either need access to the physical serial console or to ssh as root to psilodump&#039;s private IP (10.15.134.130). Credentials are stored in /users/sysadmin .&lt;br /&gt;
&lt;br /&gt;
2. To get information on the available disks, run the command:&lt;br /&gt;
 aggr status -r&lt;br /&gt;
This command will return three lists: Active aggregates with their assigned disks, spare disks, and disks managed by the partner. An aggregate is roughly equivalent to an LVM volume group: It is a collection of physical disks, possibly across multiple disk shelves and with various RAID levels applied, which may host one or more logical volumes.&lt;br /&gt;
Do not proceed if there are fewer than three spare disks of each type available. Refer to the NetApp documentation to add more disks or release disks from existing aggregates.&lt;br /&gt;
&lt;br /&gt;
3. Choose a list of disks for your new aggregate. The available space will be approximately 2/3 of the total disk space.&lt;br /&gt;
&lt;br /&gt;
4. Create the aggregate as follows:&lt;br /&gt;
 aggr create aggrN -t raid_dp -d [disk-list]&lt;br /&gt;
&lt;br /&gt;
where [disk-list] is a list of the form AA:BB CC:DD ... containing the identifiers for the disks you wish to use to create the aggregate.&lt;br /&gt;
&lt;br /&gt;
5. Retrieve the aggregate information. You will need to know the available space for the next step.&lt;br /&gt;
 aggr show_space aggrN&lt;br /&gt;
&lt;br /&gt;
6. Create a volume in the aggregate:&lt;br /&gt;
 vol create volNfoo -s volume aggrN XXXK&lt;br /&gt;
&lt;br /&gt;
where XXX is the total available space in aggrN. You may need to choose a slightly smaller number due to hidden size constraints and rounding.&lt;br /&gt;
&lt;br /&gt;
7. Disable snapshotting and access time update. Neither will be needed for exporting an iSCSI LUN.&lt;br /&gt;
 vol options volNfoo no_atime_update on&lt;br /&gt;
 vol options volNfoo nosnap on&lt;br /&gt;
 snap reserve volNfoo 0&lt;br /&gt;
&lt;br /&gt;
8. Enable iSCSI and configure default authentication.&lt;br /&gt;
 options iscsi.enable on&lt;br /&gt;
 iscsi nodename iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 iscsi security default -s CHAP -p yoursecurepassword -n psilodump&lt;br /&gt;
&lt;br /&gt;
where yoursecurepassword is more secure. For iSCSI hosts, the target will be on node iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca with username psilodump and password yoursecurepassword.&lt;br /&gt;
&lt;br /&gt;
9. Create a LUN on your volume:&lt;br /&gt;
 lun create -s XXXK -t linux /vol/volNfoo/lun0&lt;br /&gt;
&lt;br /&gt;
where XXXK is the amount of available space on the volume, as shown by the command df.&lt;br /&gt;
&lt;br /&gt;
10. Create an iSCSI initiator group and add all of your hosts to it:&lt;br /&gt;
 igroup create -i -t linux volNfoo_group&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:123456789&lt;br /&gt;
 igroup add volNfoo_group iqn.1993-08.org.debian:01:981287231&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The node identifiers given to the igroup add command will soon be able to access the iSCSI LUN you created above.&lt;br /&gt;
&lt;br /&gt;
11 Map the LUN to the iSCSI initiator group:&lt;br /&gt;
 lun map /vol/volNfoo/lun0 volNfoo_group&lt;br /&gt;
&lt;br /&gt;
You&#039;re done! Any host in the initiator group should now be able to access the LUN you&#039;ve created as a block device.&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
4. set up the netapp filesystem and transfer old files from ginseng:&lt;br /&gt;
&lt;br /&gt;
===Method A===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
===Method B===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently set to standalone filer+shelf, not set up&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to phlogiston, not set up (phlogiston is off)&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID6&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3368</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3368"/>
		<updated>2013-02-04T07:55:16Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* Other notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
Private IP TBD.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
1. on the netapp,&lt;br /&gt;
* start the iscsi stuff. Set up a client user/pass (m4burns: please fill this part out at some point)&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
4. set up the netapp filesystem and transfer old files from ginseng:&lt;br /&gt;
&lt;br /&gt;
===Method A===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care and a GPT)&lt;br /&gt;
* Compiled star in /root on ginseng&lt;br /&gt;
* Transferred files with the following Makefile (assuming original user directories in /export/users, destination volume in /mnt/iscsi, make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p -acl artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
&lt;br /&gt;
===Method B===&lt;br /&gt;
&lt;br /&gt;
* On ginseng, authenticate with iSCSI target (psilodump.csclub.uwaterloo.ca lun0).&lt;br /&gt;
* Umount /dev/mapper/vg0-users&lt;br /&gt;
* Copy users filesystem directly to iSCSI target:&lt;br /&gt;
 dd if=/dev/mapper/vg0-users of=/path/to/psilodump:lun0 bs=8M&lt;br /&gt;
* Resize users filesystem on destination partition to fit:&lt;br /&gt;
 resize2fs /path/to/psilodump:lun0&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently set to standalone filer+shelf, not set up&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to phlogiston, not set up (phlogiston is off)&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID6&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3367</id>
		<title>NetApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=NetApp&amp;diff=3367"/>
		<updated>2013-02-04T07:44:17Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* Volumes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of 2013, the CSC has a NetApp FAS3000 series which is capable of hosting network shares. It was donated to us by CSCF. It is also pretty old.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the manuals are hosted in ~sysadmin/netapp-docs/&lt;br /&gt;
&lt;br /&gt;
Relevant docs for storage modification are: smg.pdf, sysadmin.pdf&lt;br /&gt;
&lt;br /&gt;
iSCSI documentation is in ontop/bsag.pdf&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
While the NetApp supports both NFS and CIFS, neither of these export options provide the versatility nor the options we desire of a network fileshare. Instead, we have configured the NetApp to export iSCSI block devices to be mounted on aspartame. Therefore, aspartame now replaces ginseng as being the primary fileserver in CSC.&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
Configuration mechanisms are accessible either via SSH or serial interface, but through aspartame only. The NetApp is not visible on 134net at all.&lt;br /&gt;
&lt;br /&gt;
Private IP TBD.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Should aspartame get totally hosed, or stability is long enough such that all sysadmin folk at the time have graduated, here is how to set up iSCSI on the NetApp+aspartame.&lt;br /&gt;
&lt;br /&gt;
===NetApp Configuration===&lt;br /&gt;
1. on the netapp,&lt;br /&gt;
* start the iscsi stuff. Set up a client user/pass (m4burns: please fill this part out at some point)&lt;br /&gt;
&lt;br /&gt;
===aspartame Configuration===&lt;br /&gt;
Install open-iscsi:&lt;br /&gt;
 apt-get install open-scsi&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = manual&lt;br /&gt;
 discovery.sendtargets.auth.authmethod=CHAP&lt;br /&gt;
 discovery.sendtargets.auth.username=username&lt;br /&gt;
 discovery.sendtargets.auth.password=password&lt;br /&gt;
 node.session.auth.authmethod=CHAP&lt;br /&gt;
 node.session.auth.username=username&lt;br /&gt;
 node.session.auth.password=password&lt;br /&gt;
&lt;br /&gt;
Start open-iscsi service:&lt;br /&gt;
 service open-iscsi start&lt;br /&gt;
&lt;br /&gt;
Scan for iSCSI devices from the NetApp:&lt;br /&gt;
 iscsiadm --mode discovery --type st --portal psilodump&lt;br /&gt;
&lt;br /&gt;
This should dump out a ton of information, for example:&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 [fe80::XXXX:XXXX:XXXX:XXXX]:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.131:3260,2002 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.131:3260,2001 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 10.15.134.130:3260,2000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
 129.97.134.130:3260,1000 iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&lt;br /&gt;
&lt;br /&gt;
The .130 IPs correspond to one filer, and the .131 IPs correspond to the other filer. Currently we are only using one of the filers (psilodump).&lt;br /&gt;
&lt;br /&gt;
This also populates the /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca directory with all possible ways to access the NetApp. For testing purposes (i.e. node.startup = manual), this is okay.&lt;br /&gt;
&lt;br /&gt;
Test to see if you can get the iSCSI device to show up correctly:&lt;br /&gt;
 iscsiadm --mode node --targetname &amp;quot;iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca&amp;quot;  --portal 10.15.134.130:3260 --login&lt;br /&gt;
&lt;br /&gt;
This should produce output similar to:&lt;br /&gt;
 Logging in to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]&lt;br /&gt;
 Login to [iface: default, target: iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca, portal: 10.15.134.130,3260]: successful&lt;br /&gt;
&lt;br /&gt;
Check /dev/disk/by-path/ip* to ensure new disks show up:&lt;br /&gt;
 # ls -l /dev/disk/by-path/ip*&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0 -&amp;gt; ../../sda&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-0-part1 -&amp;gt; ../../sda1&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1 -&amp;gt; ../../sdb&lt;br /&gt;
    /dev/disk/by-path/ip-10.15.134.130:3260-iscsi-iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca-lun-1-part1 -&amp;gt; ../../sdb1&lt;br /&gt;
&lt;br /&gt;
If this fails, check all your configuration again.&lt;br /&gt;
&lt;br /&gt;
If this succeeds, you are now ready to try autoconnecting the iSCSI device.&lt;br /&gt;
&lt;br /&gt;
Delete all extraneous entries from /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca . This prevents the startup script from (a) hanging, and (b) being very upset. All that is left should be the interface you intend to connect through:&lt;br /&gt;
 # ls -l /etc/iscsi/nodes/iqn.1992-08.com.netapp:psilodump.csclub.uwaterloo.ca/&lt;br /&gt;
     10.15.134.130,3260,2000&lt;br /&gt;
&lt;br /&gt;
Edit /etc/iscsi/iscsid.conf:&lt;br /&gt;
 node.startup = automatic&lt;br /&gt;
&lt;br /&gt;
For the init.d script to work correctly (i.e. properly mount things) we need to add a sleep to allow the device to settle:&lt;br /&gt;
Edit /etc/init.d/open-iscsi roughly around line 127 to add a &amp;quot;sleep 1&amp;quot;:&lt;br /&gt;
  ...&lt;br /&gt;
        # Now let&#039;s mount&lt;br /&gt;
        sleep 1&lt;br /&gt;
        log_daemon_msg &amp;quot;Mounting network filesystems&amp;quot;&lt;br /&gt;
        MOUNT_RESULT=1&lt;br /&gt;
        if mount -a -O _netdev &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
                MOUNT_RESULT=0&lt;br /&gt;
                break&lt;br /&gt;
        fi&lt;br /&gt;
        log_end_msg $MOUNT_RESULT&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Now we can restart the service:&lt;br /&gt;
 service open-iscsi restart&lt;br /&gt;
&lt;br /&gt;
Now you can configure partitions and mountpoints.&lt;br /&gt;
&lt;br /&gt;
==Other notes==&lt;br /&gt;
&lt;br /&gt;
4. set up the netapp filesystem and transfer old files from ginseng:&lt;br /&gt;
* on ginseng, use parted to set up the mounted iscsi drive as an ext4 primary partition (setting up a partition of size &amp;gt;2TB requires care)&lt;br /&gt;
* installed star as root on ginseng&lt;br /&gt;
* transferred files with the following Makefile (make -j8):&lt;br /&gt;
 foo := $(wildcard /export/users/*)&lt;br /&gt;
 bar := $(patsubst /export/users/%,/mnt/iscsi/%,$(foo))&lt;br /&gt;
 all: $(bar)&lt;br /&gt;
 /mnt/iscsi/%: /export/users/%&lt;br /&gt;
 	# echo $@ $&amp;lt;&lt;br /&gt;
 	~/star-1.5.2/star/OBJ/x86_64-linux-cc/star \&lt;br /&gt;
 	    -copy -p artype=exustar \&lt;br /&gt;
 	    -C /export/users $(notdir $&amp;lt;) /mnt/iscsi&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Disk information==&lt;br /&gt;
* shelf 1&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently set to standalone filer+shelf, not set up&lt;br /&gt;
* shelf 2&lt;br /&gt;
** 14x??? 10,000RPM FibreChannel disks&lt;br /&gt;
** Currently assigned to phlogiston, not set up (phlogiston is off)&lt;br /&gt;
* shelf 3&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
* shelf 4&lt;br /&gt;
** 14x500GB 7,200RPM ATA disks&lt;br /&gt;
** Currently assigned to psilodump&lt;br /&gt;
&lt;br /&gt;
===Aggregates===&lt;br /&gt;
* aggr0&lt;br /&gt;
** Root aggregate volume, in RAID-DP&lt;br /&gt;
* aggr1&lt;br /&gt;
** Music aggregate volume, in RAID-DP&lt;br /&gt;
* aggr2&lt;br /&gt;
** Users aggregate volume, in RAID-DP&lt;br /&gt;
&lt;br /&gt;
===Volumes===&lt;br /&gt;
* /vol/vol0&lt;br /&gt;
** Root volume.&lt;br /&gt;
* /vol/vol1music&lt;br /&gt;
** Music volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol1music/lun0 .&lt;br /&gt;
* /vol/vol2users&lt;br /&gt;
** Users volume. This volume is not accessible via NFS or CIFS. It contains only the iSCSI LUN /vol/vol2users/lun0 .&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
 aggr status -r aggr&amp;lt;num&amp;gt;&lt;br /&gt;
   Shows aggregate status&lt;br /&gt;
 disk show -v&lt;br /&gt;
   Shows disks, and which filer they are owned by (currently all by psilodump)&lt;br /&gt;
 storage&lt;br /&gt;
   storage related things&lt;br /&gt;
 disk assign&lt;br /&gt;
   Assigns orphaned disks to a filer&lt;br /&gt;
 vol&lt;br /&gt;
   Volume stuffs&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
* RAID-DP - Double Parity RAID6&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3341</id>
		<title>Past Executive</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3341"/>
		<updated>2013-01-16T22:30:35Z</updated>

		<summary type="html">&lt;p&gt;M4burns: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Data sources for this exec list have been: CSC records, MathNEWS.&lt;br /&gt;
According to the warrior wiki dudes, there was an article about the CSC being founded in the chevron: &#039;&#039;This week on campus&#039;&#039;. The Chevron. January 5 1968. Page 16. -- somebody should get a copy of that.&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
 #define PR President&lt;br /&gt;
 #define VP Vice-president&lt;br /&gt;
 #define TR Treasurer&lt;br /&gt;
 #define SE Secretary&lt;br /&gt;
 #define SA Sysadmin&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define LI Librarian&lt;br /&gt;
 #define FL Flasher&lt;br /&gt;
 #define DE Deity&lt;br /&gt;
 #define WW Webmaster&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define SE-TR Secretary-Treasurer (Position was split)&lt;br /&gt;
&lt;br /&gt;
=Founding 1967-1968=&lt;br /&gt;
&lt;br /&gt;
 Sponsor - J. Peter Sprung&lt;br /&gt;
 PR: K. Rugger&lt;br /&gt;
 VP: R. Jaques&lt;br /&gt;
 SE-TR: G. Sutherland&lt;br /&gt;
&lt;br /&gt;
 Founding Members:&lt;br /&gt;
 B. Kindree&lt;br /&gt;
 R. Melen&lt;br /&gt;
 V. Neglia&lt;br /&gt;
 R. Charney&lt;br /&gt;
 R. Truman&lt;br /&gt;
 Glenn Berry&lt;br /&gt;
 D. Meek&lt;br /&gt;
&lt;br /&gt;
=1968-1969=&lt;br /&gt;
&lt;br /&gt;
 SE-TR: Glenn Berry&lt;br /&gt;
&lt;br /&gt;
=1969-1970=&lt;br /&gt;
&lt;br /&gt;
Unknown, only one letter found in the folder &#039;ACM History&#039; addressed to Glenn Berry, which makes it likely that he was SE-TR once again. May be indicated in membership lists. The club appears to have died this academic year.&lt;br /&gt;
&lt;br /&gt;
===A note on ACM affiliation===&lt;br /&gt;
&lt;br /&gt;
The first attempt at joining the ACM was started with an informal inquiry Dec 5, 1967. This lead to a series of constitution edits (working towards affiliation) in Winter 1968. There was a break for the spring (no correspondence found, I presume we were waiting on a reply). In the fall records indicate that our constitution and chartering was rejected, further correspondence was sent in Fall 1968 by Glenn Berry. A new inquiry, seemingly unaware of the first was sent Dec 7, 1970 &lt;br /&gt;
&lt;br /&gt;
=1971=&lt;br /&gt;
&lt;br /&gt;
James W. Welch is the only person sending letters for the club. Later signs them Vice-President. Continues this for most of the year. Either he was VP throughout 3 terms or we were on calendar year elections then. &lt;br /&gt;
&lt;br /&gt;
=1972=&lt;br /&gt;
&lt;br /&gt;
It appears we visited Western and Western visited us this year (there is some reference to a similar occurrence the year previous). Documents from 1973 indicate a termly exec structure, this probably goes back to 1972.&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Mike Campbell&lt;br /&gt;
 SE: Doug Lacy&lt;br /&gt;
&lt;br /&gt;
there is also stuff from James W. Welch without a position. Considering his work in the founding and that the letters are speaker invitations he is, with high probability, VP this term.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Ian McIntosh&lt;br /&gt;
&lt;br /&gt;
=1973=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
Either secretary or VP: Jim Parry (sent the only letter on file, but it is a speaker invite, did not sign his position).&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Parry&lt;br /&gt;
 VP: Ray Walden&lt;br /&gt;
 TR: Slavko Stemberger&lt;br /&gt;
 SE: Mario Festival&lt;br /&gt;
&lt;br /&gt;
=1974-1977=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman??&lt;br /&gt;
&lt;br /&gt;
 Peter Raynham reports (first hand account): president for at least 2 or 3 terms in this period.&lt;br /&gt;
 Sylvia Eng: 1975/6 as some position.&lt;br /&gt;
 Dave Buckingham: a VP at some point&lt;br /&gt;
 Allison Nolan: 1977 time&lt;br /&gt;
 Peter ??: 1977&lt;br /&gt;
 Russel Crook???&lt;br /&gt;
 Dennis Ritchie came&lt;br /&gt;
&lt;br /&gt;
=1987=&lt;br /&gt;
&lt;br /&gt;
Jim Boritz was president in Fall 1987 (Source: http://csclub.uwaterloo.ca/misc/procedure.pdf)&lt;br /&gt;
&lt;br /&gt;
=1988=&lt;br /&gt;
&lt;br /&gt;
Jim Boritz was president in Winter 1988. (Source: http://csclub.uwaterloo.ca/misc/procedure.pdf)&lt;br /&gt;
Tim Timar - cc&#039;d on memos/mentioned on mathsoc minutes in 1987/88.&lt;br /&gt;
The Sysadmin and Office Manager positions seem to have been created somewhere in here. The &#039;Record Management Profile&#039; that Robyn Stewart did as an assignment in 1991-1992 for some class at UBC&lt;br /&gt;
indicates the existence of both positions. We acquired an HP-9000 in the summer of 1988 and as this was out first &amp;quot;real&amp;quot; computer (previously we had an IBM PC and terminal), the sysadmin position was created, starting with the Fall 1988 term.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 SA: Wade Richards&lt;br /&gt;
&lt;br /&gt;
=1989=&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989-big.jpg&lt;br /&gt;
&lt;br /&gt;
Left to right:  Jim Boritz (bottom), Wade Richards (top), Ted Timar, ???, Keven Smith, Bill Gates (not exec), Angela Chambers, Ross Ridge (top), Sean Goggin (bottom), ??? &lt;br /&gt;
&lt;br /&gt;
 PR: Kevin W. Smith ?? (derived from a signature, may be a bad reading)&lt;br /&gt;
 VP: Angela Chambers&lt;br /&gt;
 TR:&lt;br /&gt;
 SE: Sean Goggin&lt;br /&gt;
 SA: Wade Richards / Ross Ridge&lt;br /&gt;
&lt;br /&gt;
(President Kevin Smith confirmed: http://csclub.uwaterloo.ca/misc/procedure.pdf)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Sean Goggin&lt;br /&gt;
 SA: Ross Ridge&lt;br /&gt;
&lt;br /&gt;
=1990=&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 SE: Robyn Steward&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Wade Richards&lt;br /&gt;
 Kivi Shapiro - attended mathsoc meeting on our behalf.&lt;br /&gt;
              - Censured by mathsoc for his actions during the election.&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
 SE: Robyn Stewart - attended mathsoc meeting on our behalf.&lt;br /&gt;
&lt;br /&gt;
=1991=&lt;br /&gt;
===Winter===&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
 Ed Bourne - attended mathsoc meeting on our behalf.&lt;br /&gt;
 SE: Robyn Stewart&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 Jason Knell - attended mathsoc meeting on our and PMC&#039;s behalf.&lt;br /&gt;
===Fall===&lt;br /&gt;
 Wiktor Wiewiorowski - attended mathsoc meeting on our behalf this term.&lt;br /&gt;
&lt;br /&gt;
=1992=&lt;br /&gt;
===Winter===&lt;br /&gt;
 SE: Brent Williams&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick&lt;br /&gt;
 TR: Stephen Mills&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
=1993=&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Mark Tompsett &lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
=1994=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Ian Goldberg (?)&lt;br /&gt;
 SE: Tom Rathbourne&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick (?)&lt;br /&gt;
 SA: Ian Goldberg (?)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Ross Ridge&lt;br /&gt;
 VP: Tom Rathbourne (?)&lt;br /&gt;
 SA: Zygo Blaxell&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
&lt;br /&gt;
=1995=&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Amy Brown (arbrown) &lt;br /&gt;
 VP: Christina Norman (cbnorman)&lt;br /&gt;
 TR: Steven Mills (samills)&lt;br /&gt;
 SE: Allyson Graham (akgraham)&lt;br /&gt;
 SA: Gavin Peters&lt;br /&gt;
&lt;br /&gt;
=1996=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Nikita Borisov (nborisov)&lt;br /&gt;
 VP: Joseph Deu Ngoc (dtdeungo) &lt;br /&gt;
 TR: Stephen Mills (samills)&lt;br /&gt;
 SE: Sharlene Schmeichel (saschmei)&lt;br /&gt;
 SA: Dave Brown (dagbrown)&lt;br /&gt;
 OF: Somsack Tsai (stsai)&lt;br /&gt;
 LI: Devin Carless (dccarles)&lt;br /&gt;
 FL: Allyson Graham (akgraham)&lt;br /&gt;
 DE: Ian Goldberg (iagoldbe)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Blake Winton (bwinton)&lt;br /&gt;
 VP: Nick Harvey (njaharve)&lt;br /&gt;
 TR: Nikita Borisov (nborisov)&lt;br /&gt;
 SE: Viet-Trung Luu (vluu)&lt;br /&gt;
 SA: Drew Hamilton (awhamilt)&lt;br /&gt;
 OF: Jillian Arnott (jarnott)&lt;br /&gt;
 LI: Ross Ridge (rridge)&lt;br /&gt;
 FL: Devin Carless (dccarles)&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Shannon Mann (sjbmann) &lt;br /&gt;
 VP: Joe &amp;quot;Frosh&amp;quot; Deu Ngoc (jtdeungo)    resigned (heavy workload)&lt;br /&gt;
 TR: Michal Van Biesbrouck (mlvanbie) &lt;br /&gt;
 SE: Nikita Borisov (nborisov) &lt;br /&gt;
 SA: Chris Rovers &lt;br /&gt;
 OF: Dax Hutcheon (ddhutche) &lt;br /&gt;
 LI: Aliz Csenki (acsenki) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel) &lt;br /&gt;
 DE: Skuld (no uwuserid yet...)&lt;br /&gt;
&lt;br /&gt;
=1997 =&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Dima Brodsky &lt;br /&gt;
 VP: Nikita Borisov &lt;br /&gt;
 TR: Stephen Mills&lt;br /&gt;
 SE: Evan Jones (ejones)&lt;br /&gt;
 SA: Alex Brodsky&lt;br /&gt;
 OF: Chris Doherty&lt;br /&gt;
 LI: Matt Corks &lt;br /&gt;
 FL: Paul Prescod&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Chris Rovers (cdrovers) &lt;br /&gt;
 VP: Michael van Biesbrouck (mlvanbie) &lt;br /&gt;
 TR: Somsack Tsai (stsai) &lt;br /&gt;
 SE: Matt Corks (mvcorks)&lt;br /&gt;
 SA: Lennart Sorensen (lsorense) &lt;br /&gt;
 LI: Chmielowiec (archmiel) &lt;br /&gt;
 OF: Devin Carless (dccarles) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel)&lt;br /&gt;
&lt;br /&gt;
= 1998 =&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Suresh Naidu  &lt;br /&gt;
 VP: Viet-Trung Luu &lt;br /&gt;
 TR: Tim Coleman &lt;br /&gt;
 SE: Dax Hutcheon &lt;br /&gt;
 Librarian: Dax Hutcheon &lt;br /&gt;
 Flasher: Dax Hutcheon &lt;br /&gt;
 Webmaster: Dax Hutcheon &lt;br /&gt;
 SA: Robin Powell&lt;br /&gt;
 OF: Aaron Chmielowiec&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
 Position	Name	You might call them...&lt;br /&gt;
 President	roconnor	Russell O&#039;Connor&lt;br /&gt;
 Vice-president	trwcolem	Tim Coleman&lt;br /&gt;
 Treasurer	knzarysk	Karl Zaryski&lt;br /&gt;
 Secretary	(bwinton)	(Blake Winton)&lt;br /&gt;
 Sysadmin	wbiggs	Billy Biggs&lt;br /&gt;
 Librarian	snaidu	Suresh Naidu&lt;br /&gt;
 Flasher	pechrysl	Paul Chrysler&lt;br /&gt;
 Office Manager	dccarles	Devin Carless&lt;br /&gt;
 WWWW	trwcolem	Tim Coleman&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
 President	Joe Deu Ngoc	jtdeungo&lt;br /&gt;
 Vice-President	Wai Ling Yee	wlyee&lt;br /&gt;
 Treasurer	Fjord	j2lynn&lt;br /&gt;
 Secretary	Matt Corks	mvcorks&lt;br /&gt;
 Sysadmin	Andrew Hamilton	awhamilt&lt;br /&gt;
&lt;br /&gt;
 World Wide Web Wench	Dax Hutcheon	ddhutche&lt;br /&gt;
 Office Manager	Richard Bell	rlbell&lt;br /&gt;
 Librarian	Damian Gryski	dgryski&lt;br /&gt;
 Flasher	Paul Chrysler	pechrysl&lt;br /&gt;
 Official Deity	Ian Goldberg	iagoldbe&lt;br /&gt;
 Official Chairbeing	Calum T. Dalek	calum&lt;br /&gt;
&lt;br /&gt;
=1999=&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
=2000=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Will Chartrand (wgchartr)&lt;br /&gt;
 VP: Gavin Duggan (geduggan)&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: Lennart Sorensen (lsorense)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP: &lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: bioster&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2001=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
=2002=&lt;br /&gt;
http://www.mathnews.uwaterloo.ca/Issues/mn8902/cscflash.php&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Billy Biggs&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: Melissa Basinger&lt;br /&gt;
 SE: James Perry&lt;br /&gt;
 SA: Barry Genova&lt;br /&gt;
 Librarian: Ryan Golbeck&lt;br /&gt;
 Webmaster: Jonathan Beverley&lt;br /&gt;
 Office Manager: Sayan Li&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: Alex Pop&lt;br /&gt;
 VP: Melissa Basinger&lt;br /&gt;
 TR: Siyan Li&lt;br /&gt;
 SE: James A Morrison&lt;br /&gt;
 SA: Jonathan Beverley&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: James A. Morrison&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: James Perry&lt;br /&gt;
 SE: Michael Biggs&lt;br /&gt;
 SA: Ryan Golbeck&lt;br /&gt;
 Librarian: Mark Sherry, Cassandra Schopf&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
=2003=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Kannan Vijayan (kvijayan)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: James Perry (jeperry)&lt;br /&gt;
 SE: Wojciech Kosnik (wkosnik)&lt;br /&gt;
 SA: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 LI: Simon Law (sfllaw)&lt;br /&gt;
 WM: Julie Lavoie (jlavoie)&lt;br /&gt;
&lt;br /&gt;
=== Spring===&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: Tor Myklebust (tmyklebu)&lt;br /&gt;
 SE: James Perry (jeperry)&lt;br /&gt;
 SA: Simon Law (sfllaw)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2004=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Simon Law (sfllaw)&lt;br /&gt;
 VP: fspacek&lt;br /&gt;
 TR: ljain&lt;br /&gt;
 SE: Julie Lavoie (jlavoie)&lt;br /&gt;
 SA: Tor Myklebust(tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: dnmorton ?&lt;br /&gt;
 VP: Tim Loach (tloach)&lt;br /&gt;
 TR: Michael Biggs (mbiggs)&lt;br /&gt;
 SE: Lesley Northam (lanortha)&lt;br /&gt;
 SA: &lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: jeperry&lt;br /&gt;
 VP: mtsay&lt;br /&gt;
 TR: Mark Sherry (mdsherry)&lt;br /&gt;
 SE: Tor Myklebust (tmyklebu)&lt;br /&gt;
 SA: jlavoie&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2005=&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: mtsay&lt;br /&gt;
 VP: Lesley Northam (lanortha)&lt;br /&gt;
 TR: Holden Karau (hkarau)&lt;br /&gt;
 SE: domorton&lt;br /&gt;
 SA: Tor Myklebust (tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: Mark Sherry (mdsherry)&lt;br /&gt;
 VP: Martin Kess (mdkess)&lt;br /&gt;
 TR: Ali Piccioni (apiccion)&lt;br /&gt;
 SE: Michael Biggs (mbiggs)&lt;br /&gt;
 SA: Tor Myklebust (tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Tim Loach (tloach)&lt;br /&gt;
 VP: Lesley Northam (lanortha)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: The Professor&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2006=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Tor Myklebust (tmyklebu)&lt;br /&gt;
 VP: Michael Druker (mdruker)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: Mark Sherry (mdsherry)&lt;br /&gt;
 SA: William O&#039;Connor (woconnor)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: David Bartley (dtbartle)&lt;br /&gt;
 VP: David Belanger (dbelange)&lt;br /&gt;
 TR: David Tenty (daltenty)&lt;br /&gt;
 SE: Chris Evensen (cevensen)&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Martin Kess (mdkess)&lt;br /&gt;
 VP: Mark Sherry (mdsherry)&lt;br /&gt;
 TR: Sylvan L. Mably (slmably)&lt;br /&gt;
 SE: Caelyn McAulay (cmcaulay) &lt;br /&gt;
 SA: William O&#039;Connor (woconnor)&lt;br /&gt;
&lt;br /&gt;
=2007=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: David Bartley (dtbartle)&lt;br /&gt;
 VP: David Belanger (dbelange)&lt;br /&gt;
 TR: Caelyn McAulay (cmcaulay)&lt;br /&gt;
 SE: David Tenty (daltenty)&lt;br /&gt;
 SA: Holden Karau (hkarau)&lt;br /&gt;
 Webmaster: jnopporn&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Gaelan D&#039;costa (gdcosta)&lt;br /&gt;
 VP: Kyle Larose (kmlarose)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Erik Louie (elouie)&lt;br /&gt;
 SA: Michael Spang (mspang)&lt;br /&gt;
 Librarian: David Tenty (daltenty)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: Holden Karau (hkarau)&lt;br /&gt;
 VP: Alex McCausland (amccausl)&lt;br /&gt;
 TR: Dominik Chlobowski (dchlobow)&lt;br /&gt;
 SE: Sean Cumming (sgcummin)&lt;br /&gt;
 SA: David Tenty (daltenty)&lt;br /&gt;
 OF:&lt;br /&gt;
 WW: dtbartle / jnopporn&lt;br /&gt;
&lt;br /&gt;
=2008=&lt;br /&gt;
===Winter ===&lt;br /&gt;
 PR: Sean Cumming (sgcummin)&lt;br /&gt;
 VP: Matt Lawrence (m3lawren)&lt;br /&gt;
 TR: Mateusz Tarkowski (mtarkows)&lt;br /&gt;
 SE: Edgar Bering (ebering)&lt;br /&gt;
 SA: Jordan Saunders (jmsaunde)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Summer ===&lt;br /&gt;
 PR: b4taylor&lt;br /&gt;
 VP: qxi&lt;br /&gt;
 TR: m3lawren&lt;br /&gt;
 SE: nguenthe&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: Matthew Lawrence (m3lawren)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Gregson (mgregson)&lt;br /&gt;
 SE: James Simpson (j2simpso) resigned for medical reasons, replaced by Dominik &#039;Domo&#039; Chłobowski&lt;br /&gt;
 SA: Kyle Spaans (kspaans)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2009=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Michael Gregson (mgregson)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Brennan Taylor (b4taylor)&lt;br /&gt;
 SE: James Simpson (j2simpso)  resigned for business reasons, replaced by Rebecca Putinski (rjputins) &lt;br /&gt;
 SA: Jacob Parker (j3parker) &lt;br /&gt;
 OF: XinChi Yang / Sapphyre Gervais (x23yang / sagervai) (both)&lt;br /&gt;
&lt;br /&gt;
===Spring ===&lt;br /&gt;
 PR: Michael Spang (mspang)&lt;br /&gt;
 VP: Jacob Parker (j3parker)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Anthony Brennan (a2brenna)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Spang (mspang)&lt;br /&gt;
 SE: Brennan Taylor (b4taylor)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Rebecca Putinski (rjputins)&lt;br /&gt;
&lt;br /&gt;
=2010=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Kyle Spaans (kspaans)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Ajnu Jacob (ajacob)&lt;br /&gt;
 SA: Matthew Thiffault (mthiffau)&lt;br /&gt;
 OF: Jacob Parker (j3parker)&lt;br /&gt;
&lt;br /&gt;
 Keyed office staffers: j3camero,jdonland,m2ellis,mimcpher,nsasherr&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Jeff Cameron (j3camero)&lt;br /&gt;
 VP: Brennan Taylor (b4taylor)&lt;br /&gt;
 TR: Vardhan Mudunuru (vmudunur)&lt;br /&gt;
 SE: Matthew Lawrence (m3lawren)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Edgar Bering (ebering)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Rebecca Putinski (rjputins)&lt;br /&gt;
 SE: Kyle Spaans (kspaans)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Amir Sayed Khader (askhader)&lt;br /&gt;
&lt;br /&gt;
=2011=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Edgar Bering (ebering)&lt;br /&gt;
 VP: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Elana &amp;quot;Alana&amp;quot; Hashman (ehashman)&lt;br /&gt;
 SA: Peter &amp;quot;Bofh&amp;quot; Barfuss (pbarfuss)&lt;br /&gt;
 OF: Marc Burns (Marc Burns)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Matthew Thiffault (mthiffau)&lt;br /&gt;
 VP: Matthew McPherrin (mimcpher)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Kwame Andrew Ansong (kansong)&lt;br /&gt;
 SA: Jeremy Brandon Roman (jbroman)&lt;br /&gt;
 OF: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Katharine Hyatt (kshyatt)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Elana Hashman (ehashman)&lt;br /&gt;
 SA: Anthony &amp;quot;hatguy/hotgay&amp;quot; Brennan (a2brenna)&lt;br /&gt;
 OF: Kyle Spaans (kspaans)&lt;br /&gt;
 LIB: Edgar Bering (ebering)&lt;br /&gt;
&lt;br /&gt;
=2012=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Elana Hashman (ehashman)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Luqman Aden (laden)&lt;br /&gt;
 LIB: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
&lt;br /&gt;
===Summer===&lt;br /&gt;
 PR: Anthony Brennan (a2brenna)&lt;br /&gt;
 VP: Luqman Aden (laden)&lt;br /&gt;
 TR: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SE: Elana Hashman (ehashman)&lt;br /&gt;
 SA: Sarah Harvey (sharvey)&lt;br /&gt;
 OF: Marc Burns (m4burns)&lt;br /&gt;
 LIB: John Ladan (jladan)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Salem Talha (satalha)&lt;br /&gt;
 TR: Jennifer Wong (jy2wong)&lt;br /&gt;
 SE: Elana Hashman (ehashman), resigned&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Luqman Aden (laden)&lt;br /&gt;
 LIB: John Ladan (jladan)&lt;br /&gt;
&lt;br /&gt;
=2013=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Anthony Brennan (a2brenna)&lt;br /&gt;
 VP: Marc Burns (m4burns)&lt;br /&gt;
 TR: John Mumford (jy2wong)&lt;br /&gt;
 SE: Matt Olechnowicz (mgolechn)&lt;br /&gt;
 SA: Sarah Harvey (sharvey)&lt;br /&gt;
 OF: Bryan Coutts (b2coutts)&lt;br /&gt;
 LIB: Matthew McPherrin (mimcpher)&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=SCS_Guide&amp;diff=3319</id>
		<title>SCS Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=SCS_Guide&amp;diff=3319"/>
		<updated>2012-10-04T15:14:13Z</updated>

		<summary type="html">&lt;p&gt;M4burns: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From time to time we work with the School of Computer Science. This page documents the various interactions for future exec.&lt;br /&gt;
&lt;br /&gt;
= Meetings with the Director =&lt;br /&gt;
&lt;br /&gt;
As of W09 we have monthly meetings set up with the Associate Director on the third Monday of every month. This was picked so that we could have new Executives in place for the first meeting of a term. Get in touch with the&lt;br /&gt;
director (currently Mark Giesbrecht at x36582) when you get elected to pick a time. These meetings are useful to discuss the current state of the curriculum, school wide things, SCS-CSC cooperation, and the money that they give us. The AD&#039;s time is usually valuable so prepare yourself for the meetings. SCS likes us a lot as of this writing, continue the good relationship.&lt;br /&gt;
&lt;br /&gt;
Things that the AD will do at present: listen to your complaints regarding the state of the curriculum, put the SCS logo on invitation letters to potential speaker, give you money.&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
SCS in F08 under Jay Black made a tentative commitment to a 10k/year operating budget for the CSC from SCS. We&#039;ve submitted a proposal for the coming fiscal year but we may not get that amount due to the economic downturn. Feedback on this will be posted here with the details of what was funded.&lt;br /&gt;
&lt;br /&gt;
To get reimbursement contact the SCS Financial Officer (Anne Turnbull at present) wit the request, she will give you University Accounts if they&#039;re needed for A.V., theater booking, or purchasing. She can also answer questions you have regarding the various forms you may need to fill out to get money.&lt;br /&gt;
&lt;br /&gt;
= The SCS Office =&lt;br /&gt;
&lt;br /&gt;
The SCS office handles keys for the CSC office and booking of rooms under jurisdiction of SCS on behalf of the CSC. As of this writing, SCS office staff are very busy, and have no time to deal with matters other than those listed here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Finance:Budget/F2012&amp;diff=3317</id>
		<title>Finance:Budget/F2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Finance:Budget/F2012&amp;diff=3317"/>
		<updated>2012-09-26T14:23:15Z</updated>

		<summary type="html">&lt;p&gt;M4burns: Created page with &amp;quot;==Proposed Budget==  {| class=&amp;quot;wikitable&amp;quot; |+ Fall 2012 |- | &amp;#039;&amp;#039;&amp;#039;Revenue&amp;#039;&amp;#039;&amp;#039; || |- | * MathSoc Members || 262 |- | * Non-MathSoc Members || 141 |- | * Mathsoc Funding Cap || ($2 + $…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Proposed Budget==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Fall 2012&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Revenue&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| * MathSoc Members || 262&lt;br /&gt;
|-&lt;br /&gt;
| * Non-MathSoc Members || 141&lt;br /&gt;
|-&lt;br /&gt;
| * Mathsoc Funding Cap || ($2 + $7.50) * 262 = 2489.00&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expenses (TO BE MODIFIED)&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Social Events&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| * CSC Goes Outside. Est. Turnout: 25-30. Frisbee, campfire, food. || $60 Food. $40 other supplies.&lt;br /&gt;
|-&lt;br /&gt;
| * Movie night.  || $40 (Popcorn &amp;amp; Soda)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Social Total&#039;&#039;&#039; || 140&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Academic Events&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| * 3 Code Parties || 180&lt;br /&gt;
|-&lt;br /&gt;
| * CSC Contest.  food+prizes || 150&lt;br /&gt;
|-&lt;br /&gt;
| * 3 Member Talks || 3 * 30 = 90.&lt;br /&gt;
|-&lt;br /&gt;
| * 2 Prof talks. || 2 * 50 = 100.&lt;br /&gt;
|-&lt;br /&gt;
| * RIM events. || $150&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Academic Total&#039;&#039;&#039; || $680&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Office Supplies&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| * CDs || 20&lt;br /&gt;
|-&lt;br /&gt;
| * Whiteboard Markers || $35&lt;br /&gt;
|-&lt;br /&gt;
| * Handvac for keyboards || $70&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Office Supplies Total&#039;&#039;&#039; || 125&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Technology&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| * Tool shelf/box type thing for tools || 100&lt;br /&gt;
|-&lt;br /&gt;
| * Tackle box for electronics components || 30&lt;br /&gt;
|-&lt;br /&gt;
| * corn-syrup replacement drives (2 x 1TB drives) || 2x$150 = $300 (+$11 shipping)&lt;br /&gt;
|-&lt;br /&gt;
| * Hardware for HFCS: RAM, CPU, Disk || 0&lt;br /&gt;
|-&lt;br /&gt;
| * 2x Computer mice. || $100&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Technology Total&#039;&#039;&#039; || 530&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Miscellaneous&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| * Bank Fees || 17&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Other Total&#039;&#039;&#039; || 17&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Total&#039;&#039;&#039; || 1482&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;MathSoc Funding Cap&#039;&#039;&#039; || 1482&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Items carried over from last two terms:&lt;br /&gt;
* bank fees that weren&#039;t claimed.  VPF, can you find amount please?&lt;br /&gt;
* CSC member talks from Winter term.  I don&#039;t have the latest budget from CSC, so need to find the amount for this.  I&#039;ll have it by the budget meeting, or VPF, can you get from your records?  Ifaz kept a spreadsheet, I think.&lt;br /&gt;
&lt;br /&gt;
[[Category:Budget|Budget201205]]&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Robot_Arm&amp;diff=3130</id>
		<title>Robot Arm</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Robot_Arm&amp;diff=3130"/>
		<updated>2012-01-20T23:32:31Z</updated>

		<summary type="html">&lt;p&gt;M4burns: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software =&lt;br /&gt;
&lt;br /&gt;
The robot arm was purchased with the intent of being used to create a mechanical turk.&lt;br /&gt;
The code going towards this goal lives in ~ssalbiz/arm, use &amp;quot;git clone ~ssalbiz/arm&amp;quot; to make a copy.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
The arm is a [http://www.lynxmotion.com/c-130-al5d.aspx Lynxmotion AL5D].&lt;br /&gt;
&lt;br /&gt;
= Operation =&lt;br /&gt;
Currently the arm is controlled by interfacing directly with /dev/ttySx or /dev/ttyUSBx . The syntax for controlling this is by sending the following string to the board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; T&amp;lt;time&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can control multiple servos with one command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; #&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; T&amp;lt;time&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S and T are optional parameters&lt;br /&gt;
&lt;br /&gt;
Key:&lt;br /&gt;
* &amp;lt;servo id&amp;gt; - id of the servo being controlled (includes jaw)&lt;br /&gt;
* &amp;lt;position&amp;gt; - servo rotation position, generally between (500,2500)&lt;br /&gt;
* &amp;lt;speed&amp;gt; - speed of rotation; 100 means 10s to rorate 90&amp;amp;deg;; leaving this off generates fast movement, 400 seems like a &amp;quot;safe&amp;quot; value?&lt;br /&gt;
* &amp;lt;time&amp;gt; - time it takes to complete the motion in ms; specified once for the entire motion&lt;br /&gt;
&lt;br /&gt;
if both speed(s) and time are specified, time is a &amp;quot;minimum&amp;quot; and speed is a &amp;quot;maximum&amp;quot;, i.e. the motion will take at minimum T milliseconds, but servoA will move no faster than speed SA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Servo key and degree of motion ==&lt;br /&gt;
* 0 - Base&lt;br /&gt;
* 1 - Shoulder&lt;br /&gt;
* 2 - Elbow&lt;br /&gt;
* 3 - Wrist&lt;br /&gt;
* 4 - Grip&lt;br /&gt;
* 5 - Wrist Rotate&lt;br /&gt;
&lt;br /&gt;
= Purpose =&lt;br /&gt;
The current purpose of the robot arm is to make an entity that can play chess against a human.&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
* a manual [http://www.lynxmotion.com/images/data/rios106h.pdf]&lt;br /&gt;
* j3parker&#039;s [http://csclub.uwaterloo.ca/~j3parker/arm.png 3D model of the arm]&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Robot_Arm&amp;diff=3129</id>
		<title>Robot Arm</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Robot_Arm&amp;diff=3129"/>
		<updated>2012-01-19T02:32:06Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* External Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hardware =&lt;br /&gt;
The arm is a [http://www.lynxmotion.com/c-130-al5d.aspx Lynxmotion AL5D].&lt;br /&gt;
&lt;br /&gt;
= Operation =&lt;br /&gt;
Currently the arm is controlled by interfacing directly with /dev/ttySx or /dev/ttyUSBx . The syntax for controlling this is by sending the following string to the board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; T&amp;lt;time&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can control multiple servos with one command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; #&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; T&amp;lt;time&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S and T are optional parameters&lt;br /&gt;
&lt;br /&gt;
Key:&lt;br /&gt;
* &amp;lt;servo id&amp;gt; - id of the servo being controlled (includes jaw)&lt;br /&gt;
* &amp;lt;position&amp;gt; - servo rotation position, generally between (500,2500)&lt;br /&gt;
* &amp;lt;speed&amp;gt; - speed of rotation; 100 means 10s to rorate 90&amp;amp;deg;; leaving this off generates fast movement, 400 seems like a &amp;quot;safe&amp;quot; value?&lt;br /&gt;
* &amp;lt;time&amp;gt; - time it takes to complete the motion in ms; specified once for the entire motion&lt;br /&gt;
&lt;br /&gt;
if both speed(s) and time are specified, time is a &amp;quot;minimum&amp;quot; and speed is a &amp;quot;maximum&amp;quot;, i.e. the motion will take at minimum T milliseconds, but servoA will move no faster than speed SA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Servo key and degree of motion ==&lt;br /&gt;
* 0 - Base&lt;br /&gt;
* 1 - Shoulder&lt;br /&gt;
* 2 - Elbow&lt;br /&gt;
* 3 - Wrist&lt;br /&gt;
* 4 - Grip&lt;br /&gt;
* 5 - Wrist Rotate&lt;br /&gt;
&lt;br /&gt;
= Purpose =&lt;br /&gt;
The current purpose of the robot arm is to make an entity that can play chess against a human.&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
* a manual [http://www.lynxmotion.com/images/data/rios106h.pdf]&lt;br /&gt;
* j3parker&#039;s [http://csclub.uwaterloo.ca/~j3parker/arm.png 3D model of the arm]&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Robot_Arm&amp;diff=3128</id>
		<title>Robot Arm</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Robot_Arm&amp;diff=3128"/>
		<updated>2012-01-19T02:26:48Z</updated>

		<summary type="html">&lt;p&gt;M4burns: /* Servo key and degree of motion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hardware =&lt;br /&gt;
The arm is a [http://www.lynxmotion.com/c-130-al5d.aspx Lynxmotion AL5D].&lt;br /&gt;
&lt;br /&gt;
= Operation =&lt;br /&gt;
Currently the arm is controlled by interfacing directly with /dev/ttySx or /dev/ttyUSBx . The syntax for controlling this is by sending the following string to the board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; T&amp;lt;time&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can control multiple servos with one command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; #&amp;lt;servo id&amp;gt; P&amp;lt;position&amp;gt; S&amp;lt;speed&amp;gt; T&amp;lt;time&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S and T are optional parameters&lt;br /&gt;
&lt;br /&gt;
Key:&lt;br /&gt;
* &amp;lt;servo id&amp;gt; - id of the servo being controlled (includes jaw)&lt;br /&gt;
* &amp;lt;position&amp;gt; - servo rotation position, generally between (500,2500)&lt;br /&gt;
* &amp;lt;speed&amp;gt; - speed of rotation; 100 means 10s to rorate 90&amp;amp;deg;; leaving this off generates fast movement, 400 seems like a &amp;quot;safe&amp;quot; value?&lt;br /&gt;
* &amp;lt;time&amp;gt; - time it takes to complete the motion in ms; specified once for the entire motion&lt;br /&gt;
&lt;br /&gt;
if both speed(s) and time are specified, time is a &amp;quot;minimum&amp;quot; and speed is a &amp;quot;maximum&amp;quot;, i.e. the motion will take at minimum T milliseconds, but servoA will move no faster than speed SA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Servo key and degree of motion ==&lt;br /&gt;
* 0 - Base&lt;br /&gt;
* 1 - Shoulder&lt;br /&gt;
* 2 - Elbow&lt;br /&gt;
* 3 - Wrist&lt;br /&gt;
* 4 - Grip&lt;br /&gt;
* 5 - Wrist Rotate&lt;br /&gt;
&lt;br /&gt;
= Purpose =&lt;br /&gt;
The current purpose of the robot arm is to make an entity that can play chess against a human.&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
* a manual&lt;br /&gt;
* j3parker&#039;s [http://csclub.uwaterloo.ca/~j3parker/arm.png 3D model of the arm]&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
	<entry>
		<id>https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3115</id>
		<title>Past Executive</title>
		<link rel="alternate" type="text/html" href="https://wiki.csclub.uwaterloo.ca/index.php?title=Past_Executive&amp;diff=3115"/>
		<updated>2012-01-12T22:14:39Z</updated>

		<summary type="html">&lt;p&gt;M4burns: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Definitions =&lt;br /&gt;
 #define PR President&lt;br /&gt;
 #define VP Vice-president&lt;br /&gt;
 #define TR Treasurer&lt;br /&gt;
 #define SE Secretary&lt;br /&gt;
 #define SA Sysadmin&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define LI Librarian&lt;br /&gt;
 #define FL Flasher&lt;br /&gt;
 #define DE Deity&lt;br /&gt;
 #define WW Webmaster&lt;br /&gt;
 #define OF Office Manager&lt;br /&gt;
 #define SE-TR Secretary-Treasurer (Position was split)&lt;br /&gt;
&lt;br /&gt;
=Founding 1967-1968=&lt;br /&gt;
&lt;br /&gt;
 Sponsor - J. Peter Sprung&lt;br /&gt;
 PR: K. Rugger&lt;br /&gt;
 VP: R. Jaques&lt;br /&gt;
 SE-TR: G. Sutherland&lt;br /&gt;
&lt;br /&gt;
 Founding Members:&lt;br /&gt;
 B. Kindree&lt;br /&gt;
 R. Melen&lt;br /&gt;
 V. Neglia&lt;br /&gt;
 R. Charney&lt;br /&gt;
 R. Truman&lt;br /&gt;
 Glenn Berry&lt;br /&gt;
 D. Meek&lt;br /&gt;
&lt;br /&gt;
=1968-1969=&lt;br /&gt;
&lt;br /&gt;
 SE-TR: Glenn Berry&lt;br /&gt;
&lt;br /&gt;
=1969-1970=&lt;br /&gt;
&lt;br /&gt;
Unknown, only one letter found in the folder &#039;ACM History&#039; addressed to Glenn Berry, which makes it likely that he was SE-TR once again. May be indicated in membership lists. The club appears to have died this academic year.&lt;br /&gt;
&lt;br /&gt;
===A note on ACM affiliation===&lt;br /&gt;
&lt;br /&gt;
The first attempt at joining the ACM was started with an informal inquiry Dec 5, 1967. This lead to a series of constitution edits (working towards affiliation) in Winter 1968. There was a break for the spring (no correspondence found, I presume we were waiting on a reply). In the fall records indicate that our constitution and chartering was rejected, further correspondence was sent in Fall 1968 by Glenn Berry. A new inquiry, seemingly unaware of the first was sent Dec 7, 1970 &lt;br /&gt;
&lt;br /&gt;
=1971=&lt;br /&gt;
&lt;br /&gt;
James W. Welch is the only person sending letters for the club. Later signs them Vice-President. Continues this for most of the year. Either he was VP throughout 3 terms or we were on calendar year elections then. &lt;br /&gt;
&lt;br /&gt;
=1972=&lt;br /&gt;
&lt;br /&gt;
It appears we visited Western and Western visited us this year (there is some reference to a similar occurrence the year previous). Documents from 1973 indicate a termly exec structure, this probably goes back to 1972.&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: Mike Campbell&lt;br /&gt;
 SE: Doug Lacy&lt;br /&gt;
&lt;br /&gt;
there is also stuff from James W. Welch without a position. Considering his work in the founding and that the letters are speaker invitations he is, with high probability, VP this term.&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Ian McIntosh&lt;br /&gt;
&lt;br /&gt;
=1973=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
Either secretary or VP: Jim Parry (sent the only letter on file, but it is a speaker invite, did not sign his position).&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Jim Parry&lt;br /&gt;
 VP: Ray Walden&lt;br /&gt;
 TR: Slavko Stemberger&lt;br /&gt;
 SE: Mario Festival&lt;br /&gt;
&lt;br /&gt;
=1974-1977=&lt;br /&gt;
&lt;br /&gt;
 Faculty Sponsor: Morven Gentleman??&lt;br /&gt;
&lt;br /&gt;
 Peter Raynham reports (first hand account): president for at least 2 or 3 terms in this period.&lt;br /&gt;
 Sylvia Eng: 1975/6 as some position.&lt;br /&gt;
 Dave Buckingham: a VP at some point&lt;br /&gt;
 Allison Nolan: 1977 time&lt;br /&gt;
 Peter ??: 1977&lt;br /&gt;
 Russel Crook???&lt;br /&gt;
 Dennis Ritchie came&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=1988=&lt;br /&gt;
&lt;br /&gt;
James B- was president in Winter 88 (signature hard to read).&lt;br /&gt;
Tim Timar - cc&#039;d on memos/mentioned on mathsoc minutes in 1987/88.&lt;br /&gt;
The Sysadmin and Office Manager positions seem to have been created somewhere in here. The &#039;Record Management Profile&#039; that Robyn Stewart did as an assignment in 1991-1992 for some class at UBC&lt;br /&gt;
indicates the existence of both positions. We acquired an HP-9000 in the summer of 1988 and as this was out first &amp;quot;real&amp;quot; computer (previously we had an IBM PC and terminal), the sysadmin position was created, starting with the Fall 1988 term.&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 SA: Wade Richards&lt;br /&gt;
&lt;br /&gt;
=1989=&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989-big.jpg&lt;br /&gt;
&lt;br /&gt;
Left to right:  Jim Boritz (bottom), Wade Richards (top), Ted Timar, ???, Keven Smith, Bill Gates (not exec), Angela Chambers, Ross Ridge (top), Sean Goggin (bottom), ??? &lt;br /&gt;
&lt;br /&gt;
 PR: Kevin W. Smith ?? (derived from a signature, may be a bad reading)&lt;br /&gt;
 VP: Angela Chambers&lt;br /&gt;
 TR:&lt;br /&gt;
 SE: Sean Goggin&lt;br /&gt;
 SA: Wade Richards / Ross Ridge&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Sean Goggin&lt;br /&gt;
 SA: Ross Ridge&lt;br /&gt;
&lt;br /&gt;
=1990=&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 SE: Robyn Steward&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Wade Richards&lt;br /&gt;
 Kivi Shapiro - attended mathsoc meeting on our behalf. - Censured by mathsoc for his actions during the election.&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
 SE: Robyn Stewart - attended mathsoc meeting on our behalf.&lt;br /&gt;
&lt;br /&gt;
=1991=&lt;br /&gt;
===Winter===&lt;br /&gt;
 Shannon Mann - attended mathsoc meeting on our behalf.&lt;br /&gt;
 Ed Bourne - attended mathsoc meeting on our behalf.&lt;br /&gt;
 SE: Robyn Stewart&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 Jason Knell - attended mathsoc meeting on our and PMC&#039;s behalf.&lt;br /&gt;
===Fall===&lt;br /&gt;
 Wiktor Wiewiorowski - attended mathsoc meeting on our behalf this term.&lt;br /&gt;
&lt;br /&gt;
=1992=&lt;br /&gt;
===Winter===&lt;br /&gt;
 SE: Brent Williams&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick&lt;br /&gt;
 TR: Stephen Mills&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
=1993=&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
 TR: Mark Tompsett &lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
=1994=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Ian Goldberg (?)&lt;br /&gt;
 SE: Tom Rathbourne&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Dale Wick (?)&lt;br /&gt;
 SA: Ian Goldberg (?)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Ross Ridge&lt;br /&gt;
 VP: Tom Rathbourne (?)&lt;br /&gt;
 SA: Zygo Blaxell&lt;br /&gt;
 LI: Michael Van Biesbrouck&lt;br /&gt;
&lt;br /&gt;
=1995=&lt;br /&gt;
===Winter===&lt;br /&gt;
===Spring===&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Amy Brown (arbrown) &lt;br /&gt;
 VP: Christina Norman (cbnorman)&lt;br /&gt;
 TR: Steven Mills (samills)&lt;br /&gt;
 SE: Allyson Graham (akgraham)&lt;br /&gt;
 SA: Gavin Peters&lt;br /&gt;
&lt;br /&gt;
=1996=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Nikita Borisov (nborisov)&lt;br /&gt;
 VP: Joseph Deu Ngoc (dtdeungo) &lt;br /&gt;
 TR: Stephen Mills (samills)&lt;br /&gt;
 SE: Sharlene Schmeichel (saschmei)&lt;br /&gt;
 SA: Dave Brown (dagbrown)&lt;br /&gt;
 OF: Somsack Tsai (stsai)&lt;br /&gt;
 LI: Devin Carless (dccarles)&lt;br /&gt;
 FL: Allyson Graham (akgraham)&lt;br /&gt;
 DE: Ian Goldberg (iagoldbe)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Blake Winton (bwinton)&lt;br /&gt;
 VP: Nick Harvey (njaharve)&lt;br /&gt;
 TR: Nikita Borisov (nborisov)&lt;br /&gt;
 SE: Viet-Trung Luu (vluu)&lt;br /&gt;
 SA: Drew Hamilton (awhamilt)&lt;br /&gt;
 OF: Jillian Arnott (jarnott)&lt;br /&gt;
 LI: Ross Ridge (rridge)&lt;br /&gt;
 FL: Devin Carless (dccarles)&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Shannon Mann (sjbmann) &lt;br /&gt;
 VP: Joe &amp;quot;Frosh&amp;quot; Deu Ngoc (jtdeungo)    resigned (heavy workload)&lt;br /&gt;
 TR: Michal Van Biesbrouck (mlvanbie) &lt;br /&gt;
 SE: Nikita Borisov (nborisov) &lt;br /&gt;
 SA: Chris Rovers &lt;br /&gt;
 OF: Dax Hutcheon (ddhutche) &lt;br /&gt;
 LI: Aliz Csenki (acsenki) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel) &lt;br /&gt;
 DE: Skuld (no uwuserid yet...)&lt;br /&gt;
&lt;br /&gt;
=1997 =&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Dima Brodsky &lt;br /&gt;
 VP: Nikita Borisov &lt;br /&gt;
 TR: Stephen Mills&lt;br /&gt;
 SE: Evan Jones (ejones)&lt;br /&gt;
 SA: Alex Brodsky&lt;br /&gt;
 OF: Chris Doherty&lt;br /&gt;
 LI: Matt Corks &lt;br /&gt;
 FL: Paul Prescod&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: Chris Rovers (cdrovers) &lt;br /&gt;
 VP: Michael van Biesbrouck (mlvanbie) &lt;br /&gt;
 TR: Somsack Tsai (stsai) &lt;br /&gt;
 SE: Matt Corks (mvcorks)&lt;br /&gt;
 SA: Lennart Sorensen (lsorense) &lt;br /&gt;
 LI: Chmielowiec (archmiel) &lt;br /&gt;
 OF: Devin Carless (dccarles) &lt;br /&gt;
 FL: Aaron Chmielowiec (archmiel)&lt;br /&gt;
&lt;br /&gt;
= 1998 =&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Suresh Naidu  &lt;br /&gt;
 VP: Viet-Trung Luu &lt;br /&gt;
 TR: Tim Coleman &lt;br /&gt;
 SE: Dax Hutcheon &lt;br /&gt;
 Librarian: Dax Hutcheon &lt;br /&gt;
 Flasher: Dax Hutcheon &lt;br /&gt;
 Webmaster: Dax Hutcheon &lt;br /&gt;
 SA: Robin Powell&lt;br /&gt;
 OF: Aaron Chmielowiec&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
 Position	Name	You might call them...&lt;br /&gt;
 President	roconnor	Russell O&#039;Connor&lt;br /&gt;
 Vice-president	trwcolem	Tim Coleman&lt;br /&gt;
 Treasurer	knzarysk	Karl Zaryski&lt;br /&gt;
 Secretary	(bwinton)	(Blake Winton)&lt;br /&gt;
 Sysadmin	wbiggs	Billy Biggs&lt;br /&gt;
 Librarian	snaidu	Suresh Naidu&lt;br /&gt;
 Flasher	pechrysl	Paul Chrysler&lt;br /&gt;
 Office Manager	dccarles	Devin Carless&lt;br /&gt;
 WWWW	trwcolem	Tim Coleman&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
 President	Joe Deu Ngoc	jtdeungo&lt;br /&gt;
 Vice-President	Wai Ling Yee	wlyee&lt;br /&gt;
 Treasurer	Fjord	j2lynn&lt;br /&gt;
 Secretary	Matt Corks	mvcorks&lt;br /&gt;
 Sysadmin	Andrew Hamilton	awhamilt&lt;br /&gt;
&lt;br /&gt;
 World Wide Web Wench	Dax Hutcheon	ddhutche&lt;br /&gt;
 Office Manager	Richard Bell	rlbell&lt;br /&gt;
 Librarian	Damian Gryski	dgryski&lt;br /&gt;
 Flasher	Paul Chrysler	pechrysl&lt;br /&gt;
 Official Deity	Ian Goldberg	iagoldbe&lt;br /&gt;
 Official Chairbeing	Calum T. Dalek	calum&lt;br /&gt;
&lt;br /&gt;
=1999=&lt;br /&gt;
&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
=2000=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Will Chartrand (wgchartr)&lt;br /&gt;
 VP: Gavin Duggan (geduggan)&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: Lennart Sorensen (lsorense)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP: &lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA: bioster&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2001=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: geduggan&lt;br /&gt;
 VP:&lt;br /&gt;
 TR:&lt;br /&gt;
 SE:&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
&lt;br /&gt;
=2002=&lt;br /&gt;
http://www.mathnews.uwaterloo.ca/Issues/mn8902/cscflash.php&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Billy Biggs&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: Melissa Basinger&lt;br /&gt;
 SE: James Perry&lt;br /&gt;
 SA: Barry Genova&lt;br /&gt;
 Librarian: Ryan Golbeck&lt;br /&gt;
 Webmaster: Jonathan Beverley&lt;br /&gt;
 Office Manager: Sayan Li&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
 PR: Alex Pop&lt;br /&gt;
 VP: Melissa Basinger&lt;br /&gt;
 TR: Siyan Li&lt;br /&gt;
 SE: James A Morrison&lt;br /&gt;
 SA: Jonathan Beverley&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
=== Fall ===&lt;br /&gt;
 PR: James A. Morrison&lt;br /&gt;
 VP: Stefanus Du Toit&lt;br /&gt;
 TR: James Perry&lt;br /&gt;
 SE: Michael Biggs&lt;br /&gt;
 SA: Ryan Golbeck&lt;br /&gt;
 Librarian: Mark Sherry, Cassandra Schopf&lt;br /&gt;
 Webmaster: Stefanus Du Toit&lt;br /&gt;
&lt;br /&gt;
=2003=&lt;br /&gt;
=== Winter ===&lt;br /&gt;
 PR: Kannan Vijayan (kvijayan)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: James Perry (jeperry)&lt;br /&gt;
 SE: Wojciech Kosnik (wkosnik)&lt;br /&gt;
 SA: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 LI: Simon Law (sfllaw)&lt;br /&gt;
 WM: Julie Lavoie (jlavoie)&lt;br /&gt;
&lt;br /&gt;
=== Spring===&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Stefanus Du Toit (sjdutoit)&lt;br /&gt;
 VP: Meg Darragh (m2darrag)&lt;br /&gt;
 TR: Tor Myklebust (tmyklebu)&lt;br /&gt;
 SE: James Perry (jeperry)&lt;br /&gt;
 SA: Simon Law (sfllaw)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2004=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Simon Law (sfllaw)&lt;br /&gt;
 VP: fspacek&lt;br /&gt;
 TR: ljain&lt;br /&gt;
 SE: Julie Lavoie (jlavoie)&lt;br /&gt;
 SA: Tor Myklebust(tmyklebu)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: dnmorton ?&lt;br /&gt;
 VP: tloach&lt;br /&gt;
 TR: mbiggs&lt;br /&gt;
 SE: lanortha&lt;br /&gt;
 SA: &lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: jeperry&lt;br /&gt;
 VP: mtsay&lt;br /&gt;
 TR: msherry&lt;br /&gt;
 SE: tmyklebu&lt;br /&gt;
 SA: jlavoie&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2005=&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: mtsay&lt;br /&gt;
 VP: lanortha&lt;br /&gt;
 TR: hkarau&lt;br /&gt;
 SE: domorton&lt;br /&gt;
 SA: tmyklebu&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
&lt;br /&gt;
 PR: msherry&lt;br /&gt;
 VP: mdkess&lt;br /&gt;
 TR: apiccon&lt;br /&gt;
 SE: mbiggs&lt;br /&gt;
 SA: tmyklebu&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Tim Loach&lt;br /&gt;
 VP: Lesley Northam&lt;br /&gt;
 TR: Caelyn McAulay&lt;br /&gt;
 SE: The Professor&lt;br /&gt;
 SA: hkarau&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2006=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
&lt;br /&gt;
 PR: tmyklebu&lt;br /&gt;
 VP: mdruker&lt;br /&gt;
 TR: Caelyn McAulay&lt;br /&gt;
 SE: Mark Sherry&lt;br /&gt;
 SA: Will O&#039;Conner&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: dtbartle&lt;br /&gt;
 VP: dbelange&lt;br /&gt;
 TR: David Tenty&lt;br /&gt;
 SE: cevensen&lt;br /&gt;
 SA: hkarau&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
&lt;br /&gt;
 PR: Martin Kess (mdkess)&lt;br /&gt;
 VP: Mark Sherry (mdsherry)&lt;br /&gt;
 TR: Sylvan L. Mably (slmably)&lt;br /&gt;
 SE: Caelyn McAulay (cmcaulay) &lt;br /&gt;
 SA: William O&#039;Connor (woconnor)&lt;br /&gt;
&lt;br /&gt;
=2007=&lt;br /&gt;
&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: dtbartle&lt;br /&gt;
 VP: dbelange &lt;br /&gt;
 TR: cmcaulay&lt;br /&gt;
 SE: dtenty&lt;br /&gt;
 SA: hkarau&lt;br /&gt;
 Webmaster: jnopporn&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: gdcosta&lt;br /&gt;
 VP: kmlarose&lt;br /&gt;
 TR: kspaans&lt;br /&gt;
 SE: elouie&lt;br /&gt;
 SA: mspang&lt;br /&gt;
 Librarian: daltenty&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: hkarau&lt;br /&gt;
 VP: amccausl&lt;br /&gt;
 TR: dchlobow &lt;br /&gt;
 SE: sgcummin&lt;br /&gt;
 SA: daltenty&lt;br /&gt;
 OF:&lt;br /&gt;
 WW: dtbartle / jnopporn&lt;br /&gt;
&lt;br /&gt;
=2008=&lt;br /&gt;
===Winter ===&lt;br /&gt;
 PR: sgcummin&lt;br /&gt;
 VP: m3lawren&lt;br /&gt;
 TR: mtarkows&lt;br /&gt;
 SE: ebering&lt;br /&gt;
 SA: jmsaunde&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Summer ===&lt;br /&gt;
 PR: b4taylor&lt;br /&gt;
 VP: qxi&lt;br /&gt;
 TR: m3lawren&lt;br /&gt;
 SE: nguenthe&lt;br /&gt;
 SA:&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall ===&lt;br /&gt;
 PR: Matthew Lawrence (m3lawren)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Gregson (mgregson)&lt;br /&gt;
 SE: James Simpson (j2simpso) resigned for medical reasons, replaced by Dominik &#039;Domo&#039; Chłobowski&lt;br /&gt;
 SA: Kyle Spaans (kspaans)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
=2009=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Michael Gregson (mgregson)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Brennan Taylor (b4taylor)&lt;br /&gt;
 SE: James Simpson (j2simpso)  resigned for business reasons, replaced by Rebecca Putinski (rjputins) &lt;br /&gt;
 SA: Jacob Parker (j3parker) &lt;br /&gt;
 OF: XinChi Yang / Sapphyre Gervais (x23yang / sagervai) (both)&lt;br /&gt;
&lt;br /&gt;
===Spring ===&lt;br /&gt;
 PR: Michael Spang (mspang)&lt;br /&gt;
 VP: Jacob Parker (j3parker)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Anthony Brennan (a2brenna)&lt;br /&gt;
 OF:&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Michael Spang (mspang)&lt;br /&gt;
 SE: Brennan Taylor (b4taylor)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Rebecca Putinski (rjputins)&lt;br /&gt;
&lt;br /&gt;
=2010=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Kyle Spaans (kspaans)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Sapphyre Gervais (sagervai)&lt;br /&gt;
 SE: Ajnu Jacob (ajacob)&lt;br /&gt;
 SA: Matthew Thiffault (mthiffau)&lt;br /&gt;
 OF: Jacob Parker (j3parker)&lt;br /&gt;
&lt;br /&gt;
 Keyed office staffers: j3camero,jdonland,m2ellis,mimcpher,nsasherr&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Jeff Cameron (j3camero)&lt;br /&gt;
 VP: Brennan Taylor (b4taylor)&lt;br /&gt;
 TR: Vardhan Mudunuru (vmudunur)&lt;br /&gt;
 SE: Matthew Lawrence (m3lawren)&lt;br /&gt;
 SA: Michael Ellis (m2ellis)&lt;br /&gt;
 OF: Edgar Bering (ebering)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Jacob Parker (j3parker)&lt;br /&gt;
 VP: Edgar Bering (ebering)&lt;br /&gt;
 TR: Rebecca Putinski (rjputins)&lt;br /&gt;
 SE: Kyle Spaans (kspaans)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Amir Sayed Khader (askhader)&lt;br /&gt;
&lt;br /&gt;
=2011=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Edgar Bering (ebering)&lt;br /&gt;
 VP: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Elana &amp;quot;Alana&amp;quot; Hashman (ehashman)&lt;br /&gt;
 SA: Peter &amp;quot;Bofh&amp;quot; Barfuss (pbarfuss)&lt;br /&gt;
 OF: Marc Burns (Marc Burns)&lt;br /&gt;
&lt;br /&gt;
===Spring===&lt;br /&gt;
 PR: Matthew Thiffault (mthiffau)&lt;br /&gt;
 VP: Matthew McPherrin (mimcpher)&lt;br /&gt;
 TR: Kyle Spaans (kspaans)&lt;br /&gt;
 SE: Kwame Andrew Ansong (kansong)&lt;br /&gt;
 SA: Jeremy Brandon Roman (jbroman)&lt;br /&gt;
 OF: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;br /&gt;
&lt;br /&gt;
===Fall===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Katharine Hyatt (kshyatt)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Elana Hashman (ehashman)&lt;br /&gt;
 SA: Anthony &amp;quot;hatguy/hotgay&amp;quot; Brennan (a2brenna)&lt;br /&gt;
 OF: Kyle Spaans (kspaans)&lt;br /&gt;
 LIB: Edgar Bearing (ebering)&lt;br /&gt;
&lt;br /&gt;
=2012=&lt;br /&gt;
===Winter===&lt;br /&gt;
 PR: Marc Burns (m4burns)&lt;br /&gt;
 VP: Elana Hashman (ehashman)&lt;br /&gt;
 TR: Jacob Parker (j3parker)&lt;br /&gt;
 SE: Matthew McPherrin (mimcpher)&lt;br /&gt;
 SA: Jeremy Roman (jbroman)&lt;br /&gt;
 OF: Luqman Aden (laden)&lt;br /&gt;
 LIB: Jennifer &amp;quot;Emily&amp;quot; Wong (jy2wong)&lt;/div&gt;</summary>
		<author><name>M4burns</name></author>
	</entry>
</feed>