<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=ICEFS</id>
	<title>ICEFS - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=ICEFS"/>
	<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ICEFS&amp;action=history"/>
	<updated>2026-09-26T22:10:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=ICEFS&amp;diff=670&amp;oldid=prev</id>
		<title>ConvertBot: Ice File System configuration macro</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ICEFS&amp;diff=670&amp;oldid=prev"/>
		<updated>2020-04-27T19:19:47Z</updated>

		<summary type="html">&lt;p&gt;Ice File System configuration macro&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:19, 27 April 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l134&quot; &gt;Line 134:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 134:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:ICE_Explain]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=ICEFS&amp;diff=627&amp;oldid=prev</id>
		<title>ConvertBot: Ice File System configuration macro</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ICEFS&amp;diff=627&amp;oldid=prev"/>
		<updated>2020-04-27T18:59:56Z</updated>

		<summary type="html">&lt;p&gt;Ice File System configuration macro&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ice File System configuration macro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;function&amp;gt;    	Function to perform &lt;br /&gt;
&amp;lt;superblock&amp;gt;	Name of superblock file template&lt;br /&gt;
&amp;lt;param 1:N&amp;gt;	Function specific parameters&lt;br /&gt;
&lt;br /&gt;
This macro contains functions for the ICE File System.&lt;br /&gt;
&lt;br /&gt;
The valid functions are:&lt;br /&gt;
&lt;br /&gt;
	MAKE &amp;lt;sbf&amp;gt; &amp;lt;config&amp;gt;	Makes the filesystem superblock based on the named config table file&lt;br /&gt;
&lt;br /&gt;
	INIT &amp;lt;sbf&amp;gt; 		Copy superblock to actual device&lt;br /&gt;
&lt;br /&gt;
	MOUNT &amp;lt;sbf&amp;gt;		Mount the filesystem defined in the superblock file&lt;br /&gt;
&lt;br /&gt;
	UMOUNT &amp;lt;sbf&amp;gt;		UnMount the filesystem defined in the superblock file&lt;br /&gt;
&lt;br /&gt;
 	STATS &amp;lt;sbf&amp;gt;		Report File System Statistics&lt;br /&gt;
&lt;br /&gt;
	KEYS &amp;lt;sbf&amp;gt;		Lists the File System Keywords block&lt;br /&gt;
&lt;br /&gt;
	DUMPLSB &amp;lt;devname&amp;gt;	Dumps the Linux Super Block on an ICEFS block device&lt;br /&gt;
&lt;br /&gt;
	REHOST &amp;lt;devname&amp;gt;	Rehost a multi-drive set on a new computer&lt;br /&gt;
&lt;br /&gt;
The SuperBlock information is contained in a single Midas File &amp;lt;superblock&amp;gt; with a detached header.&lt;br /&gt;
The keyword block in this header maintains all inode data in serialized binary form.&lt;br /&gt;
It can be flushed to disk efficiently in a single block write.&lt;br /&gt;
The inode contents requires 56 bytes per file plus the file name string. &lt;br /&gt;
&lt;br /&gt;
The block assignment map is the data section of this file.  &lt;br /&gt;
There is one entry for each block on the device.&lt;br /&gt;
This entry contains the inode number.&lt;br /&gt;
&lt;br /&gt;
On the device, block=0 holds the superblock with the inode table, block=1-N hold the block map table.&lt;br /&gt;
Currently an 8Mby block size will support a minimum of 8M/40=200000 files and 8M*8M/4=16Tby of storage.&lt;br /&gt;
Currently a 4Kby block size will support a minimum of to 4K/40=100 files and 4K*4K/4=4Mby of storage.&lt;br /&gt;
&lt;br /&gt;
To mount a device from outside of NeXtMidas:&lt;br /&gt;
&lt;br /&gt;
  mount -t icefs /dev/nvmexxx /mnt/icefsX&lt;br /&gt;
&lt;br /&gt;
To mount a raid set, simply mount the first device in the list.&lt;br /&gt;
&lt;br /&gt;
To automount the device after it has been configured, the /etc/fstab file may be processed before the&lt;br /&gt;
ICE driver has been loaded, so use the following flags:&lt;br /&gt;
&lt;br /&gt;
  /dev/nvmexxx /mnt/icefsX defaults,nofail 0 0&lt;br /&gt;
