<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>file-system &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/file-system/</link>
	<description>Feed of posts on WordPress.com tagged "file-system"</description>
	<pubDate>Mon, 30 Nov 2009 05:27:16 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[WinDiskXP]]></title>
<link>http://dotinfo.wordpress.com/2009/12/06/windiskxp/</link>
<pubDate>Sun, 06 Dec 2009 13:27:33 +0000</pubDate>
<dc:creator>Everton da Rosa</dc:creator>
<guid>http://dotinfo.wordpress.com/2009/12/06/windiskxp/</guid>
<description><![CDATA[Emulador de partições baseado em arquivos Shareware Grátis para testar e avaliar O desenvolvedor não]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h3>Emulador de partições baseado em arquivos</h3>
<h2>Shareware</h2>
<p>Grátis para testar e avaliar</p>
<p>O desenvolvedor não informa as limitações da versão de testes, a versão completa pode ser adquirida por US$25,00</p>
<p>Emulador de partições baseado em arquivos. Todos os dados armazenados nas partições emuladas são armazenados em um arquivo. Deste modo, você poderá criar um disco emulado sem se preocupar em fazer alterações nas partições do HD. Permite não apenas <a href="http://superdownloads.uol.com.br/download/178/windiskxp/">armazenar arquivos</a> como documentos, <a href="http://superdownloads.uol.com.br/download/178/windiskxp/">músicas</a>, vídeos e etc. como também instalar programas nas partições emuladas. Possibilita também a criação de uma partição emulada com recursos de encriptação. Quando dados são escritos nessa partição, são automaticamente encriptados e armazenados no arquivo. Desta forma, ninguém poderá acessar os dados dessa partição sem conhecer a senha.</p>
<p>Roda em Windows NT, 2000, XP, 2003, Vista</p>
<p>Disponível nos idiomas Inglês</p>
<p><a href="http://www.easy-share.com/1908396604/WinDiskXP_SETUP.EXE">Download WinDiskXP</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[File System บน Linux Embedded Device]]></title>
<link>http://ipass.wordpress.com/2009/11/10/file-system-%e0%b8%9a%e0%b8%99-linux-embedded-device/</link>
<pubDate>Tue, 10 Nov 2009 14:51:27 +0000</pubDate>
<dc:creator>ipass</dc:creator>
<guid>http://ipass.wordpress.com/2009/11/10/file-system-%e0%b8%9a%e0%b8%99-linux-embedded-device/</guid>
<description><![CDATA[Linux Embedded จำเป็นต้องมี File System สำหรับลงโปรแกรม แต่เนื่องจากการใช้งานในลักษณะ Home Appliance]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style="widows:2;text-transform:none;text-indent:0;border-collapse:separate;font:18px Tahoma;white-space:normal;orphans:2;letter-spacing:normal;color:rgb(83,100,130);word-spacing:0;" class="Apple-style-span"><span style="line-height:18px;font-family:'Lucida Grande', 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif;color:rgb(51,51,51);font-size:13px;" class="Apple-style-span"><img src="http://ipass.files.wordpress.com/2009/11/zrclip_001p32b67d0d.png" style="width:137px;display:inline;float:left;height:103px;" height="103">Linux Embedded จำเป็นต้องมี File System สำหรับลงโปรแกรม <br /> แต่เนื่องจากการใช้งานในลักษณะ Home Appliance ที่ต้องปิดเปิดไฟ AC โดยไม่สั่ง shutdown โดยหลีกเลี่ยงไม่ค่อยไ้ด้ (หรือได้ ?) <br /> ทำให้ทุกครั้งที่ boot เครื่องใหม่ต้องนั่งรอ check disk ทุกครั้งเสียเวลา .. เสียข้อมูล </p>
<p> ทางแก้ก็มีอย่างเช่นใช้ File System ที่มีการเก็บ Journal List เป็นระยะ </span></span></p>
<p> <!--more-->
<p><span style="widows:2;text-transform:none;text-indent:0;border-collapse:separate;font:18px Tahoma;white-space:normal;orphans:2;letter-spacing:normal;color:rgb(83,100,130);word-spacing:0;" class="Apple-style-span"><span style="line-height:18px;font-family:'Lucida Grande', 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif;color:rgb(51,51,51);font-size:13px;" class="Apple-style-span">ซึ่งสำหรับ PC ทั่วไปจะใช้ ext3 ก็พอใช้ได้ .. เหมาะกับ file system ใหญ่ๆ </p>
<p> สำหรับ Wireless Router ที่เป็น Linux base จะใช้ jfs ซึ่งก็ช้าเอาการอยู่ <br /> <a style="border-bottom:rgb(102,102,102) 1px dotted;outline-style:none;color:rgb(93,143,189);text-decoration:none;margin:0;padding:0;" href="http://www.debian-administration.org/articles/388" class="postlink">http://www.debian-administration.org/articles/388</a> <br /> <a style="border-bottom:rgb(102,102,102) 1px dotted;outline-style:none;color:rgb(93,143,189);text-decoration:none;margin:0;padding:0;" href="http://linuxgazette.net/102/piszcz.html" class="postlink">http://linuxgazette.net/102/piszcz.html</a> </p>
<p> แต่สำหรับงาน TS7400 อยากแนะนำ ReiserFS ที่ดีกว่าในแง่ความทนทานต่อไฟดับ (จากการทดลองใน RTU ตัวเก่า Advantech) <br /> ถึงแม้จะช้ากว่า ext3 เมื่อขนาดของ Partition ใหญ่กว่า 512mb, และ file มีขนาดใหญ่ </p>
<p> จึงอยากให้ลองพิจารณาใช้กันดู </p>
<p> ps. หากต้องการหาข้อมูลสำหรับการทำ File system ใน flash memory ให้ดูจาก <br /> <a style="border-bottom:rgb(102,102,102) 1px dotted;outline-style:none;color:rgb(93,143,189);text-decoration:none;margin:0;padding:0;" href="http://www.numonyx.com/en-US/ResourceCenter/SoftwareArticles/Pages/ChooseLinuxFS.aspx" class="postlink">http://www.numonyx.com/en-US/ResourceCe &#8230; nuxFS.aspx</a> </p>
<p> ps2. หากไม่สนใจความถูกต้องของข้อมูล (data integrity) เราสามารถใช้ fs2tune เพื่อสั่งให้ไม่มีการ check disk ตอน boot ได้</span></span></p>
<p class="zoundry_raven_tags">  <!-- Tag links generated by Zoundry Raven. Do not manually edit. http://www.zoundryraven.com -->  <span class="ztags"><span class="ztagspace">Technorati</span> : <a href="http://www.technorati.com/tag/file+system" class="ztag" rel="tag">file system</a>, <a href="http://www.technorati.com/tag/linux" class="ztag" rel="tag">linux</a>, <a href="http://www.technorati.com/tag/power+loss" class="ztag" rel="tag">power loss</a></span>  <br /> <span class="ztags"><span class="ztagspace">Del.icio.us</span> : <a href="http://del.icio.us/tag/file%20system" class="ztag" rel="tag">file system</a>, <a href="http://del.icio.us/tag/linux" class="ztag" rel="tag">linux</a>, <a href="http://del.icio.us/tag/power%20loss" class="ztag" rel="tag">power loss</a></span> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Extended Attributes on Mac OS X and File Transfer]]></title>
<link>http://blogsai.wordpress.com/2009/11/07/extended-attributes-on-mac-os-x-and-file-transfer/</link>
<pubDate>Sat, 07 Nov 2009 17:42:13 +0000</pubDate>
<dc:creator>blogsai</dc:creator>
<guid>http://blogsai.wordpress.com/2009/11/07/extended-attributes-on-mac-os-x-and-file-transfer/</guid>
<description><![CDATA[I recently encountered an interesting issue on Mac OS X. One of the applications I was working on, t]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I recently encountered an interesting issue on Mac OS X. One of the applications I was working on, transfers files to a server. The transfer program first compresses the file using zip algorithms (zlib) and then sends the files to the server via a socket connection. Everything worked well except for some files. These files had <a title="Extended file attributes" href="http://en.wikipedia.org/wiki/Extended_file_attributes" target="_blank">extended attributes</a>. HFS/HFS+ filesystems on Mac OS support extended attributes for files. These attributes are metadata that the application creator adds to the files. You can read more about extended attributes from the wikipedia link above.</p>
<p>The following commands to view the extended attributes on files -</p>
<p>$ ls -l@</p>
<p>The above command displays the extended attribute names (if they exist) for each of the files in the directory.</p>
<p>Another command that can be used is -</p>
<p>$ xattr &#60;filename&#62;</p>
<p>The above command can be used to list/add/delete extended attributes.</p>
<p>For some applications stripping off the extended attributes doesn&#8217;t make a difference to their functionality. But for others these are essential. Examples of some extended attributes are &#8220;com.apple.FinderInfo&#8221;, &#8220;<a title="Resource Fork" href="http://en.wikipedia.org/wiki/Resource_fork" target="_blank">com.apple.ResourceFork</a>&#8220;. The FinderInfo is used by the Mac OS Finder.</p>
<p>Some applications don&#8217;t handle extended attributes well one such application being zip. Copying such files to file systems that don&#8217;t support extended attributes also result in loss of information. &#8220;rsync&#8221; has options to copy files with extended attributes. One other thing that is misleading is that these extended attributes don&#8217;t contribute to the file-size when viewed via a shell (ls command, stat command etc.). I could only see the difference when viewed via spotlight information. And the checksum of the file remains the same with and without the extended attributes.</p>
<p>However tar doesnt have a problem in keeping the attributes intact.</p>
<p>One way to circumvent the stripping of these attributes is to tar and then zip the files before transfer or write a program that uses getattrlist and setattrlist to handle these attributes separately.</p>
<p>Other useful references for extended attributes and acls -</p>
<p><a href="http://forthescience.org/blog/2007/12/11/macosx-leopard-extended-ls/" target="_self">http://forthescience.org/blog/2007/12/11/macosx-leopard-extended-ls/</a></p>
<p><a href="http://www.macgeekery.com/tips/the_new_resource_fork" target="_blank">http://www.macgeekery.com/tips/the_new_resource_fork</a></p>
<p><a href="http://lists.apple.com/archives/Filesystem-dev/2009/jul/msg00011.html" target="_blank">http://lists.apple.com/archives/Filesystem-dev/2009/jul/msg00011.html</a></p>
<p><a href="http://lists.samba.org/archive/rsync/2007-March/017528.html" target="_blank">http://lists.samba.org/archive/rsync/2007-March/017528.html</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is NILFS ?]]></title>
<link>http://openict.wordpress.com/2009/11/07/what-is-nilfs/</link>
<pubDate>Sat, 07 Nov 2009 11:59:57 +0000</pubDate>
<dc:creator>openict</dc:creator>
<guid>http://openict.wordpress.com/2009/11/07/what-is-nilfs/</guid>
<description><![CDATA[NILFS is a new implementation of a log-structured file system (LFS) supporting continuous snapshotti]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>NILFS is a new implementation of a log-structured file system (LFS) supporting continuous snapshotting.  In addition to versioning capability of the entire file system, users can even restore files mistakenly overwritten or destroyed just a few seconds ago.  Since NILFS can keep consistency like conventional LFS, it achieves quick recovery after system crashes.</p>
<p><a href="http://www.nilfs.org/en/about_nilfs.html" target="_blank">read more&#8230;</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Monitorando suas pastas]]></title>
<link>http://netdrops.wordpress.com/2009/11/04/monitorando-suas-pastas/</link>
<pubDate>Wed, 04 Nov 2009 08:10:51 +0000</pubDate>
<dc:creator>Cesar Vilarim</dc:creator>
<guid>http://netdrops.wordpress.com/2009/11/04/monitorando-suas-pastas/</guid>
<description><![CDATA[Existe uma classe na plataforma .Net chamada FileSystemWatcher que permite que o sistema acompanhe a]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Existe uma classe na plataforma .Net chamada FileSystemWatcher que permite que o sistema acompanhe as alterações de uma ou mais pastas.</p>
<p><strong>Como monitorar uma pasta:</strong></p>
<ol>
<li>Criar uma instância de FileSystemWatcher (ofso)</li>
<li>Definir se os subdiretórios também serão monitorados com a propriedade ofso.IncludeSubdirectories = true</li>
<li>Definir os filtros que serão usados, alterando a propriedade ofso.NotifyFilter<br />
- Os filtros são separados por pipe (&#124;).<br />
- Ex.: NotifyFilters.FileName &#124; NotifyFilters.LastWrite</li>
<li>Criar handlers e métodos que forem necessários à monitoração.</li>
<li>Alterar a propriedade EnableRaisingEvents para true.<br />
- Isso dá início ao monitoramento.</li>
</ol>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[EASEUS Data Recovery Wizard Professional v4.3.6 Retail Version]]></title>
<link>http://techkiru.wordpress.com/2009/11/04/easeus-data-recovery-wizard-professional-v4-3-6-retail-version/</link>
<pubDate>Wed, 04 Nov 2009 01:13:00 +0000</pubDate>
<dc:creator>swarnkiran88</dc:creator>
<guid>http://techkiru.wordpress.com/2009/11/04/easeus-data-recovery-wizard-professional-v4-3-6-retail-version/</guid>
<description><![CDATA[EaseUs Data Recovery Wizard Professional is a useful and advanced data recovery software. And Data R]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong></strong><img src="http://i214.photobucket.com/albums/cc88/emre-gs/03/1ba47cba.jpg" alt="" border="0"><br /><img src="http://www.easeus.com/datarecoverywizard/images/scan-file1.jpg" alt="" border="0"><br /><img src="http://www.easeus.com/datarecoverywizardpro/images/reports.jpg" alt="" border="0"><br /><b><font color="DarkRed"></p>
<p><font size="3">EaseUs Data Recovery Wizard Professional is a useful and advanced <a class="zem_slink" href="http://en.wikipedia.org/wiki/Data_recovery" title="Data recovery" rel="wikipedia">data recovery</a> software. And Data Recovery Wizard Professional is the only computer data recovery software you will ever need.</p>
<p>Data Recovery Wizard Professional can recover files accidentally deleted, including files removed from the <a class="zem_slink" href="http://en.wikipedia.org/wiki/Recycle_Bin_%28Windows%29" title="Recycle Bin (Windows)" rel="wikipedia">Recycle Bin</a>, in a DOS window, from a network <a class="zem_slink" href="http://en.wikipedia.org/wiki/Floppy_disk" title="Floppy disk" rel="wikipedia">drive</a>, from <a class="zem_slink" href="http://en.wikipedia.org/wiki/Windows_Explorer" title="Windows Explorer" rel="wikipedia">Windows Explorer</a> with the SHIFT key held down, provided that recovery is attempted before the files are permanently overwritten by new data. Data Recovery Wizard Professional supports Basic and Dynamic Volumes, <a class="zem_slink" href="http://en.wikipedia.org/wiki/NTFS" title="NTFS" rel="wikipedia">NTFS</a> encryption and compression, alternate data streams, sparse files, Unicode filenames, etc. Except in severe cases, both the file and the folder path leading to the file can be recovered.</p>
<p>With Data Recovery Wizard Professional files can be recovered from a reformatted or corrupted volume. This is even possible when the volume has been deleted and its original position and size are unknown. Data Recovery Wizard Professional can scan an entire physical <a class="zem_slink" href="http://en.wikipedia.org/wiki/Hard_disk_drive" title="Hard disk drive" rel="wikipedia">hard drive</a> to look for traces of defunct volumes. </font>  </font></b><font size="3"></p>
<p></font>  <font size="3"><br /><b><font color="Blue">EaseUs Data Recovery Wizard Professional can recover data from: </font></b></p>
<p><b><font color="Black">· Hard Drives that have been formatted.<br />· Corrupt or missing critical file system structures.<br />· Accidental file deletion.<br />· File loss without reason.<br />· Unexpected system shutdown or application failure.<br />· Computer viruses and worms infection or corruption.<br />· Boot-up problems.<br />· Partition structures are damaged or deleted.<br />· Damage due to a power failure or surge.<br />· Various Kind of File System Corruption. </font></b></p>
<p></font>    <font size="3"><br /><b><font color="Blue">Here are some key features of &#8220;EaseUs Data Recovery Wizard Professional&#8221;: </font></b></p>
<p><b><font color="Black">· Provides partition recovery from FAT12, FAT16, <a class="zem_slink" href="http://en.wikipedia.org/wiki/File_Allocation_Table" title="File Allocation Table" rel="wikipedia">FAT32</a>, NTFS, EXT2, EXT3 <a class="zem_slink" href="http://en.wikipedia.org/wiki/File_system" title="File system" rel="wikipedia">file systems</a>.<br />· Supports IDE/ATA, SATA, SCSI, Dynamic Disk, USB, Fire wire (IEEE1394) hard drive and other media such as Floppy Disk, <a class="zem_slink" href="http://en.wikipedia.org/wiki/USB_flash_drive" title="USB flash drive" rel="wikipedia">USB Flash Drive</a>, Digital Camera, Digital Audio Player and so on.<br />· Recovers deleted files/folders even after recycle bin has been emptied or use of Shift+Del keys.<br />· File recovery from deleted partitions, lost/missing partitions or formatted logical drives.<br />· File recovery from missing or lost folders.<br />· Recognizes and preserves long file names when restoring files &#38; folders.<br />· Browses files with thumbnail images.<br />· Large and Multi-Disk drive support.<br />· Ability to recover the data from EXT2/EXT3 file system.<br />· Ability to resume the last recovery result.<br />· Ability to recover compressed and encrypted files on NTFS volume. </font></b></p>
<p><b><font color="Blue">When to use?</font></p>
<p>    <b><font color="Black">* Hard Drives that have been formatted.<br />    * Corruptted or missing critical file system structures.<br />    * Accidental file deletion.<br />    * File loss without reason.<br />    * Unexpected system shutdown or application failure.<br />    * Computer viruses and worms infection or corruption.<br />    * Boot-up problems.<br />    * Partition structures are damaged or deleted.<br />    * Damage due to a power failure or surge.<br />* Recover files from devices with unknown file systems including Hard Disk, external ZIP/USB drive, removable SmartMedia, MemoryStick, <a class="zem_slink" href="http://en.wikipedia.org/wiki/Secure_Digital_card" title="Secure Digital card" rel="wikipedia">SD cards</a>, etc.</p>
<p>Download LInk:<br /><a href="http://rapidshare.com/files/301646629/EASEUS_Pro_v4.36_Amaderforum.com.rar">EASEUS Data Recovery</a><br /></font></b></b></font>
<div style="margin-top:10px;height:15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/4d93537b-169a-4d0b-acd0-82d9629ab7f1/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=4d93537b-169a-4d0b-acd0-82d9629ab7f1" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related pretty-attribution"></span></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[.BIN &amp; .CUE files simple tutorial]]></title>
<link>http://vvaavv.wordpress.com/2009/11/01/bin-cue-files-simple-tutorial/</link>
<pubDate>Sun, 01 Nov 2009 06:01:18 +0000</pubDate>
<dc:creator>uashokkumar1989</dc:creator>
<guid>http://vvaavv.wordpress.com/2009/11/01/bin-cue-files-simple-tutorial/</guid>
<description><![CDATA[There always seems to be the question &#8220;what do I do with a .bin and .cue file&#8221; in these ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>There always seems to be the question &#8220;what do I do with a .bin and .cue file&#8221; in these forums so I figured I would write a quick and simple tutorial. Please feel free to add more.   So you have downloaded two files, one with a .bin extension and one with a .cue extension. &#8220;What do I do with these?&#8221; you ask. There are a number of options.   <strong>BURN TO CD </strong> You will need either NERO, CDRWIN or FIREBURNER to burn the file.   <strong>To burn with NERO:</strong> Start NERO, choose FILE, choose BURN IMAGE, locate the .cue file you have and double click it. A dialog box will come up, for anything other than music make sure you choose DISC-AT-ONCE (DAO). You can also turn off the simulation burn if you so choose.  Then burn away.   <strong>To burn with CDRWin: </strong> Start CDRWin, choose the button on the top left, choose LOAD CUESHEET, press START RECORDING.  <strong> To burn with Fireburner: </strong> Start Fireburner, click on the button on the bottom left corner &#8220;VISUAL CUE BURNER/BINCHUNKER&#8221;, press the right mouse button and choose LOAD TRACKS FROM .CUE and choose the correct .CUE file, press the right mouse button again and chooseselect &#8220;Burn/Test Burn&#8221;, choose DISK AT ONCE (DAO), disable TEST BURN and MULTISESSION, press OK.   <strong>.CUE ERRORS </strong> The most common error you will get with a .cue file is when it points to an incorrect path. This is easily fixed. Find the .bin file, copy the exact title including the .bin extension. Now find the .cue file, open the .cue file using notepad. It should look similar to this:   FILE &#8220;name of file.bin&#8221; BINARY  TRACK 01 MODE2/2352  INDEX 01 00:00:00  TRACK 02 MODE2/2352  INDEX 00 00:04:00  INDEX 01 00:06:00   Delete everything in the quotes, in this case we would  delete name of file.bin. Now place the title you copied  in between the quotes. Save the changes and close out.  Thats it, your .cue file should work now.   OTHER WAYS TO USE .BIN &#38; .CUE FILES   <strong>VCDGear: </strong> This program will allow you to extract MPEG streams from CD images, convert VCD files to MPEG, correct MPEG errors, and more.   <strong>Daemon Tools: </strong> This program creates a virtual drive on your PC which will allow you to &#8220;mount&#8221; the .cue file and use whatever is in the .bin file without having to burn it to a cd.   <strong>ISOBuster: </strong> This program will allow you to &#8220;bust&#8221; open the .bin file and extract the files within the .bin.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[7 Things You Need to Know About Oracle 11gR2 -- Part 2: The Inside Scoop on 11gR2 ASM]]></title>
<link>http://integratc.wordpress.com/2009/10/27/7-things-you-need-to-know-about-oracle-11gr2-part-2-the-inside-scoop-on-11gr2-asm/</link>
<pubDate>Tue, 27 Oct 2009 20:49:29 +0000</pubDate>
<dc:creator>Integra Technology Consulting</dc:creator>
<guid>http://integratc.wordpress.com/2009/10/27/7-things-you-need-to-know-about-oracle-11gr2-part-2-the-inside-scoop-on-11gr2-asm/</guid>
<description><![CDATA[Continuing our seven-part blog mini-series entitled “7 Things You Need to Know About Oracle 11gR2]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Continuing our seven-part blog mini-series entitled <em>“7 Things You Need to Know About Oracle 11gR2&#8243;</em>, Integra Senior DBA <strong>Jason Buchanan</strong>, recently one of just twelve people from around the world hand-picked by Oracle to participate in the Oracle 11gR2 final beta, discusses <strong>Oracle 11gR2 ASM</strong> (Automatic Storage Management):<!--more--></p>
<blockquote><p>One of the biggest enhancements in Oracle Database 11g Release 2 is <strong>Oracle Automatic Storage Management Cluster File System (Oracle ACFS)</strong>.  You can now leverage the strength of your database storage infrastructure to house not only your database files but also your Oracle homes and other non-Oracle file types.  ACFS greatly reduces the complexity of retrieving backups and <strong>Data Pump</strong> exports if they are stored in ACFS filesystems.  Another new ASM feature is <strong>ADVM (ASM Dynamic Volume Manager)</strong> &#8211; ADVM provides the means to dynamically resize ACFS volumes on the fly without downtime.</p>
<p>Best of all, the high availability features of your storage infrastructure can be put to use as a destination for your Oracle binaries and other critical files.  The conundrum of what to do with the interior one-third of your disk spindles can be mitigated by using this space to create an important, but lesser-used ASM diskgroup: a new diskgroup for your Oracle homes.  You&#8217;ll still need to install the <strong>Grid Infrastructure</strong> binaries on local disk, but a single shared Oracle home is very easy to implement with ACFS.</p>
<p>The optimal way to manage ACFS is via a new Grid Infrastructure utility named &#8220;<strong><em>asmca</em></strong>&#8221; which is located in the Grid Infrastructure home directory.  You must change your ORACLE_HOME (and preferably your path) to point to the Grid Infrastructure directory to use the utility.  The <em>asmca</em> utility represents a new approach to Oracle&#8217;s Java GUIs with an updated appearance and simpler design.  The tool <strong>allows you to administer all of your ASM objects and manage ADVM objects</strong>.</p>
<p>As a side note, non-RAC environments will not auto-start ACFS objects.  You will need to write a script to start ACFS after booting, after which you can mount your ACFS volume.  The command to start the ACFS driver is &#8220;acfsload start -s&#8221; &#8211; Oracle will take it from there after starting ACFS.  It&#8217;s interesting that Oracle Grid Infrastructure will create init scripts for <strong>OHASD (Oracle High Availability Services Daemon)</strong> but not ACFS; however, it&#8217;s simple enough to run acfsload from a new startup script.</p>
<p>Oracle 11gR2 documentation is more robust than ever, and Oracle ACFS is very well documented:</p>
<p><a title="Oracle 11gR2 ASM Documentation" href="http://bit.ly/11gR2ASMDocs" target="_blank">http://bit.ly/11gR2ASMDocs</a></p></blockquote>
<p>&#160;</p>
<p>Please check back soon for Jason’s next entry in this blog series: “<em>How to Streamline Your Oracle 11gR2 Installation Process&#8221;</em>.</p>
<p>Also, please join <strong>Integra CTO Allan Edwards</strong> and <strong>Jason Buchanan</strong>on Tuesday November 3, 2009 at 12:00 pm Eastern / 9:00 am Pacific for a live webcast entitled “<strong><a title="Safe Passage to 11g Webcast" href="http://bit.ly/11gWebcast" target="_blank">Safe Passage to Oracle 11g: Lessons from Recent Upgrades</a></strong>“. In this important 30-minute webcast, Allan, Jason, and other Integra consultants will share critical lessons learned during a number of recent real-world 11g upgrade projects. What you learn in this webcast can make the difference between success and disaster, so please <strong><a title="Safe Passage to Oracle 11g Webcast Registration" href="http://bit.ly/11gWebcast" target="_blank">register</a></strong> now for the webcast at <a title="&#34;Safe Passage to Oracle 11g&#34; Webcast" href="http://bit.ly/11gWebcast" target="_blank">http://bit.ly/11gWebcast</a>!</p>
<p>As always, I’d love to hear your thoughts and comments here, or on our <a title="Integra Discussion Board" href="http://bit.ly/IntegraDiscussions" target="_blank">Facebook discussion board</a>!</p>
<p>Thanks!</p>
<p><a href="http://www.integratc.com/our_team.asp#heine" target="_blank">Eric Heine</a><br />
Vice President<br />
Integra Technology Consulting</p>
<p>781-890-0070<br />
<a title="mailto:eheine@integratc.com" href="mailto:eheine@integratc.com">eheine at integratc dot com</a></p>
<p><a title="www.integratc.com" href="http://www.integratc.com/" target="_blank">www.integratc.com</a></p>
<p>Follow us on Twitter: <a title="twitter.com/IntegraTC" href="http://www.twitter.com/IntegraTC" target="_blank">twitter.com/IntegraTC</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mac port of ZFS discontinued | MacWorld's view on the issue]]></title>
<link>http://eclecticchoices.wordpress.com/2009/10/27/mac-port-of-zfs-discontinued/</link>
<pubDate>Tue, 27 Oct 2009 15:05:46 +0000</pubDate>
<dc:creator>Bruce Kraus</dc:creator>
<guid>http://eclecticchoices.wordpress.com/2009/10/27/mac-port-of-zfs-discontinued/</guid>
<description><![CDATA[&nbsp; ZFS - The Last Word in File Systems? MacWorld has decided to wade through the murky waters of]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>&#160;</p>
<div id="attachment_810" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-810" title="ZFS - The Last Word in File Systems?" src="http://eclecticchoices.wordpress.com/files/2009/10/zfs_last.jpg?w=300" alt="ZFS - The Last Word in File Systems?" width="300" height="224" /><p class="wp-caption-text">ZFS - The Last Word in File Systems?</p></div>
<p>MacWorld has decided to wade through the murky waters of Apple&#8217;s discontinuation of porting Sun Microsystems ZFS to Mac OS X Snow Leopard. Read more here:</p>
<p><a href="http://shar.es/afv3q">Mac port of ZFS discontinued</a></p>
<p>&#160;</p>
<p>Posted using <a href="http://sharethis.com">ShareThis</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Loss of ZFS]]></title>
<link>http://eclecticchoices.wordpress.com/2009/10/25/the-loss-of-zfs/</link>
<pubDate>Sun, 25 Oct 2009 15:56:59 +0000</pubDate>
<dc:creator>Bruce Kraus</dc:creator>
<guid>http://eclecticchoices.wordpress.com/2009/10/25/the-loss-of-zfs/</guid>
<description><![CDATA[ZFS - The Last Word in File Systems? Louis Gerbarg has posted an excellent summation of the Apple ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style="color:#999999;"></p>
<div id="attachment_810" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-810" title="ZFS - The Last Word in File Systems?" src="http://eclecticchoices.wordpress.com/files/2009/10/zfs_last.jpg?w=300" alt="ZFS - The Last Word in File Systems?" width="300" height="224" /><p class="wp-caption-text">ZFS - The Last Word in File Systems?</p></div>
<p>Louis Gerbarg has posted an excellent summation of the Apple &#38; Sun ZFS Controversy. Read more here:</span></p>
<p><a href="http://devwhy.blogspot.com/2009/10/loss-of-zfs.html">The loss of ZFS</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sistemas de arquivos ou File Systens]]></title>
<link>http://thiagoti.wordpress.com/2009/10/25/sistemas-de-arquivos-ou-file-systens/</link>
<pubDate>Sun, 25 Oct 2009 11:56:59 +0000</pubDate>
<dc:creator>Thiago Inácio de Matos</dc:creator>
<guid>http://thiagoti.wordpress.com/2009/10/25/sistemas-de-arquivos-ou-file-systens/</guid>
<description><![CDATA[Caros toda as explicações aqui são apenas básicas, eles servem para que voce tenha o conhecimento su]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="margin-bottom:0;">Caros toda as explicações aqui são apenas básicas, eles servem para que voce tenha o conhecimento suficiente para a escolha do melhor sistema de arquivos para o seu computador residencial e também não tenho a pretensão de dizer qual seria a melhor escolha (isso só voce poderá dizer com base em testes)</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">O que é sistema de arquivos:</p>
<p style="margin-bottom:0;">Sistema de arquivos é um conjunto de rotinas e estruturas que permite ao sistema operacional ter o controle do acesso aos dados nas unidades de armazenamento.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">- Journaling (subst. diário) é a criação de um log com informações sobre os arquivos armazenados no disco como metadata(tamanho, dono e permissões) e as informações dos dados em si, metadadata não é o arquivo propriamente dito é apenas a informação estrutural do mesmo</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">- EXT3 é a terceira versão do sistema de arquivos EXT que é a mais utilizada hoje em dia, devido a sua maior segurança e ser a evolução do primeiro sistema de arquivos para linux o EXT, ele é considerado o mais seguro (me refiro a integridade dos arquivos) pelo fato do seu sistema de journaling armazenar as informações de metadados e dos dados com isso fazendo com que a recuperação dos dados caso haja um desligamento acidental seja mais eficiente, o sistema de journal do EXT3 possui três modos:</p>
<p style="margin-bottom:0;">Ordered (padrão) &#8211; o journal é atualizado no final de cada operação de escrita, o que diminui o desempenho pelo fado da cabeça fazer a gravação dos dados duas vezes</p>
<p style="margin-bottom:0;">Wirtebkack &#8211; ele armazena apenas informações referente a metadata, o que o tornar o mais rápido dos três modos, mais o torna o mais suscetível a falhas durante um processo de recuperação de arquivos</p>
<p style="margin-bottom:0;">Journal &#8211; é o modo mais seguro e confiável do três (torno a lembrar que é somente a respeito da recuperação dos dados) devido ao fato dele armazenar as informações tando de metadada assim como informações sobre os dados que serão armazenados no disco é o modo que tem o menor desempenho dos três e é o menos utilizado.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">- ReiserFS é um sistema de arquivos que tem como característica positiva a utilização de blocos dinâmicos, que nada mais é que to tamanho do bloco aonde o arquivo ira ficar é sempre igual ao seu tamanho (repere no seu computador a propriedade do arquivo e veja que há duas notações uma ao tamanho do arquivo e a outra do tamanho em disco) com o RiserFS isso não ocorre do arquivo ocupar mais espaço em disco do que o necessário, já que o tamanho de cada bloco é ajustado para que o arquivo não ocupe o mais espaço do que o necessário e uma característica negativa (que não pode faltar) é que ele dentre os outros sistemas de arquivos para linux é o que utiliza um maior percentual de processamento, pelo fato dos seus algorítimos serem um pouco mais complexos.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">- XFS é um sistema de arquivos de grande desempenho principalmente para arquivos grandes, desenvolvido inicialmente para Unix e adaptado para o linux ele utiliza endereçamento de 64 bits (permite arquivos maiores e aumenta o desempenho do mesmo), possuir journal que grande uma grande velocidade na recuperação dos dados.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">- JFS  assim como XFS ele é um sistema de arquivos 64 bits ele tem como um característica interessante a capacidade de redimensionar as partições do sistema sem que o computador seja desligado, ele não é muito utilizado pelo fato dele ter um inicio um tanto quanto conturbado devido a grande quantidade de bugs que existia nele, que hoje já foram sanados</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">- FAT é um sistema de arquivos que foi desenvolvido pela Microsoft para o MS-DOS, que hoje só é utilizado por pen-drivers e outros discos de estado solido (SSD em inglês) como cartões de memória e é virtualmente suportado por todos os sistemas operacionais conhecidos.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">- NTFS é o sistema de arquivos mais atual da Microsoft que foi desenvolvido para substituir o FAT devido a falta de segurança e pela sua limitação a reconhecer apenas discos com apenas 2 Gbs, ele assim como os sistemas de arquivos para o linux possui um sistema de recuperação de dados que aumenta as chances de voce recuperar os seus dados e ele teve uma serie de implementações de segurança como o permissões de acesso aos arquivos armazenados no disco.</p>
<p style="margin-bottom:0;">Amplexos e até o próximo post</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">PS.: Fiquei tanto tenpo sem posts deivo a falta de moden</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Want to see every file on your Mac System?]]></title>
<link>http://chimac.net/2009/10/23/want-to-see-every-file-on-your-mac-system/</link>
<pubDate>Fri, 23 Oct 2009 12:18:42 +0000</pubDate>
<dc:creator>chimac</dc:creator>
<guid>http://chimac.net/2009/10/23/want-to-see-every-file-on-your-mac-system/</guid>
<description><![CDATA[Then you probably want Xfile.  This tool is especially useful for system administrators or developer]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Then you probably want Xfile.  This tool is especially useful for system administrators or developers.  Click <a href="http://rixstep.com/4/0/td.shtml" target="_self">here </a>to learn more.  A free test drive program is available now.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ISSUE 1 - Errore 1309 e limiti file-system FAT32]]></title>
<link>http://techaman.wordpress.com/2009/10/13/issue1-errore-1309-e-limiti-file-system-fat32/</link>
<pubDate>Tue, 13 Oct 2009 20:47:22 +0000</pubDate>
<dc:creator>amarok</dc:creator>
<guid>http://techaman.wordpress.com/2009/10/13/issue1-errore-1309-e-limiti-file-system-fat32/</guid>
<description><![CDATA[DESCRIZIONE &#8211; Tentando di spostare un file di circa 8GB su un HD esterno ottenevo sistematicam]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;"><span style="color:#3366ff;"><strong>DESCRIZIONE</strong></span> &#8211; Tentando di spostare un file di circa 8GB su un HD esterno ottenevo sistematicamente al termine l&#8217;errore 1309 e quindi il conseguente fallimento del trasferimento.<br />
<span style="color:#3366ff;"><strong>CAUSA</strong></span> &#8211; L&#8217;HD è formattato con file system FAT32 che prevede come limite della dimensione del file 4GB ben al di sotto del file trasferito.<br />
<span style="color:#3366ff;"><strong>SOLUZIONE</strong></span> &#8211; non ancora disponibile<br />
<span style="color:#3366ff;"><strong>APPROFONDIMENTI</strong></span> &#8211; A <a href="http://www.portfoliofaq.com/pfaq/FAQ00002.htm">questo indirizzo</a> è possibile trovare un confronto fra i file system maggiormente utilizzati.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[resizing partition]]></title>
<link>http://kuojenchiang.wordpress.com/2009/10/10/resizing-partition/</link>
<pubDate>Sat, 10 Oct 2009 00:00:44 +0000</pubDate>
<dc:creator>kuojenchiang</dc:creator>
<guid>http://kuojenchiang.wordpress.com/2009/10/10/resizing-partition/</guid>
<description><![CDATA[still trying to figure out how to resize my home partition on this suse 10 on this hp mini 2140. rea]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>still trying to figure out how to <a href="http://apcmag.com/how_to_dual_boot_linux_and_windows_xp_linux_installed_first.htm?page=5" target="_blank">resize my home partition</a> on this suse 10 on this hp mini 2140.</p>
<p>reading  <a href="http://www.howtoforge.com/linux_resizing_ext3_partitions">How To Resize ext3 Partitions Without Losing Data</a></p>
<p>next I should try to understand the unix file system by reading <a href="http://www.solarisinternals.com/si/reading/sunworldonline/swol-05-1999/swol-05-filesystem.html">Getting to know the Solaris filesystem, Part 1</a></p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:0;width:1px;height:1px;">
<h1 id="title">How To Resize ext3 Partitions Without Losing Data</h1>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is FAT File System?]]></title>
<link>http://fatfilesystem.wordpress.com/2009/09/25/what-is-fat-file-system/</link>
<pubDate>Fri, 25 Sep 2009 10:10:38 +0000</pubDate>
<dc:creator>fatfilesystem</dc:creator>
<guid>http://fatfilesystem.wordpress.com/2009/09/25/what-is-fat-file-system/</guid>
<description><![CDATA[The FAT file system (FAT FS) enables the inserting developer from Zeeis to easily and integrates MS-]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The FAT file system (FAT FS) enables the inserting developer from Zeeis to easily and integrates MS-DOS or the window compatible <a title="FAT File System" href="http://www.zeeis.com/fat-file-system/" target="_self"><strong>FAT file system</strong></a> using the nature mutually and all main operating system all equipment rapidly. It tested the use in several true time operating system and the canned food not to have RTOS. This high performance source code was the minimum memory consumption in RAM and ROM optimal, was cheap and is high speed.<br />
In 2008, the Zeeis FAT file system product shipped the completely successful 25,000,000 equipment, is the leading filing system product for mobile, the electrical appliances and the storage application.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The .NET File System Object Model]]></title>
<link>http://rthumati.wordpress.com/2009/09/22/the-net-file-system-object-model/</link>
<pubDate>Tue, 22 Sep 2009 13:42:26 +0000</pubDate>
<dc:creator>ravivarmathumati</dc:creator>
<guid>http://rthumati.wordpress.com/2009/09/22/the-net-file-system-object-model/</guid>
<description><![CDATA[The .NET Framework doesn&#8217;t change the structure of the file system, nor does it build a new la]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;"><em>The .NET Framework doesn&#8217;t change the structure of the file system, nor does it build a new layer on top of it. </em><em>More simply, but also more effectively for developers, it supplies a new object model for file system-related operations. A managed application can work with files and directories using high-level methods rather than low level understanding of the file system. This article provides an overview of methods and classes contained in the System.IO namespace.</em></p>
<p style="text-align:justify;">The .NET Framework reworks, rationalizes, and simplifies key portions of the Win32 API, within the .NET Framework with very few exceptions… Microsoft has redesigned the whole Win32 API and made it available to programmers in an object-oriented fashion. In this article, you will see how to manage paths as a special data type with ad-hoc methods and properties; how to work to retrieve as much information as possible about files and directories, and how to read and write files.</p>
<p style="text-align:justify;"><strong>Managing Files</strong></p>
<p style="text-align:justify;">The .NET Framework uses System.IO as the main namespace to work with file systems. Within this namespace, you can identify three groups of related classes that accomplish the following tasks:</p>
<ul style="text-align:justify;">
<li>Retrieve information and perform basic operations on files and directories</li>
<li>Perform string-based manipulation on paths</li>
<li>Read and write operations on data streams and files</li>
</ul>
<p style="text-align:justify;">The .NET Framework provides I/O functionality through a few global static classes, such as <em>File</em>, <em>Directory, </em>and <em>Path</em>. You declare these classes as static (or <em>shared </em>in Visual Basic .NET) and in order to use them, you don&#8217;t need to create specific instances of the classes. File, Directory, and Path are just the repository of global, type-specific functions that you call to create, copy, delete, move, and open files and directories. All of these functions requires a file or a directory name to operate. To write or read files, you also have specific classes to manage streams and bytes at your disposal.</p>
<p style="text-align:justify;">If you&#8217;re going to work with files within a .NET managed application, chances are good that you have to use the methods from the File class. So let&#8217;s start by taking a look at the methods exposed by this class (see <strong>Table 1</strong>).</p>
<p style="text-align:justify;">The path parameter that all methods require can indicate a relative or absolute path. A relative path is interpreted as relative to the current working directory. To obtain the current working directory, you use the <strong>GetCurrentDirectory </strong>method provided by the <strong>Directory </strong>class. Any methods above that perform write operations that will create the specified file if it does not exist. If the file does exist, it will be overwritten as long as it is not marked read-only.</p>
<p style="text-align:justify;">Each time an application invokes a method on the <strong>File </strong>class, a security check is performed on the involved file system elements. The check verifies that the current user has the permission to perform the specified operation. If you use the same file or directory several times, this embedded security check might result in a slight performance hit. For this and other reasons, the .NET Framework defines an instance-specific type to wrap the functionality of files called the <strong>FileInfo </strong>class. If you need to access a file in a repeated fashion, you can use the FileInfo class to perform the security check only once. Should you always use FileInfo and disregard the File class? Well, consider that, in general, the methods of the global classes have an internal implementation that results in more direct code. For this reason, global objects are preferable for one-shot calls.</p>
<p style="text-align:justify;">If you look at the overall set of functionality both provide, the FileInfo class looks very similar to the static File class. However, the internal implementation and the programming interface is slightly different. The FileInfo class works on a particular file and requires that you instantiate the class before you access its methods and properties.</p>
<p style="text-align:justify;">FileInfo fi = new FileInfo(&#8220;mydoc.txt&#8221;);</p>
<p style="text-align:justify;">When you create an instance of the <strong>FileInfo </strong>class, you specify a filename, either fully or partially qualified. The filename you indicate is only checked for the name consistency and not for existence. If the filename you indicate through the class constructor is unacceptable an exception is thrown. Common pitfalls are colons in the middle of the string, invalid characters, blank names, or names longer than 256 characters. <strong>Table 2 </strong>lists the properties of the FileInfo class.</p>
<p style="text-align:justify;">The methods available for the FileInfo class are summarized in <strong>Table 3</strong>. As you can see, you can group methods into two categories: methods to perform simple stream-based operations on the contents of the file, and methods to copy or delete the file itself.</p>
<p style="text-align:justify;">The FileInfo class represents a logical wrapper for a system element that is continuously subject to concurrent changes. Can you be sure that the information returned by the FileInfo object is always up to date? Properties such as <strong>Exists</strong>, <strong>Length</strong>, <strong>Attributes</strong>, and <strong>LastAccessTime </strong>can easily contain inconsistent values if other users may make changes concurrently.</p>
<p style="text-align:justify;">When you create an instance of FileInfo, no information is actually read from the file system. As soon as you attempt to read the value of one of the aforementioned critical properties, the class invokes the Refresh method, reads the current state of the file, and caches that information. For performance reasons, though, the FileInfo class doesn&#8217;t automatically refresh the state of the object each time properties are read. It does that only the first time that it reads one of the properties.</p>
<p style="text-align:justify;">To force this built-in behavior, you should call <strong>Refresh </strong>whenever you need to read up-to-date information about the attributes or the length of a file. Whether or not you need to refresh this data depends greatly on the needs of your application. Under the hood, the Refresh method makes a call to the Win32 <strong>FindFirstFile </strong>function and uses the information contained in the returned <strong>WIN32_FIND_DATA </strong>structure to populate the properties of the FileInfo class. You need to consider whether or not the application needs the overhead of calling this API function.          </p>
<table style="text-align:justify;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td><strong>Table 1: Methods exposed by the File class.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Method Name</em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">AppendText</td>
<td valign="top">Creates and returns a stream object for the specified file. The stream allows you to append UTF-8 encoded text.</td>
</tr>
<tr>
<td valign="top">Copy</td>
<td valign="top">Copies an existing file to a new file. The destination cannot be a directory name or an existing file.</td>
</tr>
<tr>
<td valign="top">Create</td>
<td valign="top">Creates a new file.</td>
</tr>
<tr>
<td valign="top">CreateText</td>
<td valign="top">Creates a new file (or opens one if a file already exists) for writing UTF-8 text.</td>
</tr>
<tr>
<td valign="top">Delete</td>
<td valign="top">Deletes the file specified.</td>
</tr>
<tr>
<td valign="top">Exists</td>
<td valign="top">Determines whether the specified file exists.</td>
</tr>
<tr>
<td valign="top">GetAttributes</td>
<td valign="top">Gets the attributes of the file.</td>
</tr>
<tr>
<td valign="top">GetCreationTime</td>
<td valign="top">Returns the creation date and time of the specified file.</td>
</tr>
<tr>
<td valign="top">GetLastAccessTime</td>
<td valign="top">Returns the last access date and time for the specified file.</td>
</tr>
<tr>
<td valign="top">GetLastWriteTime</td>
<td valign="top">Returns the last write date and time for the specified file.</td>
</tr>
<tr>
<td valign="top">Move</td>
<td valign="top">Moves a specified file to a new location. Also provides the option to specify a new filename.</td>
</tr>
<tr>
<td valign="top">Open</td>
<td valign="top">Opens a file on the specified path.</td>
</tr>
<tr>
<td valign="top">OpenRead</td>
<td valign="top">Opens an existing file for reading.</td>
</tr>
<tr>
<td valign="top">OpenText</td>
<td valign="top">Opens an existing UTF-8 encoded text file for reading.</td>
</tr>
<tr>
<td valign="top">OpenWrite</td>
<td valign="top">Opens an existing file for writing.</td>
</tr>
<tr>
<td valign="top">SetAttributes</td>
<td valign="top">Sets the specified attributes for the given file.</td>
</tr>
<tr>
<td valign="top">SetCreationTime</td>
<td valign="top">Sets the date and time the file was created.</td>
</tr>
<tr>
<td valign="top">SetLastAccessTime</td>
<td valign="top">Sets the date and time the specified file was last accessed.</td>
</tr>
<tr>
<td valign="top">SetLastWriteTime</td>
<td valign="top">Sets the date and time that the specified file was last written.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><strong>Table 2: Properties of the FileInfo class.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Property Name</em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">Attributes</td>
<td valign="top">Gets or sets the attributes of the current file.</td>
</tr>
<tr>
<td valign="top">CreationTime</td>
<td valign="top">Gets or sets the time when the current file was created.</td>
</tr>
<tr>
<td valign="top">Directory</td>
<td valign="top">Returns a DirectoryInfo object representing the parent directory.</td>
</tr>
<tr>
<td valign="top">DirectoryName</td>
<td valign="top">Gets a string representing the directory&#8217;s full path.</td>
</tr>
<tr>
<td valign="top">Exists</td>
<td valign="top">Indicates whether a file with the current name exists.</td>
</tr>
<tr>
<td valign="top">Extension</td>
<td valign="top">Gets the string representing the extension of the filename, including the period (.).</td>
</tr>
<tr>
<td valign="top">FullName</td>
<td valign="top">Returns the full path of the current file.</td>
</tr>
<tr>
<td valign="top">LastAccessTime</td>
<td valign="top">Gets or sets the time when the current file was last accessed.</td>
</tr>
<tr>
<td valign="top">LastWriteTime</td>
<td valign="top">Gets or sets the time when the current file was last written.</td>
</tr>
<tr>
<td valign="top">Length</td>
<td valign="top">Returns the size in bytes of the current file.</td>
</tr>
<tr>
<td valign="top">Name</td>
<td valign="top">Returns the name of the file.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><strong>Table 3: Methods of the FileInfo class.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Method</em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">AppendText</td>
<td valign="top">Creates and returns a stream object for the current file. The stream allows you to append UTF-8 encoded text.</td>
</tr>
<tr>
<td valign="top">CopyTo</td>
<td valign="top">Copies the current file to a new file.</td>
</tr>
<tr>
<td valign="top">Create</td>
<td valign="top">Creates a file. It&#8217;s a simple wrapper for the File.Create method.</td>
</tr>
<tr>
<td valign="top">CreateText</td>
<td valign="top">Create a file and returns a Stream object to write text.</td>
</tr>
<tr>
<td valign="top">Delete</td>
<td valign="top">Permanently deletes the current file. Fails if the file is open.</td>
</tr>
<tr>
<td valign="top">MoveTo</td>
<td valign="top">Moves the current file to a new location, providing the option to specify a new filename.</td>
</tr>
<tr>
<td valign="top">Open</td>
<td valign="top">Opens the file with various read/write and sharing privileges.</td>
</tr>
<tr>
<td valign="top">OpenRead</td>
<td valign="top">Creates and returns a read-only stream for the file.</td>
</tr>
<tr>
<td valign="top">OpenText</td>
<td valign="top">Creates and returns a Stream object to read text from the file.</td>
</tr>
<tr>
<td valign="top">OpenWrite</td>
<td valign="top">Creates and returns a write-only Stream object that you can use to write text to the file.</td>
</tr>
<tr>
<td valign="top">Refresh</td>
<td valign="top">Refreshes the information that the class can have about the file.</td>
</tr>
<tr>
<td valign="top">ToString</td>
<td valign="top">Returns a string that represents the fully qualified path of the file.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
</tbody>
</table>
<p style="text-align:justify;"><strong>Copying and Deleting Files</strong></p>
<p style="text-align:justify;">To make a copy of the current file, you can use the <strong>CopyTo </strong>method, which comes with two overloads. Both overloads copy the file to another file but the first overload just disallows overwriting, while the other gives you a chance to control overwriting through a Boolean parameter.</p>
<p style="text-align:justify;">FileInfo fi = fi.CopyTo(&#8220;NewFile.txt&#8221;, true);</p>
<p style="text-align:justify;">Notice that both methods require that the first argument be a filename. It can&#8217;t be the name of a directory where you want the file to be copied. If you use a directory name, that will be the name of the output file.</p>
<p style="text-align:justify;">The <strong>Delete </strong>method permanently deletes the file from disk. Using this method, there is no way to programmatically send the deleted file to the recycle bin. To put a file in the recycle bin you must resort to creating a .NET wrapper for the Win32 API function that does that. The API function you need is named <strong>SHFileOperation</strong>.</p>
<p style="text-align:justify;">The <strong>Attributes </strong>property indicates the file system attributes of the given file. In order to set or read an attribute, the file must already exist and the application must have access to it. To write an attribute value to a file, you must also have a write permission, otherwise the <strong>FileIOPermissionAccess </strong>exception is raised. The attributes of a file are expressed using the <strong>FileAttributes </strong>type. (See <strong>Table 4</strong>.)</p>
<p style="text-align:justify;">The values in the table correspond to those defined in the Win32 SDK. Notice that not all attributes are applicable to both files and directories. You set attributes on a file using code as in the code snippet below.</p>
<p style="text-align:justify;">// Make the file read-only and hidden<br />
FileInfo fi = new FileInfo(&#8220;mydoc.txt&#8221;)<br />
fi.Attributes = FileAttributes.ReadOnly &#124; <br />
                FileAttributes.Hidden;</p>
<p style="text-align:justify;">Note you cannot set all of the attributes listed in <strong>Table 4 </strong>through the Attributes property. For example, the system assigns the Encrypted and the Compressed attributes only if the file is contained in an encrypted or compressed folder. Likewise, you can give a file a reparse point or you can mark is as a sparse file only through specific API functions and only on NTFS volumes.</p>
<p style="text-align:justify;"><strong>Working with Directories</strong></p>
<p style="text-align:justify;">To manage a directory as an object you use the <strong>Directory </strong>global object or the <strong>DirectoryInfo </strong>class. The global Directory class exposes static methods for creating, copying, and moving directories and for enumerating their files and subdirectories. <strong>Table 5 </strong>lists the methods on the Directory class.</p>
<p style="text-align:justify;">Note that the Delete method has two overloads. By default, it deletes only empty directories and throws an <strong>IOException </strong>exception if the directory is not empty or marked read-only. The second overload includes a Boolean argument that, if set to true, enables the method to recursively delete the entire directory tree.</p>
<p style="text-align:justify;">// Clear a directory tree<br />
Directory.Delete(dirName, true);</p>
<p style="text-align:justify;">The <strong>DirectoryInfo </strong>class represents the instance-based counterpart of the Directory class and works on a particular directory.</p>
<p style="text-align:justify;">DirectoryInfo di = new DirectoryInfo(@&#8221;c:\&#8221;);</p>
<p style="text-align:justify;">To create an instance of the DirectoryInfo class, you specify a fully qualified path. Just as for FileInfo, the path is checked for consistency but not for existence. Note that the path can also be a filename or a Universal Naming Convention (UNC) name. If you create a DirectoryInfo object passing a filename, the class will use the directory that contains the specified file. <strong>Table 6 </strong>shows the properties available with the DirectoryInfo class.</p>
<p style="text-align:justify;">The <strong>Name </strong>property of the file and directory classes is read-only and you cannot use it to rename the corresponding file system&#8217;s element. The methods you can use on the DirectoryInfo class are listed in <strong>Table 7</strong>.</p>
<p style="text-align:justify;">The <strong>GetFileSystemInfos </strong>method returns an array of objects, each of which points to a file or a subdirectory contained in the directory bound to the current DirectoryInfo object. Unlike <strong>GetDirectories </strong>and <strong>GetFiles </strong>methods which simply return the names of subdirectories and files as plain strings, GetFileSystemInfos returns a strongly-typed object for each entry?either DirectoryInfo or FileInfo. The return type of the method is an array of FileSystemInfo objects.</p>
<p style="text-align:justify;">public FileSystemInfo[] GetFileSystemInfos()</p>
<p style="text-align:justify;">FileSystemInfo is the base class for both FileInfo and DirectoryInfo. GetFileSystemInfos has an overloaded version that can accept a string with search criteria.</p>
<p style="text-align:justify;">Let&#8217;s see how to use the file and directory classes to build a simple console application that lists the contents of a directory. The full source code is presented in <strong>Listing 1</strong>.</p>
<p style="text-align:justify;"><strong>GetFileSystemInfos </strong>accepts a filter string that you can use to set some criteria. The filter string can contain wild card characters such as ? and *. The ? character is a placeholder for any individual character, while * represents any string of one or more characters. A bit more problematic is selecting all files that belong to one group or another. Likewise, there&#8217;s no direct way to obtain all directories plus all the files that match certain criteria. In similar cases, you must query each result set individually and then combine them together in a single array of FileSystemInfo objects. The following code snippet shows how to select all the subdirectories and all the aspx pages in a given folder.</p>
<p style="text-align:justify;">FileSystemInfo fsiDirs = (FileSystemInfo[]) <br />
        di.GetSubdirectories();<br />
FileSystemInfo fsiAspx = (FileSystemInfo[]) <br />
        di.GetFiles(&#8220;.aspx&#8221;);</p>
<p style="text-align:justify;">You can fuse the two arrays together using the methods of the <strong>Array </strong>class.</p>
<p style="text-align:justify;"><strong>Working with Paths</strong></p>
<p style="text-align:justify;">Although paths are nothing more than strings, it&#8217;s a common feeling that they deserve a tailor-made set of functions to makes paths easier to manipulate. The <strong>Path </strong>type provides programmers with the unprecedented ability to perform operations on instances of a string class that contain file or directory path information. <strong>Path </strong>is a single-instance class that contains only static methods. A path can contain either absolute or relative location information for a given file or folder. If the information about the location is incomplete and partial, then the class completes it using the current location, if applicable.</p>
<p style="text-align:justify;">The members of the Path class let you perform everyday operations such as: determining whether a given filename has a certain extension, changing the extension of a filename leaving all the remainder of the path intact, combining partial path strings into one valid path, and more. The Path class doesn&#8217;t work in conjunction with the operating system and should be simply viewed as a highly specialized string manipulation class.</p>
<p style="text-align:justify;">The members of the Path class never interact with the file system to verify the correctness of a filename. Even though you can combine two strings to get a valid directory name, that would not be sufficient to actually create that new directory. On the other hand, the members of the Path class are smart enough to throw an exception if they detect that a path string contains invalid characters. <strong>Table 8 </strong>lists the methods of the Path class.</p>
<p style="text-align:justify;">It&#8217;s interesting to notice that any call to <strong>GetTempFileName </strong>promptly results in creating a zero-length file on disk and specifically in the system&#8217;s temporary folder (i.e., C:\Windows\Temp). This is the only case in which the Path class happens to interact with the operating system.</p>
<table style="text-align:justify;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td><strong>Table 4: The FileAttributes enumeration.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Attribute</em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">Archive</td>
<td valign="top">Indicates that the file is an archive.</td>
</tr>
<tr>
<td valign="top">Compressed</td>
<td valign="top">The file is compressed.</td>
</tr>
<tr>
<td valign="top">Device</td>
<td valign="top">Not currently used. Reserved for future use.</td>
</tr>
<tr>
<td valign="top">Directory</td>
<td valign="top">The file is a directory.</td>
</tr>
<tr>
<td valign="top">Encrypted</td>
<td valign="top">The file or directory is encrypted. For a file, this means that all data in the file is encrypted. For a directory, this means that encryption is the default for newly created files and directories but not necessarily that all current files are encrypted.</td>
</tr>
<tr>
<td valign="top">Hidden</td>
<td valign="top">The file is hidden and doesn&#8217;t show up in directory listings.</td>
</tr>
<tr>
<td valign="top">Normal</td>
<td valign="top">The file has no other attributes set. Note that this attribute is valid only if used alone.</td>
</tr>
<tr>
<td valign="top">NotContentIndexed</td>
<td valign="top">The file should not be indexed by the system indexing service.</td>
</tr>
<tr>
<td valign="top">Offline</td>
<td valign="top">The file is offline and its data is not immediately available.</td>
</tr>
<tr>
<td valign="top">ReadOnly</td>
<td valign="top">The file is read-only.</td>
</tr>
<tr>
<td valign="top">ReparsePoint</td>
<td valign="top">The file contains a reparse point, which is a block of user-defined data associated with a file or a directory. Requires an NTFS file system.</td>
</tr>
<tr>
<td valign="top">SparseFile</td>
<td valign="top">The file is a sparse file. Sparse files are typically large files whose data are mostly zeros. Requires an NTFS file system.</td>
</tr>
<tr>
<td valign="top">System</td>
<td valign="top">The file is a system file, part of the operating system or used exclusively by the operating system.</td>
</tr>
<tr>
<td valign="top">Temporary</td>
<td valign="top">The file is temporary and can be deleted by the application any time soon.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><strong>Table 5: Methods on the Directory class.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Method Name</em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">CreateDirectory</td>
<td valign="top">Makes sure that the specified path exists in all of its included subdirectories.</td>
</tr>
<tr>
<td valign="top">Delete</td>
<td valign="top">Deletes a directory and, optionally, all of its contents.</td>
</tr>
<tr>
<td valign="top">Exists</td>
<td valign="top">Determines whether the given directory exists.</td>
</tr>
<tr>
<td valign="top">GetCreationTime</td>
<td valign="top">Gets the creation date and time of the specified directory.</td>
</tr>
<tr>
<td valign="top">GetCurrentDirectory</td>
<td valign="top">Gets the current working directory of the application.</td>
</tr>
<tr>
<td valign="top">GetDirectories</td>
<td valign="top">Returns an array of strings filled with the names of the child subdirectories of the specified directory.</td>
</tr>
<tr>
<td valign="top">GetDirectoryRoot</td>
<td valign="top">Gets volume and root information for the specified path.</td>
</tr>
<tr>
<td valign="top">GetFiles</td>
<td valign="top">Returns the names of files in the specified directory.</td>
</tr>
<tr>
<td valign="top">GetFileSystemEntries</td>
<td valign="top">Returns an array of strings filled with the names of all files and subdirectories contained in the specified directory.</td>
</tr>
<tr>
<td valign="top">GetLastAccessTime</td>
<td valign="top">Returns the date and time the specified directory was last accessed.</td>
</tr>
<tr>
<td valign="top">GetLastWriteTime</td>
<td valign="top">Returns the date and time the specified directory was last written.</td>
</tr>
<tr>
<td valign="top">GetLogicalDrives</td>
<td valign="top">Returns an array of strings filled with the names of the logical drives found on the computer. Strings have the form &#8220;&#60;drive letter&#62;:\&#8221;.</td>
</tr>
<tr>
<td valign="top">GetParent</td>
<td valign="top">Retrieves the parent directory of the specified path. The directory is returned as a DirectoryInfo object.</td>
</tr>
<tr>
<td valign="top">Move</td>
<td valign="top">Moves a directory and its contents to a new location. An exception is thrown if you move the directory to another volume or if a directory with the same name exists.</td>
</tr>
<tr>
<td valign="top">SetCreationTime</td>
<td valign="top">Sets the creation date and time for the specified directory.</td>
</tr>
<tr>
<td valign="top">SetCurrentDirectory</td>
<td valign="top">Sets the application&#8217;s current working directory.</td>
</tr>
<tr>
<td valign="top">SetLastAccessTime</td>
<td valign="top">Sets the date and time the specified file or directory was last accessed.</td>
</tr>
<tr>
<td valign="top">SetLastWriteTime</td>
<td valign="top">Sets the date and time a directory was last written to.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><strong>Table 6: Properties of the DirectoryInfo class.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Property </em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">Attributes</td>
<td valign="top">Gets or sets the attributes of the current directory.</td>
</tr>
<tr>
<td valign="top">CreationTime</td>
<td valign="top">Gets or sets the creation time of the current directory.</td>
</tr>
<tr>
<td valign="top">Exists</td>
<td valign="top">Determines whether the directory exists.</td>
</tr>
<tr>
<td valign="top">Extension</td>
<td valign="top">Returns the extension (if any) in the directory name.</td>
</tr>
<tr>
<td valign="top">FullName</td>
<td valign="top">Returns the full path of the directory.</td>
</tr>
<tr>
<td valign="top">LastAccessTime</td>
<td valign="top">Gets or sets the time when the current directory was last accessed.</td>
</tr>
<tr>
<td valign="top">LastWriteTime</td>
<td valign="top">Gets or sets the time when the current directory was last written.</td>
</tr>
<tr>
<td valign="top">Name</td>
<td valign="top">Returns the name of the directory bound to this object.</td>
</tr>
<tr>
<td valign="top">Parent</td>
<td valign="top">Returns the parent of the directory bound to this object.</td>
</tr>
<tr>
<td valign="top">Root</td>
<td valign="top">Returns the root portion of the directory path.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><strong>Table 7: Methods of the DirectoryInfo class.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Method Name</em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">Create</td>
<td valign="top">Creates a directory. It&#8217;s a simple wrapper for the Directory.Create method</td>
</tr>
<tr>
<td valign="top">CreateSubdirectory</td>
<td valign="top">Creates a subdirectory on the specified path. The path can be relative to this instance of the DirectoryInfo class.</td>
</tr>
<tr>
<td valign="top">Delete</td>
<td valign="top">Deletes the directory.</td>
</tr>
<tr>
<td valign="top">GetDirectories</td>
<td valign="top">Returns an array of DirectoryInfo objects, each pointing to a subdirectory of the current directory.</td>
</tr>
<tr>
<td valign="top">GetFiles</td>
<td valign="top">Returns an array of FileInfo objects, each pointing to a file contained in the current directory.</td>
</tr>
<tr>
<td valign="top">GetFileSystemInfos</td>
<td valign="top">Retrieves an array of FileSystemInfo objects representing all the files and subdirectories in the current directory.</td>
</tr>
<tr>
<td valign="top">MoveTo</td>
<td valign="top">Moves a directory and all of its contents to a new path.</td>
</tr>
<tr>
<td valign="top">Refresh</td>
<td valign="top">Refreshes the state of the DirectoryInfo object.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><strong>Table 8: Methods of the Path class.</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong><em>Method Name</em></strong></td>
<td valign="top"><strong><em>Description</em></strong></td>
</tr>
<tr>
<td valign="top">ChangeExtension</td>
<td valign="top">Changes the extension of the specified path string.</td>
</tr>
<tr>
<td valign="top">Combine</td>
<td valign="top">Concatenates two path strings together.</td>
</tr>
<tr>
<td valign="top">GetDirectoryName</td>
<td valign="top">Extracts and returns the directory information for the specified path string.</td>
</tr>
<tr>
<td valign="top">GetExtension</td>
<td valign="top">Returns the extension of the specified path string.</td>
</tr>
<tr>
<td valign="top">GetFileName</td>
<td valign="top">Returns filename and extension of the specified path string.</td>
</tr>
<tr>
<td valign="top">GetFileNameWithoutExtension</td>
<td valign="top">Returns the filename of the specified path string without the extension.</td>
</tr>
<tr>
<td valign="top">GetFullPath</td>
<td valign="top">Returns the absolute path for the specified path string.</td>
</tr>
<tr>
<td valign="top">GetPathRoot</td>
<td valign="top">Returns the root directory for the specified path.</td>
</tr>
<tr>
<td valign="top">GetTempFileName</td>
<td valign="top">Returns a unique temporary filename and creates a zero-byte file by that name on disk.</td>
</tr>
<tr>
<td valign="top">GetTempPath</td>
<td valign="top">Returns the path of the temporary folder.</td>
</tr>
<tr>
<td valign="top">HasExtension</td>
<td valign="top">Determines whether the specified path string includes an extension.</td>
</tr>
<tr>
<td valign="top">IsPathRooted</td>
<td valign="top">Returns a value that indicates whether the specified path string contains an absolute path.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
</tbody>
</table>
<p style="text-align:justify;"> </p>
<table style="text-align:justify;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td> </td>
</tr>
<tr>
<td><a href="http://www.code-magazine.com/CodeListing.aspx?QuickID=0305051&#38;id=0" target="CoDeListing"></a><a href="http://www.code-magazine.com/CodeListing.aspx?QuickID=0305051&#38;id=0" target="CoDeListing"></a><strong>Listing 1: A directory listing utility</strong></td>
</tr>
<tr>
<td>using System;<br />
using System.IO;</p>
<p>public class TextDirs<br />
{<br />
  public static void Main(string[] args)<br />
  {<br />
    string dirName = @&#8221;c:\&#8221;;<br />
    if (args.Length &#62; 0)<br />
      dirName = args[0];</p>
<p>    DirectoryInfo di = new DirectoryInfo(dirName);<br />
    foreach(FileSystemInfo fsi in <br />
                          di.GetFileSystemInfos(&#8220;*.*&#8221;))<br />
    {<br />
      string text = &#8221;";</p>
<p>// Creation time<br />
text += fsi.CreationTime.ToString() + &#8217;\t&#8217;;</p>
<p>// Type and Size<br />
if (fsi is DirectoryInfo)<br />
{<br />
   text += &#8221;&#60;DIR&#62;&#8221; + &#8217;\t&#8217;;<br />
   text += &#8221;     &#8221; + &#8217;\t&#8217;;<br />
}<br />
else<br />
{<br />
         text += &#8221;      &#8221; + &#8217;\t&#8217;;<br />
         FileInfo fi = (FileInfo) fsi;<br />
         text += String.Format(fi.Length.ToString(), <br />
               &#8221;{0}&#8221;) + &#8217;\t&#8217;;<br />
      }</p>
<p>// Name<br />
text += fsi.Name;<br />
Console.WriteLine(text);<br />
    }<br />
  }<br />
}</td>
</tr>
</tbody>
</table>
<p style="text-align:justify;"><strong>I/O with Files</strong></p>
<p style="text-align:justify;">In the .NET Framework, the atomic element to read from, or write to, is the stream. A stream abstracts the contents of a variety of potential data stores, including local and network disk files, memory, and databases. You can read or write a Stream object using a couple of tailor-made tools?the reader and the writer.</p>
<p style="text-align:justify;">A reader reads one chunk of information at a time. The structure of the data read depends on the particular reader and the underlying stream. For example, a text reader will read rows of text recognizing the carriage return/linefeed pair as the separator between chunks. Likewise, the binary reader will process every single byte in the stream as the XML reader moves from one node to the next. The reader operates in a read-only, forward-only way. You can&#8217;t move back to an already processed, or skipped, chunk of data; nor can you edit the current data the pointer references.</p>
<p style="text-align:justify;">In the .NET Framework, you find available quite a few specialized readers including TextReader, BinaryReader, XmlReader, and database-specific readers such as SqlDataReader and OracleDataReader. Although all of these reader classes have a common subset of functions, and an overall similar way of working, they don&#8217;t derive from the same base class. Reader classes work on top of streams. Depending on the implementation of each individual class, the stream may be passed explicitly as a constructor argument or through its file name or URL.</p>
<p style="text-align:justify;">The Stream class supports three basic operations: reading, writing, and seeking. Reading and writing operations entail transferring data from a stream into a data structure and vice versa. Seeking consists of querying and modifying the current position within the stream of data.</p>
<p style="text-align:justify;">The .NET Framework provides a number of predefined Stream classes including <strong>FileStream</strong>, <strong>MemoryStream, </strong>and the fairly interesting <strong>CryptoStream</strong>, which automatically encrypts and decrypts data as you write or read. Each different storage implements its own stream by deriving from the base Stream class. The StreamReader class is a generic reader class for any type of stream. Finally, the StringReader class lets you read a string of text using the same programming interface as readers that operate on data stores.</p>
<p style="text-align:justify;">You transform the contents of a file into a stream using the FileStream class. The following code shows how to open a file that you want to read:</p>
<p style="text-align:justify;">FileStream fs = new FileStream(filename, <br />
FileMode.Open, FileAccess.Read);</p>
<p style="text-align:justify;">Streams supply a rather low-level programming interface which, although functionally effective, is not always apt for classes that need to perform more high-level operations such as reading the whole content of a file or a single line.</p>
<p style="text-align:justify;">To manipulate the contents of a file as a binary stream, you just pass the FileStream object down to a specialized reader object that knows how to handle it.</p>
<p style="text-align:justify;">BinaryReader bin = new BinaryReader(fs);</p>
<p style="text-align:justify;">If you want to process the file&#8217;s contents in a text-based way, then you can use the <strong>StreamReader </strong>class, as shown below.</p>
<p style="text-align:justify;">StreamReader reader;<br />
reader = new StreamReader(fileName);<br />
reader.BaseStream.Seek(0, SeekOrigin.Begin);<br />
string text = reader.ReadToEnd();<br />
reader.Close();</p>
<p style="text-align:justify;">To write files, you often use the <strong>StreamWriter </strong>class and access its underlying stream, which can also be an encrypted stream. The following code snippet shows how to create a file.</p>
<p style="text-align:justify;">StreamWriter writer = new StreamWriter(file);<br />
writer.WriteLine(text);<br />
writer.Close();</p>
<p style="text-align:justify;">Creating binary files that contain images or raw data doesn&#8217;t happen along different guidelines. You just use BinaryWriter (or BinaryReader for reading) as the writer object and its ad hoc set of methods.</p>
<p style="text-align:justify;">All reader classes have a writer counter class. So you have a StreamWriter class acting as a generic writer for streams and more specific classes such as TextWriter, XmlWriter, BinaryWriter, and StringWriter. Curiously, the .NET Framework does not have a sort of SqlDataWriter class which would configure a server cursor. Server cursors are not supported as of version 1.1 of the .NET Framework.</p>
<p style="text-align:justify;"><strong>Summary</strong></p>
<p style="text-align:justify;">Although the substance of the underlying file system is not something that changed with .NET, the platform that determines the way in which you work with the constituent elements of a file system?files and directories, changed quite a bit.</p>
<p style="text-align:justify;">The introduction of streams as programmable objects is a key step in the sense that it unifies the API necessary to perform similar operations on conceptually similar storage media. Another key enhancement is the introduction of reader and writer objects. They provide a kind of logical API by means of which you read and write any piece of information in nearly identical ways. The .NET Framework also provides a lot of facilities to perform the basic management operations with files and directories, including path functions and common-use methods. In just one slogan, with .NET way of working with the file system is easier and more effective. Just do it</p>
<p style="text-align:justify;"> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[exFAT]]></title>
<link>http://sisteronalis.wordpress.com/2009/09/15/exfat/</link>
<pubDate>Tue, 15 Sep 2009 10:45:36 +0000</pubDate>
<dc:creator>rsatrioadi</dc:creator>
<guid>http://sisteronalis.wordpress.com/2009/09/15/exfat/</guid>
<description><![CDATA[Ketika hendak melakukan format pada flash drive di Windows 7 beberapa hari yang lalu, saya melihat p]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ketika hendak melakukan <em>format</em> pada <em>flash drive</em> di Windows 7 beberapa hari yang lalu, saya melihat pilihan <em>file system</em> yang berbeda. Selain FAT, FAT32, dan NTFS, ada juga pilihan exFAT. Apa sih exFAT itu?</p>
<p><!--more-->exFAT adalah <em>file system</em> besutan Microsoft yang dioptimasi untuk <em>flash drive</em>. Awalnya diperkenalkan untuk Windows CE 6.0, kemudian Windows Vista SP1, Windows XP SP2, dan Windows 7. Untuk Linux, modul <em>kernel</em> yang bersifat <em>open source</em> masih dalam tahap eksperimental, namun sudah ada <a href="http://www.tuxera.com/products/exfat-for-embedded-systems/" target="_blank"><em>driver</em> exFAT</a> yang sifatnya <em>closed source</em>.</p>
<p>exFAT umumnya digunakan ketika penggunaan NTFS tidak dimungkinkan, namun versi lama dari FAT tidak mencukupi.</p>
<p>Fitur-fitur exFAT antara lain:</p>
<ul>
<li>Ukuran <em>file</em> dapat mencapai 127 PiB (<a href="http://en.wikipedia.org/wiki/Pebibyte" target="_blank">Pebibyte</a>) atau sekitar 133 169 152 GB. Bandingkan dengan FAT32 yang hanya 4 GB minus satu byte, NTFS yang hingga 16 EiB (<a href="http://en.wikipedia.org/wiki/Exbibyte" target="_blank">Exbibyte</a>).</li>
<li>Satu direktori dapat menampung 2 796 202 <em>file</em>.</li>
<li>Satu partisi exFAT dapat berukuran hingga 64 ZiB (<a href="http://en.wikipedia.org/wiki/Zebibyte" target="_blank">Zebibyte</a>). Pada FAT32 hanya 2 TB.</li>
<li>Nama <em>file</em> maksimum 255 karakter.</li>
</ul>
<p>Namun exFAT juga tentunya memiliki beberapa kekurangan, antara lain:</p>
<ul>
<li>Memerlukan <em>Service Pack</em> 2 untuk dapat digunakan pada Windows XP dan 2003 (<em>server</em>) atau <em>Service Pack</em> 1 untuk Windows Vista.</li>
<li>Tidak dapat digunakan pada Windows 2000, Me, atau yang lebih lama, serta pada kebanyakan sistem operasi non-Microsoft.</li>
<li><em>S</em><em>torage</em> dengan format exFAT tidak dapat digunakan untuk ReadyBoost pada Windows Vista, meskipun dapat digunakan pada Windows 7, bahkan lebih leluasa karena batasan ukuran <em>file</em> jauh lebih besar.</li>
<li>Microsoft belum merilis spesifikasi resmi exFAT.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[exFAT]]></title>
<link>http://rsatrioadi.wordpress.com/2009/09/15/exfat/</link>
<pubDate>Tue, 15 Sep 2009 10:39:21 +0000</pubDate>
<dc:creator>rsatrioadi</dc:creator>
<guid>http://rsatrioadi.wordpress.com/2009/09/15/exfat/</guid>
<description><![CDATA[Ketika hendak melakukan format pada flash drive (yang benar flash drive, bukan flash disk. Disk: som]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ketika hendak melakukan <em>format</em> pada <em>flash drive</em> (yang benar <em>flash drive</em>, bukan <em>flash disk</em>. <em>Disk: something with a round shape resembling a flat circular plate</em>) di Windows 7 beberapa hari yang lalu, saya melihat pilihan <em>file system</em> yang berbeda. Selain FAT, FAT32, dan NTFS, ada juga pilihan exFAT. Apa sih exFAT itu?</p>
<p><!--more-->exFAT adalah <em>file system</em> besutan Microsoft yang dioptimasi untuk <em>flash drive</em>. Awalnya diperkenalkan untuk Windows CE 6.0, kemudian Windows Vista SP1, Windows XP SP2, dan Windows 7. Untuk Linux, modul <em>kernel</em> yang bersifat <em>open source</em> masih dalam tahap eksperimental, namun sudah ada <a href="http://www.tuxera.com/products/exfat-for-embedded-systems/" target="_blank"><em>driver</em> exFAT</a> yang sifatnya <em>closed source</em>.</p>
<p>exFAT umumnya digunakan ketika penggunaan NTFS tidak dimungkinkan, namun versi lama dari FAT tidak mencukupi.</p>
<p>Fitur-fitur exFAT antara lain:</p>
<ul>
<li>Ukuran <em>file</em> dapat mencapai 127 PiB (<a href="http://en.wikipedia.org/wiki/Pebibyte" target="_blank">Pebibyte</a>) atau sekitar 133 169 152 GB. Bandingkan dengan FAT32 yang hanya 4 GB minus satu byte, NTFS yang hingga 16 EiB (<a href="http://en.wikipedia.org/wiki/Exbibyte" target="_blank">Exbibyte</a>).</li>
<li>Satu direktori dapat menampung 2 796 202 <em>file</em>.</li>
<li>Satu partisi exFAT dapat berukuran hingga 64 ZiB (<a href="http://en.wikipedia.org/wiki/Zebibyte" target="_blank">Zebibyte</a>). Pada FAT32 hanya 2 TB.</li>
<li>Nama <em>file</em> maksimum 255 karakter.</li>
</ul>
<p>Namun exFAT juga tentunya memiliki beberapa kekurangan, antara lain:</p>
<ul>
<li>Memerlukan <em>Service Pack</em> 2 untuk dapat digunakan pada Windows XP dan 2003 (<em>server</em>) atau <em>Service Pack</em> 1 untuk Windows Vista.</li>
<li>Tidak dapat digunakan pada Windows 2000, Me, atau yang lebih lama, serta pada kebanyakan sistem operasi non-Microsoft.</li>
<li><em>S</em><em>torage</em> dengan format exFAT tidak dapat digunakan untuk ReadyBoost pada Windows Vista, meskipun dapat digunakan pada Windows 7, bahkan lebih leluasa karena batasan ukuran <em>file</em> jauh lebih besar.</li>
<li>Microsoft belum merilis spesifikasi resmi exFAT.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Linux File System: Part 3]]></title>
<link>http://linuxtour.wordpress.com/2009/09/15/linux_file_system_part3/</link>
<pubDate>Tue, 15 Sep 2009 04:08:25 +0000</pubDate>
<dc:creator>putnam120</dc:creator>
<guid>http://linuxtour.wordpress.com/2009/09/15/linux_file_system_part3/</guid>
<description><![CDATA[Well sorry it has taken so long but here is the third installation in the series on the Linux file s]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Well sorry it has taken so long but here is the third installation in the series on the Linux file system.  In case you haven&#8217;t been following before now, here are the links to <a href="http://linuxtour.wordpress.com/2009/09/05/linux_file_system_part1/">part1</a> and <a href="http://linuxtour.wordpress.com/2009/09/07/linux_file_system_part2/">part2</a>.</p>
<p>In this portion I will discuss the following directories/partitions: <span style="color:#ff0000;">/lost+found /lib /mnt </span>and <span style="color:#ff0000;">/tmp</span>.</p>
<h2><span style="color:#ff6600;">/lost+found</span></h2>
<p>So you are working and all of a sudden there is a power outage.  Or even worse your system suddenly crashes for no reason.  Well the next time you boot up your machine Linux will try to recover any lost data/files.  The result of this recovery attempt will be saved here.  Sure the files in here might not make much sense but there is a small chance that there might be something that you might be able to actually use.  Finally, for those of you that really want to know, this recovery is done by using the <span style="color:#00ff00;"><code>fsck</code></span> command.  Look into it yourself, since this isn&#8217;t the place to go into depth on it.</p>
<h2><span style="color:#ff6600;">/lib</span></h2>
<p>The location of all the shared library files.  Think <span style="color:#ff0000;">DLL</span> files on Windows.</p>
<h2><span style="color:#ff6600;">/mnt</span></h2>
<p>This is the generic place to <a href="http://linuxtour.wordpress.com/2009/08/04/space-usage/">mount</a> other file systems.  Such as internal/external hard drives, CD-ROMS, DVD, and floppy disk if people still use those.  For more information on mounting see the link to the post dedicated to this topic.  But I should mention that you can make any location a mount point, but it&#8217;s usually a good idea to have them all relatively &#8220;close&#8221; to each other.  Plus try not to overdo it, because really 50 different mount points might just be a little excessive.</p>
<h2><span style="color:#ff6600;">/tmp</span></h2>
<p>Temporary files are stored here.  In other words, <strong><span style="color:#800000;">DON&#8217;T SAVE IMPORTANT STUFF HERE!</span> </strong> This directory is cleared upon each reboot of the system.  As a side note, this is really useful for getting around disk quotas.  Just save your files here and then when you restart they will be gone.  All you have to do is make sure that you won&#8217;t be needing those files ever again.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[NTFS-3G - Windows-Dateisystem am Mac]]></title>
<link>http://freewareosx.wordpress.com/2009/09/14/ntfs-3g-windows-dateisystem-am-mac/</link>
<pubDate>Mon, 14 Sep 2009 06:46:30 +0000</pubDate>
<dc:creator>Holger</dc:creator>
<guid>http://freewareosx.wordpress.com/2009/09/14/ntfs-3g-windows-dateisystem-am-mac/</guid>
<description><![CDATA[Ein Kommentar von Thorsten hat mich auf diese ebenso simple wie sinnvolle Systemerweiterung gebracht]]></description>
<content:encoded><![CDATA[Ein Kommentar von Thorsten hat mich auf diese ebenso simple wie sinnvolle Systemerweiterung gebracht]]></content:encoded>
</item>
<item>
<title><![CDATA[Linux File System: Part 2]]></title>
<link>http://linuxtour.wordpress.com/2009/09/07/linux_file_system_part2/</link>
<pubDate>Mon, 07 Sep 2009 15:29:58 +0000</pubDate>
<dc:creator>putnam120</dc:creator>
<guid>http://linuxtour.wordpress.com/2009/09/07/linux_file_system_part2/</guid>
<description><![CDATA[This is a continuation from part 1, so you might want to read that first in order to get a general i]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>This is a continuation from <a href="http://linuxtour.wordpress.com/2009/09/05/linux_file_system_part1/">part 1</a>, so you might want to read that first in order to get a general idea of what&#8217;s going on.  That is  of course you are a somewhat experienced Linux user.</p>
<p>In this part of the series I will be discussing the following directories/partitions:<span style="color:#ff0000;"> /bin /boot /dev /etc /home</span>.</p>
<h2><span style="color:#ff6600;">/home</span></h2>
<p>I will start by discussing the partition that is most familiar to most new users, <span style="color:#ff0000;">/home</span>.  First you should know that Linux, unlike Windows, was originally designed to be a multi-user system.  Thus in the home directory you will find a set of directories, one for each user.  Every user (along with the system administrator) can access their directory by entering <span style="color:#00ff00;"><code>cd /home/[user name]</code></span>.  Each user&#8217;s home directory contains their own personal files in addition to their personal settings for programs.</p>
<h2><span style="color:#ff6600;">/bin</span></h2>
<p>This directory contains programs that are able to be used by the system(Linux), the administrator and non-privileged users.  Examples of such programs would include <span style="color:#00ff00;"><code>cp</code></span>, <span style="color:#00ff00;"><code>mv</code></span>, <span style="color:#00ff00;"><code>rm</code></span>, and other such commands/programs.  In addition to programs it also contains the shells, like <a href="http://en.wikipedia.org/wiki/Bourne-Again_shell">bash</a>, <a href="http://en.wikipedia.org/wiki/C_shell">csh</a>, <a href="http://en.wikipedia.org/wiki/Bourne_shell">sh</a>, and so on.  Just as a side note, you should be aware that there is also a <span style="color:#ff0000;">/usr/bin</span> which also contains programs that the system, administrator, and non-privileged users can use.  However, unlike those in <span style="color:#ff0000;">/bin</span>, these programs are not essential-meaning that you can do without them and not have any real problems.  Some programs that are located in my <span style="color:#ff0000;">/usr/bin</span> are: <span style="color:#00ff00;"><code>g++</code></span>, <span style="color:#00ff00;"><code>apt-get</code></span>, <span style="color:#00ff00;"><code>javac</code></span>, <span style="color:#00ff00;"><code>whoami</code></span>, and <span style="color:#00ff00;"><code>acroread</code></span>.  Sure it would be a pain not having these programs, but the system would still run perfectly fine.</p>
<h2><span style="color:#ff6600;">/boot</span></h2>
<p>All of the system startup files and the kernel (<span style="color:#ff0000;"><code>vmlinuz</code></span>) are located in this directory (also I would suggest reading the Wikipedia article on <a href="http://en.wikipedia.org/wiki/System.map">System.map</a>, which is also stored in this directory).  On Ubuntu, this is also where Grub (GRand Unified Boot loader) stored.  For those of you that are dual-booting here is something that might interest you.  When you start up your system you will normally see a list asking you which OS you want to enter.  This list normally contains the various Linux kernels along with Windows (or whatever OS you have on your computer).  If you would like to change the order these elements are presented along with other properties here is what you need to do.  <span style="color:#00ff00;"><code>cd /boot/grub</code></span> then <span style="color:#00ff00;"><code>sudo gedit menu.lst</code></span> (actually you can use whatever text editor you desire)  The file is pretty well documented so editing it is pretty straight forward.</p>
<h2><span style="color:#ff6600;">/dev</span></h2>
<p>All computers have hardware, and this is where the information on all your hardware is stored.  Once again let me reiterate that <strong>EVERYTHING</strong> is a file (or directory but I don&#8217;t distinguish between them in this case).  If you list all of the files here, you should find <span style="color:#ff0000;">sda</span>, <span style="color:#ff0000;">sda1</span>, <span style="color:#ff0000;">sda2</span>&#8230; which represent the partitions of you master drive (instead of <span style="color:#ff0000;">sda</span> you might have <span style="color:#ff0000;">hda</span> depending on your drive type).  Also you might see a files <span style="color:#ff0000;">/dev/cdrom</span> and <span style="color:#ff0000;">/dev/fd</span> or (<span style="color:#ff0000;">/dev/fd0</span>).  These represent your CDROM and floppy drive (if you have them that is, because really who still has a floppy drive?).  Here is something &#8220;cool&#8221; that you should all try (don&#8217;t worry it won&#8217;t damage your computer.  I have done it on mine if that makes you feel any better).  The file <span style="color:#ff0000;">/dev/dsp</span> represents your speakers (or whatever sound output device you have).  So anything written to this file will be redirected to your speakers and played for you to hear.  Thus if you run <span style="color:#00ff00;"><code>cat ~/funfile.java &#62; /dev/dsp</code></span> you will hear what <span style="color:#ff0000;">funfile.java</span> &#8220;sounds like&#8221;, assuming that you have a file called <span style="color:#ff0000;">funfile.java</span> in your home directory.  Pretty cool hu?</p>
<h2><span style="color:#ff6600;">/etc</span></h2>
<p>Finally, I will slightly discuss the <span style="color:#ff0000;">/etc</span> directory.   One overview that I read, described this directory as the Linux equivalent to the Control Panel in Windows.   Basically most of the important configuration files are located here.   There are a lot of important files here that have to do with system start up (one being <span style="color:#ff0000;">/etc/rc.d</span> which contains the startup scripts for the system).  It is always a good idea to back up your system, but this file more than any other I would say should really be backed up.  Doing so would save you a lot of headache later when you have to reconfigure your settings, because you reinstalled your system or somehow managed to lose your installation.</p>
<p>Well that&#8217;s all there is for part 2.  Hope you will stick around for <a href="http://linuxtour.wordpress.com/2009/09/15/linux_file_system_part3/">part 3</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Media Center Recordings Filled Disk]]></title>
<link>http://techpaul.wordpress.com/2009/11/24/media-center-recordings-filled-disk/</link>
<pubDate>Tue, 24 Nov 2009 17:54:51 +0000</pubDate>
<dc:creator>techpaul</dc:creator>
<guid>http://techpaul.wordpress.com/2009/11/24/media-center-recordings-filled-disk/</guid>
<description><![CDATA[Someone called my biz asking for my help with a very slow computer that was also &#8220;acting odd]]></description>
<content:encoded><![CDATA[Someone called my biz asking for my help with a very slow computer that was also &#8220;acting odd]]></content:encoded>
</item>
<item>
<title><![CDATA[Visualizzare le informazioni musicali in Nautilus]]></title>
<link>http://ubuntrucchi.wordpress.com/2009/11/22/visualizzare-le-informazioni-musicali-in-nautilus/</link>
<pubDate>Sun, 22 Nov 2009 17:38:54 +0000</pubDate>
<dc:creator>Muflone</dc:creator>
<guid>http://ubuntrucchi.wordpress.com/2009/11/22/visualizzare-le-informazioni-musicali-in-nautilus/</guid>
<description><![CDATA[Nautilus il file manager predefinito di Ubuntu e Gnome nasce abbastanza scarno, al punto da non most]]></description>
<content:encoded><![CDATA[Nautilus il file manager predefinito di Ubuntu e Gnome nasce abbastanza scarno, al punto da non most]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprise Computing: Thin Provisioning and The Cookie Monster!]]></title>
<link>http://thestoragearchitect.com/2009/11/17/enterprise-computing-thin-provisioning-and-the-cookie-monster/</link>
<pubDate>Tue, 17 Nov 2009 21:45:35 +0000</pubDate>
<dc:creator>Chris Evans</dc:creator>
<guid>http://thestoragearchitect.com/2009/11/17/enterprise-computing-thin-provisioning-and-the-cookie-monster/</guid>
<description><![CDATA[The Gestalt IT Field Day was a great success in bringing together a mixture of delegates from varyin]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The <a href="http://gestaltit.com/featured/top/stephen/tech-field-day-1/">Gestalt IT Field Day</a> was a great success in bringing together a mixture of delegates from varying discplines. Following the presentations from 3Par and Symantec, there was <strong>heated debate</strong> about the implementation of Thin Provisioning and the ability to <strong>reclaim</strong> released storage resources. This post covers the basic concepts of Thin Provisioning and more importantly how deleted resources can be recovered over time.</p>
<p><strong>Thin Provisioning Primer</strong></p>
<p>The underlying concept of thin provisioning is pretty simple; provide storage resources to those requesting it <strong>only</strong> as they need it.</p>
<p><a href="http://thestoragearchitect.wordpress.com/files/2009/11/tp-example-1.jpg"><img class="alignright size-medium wp-image-897" style="margin:5px;" title="TP Example 1" src="http://thestoragearchitect.wordpress.com/files/2009/11/tp-example-1.jpg?w=300" alt="" width="180" height="167" /></a>Think of a standard <strong>&#8216;thick provisioned&#8217;</strong> environment.  As thick LUNs are created, the storage is assigned and mapped to that LUN to the <strong>full extent</strong> of the size requested.  See, the first graphic, which shows a RAID group of four 5GB drives.  I&#8217;ve assumed &#8220;RAID-0&#8243; here for simplification, i.e. no RAID overhead.  Each LUN (coloured separately) is made up from a 1GB slice of the available disks.  Thick provisioning is great if the LUNs are all 100% allocated.  In that instance, 100% of the available physical space is used up.  However, it is never the case that <strong>100%</strong> of a LUN is used and so wastage exists. </p>
<p>Look at the second graphic.  This shows how <strong>thin provisioned</strong> LUNs work.  As storage is requested by the LUN, the space is mapped to physical blocks of storage.  In this <a href="http://thestoragearchitect.wordpress.com/files/2009/11/tp-example-2.jpg"><img class="alignright size-medium wp-image-901" title="TP Example 2" src="http://thestoragearchitect.wordpress.com/files/2009/11/tp-example-2.jpg?w=292" alt="" width="175" height="180" /></a>example, none of the logical LUNs are <strong>fully utilised</strong> and so don&#8217;t consume their full theoretical capacity.  This means that the pool of space can be over-subscribed and a sixth new LUN created.  Obviously there&#8217;s no such thing as a <strong>free lunch</strong> or infinite storage resources and in this example if a further five blocks are requested then physical space would be exhausted.  The next request for a new storage block would result in an error situation and this represents the main concern with <strong>over-subscribing</strong> thin provisioned volumes.</p>
<p>Now we get the concept of thin provisioning, there are a further two aspects to consider.  Firstly, when we say a LUN isn&#8217;t <strong>100% utilised</strong>, what to we mean?  Second, how can deleted blocks be <strong>returned</strong> to our free physical pool?</p>
<p><a href="http://thestoragearchitect.wordpress.com/files/2009/11/defrag1.jpg"><img class="alignright size-medium wp-image-903" title="Defrag1" src="http://thestoragearchitect.wordpress.com/files/2009/11/defrag1.jpg?w=300" alt="" width="300" height="129" /></a>As LUNs are presented to hosts, they are formatted with a <strong>file system</strong>, for example on Windows it&#8217;s <strong>NTFS</strong>; a VMware environment would use <strong>VMFS</strong>.  The file system will have a standard layout which determines where the file index sits and the method in which files are allocated onto the disk.  Have a look at the third graphic.  This is a map of the C:\ drive for one of my servers.  Each block represents approximately <strong>22MB</strong>.  You can clearly see the MFT (NTFS index) in the centre of the volume.  A <strong>large percentage</strong> of the disk is unused.  In a thin provisioned environment, storage would have been requested only for the blocks with valid data and in this way, a LUN can be <strong>less</strong> than 100% allocated. </p>
<p>OK, so what happens if I create some files then <strong>delete</strong> them on the file system?  Most file systems remove a file by deleting the entry in the index rather than physically overwriting the file contents with binary zeros.  This is <strong>quick </strong>and <strong>efficient</strong> (if not slightly unsafe security wise).  The actual data isn&#8217;t <strong>overwritten</strong> and it is this &#8216;logical&#8217; deletion that enables undelete utilities to work.  The trouble is, most disk arrays are not <strong>file system aware</strong> and so can&#8217;t detect the logical deletion of a file.  Those arrays that offer thin provisioning typically detect unwanted space by looking for blocks containing only <strong>&#8216;binary zeros&#8217;</strong>.  This means simply deleting files will <strong>not</strong> release unused space back to the free block pool (except for one storage device I&#8217;ll discuss in more detail another time, that&#8217;s <strong>Drobo</strong>). Arrays which are capable of recovering unused space need to see data overwritten in order to recover it.</p>
<p>This (finally) brings us to the cookie analogy.  Imagine <strong>cookies</strong> are my free pool blocks.  There are a number of ways in which storage arrays operate in handling thin provisioning &#8211; different cookie monster personalities:</p>
<ul>
<li><strong>The Greedy Cookie Monster;</strong> grabs all the cookies he thinks he might eat, but never eats all of them and never returns any &#8211; this is the thick provisioning model.</li>
<li><strong>The Selfish Cookie Monster;</strong> only grabs cookies as he gets hungry but if he doesn&#8217;t eat them immediately, doesn&#8217;t give them back &#8211; this is thin provisioning with no zero block reclaim.  Eventually thin provisioning will become thick as all logical blocks in a LUN become mapped to physical storage.</li>
<li><strong>The Nice Cookie Monster;</strong> takes the cookies as he gets hungry but only returns uneaten cookies if asked &#8211; this is thin provisioning with manual zero block reclaim.  A manual process is required to zero out the unused space and to return it to the free pool.</li>
<li><strong>The Saintly Cookie Monster;</strong> takes the cookes as he gest hungry and offers them back immediately he realises he can&#8217;t eat them  &#8211; this is thin provisioning with automatic zero block or free space reclaim. </li>
</ul>
<p>So, of the storage arrays out there offering thin provisioning, which fit the various Cookie Monster personality types?  I&#8217;ll leave that for you to guess.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Open .ppt Slideshows With Free Viewer*]]></title>
<link>http://techpaul.wordpress.com/2009/11/17/open-ppt-slideshows-with-free-viewer/</link>
<pubDate>Tue, 17 Nov 2009 21:33:07 +0000</pubDate>
<dc:creator>techpaul</dc:creator>
<guid>http://techpaul.wordpress.com/2009/11/17/open-ppt-slideshows-with-free-viewer/</guid>
<description><![CDATA[I was reminded of this “quick tip” topic article today, when I got a call for help and I was told th]]></description>
<content:encoded><![CDATA[I was reminded of this “quick tip” topic article today, when I got a call for help and I was told th]]></content:encoded>
</item>

</channel>
</rss>
