<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Myagi</id>
	<title>Soma-notes - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Myagi"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Myagi"/>
	<updated>2026-04-05T08:29:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5542</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5542"/>
		<updated>2010-11-24T22:39:33Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5494</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5494"/>
		<updated>2010-11-24T15:48:52Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5493</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5493"/>
		<updated>2010-11-24T15:46:56Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
* Dustin Martin&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Edited and filled out the critique section. Edited a little bit here and there. --[[User:Afranco2|Afranco2]] 17:41, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Moved stuff to the front page and cleaned up references. Still waiting for people to expand if possible. Also, spellcheck ;) --[[User:Myagi|Myagi]] 10:37, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.  &lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor.&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
* Race Condition: &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [http://support.microsoft.com/kb/317723 Race Condition]&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 Mutex Locks]&lt;br /&gt;
* Mutex: Unable to be both true at the same time.&lt;br /&gt;
* Semaphore: &amp;quot;A semaphore is a protected variable or abstract data type that provides a simple but useful abstraction for controlling access by multiple processes to a common resource in a parallel programming environment.&amp;quot; [http://en.wikipedia.org/wiki/Semaphore_%28programming%29 Semaphore]&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5492</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5492"/>
		<updated>2010-11-24T15:46:26Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Good */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5491</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5491"/>
		<updated>2010-11-24T15:45:16Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Research problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5490</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5490"/>
		<updated>2010-11-24T15:44:36Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Past related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5489</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5489"/>
		<updated>2010-11-24T15:37:37Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
* Dustin Martin&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Edited and filled out the critique section. Edited a little bit here and there. --[[User:Afranco2|Afranco2]] 17:41, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Moved stuff to the front page and cleaned up references. Still waiting for people to expand if possible. --[[User:Myagi|Myagi]] 10:37, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.  &lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor.&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
* Race Condition: &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [http://support.microsoft.com/kb/317723 Race Condition]&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 Mutex Locks]&lt;br /&gt;
* Mutex: Unable to be both true at the same time.&lt;br /&gt;
* Semaphore: &amp;quot;A semaphore is a protected variable or abstract data type that provides a simple but useful abstraction for controlling access by multiple processes to a common resource in a parallel programming environment.&amp;quot; [http://en.wikipedia.org/wiki/Semaphore_%28programming%29 Semaphore]&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5487</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5487"/>
		<updated>2010-11-24T15:24:28Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Past related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5485</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5485"/>
		<updated>2010-11-24T14:23:41Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
* Dustin Martin&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Edited and filled out the critique section. Edited a little bit here and there. --[[User:Afranco2|Afranco2]] 17:41, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
* Race Condition: &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [http://support.microsoft.com/kb/317723 Race Condition]&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 Mutex Locks]&lt;br /&gt;
* Mutex: Unable to be both true at the same time.&lt;br /&gt;
* Semaphore: &amp;quot;A semaphore is a protected variable or abstract data type that provides a simple but useful abstraction for controlling access by multiple processes to a common resource in a parallel programming environment.&amp;quot; [http://en.wikipedia.org/wiki/Semaphore_%28programming%29 Semaphore]&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5302</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5302"/>
		<updated>2010-11-21T07:47:07Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Current solution expressed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5301</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5301"/>
		<updated>2010-11-21T07:44:54Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Current solution expressed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5300</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5300"/>
		<updated>2010-11-21T07:44:02Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5299</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5299"/>
		<updated>2010-11-21T07:13:25Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Current solution expressed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5298</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5298"/>
		<updated>2010-11-21T06:54:06Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Contribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply to the application while it is still live. LOOM is flexible in that developers can make tradeoffs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates. Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5297</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5297"/>
		<updated>2010-11-21T06:35:22Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Current solution expressed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed.&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
LOOM is compiled with a developers application as a plugin and kept separate from the source code. Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. Users can then download the filter and apply to the application while it is still live. LOOM is flexible in that developers can make tradeoffs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates. Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5296</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5296"/>
		<updated>2010-11-21T06:29:38Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Paper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed.&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
LOOM is compiled with a developers application as a plugin and kept separate from the source code. Execution filters are written by the developer and synced with the source code to filter out any racy threads. Users can then download the filter and apply to the application while it is still live. LOOM is flexible in that developers can make tradeoffs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates. Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5290</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5290"/>
		<updated>2010-11-20T21:32:29Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information:&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed.&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
LOOM is compiled with a developers application as a plugin and kept separate from the source code. Execution filters are written by the developer and synced with the source code to filter out any racy threads. Users can then download the filter and apply to the application while it is still live. LOOM is flexible in that developers can make tradeoffs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates. Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5289</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5289"/>
		<updated>2010-11-20T21:26:49Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Contribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
 The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information:&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
 What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
 What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed.&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
LOOM is compiled with a developers application as a plugin and kept separate from the source code. Execution filters are written by the developer and synced with the source code to filter out any racy threads. Users can then download the filter and apply to the application while it is still live. LOOM is flexible in that developers can make tradeoffs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates. Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
 What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
 You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5073</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5073"/>
		<updated>2010-11-17T16:37:05Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
 The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information:&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
 What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
 What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to races fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed.&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
LOOM is compiled with a developers application as a plugin and kept separate from the source code. Execution filters are written by the developer and synced with the source code to filter out any racy threads. Users can then download the filter and apply to the application while it is still live. LOOM is flexible in that developers can make tradeoffs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates. Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
===Critique===&lt;br /&gt;
 What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
 You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5072</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5072"/>
		<updated>2010-11-17T16:35:56Z</updated>

		<summary type="html">&lt;p&gt;Myagi: Kicking things off&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
 The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information:&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
===Research problem===&lt;br /&gt;
 What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
 What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to races fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed.&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
LOOM is compiled with a developers application as a plugin and kept separate from the source code. Execution filters are written by the developer and synced with the source code to filter out any racy threads. Users can then download the filter and apply to the application while it is still live. LOOM is flexible in that developers can make tradeoffs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates. Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
===Critique===&lt;br /&gt;
 What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&lt;br /&gt;
====Good====&lt;br /&gt;
* The author stays focused on the thesis and writes relevant examples and data relating to the thesis to evaluate the overall product. &lt;br /&gt;
* The thesis is very clear in the papers abstract and introduction, explaining that there is a satisfactory way to deal with race conditions through the use of LOOM as its approach in doing so.&lt;br /&gt;
* The example races, particularly the MySQL example, makes very clear the use of execution filters, which is the focus of the thesis through the use of LOOM.&lt;br /&gt;
* The conclusion mentions everything that was discussed in the body of the work in a very concise and clear manner. &lt;br /&gt;
* The paper has good references, especially pertaining to concepts and vocabulary people might not be familiar with.&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
 You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4947</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4947"/>
		<updated>2010-11-14T17:49:09Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
* Paper&lt;br /&gt;
** Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
** Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
** Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
** Supplementary Information:&lt;br /&gt;
* Background Concepts&lt;br /&gt;
* Research problem&lt;br /&gt;
* Contribution&lt;br /&gt;
* Critique&lt;br /&gt;
* References&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4946</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4946"/>
		<updated>2010-11-14T17:48:22Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
* Paper&lt;br /&gt;
** Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
** Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
** Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Background Concepts&lt;br /&gt;
* Research problem&lt;br /&gt;
* Contribution&lt;br /&gt;
* Critique&lt;br /&gt;
* References&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4945</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4945"/>
		<updated>2010-11-14T17:46:55Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
Maybe we can all add our names above so we know who&#039;s still in this course. --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
* Paper&lt;br /&gt;
** Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
** Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
** Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Background Concepts&lt;br /&gt;
* Research problem&lt;br /&gt;
* Contribution&lt;br /&gt;
* Critique&lt;br /&gt;
* References&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4944</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4944"/>
		<updated>2010-11-14T17:45:21Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
Maybe we can all add our names above? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
* Paper&lt;br /&gt;
** Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
** Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
** Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Background Concepts&lt;br /&gt;
* Research problem&lt;br /&gt;
* Contribution&lt;br /&gt;
* Critique&lt;br /&gt;
* References&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4943</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4943"/>
		<updated>2010-11-14T17:44:34Z</updated>

		<summary type="html">&lt;p&gt;Myagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
Maybe we can all add our names above? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
* Paper&lt;br /&gt;
 * Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
 * Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
 * Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Background Concepts&lt;br /&gt;
* Research problem&lt;br /&gt;
* Contribution&lt;br /&gt;
* Critique&lt;br /&gt;
* References&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4942</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=4942"/>
		<updated>2010-11-14T17:43:39Z</updated>

		<summary type="html">&lt;p&gt;Myagi: Created page with &amp;quot;Group members:  * Michael Yagi   --------------- Maybe we can all add our names above? --Myagi 12:38, 14 November 2010 (UTC)  ==Essay== * Paper Title: [http://www.…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
Maybe we can all add our names above? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
* Paper&lt;br /&gt;
Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Background Concepts&lt;br /&gt;
* Research problem&lt;br /&gt;
* Contribution&lt;br /&gt;
* Critique&lt;br /&gt;
* References&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=4941</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=4941"/>
		<updated>2010-11-14T17:36:27Z</updated>

		<summary type="html">&lt;p&gt;Myagi: Created page with &amp;quot;See discussion&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See discussion&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=4434</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=4434"/>
		<updated>2010-10-15T03:43:38Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Last minute changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Last minute changes ==&lt;br /&gt;
Ok guys, so its due early tomorrow. We have the essay pretty much completed aside from a few things. &lt;br /&gt;
&lt;br /&gt;
First. Are we getting rid of the headings? Other groups have them in at the moment, I know the prof said the essay should read as if they weren&#039;t there but it might not hurt for them to be there.&lt;br /&gt;
&lt;br /&gt;
Second. The essay needs to flow better. Some intro and outro sentences acknowledging the next section and refering to the previous ones would be nice.&lt;br /&gt;
&lt;br /&gt;
Otherwise, what else remains?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 23:12, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m trying to cleanup the references, is this format acceptable? --[[User:Dagar|Dagar]] 23:45, 14 October 2010 (UTC)&lt;br /&gt;
: Yes, that looks alot better --[[User:Smcilroy|Smcilroy]] 00:34, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I think we can keep some of the main headings, but I don&#039;t think we need them all. I think the real meat of the essay is in the comparisons with networked storage like NAS and especially SAN, so those sections should probably have headings of some kind. I also agree on the flow needing some work, some of the sections have a bit of overlap.&lt;br /&gt;
&lt;br /&gt;
::Anil had mentioned to me today an example of a networked file system based on object store devices - [http://ceph.newdream.net/about/ Ceph]. [http://www.usenix.org/events/osdi06/tech/full_papers/weil/weil_html/ here is the full paper] on the system. I was thinking it might be worth it to mention it at least, maybe even have a small section about it, just so we get in a real world example of this technology. What do you guys think?&lt;br /&gt;
&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 01:56, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Heres a quick example section, I know this is pretty last minute but what do you guys think?&lt;br /&gt;
&lt;br /&gt;
::Ceph is an example of a real world networked storage system based around OSDs. The Ceph developers specifically list performance, reliability, and scalability as the benefits their system offers over current solutions. (insert reference to paper) Since Ceph is based on OSDs, it takes advantage of the ability for clients to interact directly with the devices, which avoids the traditional bottlenecks to performance caused by SAN controllers or NAS heads. This direct access allows Ceph to support a very large number of clients concurrently accessing data on the system. Since objects have security controls it can allow this direct access safely, unlike other network storage architectures.&lt;br /&gt;
&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 02:09, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Also (sorry for all the comments), where does the first sentence of the Security section come from? It sounds like something that should be referenced, and seems kind of out of place because I don&#039;t think those four &amp;quot;quadrants&amp;quot; are brought up again?&lt;br /&gt;
&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 02:11, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Ok if Anil mentioned it, it&#039;s probably a good idea to include it, maybe after the 3 comparisons. I got an email back from Anil and he said that headings are OK as long as they add to the essay. So I think we can leave them in. --[[User:Smcilroy|Smcilroy]] 02:30, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Cool, I added the section in. --[[User:Mbingham|Mbingham]] 02:39, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::The four quadrants thing is something I came up with cause that&#039;s how I visualized it. You can imagine how secure something is with some points mapped on those quadrants(external, internal, malicious, accidental). I was trying to point out the strength of an OSDs security with this analogy but I guess it didn&#039;t flow well.&lt;br /&gt;
&lt;br /&gt;
::--[[User:Myagi|Myagi]] 23:38, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Tightening up the Intro ==&lt;br /&gt;
Hey everyone,&lt;br /&gt;
&lt;br /&gt;
I think it might be useful to re-work the intro a bit so that it better represents the direction the essay has taken since then. Heres a quick mockup of a reworked intro. It could be expanded on in some parts and worked on, etc. I would like any comments, if you guys think this better represents the essay, or what you think needs changing in the introduction. Here it is:&lt;br /&gt;
&lt;br /&gt;
:Storage needs have evolved over the past 60 years, and as a result the functionality expected from filesystems and storage solutions has evolved as well. The low level interface that a storage device implements, however, has remained mostly the same. A block based interface is still the most common mechanism for accessing storage devices. Recently, however, especially with the growth of networked storage architectures such as NAS and SAN, this interface needs to be reworked to accomodate changing needs. Object based storage is increasingly becoming an attractive alternative to block based storage. The design of object based storage devices (OSD), which store objects rather than blocks, easily associates data with meta-data. Objects are created, destroyed, read to, and written from, as well as carrying a unique ID. The device itself manages the physical space and can handle security on a per-object level. A storage network which is based on OSDs can provide better scalability without bottlenecks, better security with per-object access controls, and better integrity with unique has keys. In this way, the OSD interface is looking increasingly attractive as a building block for filesystems, especially in the context of netwoked storage.&lt;br /&gt;
&lt;br /&gt;
I think the main thing is that it brings up networked storage earlier and puts a bit more focus on it. I think the main arguments for object based storage is its applicability to large storage networks, and the advantages it has over block based architectures. For this reason I think the intro should put a bit more focus on it. Does that make sense? Any comments or suggestions you guys have are welcome.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 21:18, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I know what you mean, putting a focus on network storage is a good idea. Let me see if I can add your suggestions to the intro and maybe combine the two.--[[User:Smcilroy|Smcilroy]] 23:12, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Wikipedia Sources ==&lt;br /&gt;
I think we may want to replace the references to wikipedia with something more authoritative. [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open this massive pdf] from IBM supports the idea that fiber channels are the dominant infrastructure of SANs, but i&#039;m not sure if it mentions how that is changing.&lt;br /&gt;
&lt;br /&gt;
The wikipedia page for LUN masking has [http://www.sansecurity.com/san-security-faq.shtml this] as its reference for the definitions, there&#039;s also [http://technet.microsoft.com/en-us/library/cc758640(WS.10).aspx this] microsoft article and [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf this] paper from Hitachi. I&#039;m not sure which of these is most relevant since I just did a quick google search and haven&#039;t really read up on LUN masking or zoning, so someone else would probably be better suited to decide which one if any to use.&lt;br /&gt;
&lt;br /&gt;
How does that sound to everyone?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:55, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I agree, the Wikipedia references need to go. Whoever included those references should be able to find alternate sources from the one&#039;s you gave. --[[User:Smcilroy|Smcilroy]] 17:45, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I apologize for the delay, this has been an easy thing to neglect during a busy week. What&#039;s the proper way to reference with this wiki? --[[User:Dagar|Dagar]] 21:29, 13 October 2010 (UTC) &lt;br /&gt;
&lt;br /&gt;
:::check out this reference guide, it explain how to reference any material you find online. [http://libweb.anglia.ac.uk/referencing/harvard.htm Harvard System of Reference] --[[User:Smcilroy|Smcilroy]] 22:46, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that more people aren&#039;t tagging the document outline and volunteering responsibilities is kind of unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to expand the scalability and integrity sections. Then once the security section is done, I think that just leaves the section on the OSD standard and future plans for the tech. Then in the conclusion we can recap.&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 22:54, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a plan. I&#039;ll clean up/expand what I have written and get started with some initial stuff for the object sections. Anyone else is welcome to expand and edit as well.&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 00:44, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham  (I added a useful diagram here -Npradhan)&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage -Npradhan&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage -Npradhan&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage -dagar&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security -Myagi&lt;br /&gt;
&lt;br /&gt;
:*Conclusion -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=4431</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=4431"/>
		<updated>2010-10-15T03:40:43Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Last minute changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Last minute changes ==&lt;br /&gt;
Ok guys, so its due early tomorrow. We have the essay pretty much completed aside from a few things. &lt;br /&gt;
&lt;br /&gt;
First. Are we getting rid of the headings? Other groups have them in at the moment, I know the prof said the essay should read as if they weren&#039;t there but it might not hurt for them to be there.&lt;br /&gt;
&lt;br /&gt;
Second. The essay needs to flow better. Some intro and outro sentences acknowledging the next section and refering to the previous ones would be nice.&lt;br /&gt;
&lt;br /&gt;
Otherwise, what else remains?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 23:12, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m trying to cleanup the references, is this format acceptable? --[[User:Dagar|Dagar]] 23:45, 14 October 2010 (UTC)&lt;br /&gt;
: Yes, that looks alot better --[[User:Smcilroy|Smcilroy]] 00:34, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I think we can keep some of the main headings, but I don&#039;t think we need them all. I think the real meat of the essay is in the comparisons with networked storage like NAS and especially SAN, so those sections should probably have headings of some kind. I also agree on the flow needing some work, some of the sections have a bit of overlap.&lt;br /&gt;
&lt;br /&gt;
::Anil had mentioned to me today an example of a networked file system based on object store devices - [http://ceph.newdream.net/about/ Ceph]. [http://www.usenix.org/events/osdi06/tech/full_papers/weil/weil_html/ here is the full paper] on the system. I was thinking it might be worth it to mention it at least, maybe even have a small section about it, just so we get in a real world example of this technology. What do you guys think?&lt;br /&gt;
&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 01:56, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Heres a quick example section, I know this is pretty last minute but what do you guys think?&lt;br /&gt;
&lt;br /&gt;
::Ceph is an example of a real world networked storage system based around OSDs. The Ceph developers specifically list performance, reliability, and scalability as the benefits their system offers over current solutions. (insert reference to paper) Since Ceph is based on OSDs, it takes advantage of the ability for clients to interact directly with the devices, which avoids the traditional bottlenecks to performance caused by SAN controllers or NAS heads. This direct access allows Ceph to support a very large number of clients concurrently accessing data on the system. Since objects have security controls it can allow this direct access safely, unlike other network storage architectures.&lt;br /&gt;
&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 02:09, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Also (sorry for all the comments), where does the first sentence of the Security section come from? It sounds like something that should be referenced, and seems kind of out of place because I don&#039;t think those four &amp;quot;quadrants&amp;quot; are brought up again?&lt;br /&gt;
&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 02:11, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Ok if Anil mentioned it, it&#039;s probably a good idea to include it, maybe after the 3 comparisons. I got an email back from Anil and he said that headings are OK as long as they add to the essay. So I think we can leave them in. --[[User:Smcilroy|Smcilroy]] 02:30, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Cool, I added the section in. --[[User:Mbingham|Mbingham]] 02:39, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::The four quadrants thing is something I came up with cause that&#039;s how I visualized it. You can imagine how secure something is with some points mapped on quadrants. I was trying to point out the strength of an OSDs security with this analogy but I guess it didn&#039;t flow well.&lt;br /&gt;
&lt;br /&gt;
::--[[User:Myagi|Myagi]] 23:38, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Tightening up the Intro ==&lt;br /&gt;
Hey everyone,&lt;br /&gt;
&lt;br /&gt;
I think it might be useful to re-work the intro a bit so that it better represents the direction the essay has taken since then. Heres a quick mockup of a reworked intro. It could be expanded on in some parts and worked on, etc. I would like any comments, if you guys think this better represents the essay, or what you think needs changing in the introduction. Here it is:&lt;br /&gt;
&lt;br /&gt;
:Storage needs have evolved over the past 60 years, and as a result the functionality expected from filesystems and storage solutions has evolved as well. The low level interface that a storage device implements, however, has remained mostly the same. A block based interface is still the most common mechanism for accessing storage devices. Recently, however, especially with the growth of networked storage architectures such as NAS and SAN, this interface needs to be reworked to accomodate changing needs. Object based storage is increasingly becoming an attractive alternative to block based storage. The design of object based storage devices (OSD), which store objects rather than blocks, easily associates data with meta-data. Objects are created, destroyed, read to, and written from, as well as carrying a unique ID. The device itself manages the physical space and can handle security on a per-object level. A storage network which is based on OSDs can provide better scalability without bottlenecks, better security with per-object access controls, and better integrity with unique has keys. In this way, the OSD interface is looking increasingly attractive as a building block for filesystems, especially in the context of netwoked storage.&lt;br /&gt;
&lt;br /&gt;
I think the main thing is that it brings up networked storage earlier and puts a bit more focus on it. I think the main arguments for object based storage is its applicability to large storage networks, and the advantages it has over block based architectures. For this reason I think the intro should put a bit more focus on it. Does that make sense? Any comments or suggestions you guys have are welcome.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 21:18, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I know what you mean, putting a focus on network storage is a good idea. Let me see if I can add your suggestions to the intro and maybe combine the two.--[[User:Smcilroy|Smcilroy]] 23:12, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Wikipedia Sources ==&lt;br /&gt;
I think we may want to replace the references to wikipedia with something more authoritative. [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open this massive pdf] from IBM supports the idea that fiber channels are the dominant infrastructure of SANs, but i&#039;m not sure if it mentions how that is changing.&lt;br /&gt;
&lt;br /&gt;
The wikipedia page for LUN masking has [http://www.sansecurity.com/san-security-faq.shtml this] as its reference for the definitions, there&#039;s also [http://technet.microsoft.com/en-us/library/cc758640(WS.10).aspx this] microsoft article and [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf this] paper from Hitachi. I&#039;m not sure which of these is most relevant since I just did a quick google search and haven&#039;t really read up on LUN masking or zoning, so someone else would probably be better suited to decide which one if any to use.&lt;br /&gt;
&lt;br /&gt;
How does that sound to everyone?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:55, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I agree, the Wikipedia references need to go. Whoever included those references should be able to find alternate sources from the one&#039;s you gave. --[[User:Smcilroy|Smcilroy]] 17:45, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I apologize for the delay, this has been an easy thing to neglect during a busy week. What&#039;s the proper way to reference with this wiki? --[[User:Dagar|Dagar]] 21:29, 13 October 2010 (UTC) &lt;br /&gt;
&lt;br /&gt;
:::check out this reference guide, it explain how to reference any material you find online. [http://libweb.anglia.ac.uk/referencing/harvard.htm Harvard System of Reference] --[[User:Smcilroy|Smcilroy]] 22:46, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that more people aren&#039;t tagging the document outline and volunteering responsibilities is kind of unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to expand the scalability and integrity sections. Then once the security section is done, I think that just leaves the section on the OSD standard and future plans for the tech. Then in the conclusion we can recap.&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 22:54, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a plan. I&#039;ll clean up/expand what I have written and get started with some initial stuff for the object sections. Anyone else is welcome to expand and edit as well.&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 00:44, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham  (I added a useful diagram here -Npradhan)&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage -Npradhan&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage -Npradhan&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage -dagar&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security -Myagi&lt;br /&gt;
&lt;br /&gt;
:*Conclusion -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3993</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3993"/>
		<updated>2010-10-14T19:31:24Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access, ensured integrity of data with unique hash key&#039;s and benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
One application where the utility of object stores has become increasingly apparent is in SAN (Storage Area Network) systems. SAN file systems are distributed, however they provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SAN networks of the past. Modern SAN networks can serve a much larger set of users, not all of whom can be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can &#039;know&#039; who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels. &amp;lt;sup&amp;gt; [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] Satran and Teperman, Object Store Based SAN File Systems. [online] IBM Labs Available at: &amp;lt;http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&amp;gt; [Accessed 14 October 2010].&lt;br /&gt;
&lt;br /&gt;
[8] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[9] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[10] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[11] [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[12] [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[13] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[14] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3989</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3989"/>
		<updated>2010-10-14T19:25:37Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access, ensured integrity of data with unique hash key&#039;s and benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
One application where the utility of object stores has become increasingly apparent is in SAN (Storage Area Network) systems. SAN file systems are distributed, however they provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SAN networks of the past. Modern SAN networks can serve a much larger set of users, not all of whom can be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can &#039;know&#039; who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] Satran and Teperman, Object Store Based SAN File Systems. [online] IBM Labs Available at: &amp;lt;http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&amp;gt; [Accessed 14 October 2010].&lt;br /&gt;
&lt;br /&gt;
[8] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[9] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[10] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[11] [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[12] [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[13] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[14] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3987</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3987"/>
		<updated>2010-10-14T19:24:38Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access, ensured integrity of data with unique hash key&#039;s and benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
One application where the utility of object stores has become increasingly apparent is in SAN (Storage Area Network) systems. SAN file systems are distributed, however they provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SAN networks of the past. Modern SAN networks can serve a much larger set of users, not all of whom can be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can &#039;know&#039; who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] Satran and Teperman, Object Store Based SAN File Systems. [online] IBM Labs Available at: &amp;lt;http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&amp;gt; [Accessed 14 October 2010].&lt;br /&gt;
&lt;br /&gt;
[8] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[9] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[10] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[11] [http://en.wikipedia.org/wiki/Storage_area_network Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[12] [http://en.wikipedia.org/wiki/Fibre_Channel_zoning Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[13] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[14] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3394</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3394"/>
		<updated>2010-10-13T22:40:59Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I apologize for the delay, this has been an easy thing to neglect during a busy week. What&#039;s the proper way to reference with this wiki? --[[User:Dagar|Dagar]] 21:29, 13 October 2010 (UTC) &lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that more people aren&#039;t tagging the document outline and volunteering responsibilities is kind of unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage &lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage -dagar&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security -Myagi&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3392</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3392"/>
		<updated>2010-10-13T22:39:02Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Enter object based storage devices (OSD). Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions. This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and insured integrity of data with unique hash key&#039;s for each object along with some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Manageability of metadata becomes more and more complex and has a major impact on scalability. We see this in SAN and NAS systems.&lt;br /&gt;
&lt;br /&gt;
Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks and for clients to share read-write access, they must coordinate usage of data blocks through metadata.&lt;br /&gt;
&lt;br /&gt;
NAS systems use metadata to map blocks into files and manage file security within a single system. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it. &amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. Metadata becomes very hard to manage.&lt;br /&gt;
&lt;br /&gt;
With an OSD interface, however, metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device. &amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf] &amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&#039;&#039;&#039;Note: overall conclusions?&#039;&#039;&#039;&lt;br /&gt;
In conclusion, object based storage devices...&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[2] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[3] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[4] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[5] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[7] [http://en.wikipedia.org/wiki/Storage_area_network Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[8] [http://en.wikipedia.org/wiki/Fibre_Channel_zoning Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[9] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3389</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3389"/>
		<updated>2010-10-13T22:34:22Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Enter object based storage devices (OSD). Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions. This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and insured integrity of data with unique hash key&#039;s for each object along with some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Manageability of metadata becomes more and more complex and has a major impact on scalability. We see this in SAN and NAS systems.&lt;br /&gt;
&lt;br /&gt;
Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks and for clients to share read-write access, they must coordinate usage of data blocks through metadata.&lt;br /&gt;
&lt;br /&gt;
NAS systems use metadata to map blocks into files and manage file security within a single system. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it. &amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. Metadata becomes very hard to manage.&lt;br /&gt;
&lt;br /&gt;
With an OSD interface, however, metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device. &amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf] &amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&#039;&#039;&#039;Note: overall conclusions?&#039;&#039;&#039;&lt;br /&gt;
In conclusion, object based storage devices...&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[2] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[3] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[4] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[5] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3386</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3386"/>
		<updated>2010-10-13T22:29:14Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Comparison of object and block based stores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Enter object based storage devices (OSD). Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions. This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and insured integrity of data with unique hash key&#039;s for each object along with some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Manageability of metadata becomes more and more complex and has a major impact on scalability. We see this in SAN and NAS systems.&lt;br /&gt;
&lt;br /&gt;
Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks and for clients to share read-write access, they must coordinate usage of data blocks through metadata.&lt;br /&gt;
&lt;br /&gt;
NAS systems use metadata to map blocks into files and manage file security within a single system. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it. &amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. Metadata becomes very hard to manage.&lt;br /&gt;
&lt;br /&gt;
With an OSD interface, however, metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device. &amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf] &amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use for to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. LUN masking utilizes zoning while disk array controllers utilize LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&#039;&#039;&#039;Note: overall conclusions?&#039;&#039;&#039;&lt;br /&gt;
In conclusion, object based storage devices...&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[2] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[3] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[4] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[5] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3348</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3348"/>
		<updated>2010-10-13T21:10:28Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Essay Format and Assigned Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that nobody else is tagging the document outline and taking anymore responsibility is unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security -Myagi&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3231</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3231"/>
		<updated>2010-10-13T12:40:31Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that nobody else is tagging the document outline and taking anymore responsibility is unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3230</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3230"/>
		<updated>2010-10-13T12:06:16Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that nobody is tagging the document outline and taking anymore responsibility is unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3229</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3229"/>
		<updated>2010-10-13T12:04:45Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. We should already have a finished essay so we can edit it, so the lack of progress is unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3228</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3228"/>
		<updated>2010-10-13T12:03:28Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I already have a draft written up. We should already have a finished essay so we can edit it so the lack of progress is unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3227</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3227"/>
		<updated>2010-10-13T11:58:45Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I already have a draft written up.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3226</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3226"/>
		<updated>2010-10-13T11:58:16Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I already have a draft written up.&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3109</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3109"/>
		<updated>2010-10-12T19:49:00Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Some Sourcing Issues and Other Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=2938</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=2938"/>
		<updated>2010-10-11T16:52:54Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Integrity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Enter object based storage. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions. This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and insured integrity of data with unique hash key&#039;s for each object along with some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of SAN and NAS networks.&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
The Association of Storage Networking Professionals estimates that there were over 1 million full-time or part-time storage administrators in 2004. A survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data. Many Fortune 500 companies are known to be approaching 1 petabyte of data, that is, assuming 100 gigabytes per drive, 10,000 individual drives. [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Ref.]&lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Manageability of metadata becomes more and more complex and has a major impact on scalability. We see this in SAN and NAS systems.&lt;br /&gt;
&lt;br /&gt;
Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks and for clients to share read-write access, they must coordinate usage of data blocks through metadata.&lt;br /&gt;
&lt;br /&gt;
NAS systems use metadata to map blocks into files and manage file security within a single system. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it. [http://articles.techrepublic.com.com/5100-22_11-5841266.html Ref.] Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. Metadata becomes very hard to manage.&lt;br /&gt;
&lt;br /&gt;
With an OSD interface, however, metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device. [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Ref] This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[2] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2936</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2936"/>
		<updated>2010-10-11T16:52:28Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Essay Format and Assigned Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=2934</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=2934"/>
		<updated>2010-10-11T16:51:14Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Scalability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Enter object based storage. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions. This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and insured integrity of data with unique hash key&#039;s for each object along with some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of SAN and NAS networks.&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
The Association of Storage Networking Professionals estimates that there were over 1 million full-time or part-time storage administrators in 2004. A survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data. Many Fortune 500 companies are known to be approaching 1 petabyte of data, that is, assuming 100 gigabytes per drive, 10,000 individual drives. [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Ref.]&lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Manageability of metadata becomes more and more complex and has a major impact on scalability. We see this in SAN and NAS systems.&lt;br /&gt;
&lt;br /&gt;
Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks and for clients to share read-write access, they must coordinate usage of data blocks through metadata.&lt;br /&gt;
&lt;br /&gt;
NAS systems use metadata to map blocks into files and manage file security within a single system. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it. [http://articles.techrepublic.com.com/5100-22_11-5841266.html Ref.] Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. Metadata becomes very hard to manage.&lt;br /&gt;
&lt;br /&gt;
With an OSD interface, however, metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device. [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Ref] This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[2] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2933</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2933"/>
		<updated>2010-10-11T16:48:55Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Essay Format and Assigned Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I put my portion up, I&#039;m going to do edits here and there but a peer review would be nice. I&#039;ve put links up that are meant to be references, but I won&#039;t put it in the references section yet as more people will be adding to it.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:48, 11 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=2932</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=2932"/>
		<updated>2010-10-11T16:36:02Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Enter object based storage. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions. This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and insured integrity of data with unique hash key&#039;s for each object along with some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of SAN and NAS networks.&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[2] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2810</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2810"/>
		<updated>2010-10-10T17:26:41Z</updated>

		<summary type="html">&lt;p&gt;Myagi: /* Essay Format and Assigned Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security&lt;br /&gt;
&lt;br /&gt;
:*Conclusion&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Myagi</name></author>
	</entry>
</feed>