&lt;br /&gt;
The ICE driver will automatically attempt to mount|umount any icefs filesystems when it is started|stopped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Configuration File structure is as follows:&lt;br /&gt;
&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
! Config file for an ICEFS volume  !&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
VOLUMENAME=IceFSVolume			! arbitrary&lt;br /&gt;
VOLUMESIZE=AUTO				! in bytes or AUTO to get from fdisk&lt;br /&gt;
BLOCKSIZE=1G				! in bytes - typically 1M to 1G&lt;br /&gt;
STRIPESIZE=128K				! in bytes - for multivolume cases&lt;br /&gt;
PAGESIZE=4K				! in bytes - pages section size, for small files and Midas headers&lt;br /&gt;
MOUNTPOINT=/mnt/icefs			! name of unix mount point&lt;br /&gt;
DEVLIST=&amp;quot;nvme0n1p1,nvme1n1p1,nvme2n1p1,nvme3n1p1&amp;quot;	! list of devices in file system array&lt;br /&gt;
&lt;br /&gt;
The superblock keyword structure formed by the MAKE command is as follows:&lt;br /&gt;
&lt;br /&gt;
TAG=SUPER&lt;br /&gt;
  S:VOLUMENAME=Name of Volume&lt;br /&gt;
  S:DEVICE=Name of first device in array&lt;br /&gt;
  L:DEVICES=Number of devices in array&lt;br /&gt;
  S:DEVLIST=List of devices for in disk array&lt;br /&gt;
  S:MOUNT=Mount point on host system&lt;br /&gt;
TAG=BLOCKS&lt;br /&gt;
  L:SIZE=Number of bytes in each block&lt;br /&gt;
  L:TOTAL=Number of blocks in the device array&lt;br /&gt;
  L:NEXT=Next free block for writing data&lt;br /&gt;
  L:USED=Number of blocks used &lt;br /&gt;
  L:INODES=Number of blocks holding inodes&lt;br /&gt;
  L:MAPS=Number of blocks holding map table&lt;br /&gt;
TAG=PAGES&lt;br /&gt;
  L:SIZE=Number of bytes in each page&lt;br /&gt;
  L:TOTAL=Number of pages in the page array&lt;br /&gt;
  L:NEXT=Next free page for writing data&lt;br /&gt;
  L:USED=Number of pages used &lt;br /&gt;
  L:BLOCK=Current block for page access&lt;br /&gt;
TAG=BOUNCE&lt;br /&gt;
  L:SIZE=Number of bytes in each bounce buffer for user space access.&lt;br /&gt;
TAG=STRIPE&lt;br /&gt;
  L:SIZE=Number of bytes per drive in a striped set. Default=128K.&lt;br /&gt;
TAG=INODES&lt;br /&gt;
  L:SIZE=Number of bytes in each inode (average)&lt;br /&gt;
  L:TOTAL=Number of inodes allocated (average)&lt;br /&gt;
  L:NEXT=Next inode number&lt;br /&gt;
  L:USED=Number of inodes used &lt;br /&gt;
  L:BLOCK=Current block for inode access&lt;br /&gt;
  L:INODE=1	// mount point&lt;br /&gt;
    9L:file1=InodeBlock&lt;br /&gt;
    9L:dir1=InodeBlock&lt;br /&gt;
    9L:file2=InodeBlock&lt;br /&gt;
  L:INODE=dir1inode&lt;br /&gt;
    9L:file3=InodeBlock&lt;br /&gt;
    9L:file4=InodeBlock&lt;br /&gt;
    9L:file5=InodeBlock&lt;br /&gt;
    9L:dir2=InodeBlock&lt;br /&gt;
  L:INODE=dir2inode&lt;br /&gt;
    9L:file6=InodeBlock&lt;br /&gt;
  L:INODE=-1&lt;br /&gt;
TAG=EOF&lt;br /&gt;
&lt;br /&gt;
The Inode block structure is as follows:&lt;br /&gt;
  L:ino		- The inode number&lt;br /&gt;
  I:uid		- The UNIX user ID&lt;br /&gt;
  I:gid		- The UNIX group ID&lt;br /&gt;
  L:mode	- The Unix permissions/link mask&lt;br /&gt;
  L:next	- The next inode in list&lt;br /&gt;
  L:atime	- Time of access&lt;br /&gt;
  L:mtime	- Time of modification&lt;br /&gt;
  L:ctime	- Time of creation&lt;br /&gt;
  L:pblk	- The page block&lt;br /&gt;
  I:pind	- The page index&lt;br /&gt;
  I:pbyt	- The page bytes&lt;br /&gt;
  L:sblk	- The data start block&lt;br /&gt;
  L:nblk	- The number of blocks allocated&lt;br /&gt;
  L:fbyt	- The number of bytes free in last block&lt;br /&gt;
&lt;br /&gt;
The Data block structure is as follows:&lt;br /&gt;
  L:inode	- The inode number that owns this block (0==free)&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
</feed>