Hi OF-team:
Here is a patch to do several things:
1) report/use TB for large volumes
2) include chunk size in RAID building (defaulting at 64k).
I needed the latter, and the former is merely a housekeeping detail.
With this, one of our arrays looks like this now:
Array Level Array Size Device Size State Synchronization
Manage Add Used In Delete
/dev/md0 RAID-0 24.56 TB 0 bytes Clean Synchronized View members
All RAID partitions are used Unknown / unused Delete
as compared to 24560.00 GB. I think the former is nicer than the latter.
Without further ado, this is the patch (against volumes_raidmanager.html
from the 2.1 x86_64 beta 1). Also as an attachment.
======8><=================================================
--- volumes_raidmanage.html.original 2006-11-06 10:13:27.211598246 -0500
+++ volumes_raidmanage.html 2006-11-06 13:19:50.555642069 -0500
@@ -219,7 +219,7 @@
$member_count = 0;
$spare_devices = "";
$spare_count = 0;
-
+ $chunk_size = ${"chunksize"};
$devices_ok = TRUE;
for ($part_index = 0; $part_index < count($of_disks);
$part_index++)
@@ -278,9 +278,9 @@
if (!$found)
{
if ($spare_count > 0)
- exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level) . "
--raid-devices=" . $member_count . " --spare-devices=" . $spare_count .
" " . $member_devices . $spare_devices);
+ exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level) . "
--raid-devices=" . $member_count . " --spare-devices=" . $spare_count .
" --chunk=". $chunk_size . " " . $member_devices . $spare_devices .">
/tmp/out1 2> /tmp/out2");
else
- exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level) . "
--raid-devices=" . $member_count . " " . $member_devices);
+ exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level). " --chunk=".
$chunk_size . " " . " --raid-devices=" . $member_count . " " .
$member_devices . " > /tmp/out1 2> /tmp/out2 " );
sleep(2); // Give a couple of
seconds for the RAID device to become active
@@ -355,8 +355,10 @@
$part_size =
($of_disks[$i]["blocksize"] * $of_disks[$i]["partitions"][$j]["blocks"]);
- if ($part_size >
(1024 * 1024 * 1024))
-
$part_size_string = sprintf("%.02f GB", ($part_size / (1024 * 1024 *
1024.0)));
+ if ($part_size >
(1024 * 1024 * 1024 * 1024.0))
+
$part_size_string = sprintf("%.02f TB", ($part_size / (1024 * 1024 *
1024.0 * 1024.0)));
+ else if
($part_size > (1024 * 1024 * 1024 ))
+
$part_size_string = sprintf("%.02f GB", ($part_size / (1024 * 1024 *
1024.0)));
else if
($part_size > (1024 * 1024))
$part_size_string = sprintf("%.02f MB", ($part_size / (1024 * 1024.0)));
else if
($part_size > (1024))
@@ -491,7 +493,9 @@
print("<td bgcolor=\"" . $dvalue . "\"
align=\"center\">RAID-" . $md[$i]["level"] . "</td>\n");
$part_size = $md[$i]["array_size"];
- if ($part_size > (1024 * 1024 * 1024))
+ if ($part_size > (1024 * 1024 * 1024 * 1024))
+ $part_size_string = sprintf("%.02f TB",
($part_size / (1024 * 1024 * 1024.0 * 1024.0)));
+ else if ($part_size > (1024 * 1024 * 1024))
$part_size_string = sprintf("%.02f GB",
($part_size / (1024 * 1024 * 1024.0)));
else if ($part_size > (1024 * 1024))
$part_size_string = sprintf("%.02f MB",
($part_size / (1024 * 1024.0)));
@@ -504,7 +508,9 @@
$part_size = $md[$i]["device_size"];
- if ($part_size > (1024 * 1024 * 1024))
+ if ($part_size > (1024 * 1024 * 1024 * 1024))
+ $part_size_string = sprintf("%.02f TB",
($part_size / (1024 * 1024 * 1024.0 * 1024.0)));
+ else if ($part_size > (1024 * 1024 * 1024))
$part_size_string = sprintf("%.02f GB",
($part_size / (1024 * 1024 * 1024.0)));
else if ($part_size > (1024 * 1024))
$part_size_string = sprintf("%.02f MB",
($part_size / (1024 * 1024.0)));
@@ -645,11 +651,12 @@
print("<div align=\"center\">\n");
print("<table cellpadding=\"8\" cellspacing=\"2\"
border=\"0\">\n");
print("<tr>\n");
- print("\t<td colspan=\"5\" bgcolor=\"" .
$GLOBALS["color_table_heading"] . "\" align=\"center\"><strong>Select
RAID array type</strong></td>\n");
+ print("\t<td colspan=\"4\" bgcolor=\"" .
$GLOBALS["color_table_heading"] . "\" align=\"center\"><strong>Select
RAID array type</strong></td>\n");
+ print("\t<td colspan=\"1\" bgcolor=\"" .
$GLOBALS["color_table_heading"] . "\" align=\"center\"><strong>Select
chunk size</strong></td>\n");
print("</tr>\n");
print("<tr>\n");
- print("\t<td colspan=\"5\" bgcolor=\"" .
$GLOBALS["color_table_row1"] . "\" align=\"center\">\n");
+ print("\t<td colspan=\"4\" bgcolor=\"" .
$GLOBALS["color_table_row1"] . "\" align=\"center\">\n");
print("\t<select onchange=\"add_changed()\"
name=\"level\">\n");
print("\t\t<option value=\"0\">RAID-0
(striped)</option>\n");
print("\t\t<option value=\"1\">RAID-1
(mirrored)</option>\n");
@@ -657,7 +664,24 @@
print("\t\t<option value=\"6\">RAID-6
(extra-parity)</option>\n");
print("\t\t<option value=\"10\">RAID-10 (mirrored +
striped)</option>\n");
print("\t</select>\n");
- print("</td>\n");
+ print("</td>\n<center>chunk size</center>");
+
+ print("\t<td colspan=\"1\" bgcolor=\"" .
$GLOBALS["color_table_row1"] . "\" align=\"center\">\n");
+ print("\t<select onchange=\"add_changed()\"
name=\"chunksize\">\n");
+ print("\t\t<option value=\"4\">4 kB</option>\n");
+ print("\t\t<option value=\"8\">8 kB</option>\n");
+ print("\t\t<option value=\"16\">16 kB</option>\n");
+ print("\t\t<option value=\"32\">32 kB</option>\n");
+ print("\t\t<option value=\"64\" selected >64
kB</option>\n");
+ print("\t\t<option value=\"128\">128 kB</option>\n");
+ print("\t\t<option value=\"256\">256 kB</option>\n");
+ print("\t\t<option value=\"512\">512 kB</option>\n");
+ print("\t\t<option value=\"1024\">1M </option>\n");
+ print("\t\t<option value=\"2048\">2M</option>\n");
+ print("\t\t<option value=\"4096\">4M</option>\n");
+ print("\t</select>\n");
+ print("</td>\n");
+
print("</tr>\n");
print("<tr>\n");
@@ -694,8 +718,9 @@
}
$part_size =
($of_disks[$i]["blocksize"] * $of_disks[$i]["partitions"][$j]["blocks"]);
-
- if ($part_size > (1024 * 1024 *
1024))
+ if ($part_size > (1024 * 1024 *
1024 * 1024))
+ $part_size_string =
sprintf("%.02f TB", ($part_size / (1024 * 1024 * 1024.0 * 1024.0)));
+ else if ($part_size > (1024 *
1024 * 1024))
$part_size_string =
sprintf("%.02f GB", ($part_size / (1024 * 1024 * 1024.0)));
else if ($part_size > (1024 *
1024))
$part_size_string =
sprintf("%.02f MB", ($part_size / (1024 * 1024.0)));
--
Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics LLC,
email: [EMAIL PROTECTED]
web : http://www.scalableinformatics.com
phone: +1 734 786 8423
fax : +1 734 786 8452 or +1 866 888 3112
cell : +1 734 612 4615
--- volumes_raidmanage.html.original 2006-11-06 10:13:27.211598246 -0500
+++ volumes_raidmanage.html 2006-11-06 13:19:50.555642069 -0500
@@ -219,7 +219,7 @@
$member_count = 0;
$spare_devices = "";
$spare_count = 0;
-
+ $chunk_size = ${"chunksize"};
$devices_ok = TRUE;
for ($part_index = 0; $part_index < count($of_disks);
$part_index++)
@@ -278,9 +278,9 @@
if (!$found)
{
if ($spare_count > 0)
- exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level) . " --raid-devices=" .
$member_count . " --spare-devices=" . $spare_count . " " . $member_devices .
$spare_devices);
+ exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level) . " --raid-devices=" .
$member_count . " --spare-devices=" . $spare_count . " --chunk=". $chunk_size .
" " . $member_devices . $spare_devices ."> /tmp/out1 2> /tmp/out2");
else
- exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level) . " --raid-devices=" .
$member_count . " " . $member_devices);
+ exec("/usr/bin/sudo /sbin/mdadm
--create /dev/md" . $i . " --level=" . intval($level). " --chunk=". $chunk_size
. " " . " --raid-devices=" . $member_count . " " . $member_devices . " >
/tmp/out1 2> /tmp/out2 " );
sleep(2); // Give a couple of seconds for
the RAID device to become active
@@ -355,8 +355,10 @@
$part_size =
($of_disks[$i]["blocksize"] * $of_disks[$i]["partitions"][$j]["blocks"]);
- if ($part_size > (1024
* 1024 * 1024))
-
$part_size_string = sprintf("%.02f GB", ($part_size / (1024 * 1024 * 1024.0)));
+ if ($part_size > (1024
* 1024 * 1024 * 1024.0))
+
$part_size_string = sprintf("%.02f TB", ($part_size / (1024 * 1024 * 1024.0 *
1024.0)));
+ else if ($part_size >
(1024 * 1024 * 1024 ))
+
$part_size_string = sprintf("%.02f GB", ($part_size / (1024 * 1024 * 1024.0)));
else if ($part_size >
(1024 * 1024))
$part_size_string = sprintf("%.02f MB", ($part_size / (1024 * 1024.0)));
else if ($part_size >
(1024))
@@ -491,7 +493,9 @@
print("<td bgcolor=\"" . $dvalue . "\"
align=\"center\">RAID-" . $md[$i]["level"] . "</td>\n");
$part_size = $md[$i]["array_size"];
- if ($part_size > (1024 * 1024 * 1024))
+ if ($part_size > (1024 * 1024 * 1024 * 1024))
+ $part_size_string = sprintf("%.02f TB",
($part_size / (1024 * 1024 * 1024.0 * 1024.0)));
+ else if ($part_size > (1024 * 1024 * 1024))
$part_size_string = sprintf("%.02f GB",
($part_size / (1024 * 1024 * 1024.0)));
else if ($part_size > (1024 * 1024))
$part_size_string = sprintf("%.02f MB",
($part_size / (1024 * 1024.0)));
@@ -504,7 +508,9 @@
$part_size = $md[$i]["device_size"];
- if ($part_size > (1024 * 1024 * 1024))
+ if ($part_size > (1024 * 1024 * 1024 * 1024))
+ $part_size_string = sprintf("%.02f TB",
($part_size / (1024 * 1024 * 1024.0 * 1024.0)));
+ else if ($part_size > (1024 * 1024 * 1024))
$part_size_string = sprintf("%.02f GB",
($part_size / (1024 * 1024 * 1024.0)));
else if ($part_size > (1024 * 1024))
$part_size_string = sprintf("%.02f MB",
($part_size / (1024 * 1024.0)));
@@ -645,11 +651,12 @@
print("<div align=\"center\">\n");
print("<table cellpadding=\"8\" cellspacing=\"2\"
border=\"0\">\n");
print("<tr>\n");
- print("\t<td colspan=\"5\" bgcolor=\"" .
$GLOBALS["color_table_heading"] . "\" align=\"center\"><strong>Select RAID
array type</strong></td>\n");
+ print("\t<td colspan=\"4\" bgcolor=\"" .
$GLOBALS["color_table_heading"] . "\" align=\"center\"><strong>Select RAID
array type</strong></td>\n");
+ print("\t<td colspan=\"1\" bgcolor=\"" .
$GLOBALS["color_table_heading"] . "\" align=\"center\"><strong>Select chunk
size</strong></td>\n");
print("</tr>\n");
print("<tr>\n");
- print("\t<td colspan=\"5\" bgcolor=\"" .
$GLOBALS["color_table_row1"] . "\" align=\"center\">\n");
+ print("\t<td colspan=\"4\" bgcolor=\"" .
$GLOBALS["color_table_row1"] . "\" align=\"center\">\n");
print("\t<select onchange=\"add_changed()\" name=\"level\">\n");
print("\t\t<option value=\"0\">RAID-0 (striped)</option>\n");
print("\t\t<option value=\"1\">RAID-1 (mirrored)</option>\n");
@@ -657,7 +664,24 @@
print("\t\t<option value=\"6\">RAID-6
(extra-parity)</option>\n");
print("\t\t<option value=\"10\">RAID-10 (mirrored +
striped)</option>\n");
print("\t</select>\n");
- print("</td>\n");
+ print("</td>\n<center>chunk size</center>");
+
+ print("\t<td colspan=\"1\" bgcolor=\"" .
$GLOBALS["color_table_row1"] . "\" align=\"center\">\n");
+ print("\t<select onchange=\"add_changed()\"
name=\"chunksize\">\n");
+ print("\t\t<option value=\"4\">4 kB</option>\n");
+ print("\t\t<option value=\"8\">8 kB</option>\n");
+ print("\t\t<option value=\"16\">16 kB</option>\n");
+ print("\t\t<option value=\"32\">32 kB</option>\n");
+ print("\t\t<option value=\"64\" selected >64 kB</option>\n");
+ print("\t\t<option value=\"128\">128 kB</option>\n");
+ print("\t\t<option value=\"256\">256 kB</option>\n");
+ print("\t\t<option value=\"512\">512 kB</option>\n");
+ print("\t\t<option value=\"1024\">1M </option>\n");
+ print("\t\t<option value=\"2048\">2M</option>\n");
+ print("\t\t<option value=\"4096\">4M</option>\n");
+ print("\t</select>\n");
+ print("</td>\n");
+
print("</tr>\n");
print("<tr>\n");
@@ -694,8 +718,9 @@
}
$part_size =
($of_disks[$i]["blocksize"] * $of_disks[$i]["partitions"][$j]["blocks"]);
-
- if ($part_size > (1024 * 1024 * 1024))
+ if ($part_size > (1024 * 1024 * 1024 *
1024))
+ $part_size_string =
sprintf("%.02f TB", ($part_size / (1024 * 1024 * 1024.0 * 1024.0)));
+ else if ($part_size > (1024 * 1024 *
1024))
$part_size_string =
sprintf("%.02f GB", ($part_size / (1024 * 1024 * 1024.0)));
else if ($part_size > (1024 * 1024))
$part_size_string =
sprintf("%.02f MB", ($part_size / (1024 * 1024.0)));
_______________________________________________
Openfiler-users mailing list
[email protected]
https://lists.openfiler.com/mailman/listinfo/openfiler-users