<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SpaLinux.com &#187; Troubleshooting</title>
	<atom:link href="http://spalinux.com/tag/troubleshooting/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>Resources for Relaxing Linux System Administrators</description>
	<lastBuildDate>Sat, 21 Jan 2012 16:07:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>แก้ไขปัญหาในการรัน VMware Server บน Fedora 9</title>
		<link>http://spalinux.com/2008/09/troubleshooting_vmware_server_on_fedora_9</link>
		<comments>http://spalinux.com/2008/09/troubleshooting_vmware_server_on_fedora_9#comments</comments>
		<pubDate>Sat, 06 Sep 2008 18:17:26 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=131</guid>
		<description><![CDATA[เพื่อสะดวกในการอ้างอิง จะขอแยกบทความที่กล่าวถึงปัญหาที่เกิดขึ้นในการรัน VMware Server บน Fedora 9 โดยจะแยกเป็นหัวข้อต่างๆ ตามข้อความที่ขึ้น วิธีการแก้ไข ก็เหมือนกับโปรแกรมอื่นๆ คือดูข้อความที่ขึ้นเตือนมา อีกส่วนหนึ่งที่ต้องดูเพิ่มเติมสำหรับการแก้ไขปัญหาของ VMware Server บนลินุกซ์ คือดูในไฟล์ /var/log/secure และไฟล์ /var/log/messages ตอนรัน vmware-config.pl มีข้อความว่าไม่สามารถหาไฟล์ /lib/ld-linux.so.2 ตัวอย่าง sh: /usr/bin/vmware-ping: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory การแก้ไข - ติดตั้ง glibc-2.8-3.i686.rpm ตอนรัน vmware-config.pl ขึ้นข้อความว่าไม่สามารถหาไฟล์ Library ที่จำเป็นในการรัน VMware Server ตัวอย่าง [root@vmware-host ~]# /usr/bin/vmware-config.pl The correct version of [...]]]></description>
			<content:encoded><![CDATA[<p>เพื่อสะดวกในการอ้างอิง จะขอแยกบทความที่กล่าวถึงปัญหาที่เกิดขึ้นในการรัน VMware Server บน Fedora 9 โดยจะแยกเป็นหัวข้อต่างๆ ตามข้อความที่ขึ้น</p>
<p>วิธีการแก้ไข ก็เหมือนกับโปรแกรมอื่นๆ คือดูข้อความที่ขึ้นเตือนมา อีกส่วนหนึ่งที่ต้องดูเพิ่มเติมสำหรับการแก้ไขปัญหาของ VMware Server บนลินุกซ์ คือดูในไฟล์ /var/log/secure และไฟล์ /var/log/messages</p>
<p><span id="more-131"></span></p>
<h4>ตอนรัน vmware-config.pl มีข้อความว่าไม่สามารถหาไฟล์ /lib/ld-linux.so.2</h4>
<p>ตัวอย่าง</p>
<pre>sh: /usr/bin/vmware-ping: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory</pre>
<p><strong>การแก้ไข</strong><br />
- ติดตั้ง glibc-2.8-3.i686.rpm</p>
<hr />
<h4>ตอนรัน vmware-config.pl ขึ้นข้อความว่าไม่สามารถหาไฟล์ Library ที่จำเป็นในการรัน VMware Server</h4>
<p>ตัวอย่าง</p>
<pre>
[root@vmware-host ~]# <strong>/usr/bin/vmware-config.pl</strong>
The correct version of one or more libraries needed to run VMware Server may be
missing.  This is the output of ldd /usr/bin/vmware:
        linux-gate.so.1 =&gt;  (0x00110000)
        libm.so.6 =&gt; /lib/libm.so.6 (0x0011e000)
        libdl.so.2 =&gt; /lib/libdl.so.2 (0x00147000)
        libpthread.so.0 =&gt; /lib/libpthread.so.0 (0x0014c000)
        libX11.so.6 =&gt; not found
        libXtst.so.6 =&gt; not found
        libXext.so.6 =&gt; not found
        libXt.so.6 =&gt; not found
        libICE.so.6 =&gt; not found
        libSM.so.6 =&gt; not found
        libXrender.so.1 =&gt; not found
        libz.so.1 =&gt; not found
        libc.so.6 =&gt; /lib/libc.so.6 (0x004d2000)
        /lib/ld-linux.so.2 (0x004b2000)
This program cannot tell for sure, but you may need to upgrade libc5 to glibc
before you can run VMware Server.
</pre>
<p><strong>การแก้ไข</strong><br />
ลงไฟล์ rpm ที่เป็น Library ต่างๆ ให้ครบ</p>
<ul>
<li>libXau-1.0.3-5.fc9.i386.rpm</li>
<li>libXdmcp-1.0.2-5.fc9.i386.rpm</li>
<li>libxcb-1.1-4.fc9.i386.rpm</li>
<li>libX11-1.1.4-1.fc9.i386.rpm</li>
<li>libXext-1.0.4-1.fc9.i386.rpm</li>
<li>libXtst-1.0.3-3.fc9.i386.rpm</li>
<li>libICE-1.0.4-3.fc9.i386.rpm</li>
<li>libSM-1.0.2-5.fc9.i386.rpm</li>
<li>libXt-1.0.4-5.fc9.i386.rpm</li>
<li>libXrender-0.9.4-3.fc9.i386.rpm</li>
<li>zlib-1.2.3-18.fc9.i386.rpm</li>
</ul>
<hr />
<h4>ตอนรัน vmware-config.pl ขึ้นข้อความว่าไม่สามารถหา kernel header file หรือ /usr/src/linux/include</h4>
<p>ตัวอย่าง</p>
<pre>What is the location of the directory of C header files that match your running
kernel? [/usr/src/linux/include]</pre>
<pre>The path "/usr/src/linux/include" is not an existing directory.</pre>
<p><strong>การแก้ไข<br />
</strong>ติดตั้ง rpm ไฟล์ชื่อ kernel-devel เพิ่มเติม</p>
<ul>
<li>สำหรับ i386 ติดตั้งไฟล์ kernel-devel-2.6.25-14.fc9.i386.rpm</li>
<li>สำหรับ x86_64 ติดตั้งไฟล์ kernel-devel-2.6.25-14.fc9.x86_64.rpm</li>
</ul>
<hr />
<h4>ตอนรัน vmware-config.pl ขึ้นข้อความว่าไม่มี inetd หรือ xinetd ติดตั้งอยู่ในเครื่อง</h4>
<p>ตัวอย่าง</p>
<pre>Unable to find any instance of the super-server "inetd" or "xinetd".  It is
possible that you do not have one of these packages installed on this machine.
Please install "inetd" or "xinetd".</pre>
<pre>If you do have "inetd" or "xinetd" installed, make sure that /etc/inetd.conf or
/etc/xinetd.d exists.
The configuration will continue, but you should re-run
/usr/bin/vmware-config.pl after you fix the super-server.</pre>
<p><strong>การแก้ไข<br />
</strong>ติดตั้ง rpm ไฟล์ชื่อ xinetd เพิ่มเติม</p>
<p>สำหรับ i386 ติดตั้งไฟล์ xinetd-2.3.14-18.fc9.i386.rpm<br />
สำหรับ x86_64 ติดตั้งไฟล์ xinetd-2.3.14-18.fc9.x86_64.rpm</p>
<hr />
<h4>ตอนรัน vmware-config.pl ขึ้นข้อความว่าไม่สามารถหา Perl module ชื่อ Embed.pm</h4>
<p>ตัวอย่าง</p>
<pre>Can't locate ExtUtils/Embed.pm in @INC (@INC contains: /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi
/usr/lib/perl5/5.10.0 /usr/local/lib64/perl5/site_perl/5.10.0/x86_64-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0 /usr/lib64/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .).
BEGIN failed--compilation aborted.
Use of uninitialized value $inc in substitution (s///) at /usr/bin/vmware-config.pl line 6775.
Use of uninitialized value $inc in substitution (s///) at /usr/bin/vmware-config.pl line 6776.
Use of uninitialized value $inc in substitution (s///) at /usr/bin/vmware-config.pl line 6776.
Could not find necessary components to build the VMware VmPerl Scripting API.
Look in your Linux distribution to see if there is a perl-devel package.
Install that package if it exists and then re-run this installation program.</pre>
<pre>********
The VMware VmPerl Scripting API was not installed.  Errors encountered during
compilation and installation of the module can be found here:
/tmp/vmware-config0</pre>
<pre>You will not be able to use the "vmware-cmd" program.</pre>
<pre>Errors can be found in the log file:
'/tmp/vmware-config0/control-only/make.log'
********</pre>
<p><strong>การแก้ไข<br />
</strong>ติดตั้ง rpm ไฟล์ชื่อ xinetd เพิ่มเติม</p>
<ul>
<li>สำหรับ i386 ติดตั้งไฟล์ perl-ExtUtils-Embed-1.27-20.fc9.i386.rpm</li>
<li>สำหรับ x86_64 ติดตั้งไฟล์ perl-ExtUtils-Embed-1.27-20.fc9.x86_64.rpm</li>
</ul>
<hr />
<h4>ตอนรัน vmware-config.pl ขึ้นข้อความว่าไม่สามารถหา libX11 ได้ หรือขึ้นฟ้องว่า serial number ที่ใส่ไม่ถูกต้อง</h4>
<p>ตัวอย่าง</p>
<pre>/usr/lib/vmware/bin/vmware-vmx: error while loading shared libraries: libX11.so.6: cannot open shared object file:
No such file or directory
Please enter your 20-character serial number.</pre>
<pre>Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel:  91N2W-YMR0Q-2544K-4UJV8</pre>
<pre>/usr/lib/vmware/bin/vmware-vmx: error while loading shared libraries: libX11.so.6: cannot open shared object file:
No such file or directory
The serial number 91N2W-YMR0Q-2544K-4UJV8 is invalid.</pre>
<p><strong>การแก้ไข</strong><br />
ลงไฟล์ rpm ที่เป็น Library ต่างๆ ให้ครบ</p>
<ul>
<li>libXau-1.0.3-5.fc9.i386.rpm</li>
<li>libXdmcp-1.0.2-5.fc9.i386.rpm</li>
<li>libxcb-1.1-4.fc9.i386.rpm</li>
<li>libX11-1.1.4-1.fc9.i386.rpm</li>
<li>libXext-1.0.4-1.fc9.i386.rpm</li>
<li>libXtst-1.0.3-3.fc9.i386.rpm</li>
<li>libICE-1.0.4-3.fc9.i386.rpm</li>
<li>libSM-1.0.2-5.fc9.i386.rpm</li>
<li>libXt-1.0.4-5.fc9.i386.rpm</li>
<li>libXrender-0.9.4-3.fc9.i386.rpm</li>
<li>zlib-1.2.3-18.fc9.i386.rpm</li>
</ul>
<hr />
<h4>ตอนรัน vmware-config.pl ขึ้นข้อความเตือนให้ใส่ Serial number</h4>
<p>ตัวอย่าง</p>
<pre>You cannot power on any virtual machines until you enter a valid serial number.
To enter the serial number, run this configuration program again, or choose
'Help &gt; Enter Serial Number' in the virtual machine console.</pre>
<p><strong>การแก้ไข</strong><br />
ใส่ Serial number ให้ถูกต้อง</p>
<hr />
<h4>ใช้โปรแกรม VMware Server Console รีโมตเข้าไป แต่ไม่สามารถเข้าได้ ฟ้องว่า Login (username/password) incorrect  ในไฟล์ /var/log/secure ขึ้นข้อความ</h4>
<p>ตัวอย่าง</p>
<pre>Sep  4 01:37:04 vmware-host vmware-authd[7944]: PAM unable to dlopen(/usr/lib/vmware/lib/libpam.so.0/security/pam_unix2.so):/usr/lib/vmware/lib/libpam.so.0/security/pam_unix2.so: cannot open shared object file: No such file or directory
Sep  4 01:37:04 vmware-host vmware-authd[7944]: PAM adding faulty module: /usr/lib/vmware/lib/libpam.so.0/security/pam_unix2.so
Sep  4 01:37:04 vmware-host vmware-authd[7944]: pam_unix_auth(vmware-authd:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=  user=root</pre>
<p><strong>การแก้ไข</strong><br />
- ลงไฟล์ rpm เพิ่มเติมดังนี้</p>
<ul>
<li>audit-libs-1.7.2-6.fc9.i386.rpm</li>
<li>cracklib-2.8.12-2.i386.rpm</li>
<li>libselinux-2.0.61-1.fc9.i386.rpm</li>
<li>pam-1.0.1-2.fc9.i386.rpm</li>
</ul>
<p>- แก้ไขไฟล์ /etc/pam.d/vmware-authd ให้ถูกต้อง โดยต้องแก้เป็นดังนี้</p>
<pre>[root@vmware-host ~]# cat /etc/pam.d/vmware-authd
#%PAM-1.0
auth       sufficient       pam_unix.so shadow nullok
auth       required         pam_unix_auth.so shadow nullok
account    sufficient       pam_unix.so
account    required         pam_unix_acct.so</pre>
<hr />
<h4>สร้าง Guest OS ไม่ได้ ดูในไฟล์ /var/log/messages มีข้อความ  libgcc_s.so.1 must be installed for pthread_cancel to work</h4>
<p><strong>การแก้ไข<br />
</strong>ติดตั้ง libgcc-4.3.0-8.i386.rpm</p>
<hr />
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2008/09/install_vmware_server_on_fedora_9">ติดตั้ง VMware Server บน Fedora 9</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2008/09/troubleshooting_vmware_server_on_fedora_9/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ทดสอบแก้ไขดิสก์ที่มีปัญหาใน Software-RAID บนลินุกซ์</title>
		<link>http://spalinux.com/2008/08/troubleshooting_software_raid_on_linux</link>
		<comments>http://spalinux.com/2008/08/troubleshooting_software_raid_on_linux#comments</comments>
		<pubDate>Sat, 09 Aug 2008 13:11:04 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=78</guid>
		<description><![CDATA[หลังจากที่เราคอนฟิก Software RAID จากบทความที่ผ่านมาแล้ว ในบทความนี้จะกล่าวถึงวิธีการทดสอบในกรณีที่ดิสก์มีปัญหา วิธีการแก้ไข การป้องกันโดยเพิ่มดิสก์เพื่อทำหน้าที่เป็น spare สถานการณ์ปกติหลังจากคอนฟิก RAID-5 เริ่มต้นจะเราจะสร้าง RAID-5 ที่ประกอบด้วยดิสก์จำนวน 3 partition ซึ่งประกอบด้วย /dev/sdb1, /dev/sdc1, /dev/sdd1 ตัวอย่างการสร้าง RAID-5 [root@test-raid ~]# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 64K mdadm: size set to 987840K mdadm: array /dev/md0 started. ให้รอจนกว่าการสถานะการ build ข้อมูลของ [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากที่เราคอนฟิก Software RAID จากบทความที่ผ่านมาแล้ว ในบทความนี้จะกล่าวถึงวิธีการทดสอบในกรณีที่ดิสก์มีปัญหา วิธีการแก้ไข การป้องกันโดยเพิ่มดิสก์เพื่อทำหน้าที่เป็น spare</p>
<p><span id="more-78"></span></p>
<p><strong>สถานการณ์ปกติหลังจากคอนฟิก RAID-5</strong><br />
เริ่มต้นจะเราจะสร้าง RAID-5 ที่ประกอบด้วยดิสก์จำนวน 3 partition ซึ่งประกอบด้วย /dev/sdb1, /dev/sdc1, /dev/sdd1</p>
<p>ตัวอย่างการสร้าง RAID-5</p>
<pre>[root@test-raid ~]# <strong>mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1</strong>
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: size set to 987840K
mdadm: array /dev/md0 started.</pre>
<p>ให้รอจนกว่าการสถานะการ build ข้อมูลของ RAID-5 ครบ 100% แล้วสร้าง filesystem เพื่อ mount เข้ากับ /export</p>
<pre>[root@test-raid ~]#  <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: &lt;none&gt;

[root@test-raid ~]# <strong>mkfs.ext3 /dev/md0</strong>
[root@test-raid ~]# <strong>mount /dev/md0 /export</strong></pre>
<p><strong>เมื่อดิสก์มีปัญหา (fail)</strong><br />
เราสามารถใช้คำสั่ง mdadm &#8211;fail เพื่อใช้ในการจำลองสถานการณ์ว่าดิสก์มีปัญหา เพื่อดูผลกระทบที่เกิดขึ้น โดยไม่จำเป็นต้องไปดึงดิสก์ออกจริงๆ ซึ่งเสี่ยงต่ออุปกรณ์เสียหาย</p>
<p>ตัวอย่างการใช้คำสั่ง mdadm &#8211;fail เพื่อจำลองว่าดิสก์ /dev/sdc มีปัญหา</p>
<pre>[root@test-raid ~]# <strong>mdadm /dev/md0 --fail /dev/sdc1</strong>
mdadm: set /dev/sdc1 faulty in /dev/md0</pre>
<p>ตรวจสอบสถานะ RAID-5 เมื่อดิสก์มีปัญหา</p>
<pre>[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[2] <span style="color: #ff0000;"><strong>sdc1[3](F)</strong></span> sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]

unused devices: &lt;none&gt;</pre>
<p>จากไฟล์ /proc/mdstat จะเห็นการเปลี่ยนแปลงคือ สถานะในวงเล็บหลัง sdc1 เปลี่ยนเป็นตัวอักษร F ซึ่งหมายถึงดิสก์นี้มีปัญหา (fail)</p>
<p>เนื่องจากเป็น RAID-5 ทำให้ /dev/md0 ยังสามารถใช้งานได้อยู่ในกรณีที่ดิสก์มีปัญหาก้อนเดียว โดยข้อมูลไม่เสียหาย ซึ่งสามารถตรวจสอบได้ ในที่เรา mount ไว้ ซึ่งยังสามารถเขียน/อ่าน ข้อมูลต่างๆ ได้ตามปกติ</p>
<p><strong>การคอนฟิกดิสก์ที่มีปัญหาออกจาก RAID</strong><br />
เมื่อดิสก์ที่มีปัญหาไม่ว่าจากการคอนฟิกโดยใช้คำสั่ง mdadm หรือเสียจริงๆ ที่อุปกรณ์เลย การแก้ไขในเบื้องต้น ต้องเอาคอนฟิกของดิสก์นั้นออกจาก RAID</p>
<p>ตัวอย่างการใช้คำสั่ง mdadm &#8211;remove เพื่อเอาคอนฟิกของดิสก์ที่มีปัญหาออก</p>
<pre>[root@test-raid ~]# <strong>mdadm /dev/md0 --remove /dev/sdc1</strong>
mdadm: hot removed /dev/sdc1</pre>
<p>ตรวจสอบสถานะของ RAID หลังจากที่เอาคอนฟิกดิสก์ที่มีปัญหาออก</p>
<pre>[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[2] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]

unused devices: &lt;none&gt;</pre>
<p>จากผลลัพธ์ ดิสก์ที่มีปัญหา (sdc) จะหายไป ถ้าเสียที่อุปกรณ์จริงๆ ก็ต้องดึงดิสก์ออกจากเครื่อง เพื่อเปลี่ยนตัวใหม่เข้ามาแทน</p>
<p><strong>การเปลี่ยนดิสก์ก้อนใหม่เข้าไปใน RAID</strong><br />
เมื่อได้ดิสก์ก้อนใหม่ที่ใช้งานได้แล้ว ต้องคอนฟิกเพื่อเพิ่มดิสก์ก้อนนี้เข้าไปใน RAID</p>
<p>ตัวอย่างการใช้คำสั่ง mdadm &#8211;add เพื่อเพิ่มดิสก์ก้อนใหม่เข้าไปใน RAID</p>
<pre>[root@test-raid ~]# <strong>mdadm /dev/md0 --add /dev/sdc1</strong>
mdadm: re-added /dev/sdc1</pre>
<p>เมื่อเพิ่มดิสก์เข้าไปใหม่ จะมีการ re-build ข้อมูลใน RAID-5 ใหม่อีกครั้ง เพื่อทำให้คอนฟิกกลับมาเป็นปกติ</p>
<p>ตัวอย่างสถานะของ RAID-5 ในขณะที่มีการ re-build ข้อมูลใหม่</p>
<pre>[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[3] sdd1[2] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
      [==&gt;..................]  recovery = 12.2% (121296/987840) finish=1.7min speed=8086K/sec

unused devices: &lt;none&gt;</pre>
<p>ตัวอย่างสถานะของ RAID-5 เมื่อการ re-build เสร็จสิ้น</p>
<pre>[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[1] sdd1[2] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: &lt;none&gt;</pre>
<p>จากที่ดิสก์มีปัญหาหนึ่งก้อน ดึงดิสก์ก้อนที่มีปัญหาออก เปลี่ยนดิสก์ใหม่ที่ใช้ได้ลงไป จนถึง re-build ข้อมูลใน RAID-5 ใหม่ ผู้ใช้งานทั่วไป (users) ยังสามารถที่จะเขียน/อ่าน ข้อมูลได้ตลอดเวลา โดยอาจมีผลกระทบบ้างเช่นความเร็วจะลดลง</p>
<p><strong>การเพิ่มดิสก์เพื่อทำหน้าที่เป็น Spare</strong></p>
<p>ถึงแม้ RAID-5 จะรองรับปัญหาในกรณีที่ดิสก์เสียได้ก้อนนึง แต่ข้อควรระวังอย่างหนึ่งคือ ในช่วงที่รออุปกรณ์ใหม่มาทดแทนเพื่อเปลี่ยน จะมีดิสก์ที่เสียอีกไม่ได้แล้ว ซึ่งถ้าเสียอีกหนึ่งก้อน ข้อมูลทั้งหมดจะเสียหายไปเลย</p>
<p>วิธีการหนึ่งที่ช่วยแก้ไขปัญหานี้ได้คือคอนฟิกดิสก์เปล่าๆ ก้อนหนึ่งเพื่อทำหน้าที่เป็น spare โดยดิสก์ที่เป็น spare นี้ในสถานการณ์ปกติจะไม่ถูกนำมาใช้งาน แต่จะถูกใช้โดยอัตโนมัติในกรณีที่ดิสก์ที่คอนฟิกอยู่ใน RAID-5 มีปัญหาเท่านั้น</p>
<p>ตัวอย่างการเพิ่ม /dev/sde เพื่อทำหน้าที่เป็น spare</p>
<pre>[root@test-raid ~]# <strong>mdadm /dev/md0 --add /dev/sde1</strong>
mdadm: added /dev/sde1</pre>
<p>สถานะของ RAID เมื่อมีการเพิ่มดิสก์เพื่อทำหน้าที่เป็น spare</p>
<pre>[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 <span style="color: #0000ff;"><strong>sde1[3](S)</strong></span> sdc1[1] sdd1[2] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: &lt;none&gt;</pre>
<p>จากผลลัพธ์สถานะของดิสก์ที่ทำหน้าที่เป็น spare จะมีตัวอักษร S อยู่ในวงเล็บ</p>
<p><strong>ทดสอบการทำงานของ spare เมื่อดิสก์ใน RAID มีปัญหา</strong><br />
เราสามารถทดสอบการทำงานของ spare ได้ โดยจำลองว่าดิสก์ที่อยู่ใน RAID ก้อนหนึ่งมีปัญหา เช่นสมมติว่า sdd เสียหายไป</p>
<pre>[root@test-raid ~]# <strong>mdadm /dev/md0 --fail /dev/sdd1</strong>
mdadm: set /dev/sdd1 faulty in /dev/md0</pre>
<p>ตรวจสอบสถานะของ RAID ในกรณีที่มีดิสก์ spare</p>
<pre>[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 <span style="color: #0000ff;"><strong>sde1[3]</strong></span> sdc1[1] <span style="color: #ff0000;"><strong>sdd1[4](F)</strong></span> sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [====&gt;................]  recovery = 21.3% (211584/987840) finish=1.5min speed=8463K/sec

unused devices: &lt;none&gt;</pre>
<p>จากผลลัพธ์จะเห็นว่าดิสก์ spare จะถูกนำมาอยู่ใน RAID โดยอัตโนมัติเลย โดยเปลี่ยนตัวอักษรจาก (S) เป็น (3) และเมื่อถูก re-build เรียบร้อยจะเปลี่ยนเป็น (2)</p>
<p>ตัวอย่างสถานะของ RAID-5 เมื่อดิสก์ spare ถูกนำมารวมเรียบร้อย</p>
<pre>[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sde1[2] sdc1[1] sdd1[3](F) sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: &lt;none&gt;</pre>
<p><strong>การเปลี่ยนดิสก์ที่มีปัญหาในกรณีที่มี spare</strong><br />
จากตัวอย่างที่แล้ว เราทำให้ /dev/sdd มีปัญหา การแก้ไขก็ต้องเอาคอนฟิกออกไป แล้วเพิ่มกลับเข้าไปใหม่</p>
<p>แต่ให้สังเกตว่า ในกรณีที่มีดิสก์ spare อยู่แล้ว เมื่อเปลี่ยนดิสก์อันใหม่ลงไปแทนที่ดิสก์ที่มีปัญหา ดิสก์ก้อนนี้จะถูกตั้งให้เป็น spare แทน จะไม่มีการ re-build เพื่อรวมดิสก์ที่เพิ่งเปลี่ยนเข้าไปใหม่</p>
<pre>[root@test-raid ~]# <strong>mdadm /dev/md0 --remove /dev/sdd1</strong>
mdadm: hot removed /dev/sdd1

[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sde1[2] sdc1[1] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: &lt;none&gt;

[root@test-raid ~]# <strong>mdadm /dev/md0 --add /dev/sdd1</strong>
mdadm: added /dev/sdd1

[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3](S) sde1[2] sdc1[1] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: &lt;none&gt;

<strong>การคอนฟิกดิสก์ spare ตอนเริ่มต้นสร้าง RAID-5</strong>
ถ้าต้องการคอนฟิกดิสก์ spare ตั้งแต่เริ่มต้นสร้าง RAID สามารถทำได้ โดยเพิ่ม option ลงไปดังนี้

ตัวอย่างการสร้าง RAID-5 พร้อมดิสก์ spare
<pre>[root@test-raid ~]# <strong>mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1  /dev/sde1</strong>
[root@test-raid ~]# <strong>cat /proc/mdstat</strong>
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [&gt;....................]  recovery =  2.4% (24836/987840) finish=1.2min speed=12418K/sec

unused devices: &lt;none&gt;</pre>
</pre>
<p><strong>ข้อมูลอ้างอิง</strong></p>
<ul>
<li><a href="http://spalinux.com/2008/08/creating_software_raid_on_linux">การสร้าง Software RAID บนลินุกซ์ </a></li>
<li><a href="http://linux-raid.osdl.org" target="_blank">Linux Raid</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2008/08/troubleshooting_software_raid_on_linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

