<?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; Backup</title>
	<atom:link href="http://spalinux.com/category/backup/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>เก็บสำรองคอนฟิกของลีนุกซ์</title>
		<link>http://spalinux.com/2011/10/backup-linux-configuration</link>
		<comments>http://spalinux.com/2011/10/backup-linux-configuration#comments</comments>
		<pubDate>Mon, 31 Oct 2011 15:40:40 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[configuration]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1469</guid>
		<description><![CDATA[เพื่อป้องกันกรณีเครื่องเซิร์ฟเวอร์อาจเกิดความเสียหายไม่ว่าจะเกิดจากเหตุอะไร แนะนำให้เก็บสำรองคอนฟิกไว้ ไฟล์คอนฟิกของลีนุกซ์เกือบทั้งหมด จะอยู่ในไดเร็คทอรี /etc ส่วนใหญ่จะเป็น text file มีขนาดเล็กๆ ดังนั้นแนะนำให้เก็บทุกไฟล์ที่อยู่ในนี้ วิธีการเก็บสำรองไฟล์แบบง่ายที่สุดน่าจะเป็นการใช้คำสั่ง tar ตัวอย่างการเก็บไฟล์ทั้งหมดที่อยู่ใน /etc [root@server ~]# cd / [root@server /]# tar zcvpf server-backup-etc-20111031.tar.gz etc/ etc/ etc/sysctl.conf etc/inittab etc/idmapd.conf etc/pki/ etc/pki/nssdb/ ... คำแนะนำ  tar บนลีนุกซ์ สามารถระบุออปชั่น z เพื่อบีบขนาดของไฟล์ได้เลย การระบุไดเร็คทอรีเวลาใช้คำสั่ง tar ให้เอาเครื่องหมาย / ที่อยู่หน้าไดเร็คทอรีออก มิฉะนั้นเวลาไปแตกไฟล์ (untar) ออก อาจพลาดไปเขียนไฟล์ทับ /etc ของเครื่องปลายทางได้ ตัวอย่างไฟล์ tar ที่ได้ [root@server /]# ls -l [...]]]></description>
			<content:encoded><![CDATA[<p>เพื่อป้องกันกรณีเครื่องเซิร์ฟเวอร์อาจเกิดความเสียหายไม่ว่าจะเกิดจากเหตุอะไร แนะนำให้เก็บสำรองคอนฟิกไว้</p>
<p>ไฟล์คอนฟิกของลีนุกซ์เกือบทั้งหมด จะอยู่ในไดเร็คทอรี /etc ส่วนใหญ่จะเป็น text file มีขนาดเล็กๆ ดังนั้นแนะนำให้เก็บทุกไฟล์ที่อยู่ในนี้</p>
<p>วิธีการเก็บสำรองไฟล์แบบง่ายที่สุดน่าจะเป็นการใช้คำสั่ง tar</p>
<p>ตัวอย่างการเก็บไฟล์ทั้งหมดที่อยู่ใน /etc</p>
<pre>[root@server ~]# <strong>cd /</strong>
[root@server /]# <strong>tar zcvpf server-backup-etc-20111031.tar.gz etc/</strong>
etc/
etc/sysctl.conf
etc/inittab
etc/idmapd.conf
etc/pki/
etc/pki/nssdb/
...</pre>
<p><strong>คำแนะนำ</strong></p>
<ul>
<li> tar บนลีนุกซ์ สามารถระบุออปชั่น z เพื่อบีบขนาดของไฟล์ได้เลย</li>
<li>การระบุไดเร็คทอรีเวลาใช้คำสั่ง tar ให้เอาเครื่องหมาย / ที่อยู่หน้าไดเร็คทอรีออก มิฉะนั้นเวลาไปแตกไฟล์ (untar) ออก อาจพลาดไปเขียนไฟล์ทับ /etc ของเครื่องปลายทางได้</li>
</ul>
<p>ตัวอย่างไฟล์ tar ที่ได้</p>
<pre>[root@server /]# <strong>ls -l server-backup-etc-20111031.tar.gz</strong>
-rw-r--r-- 1 root root 5332341 Oct 31 20:52 server-backup-etc-20111031.tar.gz</pre>
<p>ก็ขึ้นอยู่กับแต่ละคนว่าจะเก็บไฟล์ tar นี้ไว้ที่ไหน เช่นเก็บใส่ USB Drive หรือ ส่งไฟล์ (transfer file) ไปเครื่องที่อยู่ที่อื่น</p>
<p>ส่วนไฟล์คอนฟิกอื่นๆ ต้องขึ้นอยู่กับโปรแกรมที่ติดตั้ง บางโปรแกรมอาจติดตั้งอยู่ใน /opt หรือ /usr/local ต้องลองหาดู</p>
<p>อีกอย่างที่ควรระวัง คือเวลาติดตั้งโปรแกรมใหม่ หรือทดลองรันโปรแกรมแล้วใช้งานเลย โดยไม่ได้เข้าไปแก้ไขไฟล์คอนฟิก ที่อยู่ใน /etc ให้เรียบร้อย ทำให้เวลามีการ reboot เครื่องใหม่ เซอร์วิสบางอย่างอาจไม่ได้รันขึ้นมาเหมือนเดิม</p>
<p>โดยส่วนตัวแล้ว นอกจากเก็บไฟล์ที่อยู่ใน /etc แล้ว จะรันคำสั่งดังต่อไปนี้เพื่อเก็บสถานะของเครื่อง ณ ขนะนั้นจริงๆ ว่ารันอะไรอยู่บ้าง เพื่อจะได้ใช้เปรียบเทียบหลังจากที่ reboot เครื่องใหม่</p>
<ul>
<li>uname -a</li>
<li>hostname</li>
<li>ps -ef</li>
<li>free</li>
<li>netstat -an</li>
<li>netstat -rn</li>
<li>ifconfig -a</li>
<li>mii-tool</li>
<li>iptables -L -v -n</li>
<li>sestatus</li>
<li>lsmod</li>
<li>dmesg</li>
<li>mount</li>
<li>df -k</li>
<li>pvdisplay</li>
<li>vgdisplay</li>
<li>lvdisplay</li>
<li>cat /proc/mdstat</li>
</ul>
<p>ลองนำไปใช้กันดูครับ หวังว่าเซิร์ฟเวอร์ของทุกท่านจะปลอดภัย</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/10/backup-linux-configuration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Tivoli Storage Manager V6.2 Server บน CentOS 5.6 (x86_64)</title>
		<link>http://spalinux.com/2011/07/install-tivoli-storage-manager-v6-2-server-on-centos-5-6-x86_64</link>
		<comments>http://spalinux.com/2011/07/install-tivoli-storage-manager-v6-2-server-on-centos-5-6-x86_64#comments</comments>
		<pubDate>Sat, 23 Jul 2011 13:28:09 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Tivoli Storage Manager]]></category>
		<category><![CDATA[tsm]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1400</guid>
		<description><![CDATA[บทความนี้ แสดงตัวอย่างการติดตั้ง Tivoli Storage Manager V6.2 Server บน CentOS 5.6 (x86_64) แบบ command line เพื่อความสะดวก ขอเขียนย่อ Tivoli Storage Manager เป็น TSM หมายเหตุ หากท่านใด เห็นว่าบทความนี้ไม่เหมาะสม หรือถือเป็นการละเมิดลิขสิทธิ์กับ IBM โปรดแจ้งด้วยครับ ผู้เขียนไม่มีเจตนาใดๆ ทั้งสิ้น เตรียมการติดตั้ง ติดตั้งไฟล์ compat-libstdc++-33-3.2.3-61.i386.rpm ที่อยู่ในแผ่นดีวีดี ติดตั้ง CentOS 5.6 [root@cent56-tsm ~]# mount /dev/cdrom /media/ mount: block device /dev/cdrom is write-protected, mounting read-only [root@cent56-tsm ~]# cd /media [root@cent56-tsm media]# [...]]]></description>
			<content:encoded><![CDATA[<p>บทความนี้ แสดงตัวอย่างการติดตั้ง Tivoli Storage Manager V6.2 Server บน CentOS 5.6 (x86_64) แบบ command line</p>
<p>เพื่อความสะดวก ขอเขียนย่อ Tivoli Storage Manager เป็น TSM</p>
<p><span id="more-1400"></span></p>
<p><span style="color: #ff0000;">หมายเหตุ หากท่านใด เห็นว่าบทความนี้ไม่เหมาะสม หรือถือเป็นการละเมิดลิขสิทธิ์กับ IBM โปรดแจ้งด้วยครับ ผู้เขียนไม่มีเจตนาใดๆ ทั้งสิ้น</span></p>
<h4>เตรียมการติดตั้ง</h4>
<p>ติดตั้งไฟล์ compat-libstdc++-33-3.2.3-61.i386.rpm ที่อยู่ในแผ่นดีวีดี ติดตั้ง CentOS 5.6</p>
<pre>[root@cent56-tsm ~]# <strong>mount /dev/cdrom /media/
</strong>mount: block device /dev/cdrom is write-protected, mounting read-only</pre>
<pre>[root@cent56-tsm ~]# <strong>cd /media</strong></pre>
<pre>[root@cent56-tsm media]# <strong>rpm -i compat-libstdc++-33-3.2.3-61.i386.rpm</strong></pre>
<pre>[root@cent56-tsm media]# <strong>cd ~</strong></pre>
<pre>[root@cent56-tsm ~]#</pre>
<p>ปิดคุณสมบัติ selinux โดยแก้ไขไฟล์คอนฟิก /etc/sysconfig/selinux</p>
<pre>[root@cent55-sm ~]# <strong>cat /etc/sysconfig/selinux
</strong># This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
<span style="color: #0000ff;">SELINUX=disabled</span>
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted</pre>
<p>หลังแก้ไขไฟล์นี้ต้อง reboot เครื่อง หรือรันคำสั่ง setenforce 0 เพื่อให้มีผลทันที</p>
<pre>[root@cent56-tsm ~]# <strong>setenforce 0
</strong>setenforce: SELinux is disabled</pre>
<p> </p>
<h4>ติดตั้งโปรแกรม</h4>
<p>ใส่แผ่นโปรแกรม IBM Tivoli Storage Manager V6.2 Server Linux x86</p>
<pre>[root@cent56-tsm ~]# <strong>mount /dev/cdrom /media/
</strong>mount: block device /dev/cdrom is write-protected, mounting read-only</pre>
<pre>[root@cent56-tsm ~]# <strong>cd /media</strong></pre>
<pre>[root@cent56-tsm cdrom]# <strong>ls</strong>
COI  DE  install.bin  PostFailureTask.xml  README.htm</pre>
<pre>รันคำสั่ง ./install.bin เพื่อเริ่มการติดตั้ง</pre>
<pre>[root@cent56-tsm cdrom]# <strong>./install.bin
</strong>Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...</pre>
<pre>Launching installer...</pre>
<pre>Graphical installers are not supported by the VM. The console mode will be used instead...</pre>
<pre>Preparing CONSOLE Mode Installation...</pre>
<pre>===============================================================================
Choose Locale...
----------------</pre>
<pre>    1- Deutsch
  -&gt;2- English
    3- Español
    4- Français
    5- Italiano
    6- Português  (Brasil)</pre>
<pre>CHOOSE LOCALE BY NUMBER: <strong><span style="color: #0000ff;">2</span></strong></pre>
<p>เลือกภาษาที่ใช้ในการติดตั้ง</p>
<pre>===============================================================================
Tivoli Storage Manager                           (created with InstallAnywhere)
-------------------------------------------------------------------------------</pre>
<pre> </pre>
<pre>===============================================================================
Tivoli Storage Manager Install
------------------------------</pre>
<pre>Welcome
Tivoli Storage Manager 6.2</pre>
<pre>Licensed Materials - Property of IBM Corp. (c) IBM Corporation and other(s)
1994, 2010.  All rights reserved.  US Government Users Restricted Rights --
Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM
Corp.</pre>
<pre>It is highly recommended that you stop all other programs before continuing
with this installation.</pre>
<pre>PRESS &lt;ENTER&gt; TO CONTINUE:</pre>
<pre>===============================================================================</pre>
<pre> </pre>
<pre>    International Program License Agreement</pre>
<pre>    Part 1 - General Terms</pre>
<pre>    BY DOWNLOADING, INSTALLING, COPYING, ACCESSING, CLICKING ON AN
    "ACCEPT" BUTTON, OR OTHERWISE USING THE PROGRAM, LICENSEE AGREES TO
    THE TERMS OF THIS AGREEMENT. IF YOU ARE ACCEPTING THESE TERMS ON
    BEHALF OF LICENSEE, YOU REPRESENT AND WARRANT THAT YOU HAVE FULL
    AUTHORITY TO BIND LICENSEE TO THESE TERMS. IF YOU DO NOT AGREE TO
    THESE TERMS,</pre>
<pre>    - DO NOT DOWNLOAD, INSTALL, COPY, ACCESS, CLICK ON AN "ACCEPT" BUTTON,
    OR USE THE PROGRAM; AND</pre>
<pre>    - PROMPTLY RETURN THE UNUSED MEDIA, DOCUMENTATION, AND PROOF OF
    ENTITLEMENT TO THE PARTY FROM WHOM IT WAS OBTAINED FOR A REFUND OF THE
    AMOUNT PAID. IF THE PROGRAM WAS DOWNLOADED, DESTROY ALL COPIES OF THE
    PROGRAM.</pre>
<pre>Press Enter to continue viewing the license agreement, or enter "1" to
   accept the agreement, "2" to decline it, "3" to print it, "4" to read
   non-IBM terms, or "99" to go back to the previous screen.: <span style="color: #0000ff;"><strong>1</strong></span></pre>
<p>ยอมรับ License</p>
<pre>===============================================================================
Component Selection
-------------------</pre>
<pre>Select the components to install.</pre>
<pre>    1- Tivoli Storage Manager Server
    2- Tivoli Storage Manager Server Languages
    3- Tivoli Storage Manager License
    4- Tivoli Storage Manager Devices
    5- Tivoli Storage Manager Storage Agent</pre>
<pre>ENTER A COMMA-SEPARATED LIST OF NUMBERS REPRESENTING THE DESIRED CHOICES: <strong><span style="color: #0000ff;">1</span></strong></pre>
<p>ใส่หมายเลข 1 เพื่อเลือกติดตั้งเฉพาะ &#8220;Tivoli Storage Manager Server&#8221;</p>
<pre>===============================================================================
Deployment Engine Initialization
--------------------------------</pre>
<pre>Please Wait
....
Step 1 of 15...........
Step 2 of 15.......
Step 3 of 15...
Step 4 of 15....
Step 5 of 15...
Step 6 of 15....
Step 7 of 15......
Step 8 of 15.................
Step 9 of 15....
Step 10 of 15....
Step 11 of 15...
Step 12 of 15......
Step 13 of 15...
Step 14 of 15...
Step 15 of 15...
Completed.</pre>
<p>หากหน้าจอการติดตั้งสิ้นสุดแค่นี้ แล้วกลับคืนไปที่ shell prompt แสดงว่ามีปัญหาในการติดตั้ง</p>
<p>ใช้คำสั่ง ls เพื่อดูไฟล์ที่ได้จากการติดตั้ง ซึ่งจะอยู่ใน /opt/tivoli/tsm/</p>
<pre>[root@cent56-tsm cdrom]# <strong>ls /opt/tivoli/tsm/
</strong>Tivoli_Storage_Manager_InstallLog.log  _uninst</pre>
<p>การติดตั้งยังไม่สมบูรณ์</p>
<p>การแก้ไขปัญหา ต้องดูในไฟล์ /var/tivoli/tsm/log.txt ซึ่งจะเป็นไฟล์ที่เก็บรายละเอียดทั้งหมดในการติดตั้ง</p>
<p>สำหรับข้อผิดพลาด (error) ที่ผู้เขียนเจอ จะมีข้อความขึ้นเหมือนกับว่าไฟล์ XML ไม่ถูกต้อง</p>
<pre>[root@cent56-tsm ~]# <strong>tail /var/tivoli/tsm/log.txt</strong></pre>
<pre>Sat Jul 23 18:31:02.065 ICT 2011 :  SEVERE : Aborting installer: <span style="color: #ff0000;">XML document structures must start and end within the same entity</span>. (from com.ibm.ac.coi.ext.ia.plugin.COIProcessInventorySteps.install)</pre>
<p>แต่ปัญหาจริงๆ คือ ลง library ไม่ครบถ้วน</p>
<p>คือไม่มี compat-libstdc++-33-3.2.3-61.i386.rpm (การติดตั้ง ดูได้จากหัวข้อ เตรียมการติดตั้ง)</p>
<p>หลังจากติดตั้ง compat-libstdc++-33-3.2.3-61.i386.rpm แล้ว สามารถรันคำสั่ง ./install.bin ซ้ำได้อีกที หากไม่มีปัญหาอีก หน้าจอก็จะขึ้นข้อความถัดไป</p>
<pre>===============================================================================
Pre-Installation Summary
------------------------</pre>
<pre>Review the Following Summary Before You Continue:</pre>
<pre>Product Name:
    Tivoli Storage Manager</pre>
<pre>Install Folder:
    /opt/tivoli/tsm</pre>
<pre>Components:
    TSM Server,DB2 9.7,Global Secure Toolkit,TSM Client API 32 bit,TSM Client API 64 bit</pre>
<pre>Disk Space Information (for Installation Target):
    Required:  1,628,279,760 bytes
    Available: 13,205,897,216 bytes</pre>
<pre>PRESS &lt;ENTER&gt; TO CONTINUE:</pre>
<pre> </pre>
<pre>===============================================================================
Installing...
-------------</pre>
<pre> [==================|==================|==================|==================]
 [------------------|------------------|------------------|------------------]</pre>
<pre> </pre>
<pre>===============================================================================
Installation Complete
---------------------</pre>
<pre>The following components were successfully installed:</pre>
<pre>TSM Server
DB2 9.7
Global Secure Toolkit
TSM Client API 32 bit
TSM Client API 64 bit</pre>
<pre>See /var/tivoli/tsm/log.txt for details.</pre>
<pre>To continue, either configure a new server instance or upgrade an existing
server instance.</pre>
<pre>To configure a new server instance, choose one of the following methods:</pre>
<pre>  Log in as root user or administrator and open the local new-instance wizard,
dsmicfgx, located in the server installation directory.
  Log on to a Version 6.2 Tivoli Storage Manager Administration Center and
start the Create New Instance wizard.
  Configure the new instance manually. See the Tivoli Storage Manager
Information Center, or the Installation Guide.</pre>
<pre>To upgrade an existing server instance, log in as root user or administrator
and start the upgrade wizard, dsmupgdx, located in the server installation
directory.  You can also upgrade a server manually. See the Tivoli Storage
Manager Information Center, or the Server Upgrade Guide.</pre>
<pre>For more information about any of these tasks, see the Tivoli Storage Manager
Information Center at:
  http://publib.boulder.ibm.com/infocenter/tsminfo/v6r2</pre>
<pre>PRESS &lt;ENTER&gt; TO EXIT THE INSTALLER:</pre>
<pre>[root@cent56-tsm cdrom]#</pre>
<p>เสร็จสิ้นการติดตั้งโปรแกรม ไฟล์ที่ติดตั้งจะอยู่ใน /opt/tivoli/tsm/</p>
<pre>[root@cent56-tsm cdrom]# <strong>ls -l /opt/tivoli/tsm/
</strong>total 36
drwxr-xr-x  6 root root 4096 Jul 23 19:56 client
drwxr-xr-x 37 root root 4096 Jul 23 19:56 db2
drwxrwxr-x  2 root root 4096 Jul 23 19:53 license
drwxr-xr-x  3 root root 4096 Jul 23 19:53 server
drwxr-xr-x  2 root root 4096 Jul 23 19:53 tivinv
-rw-rw-r--  1 root root 8482 Jul 23 19:57 Tivoli_Storage_Manager_InstallLog.log
drwxrwxr-x  3 root root 4096 Jul 23 19:57 _uninst</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://publib.boulder.ibm.com/infocenter/tsminfo/v6r2/index.jsp" target="_blank">IBM Tivoli Storage Manager Version 6.2 information center</a></li>
<li><a href="http://adsm.org//lists/html/ADSM-L/2009-07/msg00070.html" target="_blank">[ADSM-L] SV: TSM6.1 on Linux</a></li>
<li><a href="http://adsm.org//lists/html/ADSM-L/2010-07/msg00023.html" target="_blank">Re: [ADSM-L] Error while installing TSM 6.2 on LInux</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/07/install-tivoli-storage-manager-v6-2-server-on-centos-5-6-x86_64/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ว่าด้วยเรื่องเวลา atime, mtime, ctime ของไฟล์บน Unix</title>
		<link>http://spalinux.com/2011/06/about-unix-file-timestamp-atime-mtime-ctime</link>
		<comments>http://spalinux.com/2011/06/about-unix-file-timestamp-atime-mtime-ctime#comments</comments>
		<pubDate>Sat, 04 Jun 2011 14:15:00 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[atime]]></category>
		<category><![CDATA[ctime]]></category>
		<category><![CDATA[mtime]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1368</guid>
		<description><![CDATA[เวลาของไฟล์บน Unix มีประโยชน์อย่างมากสำหรับผู้ใช้ ไม่ว่าจะใช้ดูเพื่อหาว่า ไฟล์นี้ถูกเปลี่ยนแปลงไปเมื่อไร เก่าไป หรือใหม่กว่าอย่างไร อีกประการ ยังถูกใช้โดยโปรแกรม Backup เพื่อเลือกไฟล์สำหรับการทำ Backup แบบ Incremental คือ เลือกเฉพาะไฟล์ที่เพิ่มขึ้นใหม่ หรือไฟล์ที่ถูกเปลี่ยนแปลงเท่านั้น เวลาของไฟล์บน Unix มีอยู่ 3 ค่า คือ atime, ctime, mtime ในที่นี้จะอธิบายการเปลี่ยนแปลงของค่าเวลาต่างๆ ดังนี้ ใช้คำสั่ง date เพื่อดูเวลาที่ทดสอบ [user1@devel time]$ date Sat Jun  4 13:54:20 ICT 2011 สร้างไฟล์เปล่าๆ ด้วยคำสั่ง touch [user1@devel time]$ touch test1.txt ใช้คำสั่ง ls -l เพื่อดูข้อมูลไฟล์เบื้องต้น [user1@devel time]$ ls -l [...]]]></description>
			<content:encoded><![CDATA[<p>เวลาของไฟล์บน Unix มีประโยชน์อย่างมากสำหรับผู้ใช้ ไม่ว่าจะใช้ดูเพื่อหาว่า ไฟล์นี้ถูกเปลี่ยนแปลงไปเมื่อไร เก่าไป หรือใหม่กว่าอย่างไร</p>
<p>อีกประการ ยังถูกใช้โดยโปรแกรม Backup เพื่อเลือกไฟล์สำหรับการทำ Backup แบบ Incremental คือ เลือกเฉพาะไฟล์ที่เพิ่มขึ้นใหม่ หรือไฟล์ที่ถูกเปลี่ยนแปลงเท่านั้น</p>
<p>เวลาของไฟล์บน Unix มีอยู่ 3 ค่า คือ atime, ctime, mtime ในที่นี้จะอธิบายการเปลี่ยนแปลงของค่าเวลาต่างๆ ดังนี้</p>
<p><span id="more-1368"></span></p>
<p>ใช้คำสั่ง date เพื่อดูเวลาที่ทดสอบ</p>
<pre>[user1@devel time]$ <strong>date
</strong>Sat Jun  4 13:54:20 ICT 2011</pre>
<p>สร้างไฟล์เปล่าๆ ด้วยคำสั่ง touch</p>
<pre>[user1@devel time]$ <strong>touch test1.txt</strong></pre>
<p>ใช้คำสั่ง ls -l เพื่อดูข้อมูลไฟล์เบื้องต้น</p>
<pre>[user1@devel time]$ <strong>ls -l test1.txt
</strong>-rw-rw-r-- 1 user1 user1 0 <span style="color: #0000ff;">Jun  4 13:54</span> test1.txt</pre>
<p>ใช้คำสั่ง stat เพื่อดูข้อมูลไฟล์โดยละเอียด</p>
<pre>[user1@devel time]$ <strong>stat test1.txt
</strong>  File: `test1.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d      Inode: 2749831     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/   user1)   Gid: (  500/   user1)
<span style="color: #0000ff;">Access: 2011-06-04 13:54:23.000000000 +0700
Modify: 2011-06-04 13:54:23.000000000 +0700
Change: 2011-06-04 13:54:23.000000000 +0700</span></pre>
<p>หมายเหตุ เวลาที่แสดงจากคำสั่ง ls -l เป็นเวลา Modify (mtime)</p>
<h4>เวลา Access (atime)</h4>
<p>เมื่อไฟล์ถูก access หรือดูเนื้อหาภายในไฟล์  เวลา Access (atime) จะถูกปรับปรุงโดยอัตโนมัติ</p>
<p>เช่น ใช้คำสั่ง cat เพื่อเรียกดูไฟล์ เวลา Access (atime) ก็จะถูกเปลี่ยนไป ตามเวลาที่ access</p>
<pre>[user1@devel time]$ <strong>date
</strong>Sat Jun  4 13:57:35 ICT 2011</pre>
<pre>[user1@devel time]$ <strong>cat test1.txt</strong></pre>
<pre>[user1@devel time]$ <strong>ls -l test1.txt
</strong>-rw-rw-r-- 1 user1 user1 0 Jun  4 13:54 test1.txt</pre>
<pre>[user1@devel time]$ <strong>stat test1.txt
</strong>  File: `test1.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d      Inode: 2749831     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/   user1)   Gid: (  500/   user1)
<span style="color: #ff0000;">Access: 2011-06-04 13:57:37.000000000 +0700
</span>Modify: 2011-06-04 13:54:23.000000000 +0700
Change: 2011-06-04 13:54:23.000000000 +0700</pre>
<p>สังเกตว่า เวลาของไฟล์ จากการรันคำสั่ง ls -l ไม่เปลี่ยนแปลง เพราะ mtime ไม่เปลี่ยน</p>
<h4>เวลา Change (ctime)</h4>
<p>เมื่อมีการเปลี่ยนแปลงข้อมูลเกี่ยวกับ Inode ของไฟล์ เช่นการเปลี่ยน Owner, Group, Permission เวลา ctime จะถูกปรับปรุง</p>
<p>ตัวอย่างการเปลี่ยน permission ทำให้เวลา ctime เปลี่ยนแปลง</p>
<pre>[user1@devel time]$ <strong>date
</strong>Sat Jun  4 14:05:06 ICT 2011</pre>
<pre>[user1@devel time]$ <strong>chmod 600 test1.txt</strong></pre>
<pre>[user1@devel time]$<strong> ls -l test1.txt
</strong>-rw-rw-r-- 1 user1 user1 0 Jun  4 13:54 test1.txt</pre>
<pre>[user1@devel time]$ <strong>stat test1.txt
</strong>  File: `test1.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d      Inode: 2749831     Links: 1
Access: (0600/-rw-------)  Uid: (  500/   user1)   Gid: (  500/   user1)
Access: 2011-06-04 13:57:37.000000000 +0700
Modify: 2011-06-04 13:54:23.000000000 +0700
<span style="color: #ff0000;">Change: 2011-06-04 14:05:09.000000000 +0700</span></pre>
<p>สังเกตว่า เวลา Access (atime), Modify (mtime) หรือเวลาจากคำสั่ง ls -l ไม่เปลี่ยนแปลงไป เพราะคำสั่ง chmod เปลี่ยนแค่ข้อมูลใน Inode</p>
<h4>เวลา Modify (mtime)</h4>
<p>เมื่อเนื้อหาในไฟล์ถูกแก้ไข เวลา Modify (mtime) จะถูกปรับปรุง ตัวอย่างเช่น </p>
<pre>[user1@devel time]$ date
Sat Jun  4 14:09:29 ICT 2011</pre>
<pre>ใช้คำสั่ง echo และ shell redirection "&gt;" เพิ่มเนื้อหาเข้าไปในไฟล์</pre>
<pre>[user1@devel time]$ <strong>echo "add more content to file" &gt;&gt; test1.txt</strong></pre>
<pre>[user1@devel time]$ <strong>ls -l test1.txt</strong>
-rw------- 1 user1 user1 25 Jun  4 14:09 test1.txt</pre>
<pre>[user1@devel time]$ <strong>stat test1.txt</strong>
  File: `test1.txt'
  Size: 25              Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 2749831     Links: 1
Access: (0600/-rw-------)  Uid: (  500/   user1)   Gid: (  500/   user1)
Access: 2011-06-04 13:57:37.000000000 +0700
<span style="color: #ff0000;">Modify: 2011-06-04 14:09:38.000000000 +0700
Change: 2011-06-04 14:09:38.000000000 +0700</span></pre>
<p>เมื่อเนื้อหาในไฟล์ถูกเปลี่ยน  เวลา Change (ctime) ก็จะถูกปรับไปด้วย</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.unix.com/tips-tutorials/20526-mtime-ctime-atime.html" target="_blank">mtime, ctime, and atime</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/06/about-unix-file-timestamp-atime-mtime-ctime/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>สร้าง Storage Server ง่ายๆ ด้วย FreeNAS</title>
		<link>http://spalinux.com/2011/02/create_storage_server_using_freenas</link>
		<comments>http://spalinux.com/2011/02/create_storage_server_using_freenas#comments</comments>
		<pubDate>Sat, 19 Feb 2011 09:30:48 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[File Sharing]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[FreeNAS]]></category>
		<category><![CDATA[NAS]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1284</guid>
		<description><![CDATA[เดี๋ยวนี้เดินตามร้านคอมพิวเตอร์เริ่มมีอุปกรณ์ประเภท NAS (Network Attached Storage Server) ขายเป็น box สำเร็จรูป เพื่อผู้ใช้นำไปสำรองข้อมูล แชร์ไฟล์ได้หลายเครื่อง แถมบางยี่ห้อสามารถรันโปรแกรม BitTorrent เพื่อโหลดไฟล์ได้ แทนที่จะซื้อ box ใหม่ ลองหาเครื่องเก่าๆ ที่ยังพอใช้งานได้อยู่ หากขนาดพื้นที่ดิสก์เก่าไม่พอ ก็ซื้อเฉพาะฮาร์ดดิสก์เท่านั้น แล้วติดตั้งโปรแกรม FreeNAS ภายในไม่ถึง10 นาที  (ไม่รวมเวลาดาวน์โหลดไฟล์ iso ขนาด 130 กว่า MB นะ) คุณก็จะได้ Storage Server ไว้ใช้ อย่างง่ายดาย คุณสมบัติ (features) เพียบ&#8230; คำเตือน FreeNAS จะล้าง (Format) ข้อมูลทั้งหมดในดิสก์ของเครื่อง การทดลองรันแบบ LiveCD ค่าคอนฟิกที่สร้างทั้งหมดจะหายไป เมื่อมีการรีบู๊ตหรือปิดเครื่อง FreeNAS เป็นโปรแกรม Open Source พัฒนาขึ้นมาบน FreeBSD [...]]]></description>
			<content:encoded><![CDATA[<p>เดี๋ยวนี้เดินตามร้านคอมพิวเตอร์เริ่มมีอุปกรณ์ประเภท NAS (Network Attached Storage Server) ขายเป็น box สำเร็จรูป เพื่อผู้ใช้นำไปสำรองข้อมูล แชร์ไฟล์ได้หลายเครื่อง แถมบางยี่ห้อสามารถรันโปรแกรม BitTorrent เพื่อโหลดไฟล์ได้</p>
<p>แทนที่จะซื้อ box ใหม่ ลองหาเครื่องเก่าๆ ที่ยังพอใช้งานได้อยู่ หากขนาดพื้นที่ดิสก์เก่าไม่พอ ก็ซื้อเฉพาะฮาร์ดดิสก์เท่านั้น แล้วติดตั้งโปรแกรม FreeNAS ภายในไม่ถึง10 นาที  (ไม่รวมเวลาดาวน์โหลดไฟล์ iso ขนาด 130 กว่า MB นะ) คุณก็จะได้ Storage Server ไว้ใช้ อย่างง่ายดาย คุณสมบัติ (features) เพียบ&#8230;</p>
<p><span style="color: #ff0000;"><strong>คำเตือน</strong></span></p>
<ul>
<li><span style="color: #ff0000;"><strong>FreeNAS จะล้าง (Format) ข้อมูลทั้งหมดในดิสก์ของเครื่อง</strong></span></li>
<li><span style="color: #ff0000;"><strong>การทดลองรันแบบ LiveCD ค่าคอนฟิกที่สร้างทั้งหมดจะหายไป เมื่อมีการรีบู๊ตหรือปิดเครื่อง</strong></span></li>
</ul>
<p><span id="more-1284"></span></p>
<p>FreeNAS เป็นโปรแกรม Open Source พัฒนาขึ้นมาบน FreeBSD รองรับการใช้งานได้หลากหลายเช่น CIFS (Samba), FTP, NFS, TFTP, AFP, RSYNC, Unison, iSCSI (initiator and target) and UPnP. สามารถคอนฟิกดิสก์เป็นแบบ RAID (0, 1, 5), ZFS, disk encryption ได้</p>
<p>การใช้งานผ่าน Web Interface สามารถลองใช้แบบ LiveCD หรือติดตั้งลงบนดิสก์</p>
<p>ในเริ่มต้น แนะนำในลองใช้แบบ LiveCD เพื่อดูคุณสมบัติต่างๆ ของโปรแกรม</p>
<p>เลือกดาวน์โหลดไฟล์เวอร์ชั่นล่าสุดของ Stable Releases (ล่าสุดที่เขียนคือ 0.7.2) หากเครื่องสามารถลงแบบ 64-bit ได้ แนะนำให้เลือก FreeNAS-amd64-LiveCD-0.7.2.5543.iso ถ้าไม่ได้ ก็ใช้เวอร์ชั่น 32-bit คือ FreeNAS-i386-LiveCD-0.7.2.5543.iso</p>
<p>ไฟล์ที่ดาวน์โหลดจะเป็นแบบ iso คือต้องนำมา burn ลง cd ก่อนแล้วนำไปใช้บู๊ตเครื่อง</p>
<p>ในบทความนี้จะทดลองใน VMware Server</p>
<p>หน้าจอบู๊ตเครื่อง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/01-Boot_FreeNAS1.png"><img class="alignnone size-full wp-image-1302" title="01-Boot_FreeNAS" src="http://spalinux.com/wp-content/uploads/2011/02/01-Boot_FreeNAS1.png" alt="" width="720" height="400" /></a></p>
<p>หน้าจอ Console แสดงข้อมูลคอนฟิกเบื้องต้น พร้อมใช้งาน</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/02-FreeNAS_Console1.png"><img class="alignnone size-full wp-image-1301" title="02-FreeNAS_Console" src="http://spalinux.com/wp-content/uploads/2011/02/02-FreeNAS_Console1.png" alt="" width="720" height="400" /></a></p>
<p>เมื่อบู๊ตเครื่องมาถึงขั้นตอนนี้ คุณก็มี Storage Server พร้อมใช้แล้ว หากต้องการแก้ไขคอนฟิก ก็ใส่ตัวเลขเมนู เพื่อเข้าไปแก้ไขได้ เช่นต้องการแก้ไข IP address สามารถทำได้โดยเข้าเมนู 2) Set LAN IP address</p>
<p><strong>คำแนะนำ หากต้องการนำไปใช้งานจริง ต้องเลือกเมนู 9) Install/Upgrade to hard drive/flash device, etc. เพื่อเลือกติดตั้ง FreeNAS ลงบนดิสก์เลย</strong></p>
<p>ดีฟอลต์ IP address คือ 192.168.1.250</p>
<p>เปิด browser เพื่อเริ่มใช้งาน FreeNAS</p>
<p>หน้าเว็บล็อกอินของ FreeNAS  ใส่ค่า Username, Password เริ่มต้นคือ admin, freenas</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/03-FreeNAS_Login.png"><img class="alignnone size-full wp-image-1300" title="03-FreeNAS_Login" src="http://spalinux.com/wp-content/uploads/2011/02/03-FreeNAS_Login.png" alt="" width="836" height="724" /></a></p>
<p>หน้าเว็บแสดงข้อมูล System Information</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/04-System_Information.png"><img class="alignnone size-full wp-image-1299" title="04-System_Information" src="http://spalinux.com/wp-content/uploads/2011/02/04-System_Information.png" alt="" width="835" height="730" /></a></p>
<p>หน้าเว็บการจัดการดิสก์ (Disks Management)</p>
<p>ไปที่เมนู Disks -&gt; Management เพื่อแสดงข้อมูลดิสก์ที่โปรแกรม FreeNAS รู้จัก</p>
<p>เริ่มต้นจะไม่มีดิสก์ใดแสดงเลย ต้องกดเครื่องหมาย + ด้านขวามือเพื่อเพิ่มดิสก์ที่มีอยู่ในเครื่อง ให้ FreeNAS รู้จัก</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/05-Disks_Management.png"><img class="alignnone size-full wp-image-1298" title="05-Disks_Management" src="http://spalinux.com/wp-content/uploads/2011/02/05-Disks_Management.png" alt="" width="835" height="730" /></a></p>
<h4>Add Disk</h4>
<p>หน้าเว็บการเพิ่มดิสก์</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/06-Disks_Add.png"><img class="alignnone size-full wp-image-1297" title="06-Disks_Add" src="http://spalinux.com/wp-content/uploads/2011/02/06-Disks_Add.png" alt="" width="835" height="730" /></a></p>
<p>หลังจากเพิ่มดิสก์ ต้องกดปุ่ม [Apply changes] เพื่อให้คอนฟิกที่เพิ่มเข้าไปมีผล</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/07-Disks_added.png"><img class="alignnone size-full wp-image-1296" title="07-Disks_added" src="http://spalinux.com/wp-content/uploads/2011/02/07-Disks_added.png" alt="" width="835" height="730" /></a></p>
<h4> </h4>
<h4>Format Disk</h4>
<p>ไปที่เมนู Disks -&gt; Format เพื่อ Format Disk</p>
<p>Disk: เลือกดิสก์ที่จะ format<br />
File system: เลือก &#8220;UFS (GPT and Soft Updates&#8221;<br />
Volume Label: ใส่ชื่อ Volume</p>
<p>กดปุ่ม [Format disk]</p>
<p>หน้าเว็บแสดงการ Format Disk</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/08-Disks_Format.png"><img class="alignnone size-full wp-image-1295" title="08-Disks_Format" src="http://spalinux.com/wp-content/uploads/2011/02/08-Disks_Format.png" alt="" width="835" height="730" /></a></p>
<p>หลังจาก Format เครื่องแล้ว ต้อง mount ดิสก์ขึ้นมาใช้งานด้วย</p>
<h4> </h4>
<h4>Mount Disk</h4>
<p>ไปที่เมนู Disks -&gt; Mount Point กดเคื่องหมาย + เพื่อเริ่มการ mount ดิสก์</p>
<p>เลือก Disk และใส่ค่า Mount point name แล้วกด Add</p>
<p>หน้าเว็บ Disks Mount Point &#8211; Add</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/09-Disks_Mount_Point_Add.png"><img class="alignnone size-full wp-image-1294" title="09-Disks_Mount_Point_Add" src="http://spalinux.com/wp-content/uploads/2011/02/09-Disks_Mount_Point_Add.png" alt="" width="835" height="730" /></a></p>
<p>กดปุ่ม [Apply changes] เพื่อให้คอนฟิกที่เพิ่มมีผล หน้าเว็บแสดงการ mount point</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/10-Disks_Mount_Point_Management.png"><img class="alignnone size-full wp-image-1293" title="10-Disks_Mount_Point_Management" src="http://spalinux.com/wp-content/uploads/2011/02/10-Disks_Mount_Point_Management.png" alt="" width="835" height="730" /></a></p>
<h4> </h4>
<h4>CIFS/SMB Settings</h4>
<p>หากต้องการแชร์ไฟล์แบบ Samba เพื่อให้เครื่อง Windows อื่นๆ มองเห็น ก็สามารถทำได้ง่ายๆ โดยไปที่เมนู Services -&gt; CIFS/SMB</p>
<p>ในหน้า Settings คลิ้กเลือก [x] Enable แล้วใส่ค่าคอนฟิกต่างๆ เสร็จเรียบร้อยด้านล่างกดปุ่ม [Save and Restart]</p>
<p>หน้าเว็บแสดงการเปิด Services CIFS/SMB</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/11-Services_CIFS_SMB_Settings.png"><img class="alignnone size-full wp-image-1292" title="11-Services_CIFS_SMB_Settings" src="http://spalinux.com/wp-content/uploads/2011/02/11-Services_CIFS_SMB_Settings.png" alt="" width="835" height="730" /></a><br />
ในหน้าเว็บเดียวกันนี้ คลิ้กแท็ป [Shares] เพื่อคอนฟิกชื่อและดิสก์ที่ใช้แชร์ไฟล์</p>
<p>กดเครื่องหมาย + เพื่อเพิ่มการ Share</p>
<p>ใส่ Name, Comment เลือก Path จาก Mount Point แล้วกดปุ่ม [Add]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/12-Services_CIFS_SMB_Shares_Add.png"><img class="alignnone size-full wp-image-1291" title="12-Services_CIFS_SMB_Shares_Add" src="http://spalinux.com/wp-content/uploads/2011/02/12-Services_CIFS_SMB_Shares_Add.png" alt="" width="835" height="730" /></a></p>
<p>หลังจากแก้ไข กดปุ่ม [Apply changes] เพื่อให้คอนฟิกใหม่มีผล</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/13-Services_CIFS_SMB_Shares.png"><img class="alignnone size-full wp-image-1290" title="13-Services_CIFS_SMB_Shares" src="http://spalinux.com/wp-content/uploads/2011/02/13-Services_CIFS_SMB_Shares.png" alt="" width="835" height="730" /></a></p>
<p>ทดลองเรียก Share Drive จากเครื่อง Windows</p>
<p><a href="http://spalinux.com/wp-content/uploads/2011/02/14-Windows_Network_Drive.png"><img class="alignnone size-full wp-image-1289" title="14-Windows_Network_Drive" src="http://spalinux.com/wp-content/uploads/2011/02/14-Windows_Network_Drive.png" alt="" width="482" height="345" /></a></p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://freenas.org/" target="_blank">FreeNAS</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/02/create_storage_server_using_freenas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>คอนฟิก MySQL Replication</title>
		<link>http://spalinux.com/2010/02/configure_mysql_replication</link>
		<comments>http://spalinux.com/2010/02/configure_mysql_replication#comments</comments>
		<pubDate>Fri, 26 Feb 2010 09:20:58 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql replication]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1084</guid>
		<description><![CDATA[บทความนี้จะอธิบายวิธีการคอนฟิก Replication ของ MySQL เพื่อทำการ replicate ข้อมูลในฐานข้อมูล (database) จากเครื่องหลัก (Master) ไปยังเครื่องสำรอง (Slave) ได้ หลังจากที่คอนฟิก Replication ถูกต้องเรียบร้อย เมื่อมีการเปลี่ยนแปลงข้อมูลในฐานข้อมูลบนเครื่องหลัก (Master) ไม่ว่าจะเป็นการ INSERT, UPDATE, DELETE หรือ แก้ไข table การเปลี่ยนแปลงนี้จะถูกส่งต่อ (replicate) ไปยังเครื่องสำรอง (Slave) โดยอัตโนมัติ การคอนฟิก Replication เป็นการป้องกันการเสียหาย ถ้าเครื่องหลักมีปัญหา ข้อมูลที่ถูกเก็บไว้ในเครื่องสำรอง ก็ยังสามารถใช้งานได้ ระบบทดสอบ ตัวอย่างในบทความนี้ จะทดสอบบนเครื่องสองเครื่องที่ติดตั้ง CentOS 5.4 และ MySQL 5.1.43 เรียบร้อยแล้ว เครื่อง Master ip: 192.168.1.1 hostname: centos54-a เครื่อง Slave ip: 192.168.1.2 [...]]]></description>
			<content:encoded><![CDATA[<p>บทความนี้จะอธิบายวิธีการคอนฟิก Replication ของ MySQL เพื่อทำการ replicate ข้อมูลในฐานข้อมูล (database) จากเครื่องหลัก (Master) ไปยังเครื่องสำรอง (Slave) ได้</p>
<p>หลังจากที่คอนฟิก Replication ถูกต้องเรียบร้อย เมื่อมีการเปลี่ยนแปลงข้อมูลในฐานข้อมูลบนเครื่องหลัก (Master) ไม่ว่าจะเป็นการ INSERT, UPDATE, DELETE หรือ แก้ไข table การเปลี่ยนแปลงนี้จะถูกส่งต่อ (replicate) ไปยังเครื่องสำรอง (Slave) โดยอัตโนมัติ</p>
<p>การคอนฟิก Replication เป็นการป้องกันการเสียหาย ถ้าเครื่องหลักมีปัญหา ข้อมูลที่ถูกเก็บไว้ในเครื่องสำรอง ก็ยังสามารถใช้งานได้</p>
<p><span id="more-1084"></span></p>
<h4>ระบบทดสอบ</h4>
<p>ตัวอย่างในบทความนี้ จะทดสอบบนเครื่องสองเครื่องที่ติดตั้ง CentOS 5.4 และ MySQL 5.1.43 เรียบร้อยแล้ว</p>
<p>เครื่อง <strong>Master</strong></p>
<ul>
<li>ip: 192.168.1.1</li>
<li>hostname: centos54-a</li>
</ul>
<p>เครื่อง <strong>Slave</strong></p>
<ul>
<li>ip: 192.168.1.2</li>
<li>hostname: centos54-b</li>
</ul>
<p>ตัวอย่างการใช้คำสั่ง rpm เพื่อตรวจสอบเวอร์ชั่นของ MySQL ที่ติดตั้ง</p>
<pre>[root@centos54-a ~]# <strong>rpm -qa | grep -i mysql
</strong>MySQL-server-community-5.1.43-1.rhel5
MySQL-client-community-5.1.43-1.rhel5
MySQL-shared-compat-5.1.43-1.rhel5</pre>
<p>หมายเหตุ</p>
<ul>
<li>MySQL 5.1.43 ที่ทดสอบนี้ ใช้เวอร์ชั่นที่ดาวน์โหลดจาก <a href="http://dev.mysql.com">http://dev.mysql.com</a></li>
<li>แนะนำให้ใช้ MySQL เวอร์ชั่นเดียวกันบนเครื่อง Master และ Slave</li>
</ul>
<h4>เครื่อง Master &#8211; สร้าง user สำหรับ Replication</h4>
<p>เริ่มต้น ต้องสร้าง user ของ MySQL บนเครื่อง Master เพื่ออนุญาตสิทธิในการทำ &#8216;REPLICATION&#8217; จากเครื่อง Slave</p>
<p>ตัวอย่างการสร้าง user ชื่อ &#8216;repl&#8217; และรหัส &#8216;repl1234&#8242;เพื่อให้สิทธิการทำ REPLICATION จากเครื่องที่มี ip 192.168.1.2</p>
<pre>[root@centos54-a ~]# <strong>mysql -u root -p</strong></pre>
<pre>mysql&gt; <strong>GRANT REPLICATION SLAVE ON *.* TO '<span style="color: #0000ff;">repl</span>'@'<span style="color: #0000ff;">192.168.1.2</span>' IDENTIFIED BY '<span style="color: #0000ff;">repl1234</span>';</strong></pre>
<h4>เครื่อง Master &#8211; คอนฟิก Replication Master</h4>
<p>บนเครื่อง Master ปิดเซอร์วิส MySQL แล้วแก้ไขไฟล์ /etc/my.cnf เพื่อเปิดคุณสมบัติ binary log (log-bin) และเซ็ต server-id</p>
<pre>[root@centos54-a ~]# <strong>service mysql stop
</strong>Shutting down MySQL..                                      [  OK  ]</pre>
<p>ตัวอย่างไฟล์คอนฟิก /etc/my.cnf เพื่อคอนฟิกเป็น Replication Master</p>
<pre>[root@centos54-a ~]# <strong>cat /etc/my.cnf
</strong>[mysqld]
log-bin=mysql-bin
server-id=1</pre>
<p>ใช้คำสั่ง service เพื่อรันเซอร์วิส MySQL</p>
<pre>[root@centos54-a ~]# <strong>service mysql start
</strong>Starting MySQL.                                            [  OK  ]</pre>
<h4>เครื่อง Master &#8211; ตรวจสอบสถานะของ Master Binary Log</h4>
<p>บนเครื่อง Master ใช้คำสั่ง SHOW MASTER STATUS ตรวจสอบสถานะของ Master Binary Log</p>
<p>เราจะใช้ค่า &#8216;File&#8217; และ &#8216;Position&#8217; เพื่อระบุบนเครื่อง Slave</p>
<pre>[root@centos54-a ~]# <strong>mysql -u root -p</strong></pre>
<pre>mysql&gt; <strong>SHOW MASTER STATUS;
</strong>+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| <strong><span style="color: #0000ff;">mysql-bin.000001</span></strong> |      <strong><span style="color: #0000ff;">224</span> </strong>|              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)</pre>
<h4>เครื่อง Slave &#8211; คอนฟิก Replication Slave</h4>
<p>บนเครื่อง Slave ปิดเซอร์วิส MySQL เพื่อแก้ไขคอนฟิกไฟล์ /etc/my.cnf</p>
<pre>[root@centos54-b ~]# <strong>service mysql stop
</strong>Shutting down MySQL..                                      [  OK  ]</pre>
<p>เบื้องต้นบนเครื่อง Slave คอนฟิกแค่ &#8216;server-id&#8217; ที่มีค่าแตกต่างจากเครื่อง Master</p>
<pre>[root@centos54-b ~]# <strong>cat /etc/my.cnf
</strong>[mysqld]
server-id=2</pre>
<p>รันเซอร์วิส MySQL บนเครื่อง Slave</p>
<pre>[root@centos54-b ~]# <strong>service mysql start
</strong>Starting MySQL.                                            [  OK  ]</pre>
<p>ใช้คำสั่ง CHANGE MASTER เพื่อระบุ ip ของ Master ชื่อ user, password ที่ใช้เพื่อการทำ Replication และต้องระบุค่า log_file (File) และ log_pos (Position) ที่ได้จากผลลัพธ์ในการรันคำสั่ง SHOW MASTER STATUS บนเครื่อง Master</p>
<pre>mysql&gt; <strong>CHANGE MASTER TO MASTER_HOST='<span style="color: #0000ff;">192.168.1.1</span>',
                        MASTER_USER='<span style="color: #0000ff;">repl</span>',
                        MASTER_PASSWORD='<span style="color: #0000ff;">repl1234</span>',
                        MASTER_LOG_FILE='<span style="color: #0000ff;">mysql-bin.000001</span>',
                        MASTER_LOG_POS=<span style="color: #0000ff;">224</span>;
</strong>Query OK, 0 rows affected (0.03 sec)</pre>
<p>รันคำสั่ง START SLAVE เพื่อเริ่มต้นการทำ Replicate ข้อมูลจาก เครื่อง Master</p>
<pre>mysql&gt; <strong>START SLAVE;
</strong>Query OK, 0 rows affected (0.00 sec)</pre>
<p>ตรวจสอบสถานะ Replication บนเครื่อง Slave</p>
<pre>mysql&gt; <strong>SHOW SLAVE STATUS \G
</strong>*************************** 1. row ***************************
               <span style="color: #0000ff;">Slave_IO_State: Waiting for master to send event
</span>                  Master_Host: <span style="color: #0000ff;">192.168.1.1
</span>                  Master_User: <span style="color: #0000ff;">repl</span>
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: <span style="color: #0000ff;">mysql-bin.000001
</span>          Read_Master_Log_Pos: <span style="color: #0000ff;">244</span>
               Relay_Log_File: centos54-b-relay-bin.000004
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 244
              Relay_Log_Space: 411
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)</pre>
<p>หากคอนฟิกถูกต้อง ค่า &#8216;Slave_IO_State&#8217; จะแสดงเป็น &#8216;Waiting for master to send event&#8217;</p>
<h4>ทดสอบการ Replication</h4>
<p>เพื่อง่ายต่อการแยกแยะระหว่าง Master และ Slave ในที่นี้จะคอนฟิก mysql prompt เป็น mysql-1&gt; และ mysql-2&gt; ตามลำดับ</p>
<p>การคอนฟิก prompt บนเครื่อง Master</p>
<pre>[root@centos54-a ~]# <strong>mysql -u root -p
</strong>Enter password:</pre>
<pre>mysql&gt; <strong>PROMPT mysql-1&gt;
</strong>PROMPT set to 'mysql-1&gt; '
<span style="color: #0000ff;">mysql-1&gt;</span></pre>
<p>การคอนฟิก prompt บนเครื่อง Slave</p>
<pre>[root@centos54-b ~]# <strong>mysql -u root -p
</strong>Enter password:</pre>
<pre>mysql&gt; <strong>PROMPT mysql-2&gt;
</strong>PROMPT set to 'mysql-2&gt; '
<span style="color: #0000ff;">mysql-2&gt;</span></pre>
<p>ทดสอบสร้าง database บนเครื่อง Master</p>
<pre>mysql-1&gt; <strong>CREATE DATABASE <span style="color: #0000ff;">test1</span>;
</strong>Query OK, 1 row affected (0.01 sec)</pre>
<pre>mysql-1&gt; <strong>SHOW DATABASES;
</strong>+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| <span style="color: #0000ff;">test1</span>              |
+--------------------+
3 rows in set (0.00 sec)</pre>
<p>ข้อมูลการสร้าง database จะถูกส่งต่อ (replicate) ไปยังเครื่อง Slave โดยอัตโนมัติ</p>
<pre>mysql-2&gt; <strong>SHOW DATABASES;
</strong>+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| <span style="color: #0000ff;">test1</span>              |
+--------------------+
3 rows in set (0.00 sec)</pre>
<p>สร้าง table และทดสอบการ INSERT ข้อมูล</p>
<pre>mysql-1&gt; <strong>CONNECT test1
</strong>mysql-1&gt; <strong>CREATE TABLE books (id INTEGER, name VARCHAR(255));
</strong>mysql-1&gt; <strong>INSERT INTO books VALUES (1, 'how to setup...');
</strong>mysql-1&gt; <strong>INSERT INTO books VALUES (2, 'how to read...');</strong></pre>
<pre>mysql-1&gt; <strong>SELECT * FROM books;
</strong>+------+-----------------+
| id   | name            |
+------+-----------------+
|    1 | how to setup... |
|    2 | how to read...  |
+------+-----------------+
2 rows in set (0.00 sec)</pre>
<p>การเปลี่ยนแปลงบนเครื่อง Master จะถูก replicate ไปยังเครื่อง Slave โดยอัตโนมัติ</p>
<pre>mysql-2&gt; <strong>CONNECT test1;
</strong>mysql-2&gt; <strong>SELECT * FROM books;
</strong>+------+-----------------+
| id   | name            |
+------+-----------------+
|    1 | how to setup... |
|    2 | how to read...  |
+------+-----------------+
2 rows in set (0.00 sec)</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/replication.html" target="_blank">MySQL 5.1 Reference Manual :: Replication</a></li>
<li><a href="http://spalinux.com/2009/02/install_mysql_51_on_fedora_10">ติดตั้ง MySQL 5.1 บน Fedora 10</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/02/configure_mysql_replication/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>การใช้งาน DRBD เบื้องต้น</title>
		<link>http://spalinux.com/2010/02/basic_using_drbd</link>
		<comments>http://spalinux.com/2010/02/basic_using_drbd#comments</comments>
		<pubDate>Sat, 06 Feb 2010 11:09:40 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[drbd]]></category>
		<category><![CDATA[linux ha]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1072</guid>
		<description><![CDATA[จากบทความ ติดตั้งและคอนฟิก DRBD  เราได้คอนฟิกเป็นแบบ Single-primary mode คือ ณ เวลาใดเวลาหนึ่ง มีเครื่องเดียวเท่านั้นที่สามารถ อ่าน เขียน ข้อมูลได้ ดังนั้นขณะที่เครื่องที่ 1 (centos54-a) ทำหน้าที่เป็น primary ของดิสก์ drbd0 อยู่  เครื่องที่ 2 (centos54-b) จะไม่สามารถ mount ดิสก์ drbd0 นี้ขึ้นมาใช้งานได้ ในบทความนี้จะแสดงการทดสอบใช้คำสั่งเพื่อเปลี่ยนโหมด Primary, Secondary ระหว่างเครื่องทั้งสอง ตรวจสอบสถานะบนเครื่อง centos54-a [root@centos54-a ~]# service drbd status drbd driver loaded OK; device status: version: 8.3.2 (api:88/proto:86-90) GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 [...]]]></description>
			<content:encoded><![CDATA[<p>จากบทความ <a href="http://spalinux.com/2010/02/install_and_configure_drbd">ติดตั้งและคอนฟิก DRBD </a> เราได้คอนฟิกเป็นแบบ Single-primary mode คือ ณ เวลาใดเวลาหนึ่ง มีเครื่องเดียวเท่านั้นที่สามารถ อ่าน เขียน ข้อมูลได้</p>
<p>ดังนั้นขณะที่เครื่องที่ 1 (centos54-a) ทำหน้าที่เป็น primary ของดิสก์ drbd0 อยู่  เครื่องที่ 2 (centos54-b) จะไม่สามารถ mount ดิสก์ drbd0 นี้ขึ้นมาใช้งานได้</p>
<p>ในบทความนี้จะแสดงการทดสอบใช้คำสั่งเพื่อเปลี่ยนโหมด Primary, Secondary ระหว่างเครื่องทั้งสอง</p>
<p>ตรวจสอบสถานะบนเครื่อง centos54-a</p>
<pre>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Primary/Secondary  UpToDate/UpToDate  C  /export  ext3</pre>
<pre>[root@centos54-a ~]# df -h /export
Filesystem            Size  Used Avail Use% Mounted on
/dev/drbd0            950M   18M  885M   2% /export</pre>
<p>ทดสอบ mount ดิสก์บนเครื่อง centos54-b</p>
<pre>[root@centos54-b ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Secondary/Primary  UpToDate/UpToDate  C</pre>
<pre>[root@centos54-b ~]# mount /dev/drbd0 /export
mount: block device /dev/drbd0 is write-protected, mounting read-only
mount: Wrong medium type</pre>
<p>ในกรณีที่ต้องการเปลี่ยนให้เครื่องที่ 2 (centos54-b) ทำหน้าที่เป็น primary  เช่นในกรณีที่ต้องการซ่อมบำรุงเครื่องที่ 1 สามารถทำได้ดังนี้</p>
<p>บนเครื่องที่ 1 ปิดเซอร์วิส DRBD</p>
<pre>[root@centos54-a ~]# <strong>service drbd stop
</strong>Stopping all DRBD resources:
.
[root@centos54-a ~]# <strong>service drbd status
</strong>drbd not loaded</pre>
<p>ตรวจสอบสถานะบนเครื่องที่ 2 หลังจากปิดเซอร์วิสบนเครื่องที่ 1</p>
<pre>[root@centos54-b ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs            ro                 ds                 p  mounted  fstype
0:r0   WFConnection  <strong><span style="color: #0000ff;">Secondary</span></strong>/Unknown  UpToDate/DUnknown  C</pre>
<p>แม้เครื่อง Primary ปิดไปแล้ว บนเครื่องที่ 2 ที่ยังอยู่ในโหมด Secondary ก็ยัง mount ดิสก์ ไม่ได้</p>
<pre>[root@centos54-b ~]# <strong>mount /dev/drbd0 /export
</strong>mount: block device /dev/drbd0 is write-protected, mounting read-only
mount: Wrong medium type</pre>
<p>ต้องเปลี่ยนสถานะบนเครื่องที่ 2 ให้เป็น primary ด้วยคำสั่ง drbdadm primary</p>
<pre>[root@centos54-b ~]# <strong>drbdadm primary all</strong></pre>
<p>ตรวจสอบสถานะบนเครื่องที่ 2</p>
<pre>[root@centos54-b ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs            ro               ds                 p  mounted  fstype
0:r0   WFConnection  <span style="color: #0000ff;"><strong>Primary</strong></span>/Unknown  UpToDate/DUnknown  C</pre>
<p>เมื่ออยู่ในโหมด primary แล้ว ก็สามารถ mount ดิสก์ขึ้นมาใช้งานได้</p>
<pre>[root@centos54-b ~]# <strong>mount /dev/drbd0 /export
</strong>[root@centos54-b ~]# <strong>df -h /export
</strong>Filesystem            Size  Used Avail Use% Mounted on
/dev/drbd0            950M   18M  885M   2% /export</pre>
<p>ทดลองสร้างไฟล์ในดิสก์ drbd0</p>
<pre>[root@centos54-b ~]# <strong>cd /export/
</strong>[root@centos54-b export]# <strong>ls
</strong>lost+found
[root@centos54-b export]# <strong>echo "hello world from node 2" &gt; test-file-on-node-2.txt
</strong>[root@centos54-b export]# <strong>ls -l
</strong>total 20
drwx------ 2 root root 16384 Feb  6 15:46 lost+found
-rw-r--r-- 1 root root    24 Feb  6 17:17 <span style="color: #0000ff;"><strong>test-file-on-node-2.txt</strong></span></pre>
<p>รันเซอร์วิส DRBD บนเครื่องที่ 1 ขึ้นมาอีกครั้ง ตอนนี้เครื่องที่ 1 จะทำหน้าที่เป็น Secondary และจะทำการ replicate ข้อมูลมาจากเครื่องที่ 2 (Primary) โดยอัตโนมัติ</p>
<pre>[root@centos54-a ~]# <strong>service drbd start
</strong>Starting DRBD resources: [ d(r0) s(r0) n(r0) ].</pre>
<pre>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  <strong><span style="color: #0000ff;">Secondary</span></strong>/Primary  UpToDate/UpToDate  C</pre>
<p>บนเครื่องที่ 2 เปลี่ยนให้เป็นโหมด Secondary</p>
<pre>[root@centos54-b ~]# <strong>drbdadm secondary all
</strong><span style="color: #ff0000;">0: State change failed: (-12) Device is held open by someone</span>
Command 'drbdsetup 0 secondary' terminated with exit code 11</pre>
<p>หากมีการเรียกใช้ดิสก์ drbd อยู่ จะไม่สามารถเปลี่ยนโหมดจาก Primary ไปเป็น Secondary ได้ ต้อง umount ดิสก์ออกไปก่อนถึงจะเปลี่ยนโหมดได้</p>
<pre>[root@centos54-b ~]# <strong>umount /export
</strong>[root@centos54-b ~]# <strong>drbdadm secondary all</strong></pre>
<p>ตรวจสอบสถานะบนเครื่องที่ 2</p>
<pre>[root@centos54-b ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                   ds                 p  mounted  fstype
0:r0   Connected  <span style="color: #0000ff;"><strong>Secondary</strong></span>/Secondary  UpToDate/UpToDate  C</pre>
<p>เปลี่ยนโหมดบนเครื่องที่ 1 ให้เป็น Primary เพื่อเรียกใช้ดิสก์ได้</p>
<pre>[root@centos54-a ~]# <strong>drbdadm primary all
</strong>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  <strong><span style="color: #0000ff;">Primary</span></strong>/Secondary  UpToDate/UpToDate  C</pre>
<p>mount ดิสก์ และตรวจสอบไฟล์ที่อยู่ใน drbd0 จะเห็นไฟล์ที่สร้างจากเครื่องที่ 2</p>
<pre>[root@centos54-a ~]# <strong>mount /dev/drbd0 /export
</strong>[root@centos54-a ~]# <strong>cd /export/
</strong>[root@centos54-a export]# ls -l
total 20
drwx------ 2 root root 16384 Feb  6 15:46 lost+found
-rw-r--r-- 1 root root    24 Feb  6 17:17 <strong><span style="color: #0000ff;">test-file-on-node-2.txt
</span></strong>[root@centos54-a export]# <strong>cat test-file-on-node-2.txt
</strong>hello world from node 2</pre>
<h4>ตรวจสอบไฟล์ /var/log/messages</h4>
<p>เมื่อมีปัญหาเกี่ยวกับการใช้ DBRD นอกจากการใช้คำสั่ง service เพื่อตรวจสอบสถานะแล้ว ไฟล์ /var/log/messages จะแสดงการเปลี่ยนแปลงทั้งหมดของ DRBD ที่เกิดขึ้น ซึ่งสามารถนำมาใช้ช่วยในการแก้ปัญหาได้</p>
<p>ตัวอย่างข้อความในไฟล์ /var/log/messages ที่เกิดขึ้น เมื่อมีการเปลี่ยนโหมด</p>
<pre>[root@centos54-a ~]# <strong>tail /var/log/messages
</strong>...
Feb  6 17:19:38 centos54-a kernel: block drbd0: peer( Primary -&gt; Secondary )
Feb  6 17:21:04 centos54-a kernel: block drbd0: role( Secondary -&gt; Primary )
...</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2010/02/install_and_configure_drbd">ติดตั้งและคอนฟิก DRBD</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/02/basic_using_drbd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้งและคอนฟิก DRBD</title>
		<link>http://spalinux.com/2010/02/install_and_configure_drbd</link>
		<comments>http://spalinux.com/2010/02/install_and_configure_drbd#comments</comments>
		<pubDate>Sat, 06 Feb 2010 09:40:46 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[drbd]]></category>
		<category><![CDATA[linux ha]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1068</guid>
		<description><![CDATA[DRBD (Distributed Replicated Block Device) เป็นโปรแกรมเพื่อใช้ในการ replicate ข้อมูลดิสก์ที่อยู่คนละเครื่องกัน ผ่านทางเน็ตเวิร์ก โดยจะทำในระดับ block ของดิสก์ เมื่อมีการเปลี่ยนแปลงข้อมูลที่อยูในดิสก์เครื่องหนึ่ง (primary) การเปลี่ยนแปลงนั้นจะถูก replicate ไปยังอีกเครื่อง (secondary) โดยอัตโนมัติ DRBD ประกอบด้วยสองส่วนคือ 1. Kernel module &#8211; DRBD ทำหน้าที่ใน kernel โดยจะสร้าง virtual block device คั่นกลางระหว่าง physical disk กับ filesystem ที่สร้างอยู่ ไม่ว่าจะเป็น ext3, ext4, xfs 2. User space administration tools &#8211; เป็นโปรแกรมที่ช่วยในการจัดการ DRBD ได้ง่ายขึ้น หลักๆ จะเป็น drbdadm ในบทความนี้จะแสดงการติดตั้งโปรแกรม [...]]]></description>
			<content:encoded><![CDATA[<p>DRBD (Distributed Replicated Block Device) เป็นโปรแกรมเพื่อใช้ในการ replicate ข้อมูลดิสก์ที่อยู่คนละเครื่องกัน ผ่านทางเน็ตเวิร์ก โดยจะทำในระดับ block ของดิสก์</p>
<p>เมื่อมีการเปลี่ยนแปลงข้อมูลที่อยูในดิสก์เครื่องหนึ่ง (primary) การเปลี่ยนแปลงนั้นจะถูก replicate ไปยังอีกเครื่อง (secondary) โดยอัตโนมัติ</p>
<p>DRBD ประกอบด้วยสองส่วนคือ</p>
<p>1. Kernel module &#8211; DRBD ทำหน้าที่ใน kernel โดยจะสร้าง virtual block device คั่นกลางระหว่าง physical disk กับ filesystem ที่สร้างอยู่ ไม่ว่าจะเป็น ext3, ext4, xfs<br />
2. User space administration tools &#8211; เป็นโปรแกรมที่ช่วยในการจัดการ DRBD ได้ง่ายขึ้น หลักๆ จะเป็น drbdadm</p>
<p>ในบทความนี้จะแสดงการติดตั้งโปรแกรม DRBD และคอนฟิกเป็นแบบ Single-primary mode คือ ณ เวลาใดเวลาหนึ่ง มีเครื่องเดียวเท่านั้นที่สามารถ อ่าน เขียน ข้อมูลได้</p>
<p><span style="color: #ff0000;"><strong>คำเตือน ติดตั้งและคอนฟิก DRBD บนเครื่องทดสอบให้เข้าใจก่อน เพราะบางคำสั่งอาจกระทบข้อมูลดิสก์หรือ partition ที่มีอยู่ในเครื่องได้ ทำให้ข้อมูลเสียหายได้</strong></span></p>
<p><span id="more-1068"></span></p>
<h4>ระบบสำหรับการทดสอบ</h4>
<p>ในที่นี้จะติดตั้ง CentOS 5.4 พร้อมคอนฟิกให้สองเครื่องติดต่อ ping กันได้ และปิดคุณสมบัติ firewall ทั้งหมด</p>
<p><strong>เครื่องที่ 1</strong></p>
<ul>
<li>Hostname:   centos54-a.spalinux.com</li>
<li>IP Address: 10.3.3.51</li>
</ul>
<p><strong>เครื่องที่ 2</strong></p>
<ul>
<li>Hostname:   centos54-b.spalinux.com</li>
<li>IP Address: 10.3.3.52</li>
</ul>
<p>แก้ไขไฟล์ /etc/hosts เพื่อให้ทั้งสองเครื่องอ้างอิงจากชื่อเครื่องได้</p>
<p>ตัวอย่างคอนฟิกของเครื่องที่ 1</p>
<pre>[root@centos54-a ~]# <strong>hostname</strong>
centos54-a.spalinux.com</pre>
<pre>[root@centos54-a ~]# <strong>cat /etc/hosts
</strong># Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6</pre>
<pre>10.3.3.51       centos54-a centos54-a.spalinux.com
10.3.3.52       centos54-b centos54-b.spalinux.com</pre>
<p>ตัวอย่างคอนฟิกของเครื่องที่ 2</p>
<pre>[root@centos54-b ~]# <strong>hostname</strong>
centos54-b.spalinux.com</pre>
<pre>[root@centos54-b ~]# <strong>cat /etc/hosts
</strong># Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6</pre>
<pre>10.3.3.51       centos54-a centos54-a.spalinux.com
10.3.3.52       centos54-b centos54-b.spalinux.com</pre>
<p>ทั้งสองเครื่อง ต้องสร้าง partition สำหรับใช้เป็นดิสก์ DRBD โดยไม่ต้องสร้าง filesystem ใดๆ ทั้งสิ้นบน partition นี้ สมมติว่าเป็น /dev/sda5 บนทั้งสองเครื่อง</p>
<p>หมายเหตุ</p>
<ul>
<li>แนะนำให้สร้าง partition ทั้งสองเครื่องให้เหมือนกัน ขนาดเท่ากัน จะได้ง่ายต่อการคอนฟิก</li>
<li>สำหรับการทดสอบเริ่มต้น แนะนำให้สร้างขนาด partition เล็กๆ ก่อน จะได้ใช้เวลาในการ sync ข้อมูลไม่นานมากนัก ในบทความนี้สร้างประมาณ 1 GBytes</li>
</ul>
<h4>ติดตั้งโปรแกรม DRBD</h4>
<p>ไฟล์ติดตั้ง DRBD ในรูปแบบ rpm ของ CentOS 5.4 นั้น ไม่อยู่ในแผ่นดีวีดีติดตั้ง แต่จะอยู่ในส่วนของ extras สำหรับในเมืองไทยสามารถดาวน์โหลดได้จาก <a href="http://www.mirror.in.th/osarchive/centos/5.4/extras/">http://www.mirror.in.th/osarchive/centos/5.4/extras/</a></p>
<p>ดาวน์โหล์ด และติดตั้งไฟล์ rpm สองไฟล์ บนเครื่องทั้งสอง</p>
<ul>
<li>drbd83-8.3.2-6.el5_3.x86_64.rpm  &#8211; &#8220;User space administration tools&#8221;</li>
<li>kmod-drbd83-8.3.2-6.el5_3.x86_64.rpm  &#8211; &#8220;Kernel Module&#8221;</li>
</ul>
<p>ใช้คำสั่ง rpm เพื่อติดตั้ง</p>
<pre>[root@centos54-a ~]# <strong>rpm -ivh drbd83-8.3.2-6.el5_3.x86_64.rpm
</strong>Preparing...                ########################################### [100%]
   1:drbd83                 ########################################### [100%]
[root@centos54-a ~]# <strong>rpm -ivh kmod-drbd83-8.3.2-6.el5_3.x86_64.rpm
</strong>Preparing...                ########################################### [100%]
   1:kmod-drbd83            ########################################### [100%]</pre>
<h4>คอนฟิก DRBD บนเครื่องที่ 1 (primary)</h4>
<p>ไฟล์คอนฟิกหลักของ DRBD คือไฟล์ /etc/drbd.conf ต้องมีการแก้ไขไฟล์นี้ก่อนถึงจะเริ่มใช้งานได้ โดยมีไฟล์ตัวอย่างคอนฟิกอยู่ใน /usr/share/doc/drbd83/drbd.conf</p>
<p>ไฟล์คอนฟิก /etc/drbd.conf จากการติดตั้ง</p>
<pre>[root@centos54-a ~]# <strong>cat /etc/drbd.conf
</strong>#
# please have a a look at the example configuration file in
# /usr/share/doc/drbd83/drbd.conf
#</pre>
<p>สร้างไฟล์คอนฟิก /etc/drbd.conf บนเครื่องที่ 1 &#8220;centos54-a.spalinux.com&#8221; ดังนี้</p>
<pre>[root@centos54-a ~]# <strong>cat /etc/drbd.conf
</strong>global {
    usage-count no;
}</pre>
<pre>common {
    syncer { rate 10M; }
}</pre>
<pre>resource <strong><span style="color: #0000ff;">r0</span> </strong>{
    protocol C;</pre>
<pre>    net {
        cram-hmac-alg "sha1";
        shared-secret "<span style="color: #0000ff;"><strong>test1234</strong></span>";
    }</pre>
<pre>    on <strong><span style="color: #0000ff;">centos54-a.spalinux.com</span></strong> {
        device /dev/drbd0;
        <strong><span style="color: #0000ff;">disk /dev/sda5</span></strong>;
        <strong><span style="color: #0000ff;">address 10.3.3.51:8888</span></strong>;
        meta-disk internal;
    }</pre>
<pre>    on <strong><span style="color: #0000ff;">centos54-b.spalinux.com</span></strong> {
        device /dev/drbd0;
        <strong><span style="color: #0000ff;">disk /dev/sda5</span></strong>;
        <strong><span style="color: #0000ff;">address 10.3.3.52:8888</span></strong>;
        meta-disk internal;
    }
}</pre>
<p>คำอธิบายเบื้องต้น</p>
<ul>
<li>shared-secret เป็นการกำหนดรหัสของเครื่องที่สามารถ replicate ข้อมูลกันได้ </li>
<li>r0 เป็นชื่อ resource ของ DRBD สามารถตั้งเป็นชื่อใดๆ ก็ได้ เพื่อสื่อความหมาย</li>
<li>on ตามด้วยชื่อ hostname ที่ต้องการ replicate ข้อมูลกัน ส่วนในวงเล็บ { เป็นการกำหนดคอนฟิกของแต่ละเครื่อง</li>
<li>disk คือชื่อ partition ที่สร้างไว้สำหรับการทำ DRBD ในที่นี้คือ /dev/sda5</li>
</ul>
<p>ใช้คำสั่ง drbadm create-md เพื่อสร้าง meta data บน partition ที่จะทำเป็น DRBD</p>
<pre>[root@centos54-a ~]# <strong>drbdadm create-md all
</strong>Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.</pre>
<p>หาก partition ที่คอนฟิกเป็น DRBD มี filesystem อยู่ก่อนแล้ว จะไม่สามารถสร้าง DRBD ได้</p>
<pre>[root@centos54-a ~]# <strong>drbdadm create-md all
</strong>md_offset 1011671040
al_offset 1011638272
bm_offset 1011605504</pre>
<pre><span style="color: #ff0000;">Found ext3 filesystem</span> which uses 987964 kB
current configuration leaves usable 987896 kB</pre>
<pre>Device size would be truncated, which
would corrupt data and result in
'access beyond end of device' errors.
You need to either
   * use external meta data (recommended)
   * shrink that filesystem first
   * zero out the device (destroy the filesystem)
<span style="color: #ff0000;">Operation refused.</span></pre>
<pre>Command 'drbdmeta 0 v08 /dev/sda5 internal create-md' terminated with exit code 40
<span style="color: #ff0000;">drbdadm create-md r0: exited with code 40</span></pre>
<p>วิธีการแก้ไขคือต้องลบข้อมูลของ filesystem บน partition /dev/sda5 นี้ออก วิธีการง่ายสุดคือใช้คำสั่ง dd</p>
<p><span style="color: #ff0000;"><strong>คำเตือน คำสั่ง dd จะลบข้อมูลทั้งหมดบน partition ที่ระบุ</strong></span></p>
<pre>[root@centos54-a ~]# <strong>dd if=/dev/zero of=/dev/sda5
</strong>dd: writing to `/dev/sda5': No space left on device
1975933+0 records in
1975932+0 records out
1011677184 bytes (1.0 GB) copied, 87.2749 seconds, 11.6 MB/s</pre>
<p>แล้วถึงสามารถสร้าง meta data ของ DRBD ได้</p>
<pre>[root@centos54-a ~]# <strong>drbdadm create-md all
</strong>Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.</pre>
<p>ใช้คำสั่ง service เพื่อรันเซอร์วิส DRBD</p>
<pre>[root@centos54-a ~]# <strong>service drbd start
</strong>Starting DRBD resources: [ d(r0) s(r0) n(r0) ]..........
***************************************************************
 DRBD's startup script waits for the peer node(s) to appear.
 - In case this node was already a degraded cluster before the
   reboot the timeout is 0 seconds. [degr-wfc-timeout]
 - If the peer was available before the reboot the timeout will
   expire after 0 seconds. [wfc-timeout]
   (These values are for resource 'r0'; 0 sec -&gt; wait forever)
 To abort waiting enter 'yes' [  20]:<span style="color: #3366ff;"><strong><span style="color: #0000ff;">yes</span></strong></span></pre>
<p>ในครั้งแรกที่รันเซอร์วิส บนเครื่อง primary โปรแกรมจะรอให้เครื่อง peer (secondary) เข้ามาเชื่อมต่อ หากไม่ต้องการให้รอ ให้พิมพ์คำว่า &#8220;yes&#8221; แล้ว [Enter]</p>
<p>ใช้คำสั่ง service status เพื่อตรวจสอบสถานะของ DRBD</p>
<pre>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs            ro                 ds                     p  mounted  fstype
0:r0   WFConnection  <span style="color: #0000ff;"><strong>Secondary</strong></span>/Unknown  <span style="color: #0000ff;"><strong>Inconsistent</strong></span>/DUnknown  C</pre>
<p>หรืออ่านจากไฟล์ /proc/drbd โดยตรง</p>
<pre>[root@centos54-a ~]# <strong>cat /proc/drbd</strong>
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
 0: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:987896</pre>
<p>สร้างไดเรคทอรี /export สำหรับทดสอบ mount เพื่อใช้ดิสก์ drbd ที่สร้างขึ้น</p>
<pre>[root@centos54-a ~]# <strong>mount /dev/drbd0 /export
</strong>mount: block device /dev/drbd0 is write-protected, mounting read-only
mount: Wrong medium type</pre>
<p>ดิสก์นี้ยังไม่สามารถใช้ได้ ต้องใช้คำสั่ง drbdadm primary คอนฟิกให้ดิสก์ drbd บนเครื่องนี้ทำหน้าที่เป็น primary เพื่อให้สามารถ อ่าน เขียน ข้อมูลจากดิสก์ได้</p>
<pre>[root@centos54-a ~]# <strong>drbdadm primary all
</strong><span style="color: #ff0000;">0: State change failed: (-2) Refusing to be Primary without at least one UpToDate disk
</span>Command 'drbdsetup 0 primary' terminated with exit code 17</pre>
<p>หากเป็นการเรียกใช้ครั้งแรก ต้องระบุออปชั่นดังนี้</p>
<pre>[root@centos54-a ~]# <strong>drbdadm -- --overwrite-data-of-peer primary all
</strong>[root@centos54-a ~]#</pre>
<p>ตรวจสอบสถานะ drbd อีกครั้ง สังเกตว่า ฟิลด์ ro จะเปลี่ยนจาก Seconday เป็น Primary และฟิลด์ ds จะเปลี่ยนจาก Inconsistent เป็น UpToDate</p>
<pre>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs            ro               ds                 p  mounted  fstype
0:r0   WFConnection  <span style="color: #0000ff;"><strong>Primary</strong></span>/Unknown  <strong><span style="color: #0000ff;">UpToDate</span></strong>/DUnknown  C</pre>
<p>ทดสอบการ mount ดิสก์อีกครั้ง</p>
<pre>[root@centos54-a ~]# <strong>mount /dev/drbd0 /export
</strong>mount: you must specify the filesystem type</pre>
<p>ก็ยังไม่สามารถ mount ได้ เพราะยังไม่มี filesystem บน /dev/drbd0</p>
<p>รันคำสั่ง mkfs.ext3 เพื่อสร้าง filesystem แบบ ext3</p>
<pre>[root@centos54-a ~]# <strong>mkfs.ext3 /dev/drbd0
</strong>mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
123648 inodes, 246974 blocks
12348 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=255852544
8 block groups
32768 blocks per group, 32768 fragments per group
15456 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376</pre>
<pre>Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done</pre>
<pre>This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.</pre>
<p>ทดสอบการ mount อีกครั้ง จะสามารถใช้งานได้แล้ว</p>
<pre>[root@centos54-a ~]# <strong>mount /dev/drbd0 /export</strong></pre>
<p>ตรวจสอบสถานะ DRBD</p>
<pre>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs            ro               ds                 p  mounted  fstype
0:r0   WFConnection  Primary/Unknown  UpToDate/DUnknown  C  <span style="color: #0000ff;"><strong>/export  ext3</strong></span></pre>
<h4>คอนฟิก DRBD บนเครื่องที่ 2 (secondary)</h4>
<p>สร้างไฟล์คอนฟิก /etc/drbd.conf บนเครื่องที่ 2 เหมือนกับไฟล์ในเครื่องที่ 1</p>
<pre>[root@centos54-b ~]# <strong>cat /etc/drbd.conf
</strong>global {
    usage-count no;
}</pre>
<pre>common {
    syncer { rate 10M; }
}</pre>
<pre>resource r0 {
    protocol C;</pre>
<pre>    net {
        cram-hmac-alg "sha1";
        shared-secret "test1234";
    }</pre>
<pre>    on centos54-a.spalinux.com {
        device /dev/drbd0;
        disk /dev/sda5;
        address 10.3.3.51:8888;
        meta-disk internal;
    }</pre>
<pre>    on centos54-b.spalinux.com {
        device /dev/drbd0;
        disk /dev/sda5;
        address 10.3.3.52:8888;
        meta-disk internal;
    }
}</pre>
<p>ใช้คำสั่ง drbadm create-md เพื่อสร้าง meta data บน partition ที่จะทำเป็น DRBD</p>
<pre>[root@centos54-b ~]# <strong>drbdadm create-md all
</strong>Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.</pre>
<p>เช่นเดียวกัน หากมี filesystem อยู่บน partition ก่อนแล้ว ต้องใช้คำสั่ง dd เพื่อลบข้อมูลออก</p>
<p>ใช้คำสั่ง service เพื่อรันเซอร์วิส DRBD</p>
<pre>[root@centos54-b ~]# <strong>service drbd start
</strong>Starting DRBD resources: [ d(r0) s(r0) n(r0) ].</pre>
<p>เมื่อเริ่มต้นรันเซอร์วิส DRBD บนเครื่องที่ 2 จะเป็นการเริ่ม replicate ข้อมูลจากเครื่องที่ 1</p>
<p>ตรวจสอบสถานะ DRBD บนเครื่องที่ 2</p>
<pre>[root@centos54-b ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs          ro                 ds                     p  mounted  fstype
...    <strong><span style="color: #0000ff;">sync'ed:    42.2%</span> </strong>             (576248/987896)K
0:r0   <strong><span style="color: #0000ff;">SyncTarget</span></strong>  <strong><span style="color: #0000ff;">Secondary</span></strong>/Primary  <span style="color: #0000ff;"><strong>Inconsistent</strong></span>/UpToDate  C</pre>
<p>ตรวจสอบสถานะ DRBD บนเครื่องที่ 1</p>
<pre>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs          ro                 ds                     p  mounted  fstype
...    <strong><span style="color: #0000ff;">sync'ed:    43.0%</span></strong>              (567032/987896)K
0:r0   <strong><span style="color: #0000ff;">SyncSource</span></strong>  Primary/<strong><span style="color: #0000ff;">Secondary</span>  </strong>UpToDate/<strong><span style="color: #0000ff;">Inconsistent</span></strong>  C  /export  ext3</pre>
<p>เมื่อ replicate ข้อมูลเรียบร้อย (synced) ข้อมูลแล้ว สถานะจะเป็นดังนี้</p>
<p>ตรวจสอบสถานะ DRBD บนเครื่องที่ 2 เมื่อ synced ข้อมูลเรียบร้อย</p>
<pre>[root@centos54-b ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   <strong><span style="color: #0000ff;">Connected</span>  <span style="color: #0000ff;">Secondary</span></strong>/Primary  <strong><span style="color: #0000ff;">UpToDate</span></strong>/UpToDate  C</pre>
<p>ตรวจสอบสถานะ DRBD บนเครื่องที่ 1 เมื่อ synced ข้อมูลเรียบร้อย</p>
<pre>[root@centos54-a ~]# <strong>service drbd status
</strong>drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:07:55
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   <strong><span style="color: #0000ff;">Connected</span></strong>  Primary/<strong><span style="color: #0000ff;">Secondary</span></strong>  UpToDate/<strong><span style="color: #0000ff;">UpToDate</span></strong>  C  /export  ext3</pre>
<p>หลังจาก synced ข้อมูลระหว่างเครื่องเรียบร้อย เมื่อมีการเปลี่ยนแปลงข้อมูลในดิสก์บนเครื่องที่ 1 (primary) การเปลี่ยนแปลงนั้นจะถูก replicate ไปยังเครื่องที่ 2 (secondary) โดยอัตโนมัติ</p>
<p>ตัวอย่างการใช้คำสั่ง tcpdump  ตรวจสอบ packet ที่ส่งระหว่างเครื่องเพื่อการ replicate ข้อมูลของ DRBD</p>
<pre>[root@centos54-b ~]# <strong>tcpdump -i eth0 -l -nn | grep 8888
</strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:51:39.815802 IP 10.3.3.52.8888 &gt; 10.3.3.51.42180: P 2834377596:2834377604(8) ack 2893184807 win 46 &lt;nop,nop,timestamp 1772852 1818781&gt;
15:51:39.816356 IP 10.3.3.51.42180 &gt; 10.3.3.52.8888: P 1:9(8) ack 8 win 3216 &lt;nop,nop,timestamp 1828655 1772852&gt;
15:51:39.816394 IP 10.3.3.52.8888 &gt; 10.3.3.51.42180: . ack 9 win 46 &lt;nop,nop,timestamp 1772852 1828655&gt;
15:51:44.888876 IP 10.3.3.1.4117 &gt; 10.3.3.51.22: P 1560:1612(52) ack 1629 win 64271
15:51:49.815252 IP 10.3.3.51.42180 &gt; 10.3.3.52.8888: P 9:17(8) ack 8 win 3216 &lt;nop,nop,timestamp 1838655 1772852&gt;
15:51:49.815330 IP 10.3.3.52.8888 &gt; 10.3.3.51.42180: . ack 17 win 46 &lt;nop,nop,timestamp 1782853 1838655&gt;
15:51:49.815666 IP 10.3.3.52.8888 &gt; 10.3.3.51.42180: P 8:16(8) ack 17 win 46 &lt;nop,nop,timestamp 1782853 1838655&gt;
15:51:49.847300 IP 10.3.3.51.42180 &gt; 10.3.3.52.8888: . ack 16 win 3216 &lt;nop,nop,timestamp 1838696 1782853&gt;
15:51:50.937877 IP 10.3.3.51.8888 &gt; 10.3.3.52.40284: . 3903780263:3903781711(1448) ack 2834246899 win 501 &lt;nop,nop,timestamp 1839875 1683335&gt;
...
<strong><span style="color: #0000ff;">[Ctrl-C]</span></strong></pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.drbd.org/" target="_blank">DRBD</a></li>
<li><a href="http://www.mirror.in.th/osarchive/centos/5.4/extras/" target="_blank">CentOS 5.4 extras</a></li>
<li><a href="http://spalinux.com/2010/02/basic_using_drbd">การใช้งาน DRBD เบื้องต้น</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/02/install_and_configure_drbd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เขียนแผ่นซีดีบนลินุกซ์</title>
		<link>http://spalinux.com/2008/08/write_cd_on_linux</link>
		<comments>http://spalinux.com/2008/08/write_cd_on_linux#comments</comments>
		<pubDate>Wed, 27 Aug 2008 09:40:58 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=105</guid>
		<description><![CDATA[เพิ่งทราบว่าโปรแกรม dvd+rw-tools (ณ เวลาที่เขียนบทความนี้) สามารถเขียนได้แต่แผ่นดีวีดี ถ้าใส่แผ่นซีดี (CD-R) เข้าไปในไดร์ฟที่เป็น DVD+RW แล้วใช้โปรแกรมนี้ทดลองเขียนไฟล์ลงบนแผ่นซีดี จะไม่สามารถเขียนได้ [root@server ~]# growisofs -Z /dev/dvd=data-backup.iso : -( /dev/dvd: media is not recognized as recordable DVD: 9 ถ้าลองใช้คำสั่ง dvd+rw-mediainfo ตรวจสอบก็จะมีข้อความฟ้องขึ้นมา [root@server ~]# dvd+rw-mediainfo /dev/dvd INQUIRY:                [ASUS    ][DRW-2014L1T     ][1.00] GET [CURRENT] CONFIGURATION: : -( non-DVD media mounted, exiting... ถ้าต้องการเขียนไฟล์ลงบนแผ่นซีดี ต้องใช้คำสั่ง wodim (ชื่อเก่าคือโปรแกรม cdrecord) โดยจะมีวิธีการทำดังต่อไปนี้ ติดตั้งโปรแกรม ก่อนจะใช้งาน [...]]]></description>
			<content:encoded><![CDATA[<p>เพิ่งทราบว่าโปรแกรม dvd+rw-tools (ณ เวลาที่เขียนบทความนี้) สามารถเขียนได้แต่แผ่นดีวีดี ถ้าใส่แผ่นซีดี (CD-R) เข้าไปในไดร์ฟที่เป็น DVD+RW แล้วใช้โปรแกรมนี้ทดลองเขียนไฟล์ลงบนแผ่นซีดี จะไม่สามารถเขียนได้</p>
<pre>[root@server ~]# <strong>growisofs -Z /dev/dvd=data-backup.iso</strong>
: -( /dev/dvd: media is not recognized as recordable DVD: 9</pre>
<p>ถ้าลองใช้คำสั่ง dvd+rw-mediainfo ตรวจสอบก็จะมีข้อความฟ้องขึ้นมา</p>
<pre>[root@server ~]#<strong> dvd+rw-mediainfo /dev/dvd</strong>
INQUIRY:                [ASUS    ][DRW-2014L1T     ][1.00]
GET [CURRENT] CONFIGURATION:
: -( non-DVD media mounted, exiting...</pre>
<p>ถ้าต้องการเขียนไฟล์ลงบนแผ่นซีดี ต้องใช้คำสั่ง wodim (ชื่อเก่าคือโปรแกรม cdrecord) โดยจะมีวิธีการทำดังต่อไปนี้</p>
<p><span id="more-105"></span></p>
<p><strong>ติดตั้งโปรแกรม</strong><br />
ก่อนจะใช้งาน ต้องติดตั้งโปรแกรมเพิ่มเติม สำหรับ Fedora ให้ติดตั้ง rpm ไฟล์ที่ชื่อ wodim และ genisoimage เช่น Fedora 8 ไฟล์ที่ต้องลงเพิ่มคือ</p>
<ul>
<li>genisoimage-1.1.6-6.fc8.x86_64.rpm</li>
<li>wodim-1.1.6-6.fc8.x86_64.rpm</li>
</ul>
<p><strong>การสร้างอิมเมจไฟล์ iso โดยใช้คำสั่ง genisoimage<br />
</strong>เริ่มต้น ต้องสร้างไฟล์ iso หรืออิมเมจของไฟล์ทั้งหมดที่ต้องการจะเขียนลงซีดี โดยใช้คำสั่ง genisoimage (ชื่อเก่าคือ mkisofs) ซึ่งจะมีรูปแบบการใช้คำสั่ง ดังนี้</p>
<pre>[root@server ~]# <strong>genisoimage -o data-backup.iso -J -joliet-long -R -V "DataBackup" -v /data-dir</strong></pre>
<p>คำอธิบาย </p>
<ul>
<li>ออปชั่น -o เป็นการระบุชื่อไฟล์อิมเมจ</li>
<li>เพื่อรองรับการเขียนไฟล์ที่มีชื่อเป็นภาษาไทย ต้องใส่ออปชั่น -J -joliet-long ลงไปด้วย</li>
<li>แนะนำให้ใช้ออปชั่น -V เพื่อระบุเป็นชื่อ Volume Name</li>
<li>ถ้าต้องการระบุหลายๆ ไดเร็คทอรี สามารถใส่ชื่อไดเร็คทอรีหรือไฟล์ต่อท้ายไปได้เลย เช่น /data-dir /home /var เป็นตั้น</li>
</ul>
<p><strong>การดูไฟล์ที่อยู่ไฟล์ iso<br />
</strong>เพื่อตรวจสอบว่าไฟล์ต่างๆ ที่สร้างเป็นอิมเมจขึ้นมาครบถ้วนถูกต้องไหม ก่อนที่จะเขียนลงซีดีจริง สามารถทดสอบดูไฟล์ที่อยู่ในอิมเมจได้ โดยใช้คำสั่ง mount ตามตัวอย่างคือ</p>
<pre>[root@server ~]# <strong>mount -o loop data-backup.iso /mnt</strong></pre>
<p>ถ้าไม่ถูกต้องก็ลบไฟล์อิมเมจนี้ทิ้งไป แล้วใช้คำสั่ง genisoimage สร้างใหม่</p>
<p>อย่าลืม umount ก่อนทำขั้นตอนต่อไป</p>
<pre>[root@server ~]# <strong>umount /mnt</strong></pre>
<p><strong>ใช้คำสั่ง wodim เพื่อเขียนไฟล์อิมเมจ</strong><br />
เมื่อไฟล์อิมเมจถูกต้องตามที่ต้องการแล้ว ใช้คำสั่ง wodim เพื่อเขียนไฟล์ลงบนแผ่นซีดี ซึ่งเราสามารถกำหนดไดร์ฟ ความเร็วในการเขียนได้</p>
<pre>[root@server ~]# <strong>wodim dev=/dev/dvd speed=32 data-backup.iso</strong></pre>
<p><strong>ข้อมูลอ้างอิง</strong></p>
<ul>
<li><a href="http://spalinux.com/2008/05/write_dvd_on_linux">เขียนไฟล์ลงดีวีดีบนลินุกซ์<br />
</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2008/08/write_cd_on_linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เขียนไฟล์ลงดีวีดีบนลินุกซ์</title>
		<link>http://spalinux.com/2008/05/write_dvd_on_linux</link>
		<comments>http://spalinux.com/2008/05/write_dvd_on_linux#comments</comments>
		<pubDate>Mon, 12 May 2008 08:25:46 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Filesystem]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=16</guid>
		<description><![CDATA[หลังจากที่ประสบปัญหาเนื้อที่ในฮาร์ดดิสก์เหลือน้อยมาก จะลบไฟล์บางส่วนทิ้งไปเลยก็เสียดาย วันนี้เลยไปซื้อแผ่นดีวีดีมา เพื่อจัดการย้ายข้อมูลหรือไฟล์บางส่วนไรท์ลงแผ่นซะ (ถ้าจะให้ดูหรูหน่อยต้องบอกว่าเรากำลังทำ Information Lifecycle Management) บทความนี้ขอแนะนำวิธีการเขียนไฟล์ลงแผ่นดีวีดีโดยใช้คำสั่งบนลินุกซ์ หมายเหตุ ถ้าต้องการเขียนซีดี สามารถวิธีการได้ที่ เขียนแผ่นซีดีบนลินุกซ์ ระบบที่ทดสอบ Fedora 8 ขั้นตอนที่ 1 &#8211; ติดตั้งโปรแกรมเขียนไฟล์ ก่อนอื่นต้องตรวจสอบดูว่าลินุกซ์ของเรามีโปรแกรมที่ต้องใช้เขียนไฟล์ติดตั้งในเครื่องเราแล้วหรือยัง โดยในบทความนี้เราจะใช้โปรแกรม dvd+rw-tools ในการเขียนไฟล์ ตัวอย่างตรวจสอบโปรแกรมที่ติดตั้งแล้วโดยใช้คำสั่ง rpm [root@server ~]# rpm -q dvd+rw-tools [root@server ~]# หากไม่มีผลลัพธ์จากการรันคำสั่ง rpm นั่นคือเครื่องยังไม่มีโปรแกรมนี้ติดตั้ง เราต้องติดตั้งโปรแกรมเพิ่มเติมสองโปรแกรมคือ genisoimage และ dvd+rw-tools สำหรับ Fedora 8 (x86_64) สามารถดูด้านล่างสุดของบทความนี้ ในส่วนของข้อมูลอ้างอิงสำหรับที่ดาวน์โหลดไฟล์ ตัวอย่างการติดตั้งโปรแกรม dvd+rw-tools บน Fedora 8 [root@server ~]# rpm -ivh [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากที่ประสบปัญหาเนื้อที่ในฮาร์ดดิสก์เหลือน้อยมาก จะลบไฟล์บางส่วนทิ้งไปเลยก็เสียดาย วันนี้เลยไปซื้อแผ่นดีวีดีมา เพื่อจัดการย้ายข้อมูลหรือไฟล์บางส่วนไรท์ลงแผ่นซะ (ถ้าจะให้ดูหรูหน่อยต้องบอกว่าเรากำลังทำ Information Lifecycle Management)</p>
<p>บทความนี้ขอแนะนำวิธีการเขียนไฟล์ลงแผ่นดีวีดีโดยใช้คำสั่งบนลินุกซ์</p>
<p>หมายเหตุ ถ้าต้องการเขียนซีดี สามารถวิธีการได้ที่ <a href="http://spalinux.com/2008/08/write_cd_on_linux">เขียนแผ่นซีดีบนลินุกซ์</a><br />
<span id="more-16"></span></p>
<p><strong>ระบบที่ทดสอบ</strong></p>
<ul>
<li>Fedora 8</li>
</ul>
<p><strong>ขั้นตอนที่ 1 &#8211; ติดตั้งโปรแกรมเขียนไฟล์</strong><br />
ก่อนอื่นต้องตรวจสอบดูว่าลินุกซ์ของเรามีโปรแกรมที่ต้องใช้เขียนไฟล์ติดตั้งในเครื่องเราแล้วหรือยัง โดยในบทความนี้เราจะใช้โปรแกรม dvd+rw-tools ในการเขียนไฟล์</p>
<p>ตัวอย่างตรวจสอบโปรแกรมที่ติดตั้งแล้วโดยใช้คำสั่ง rpm<br />
<code><br />
[root@server ~]# <strong>rpm -q dvd+rw-tools</strong><br />
[root@server ~]#<br />
</code></p>
<p>หากไม่มีผลลัพธ์จากการรันคำสั่ง rpm นั่นคือเครื่องยังไม่มีโปรแกรมนี้ติดตั้ง</p>
<p>เราต้องติดตั้งโปรแกรมเพิ่มเติมสองโปรแกรมคือ genisoimage และ dvd+rw-tools สำหรับ Fedora 8 (x86_64) สามารถดูด้านล่างสุดของบทความนี้ ในส่วนของข้อมูลอ้างอิงสำหรับที่ดาวน์โหลดไฟล์</p>
<p>ตัวอย่างการติดตั้งโปรแกรม dvd+rw-tools บน Fedora 8<br />
<code><br />
[root@server ~]# <strong>rpm -ivh genisoimage-1.1.6-6.fc8.x86_64.rpm</strong><br />
[root@server ~]# <strong>rpm -ivh dvd+rw-tools-7.0-7.fc8.x86_64.rpm</strong><br />
</code></p>
<p><strong>ขั้นตอนที่ 2 &#8211; ตรวจสอบดีวีดีไดรฟว์</strong><br />
ใช้คำสั่ง dvd+rw-mediainfo ตรวจสอบว่าดีวีดีไดรฟว์ว่าสามารถเขียนไฟล์ได้หรือไม่ และข้อมูลรายละเอียดอื่นของไดรฟว์</p>
<p>ตัวอย่างการตรวจสอบไดรฟว์<br />
<code><br />
[root@server ~]# <strong>dvd+rw-mediainfo /dev/dvd</strong><br />
INQUIRY: [LITE-ON ][DVDRW LH-18A1P ][GL0F]<br />
GET [CURRENT] CONFIGURATION:<br />
Mounted Media: 11h, DVD-R Sequential<br />
Media ID: RITEKG05<br />
Current Write Speed: 8.0x1385=11080KB/s<br />
Write Speed #0: 8.0x1385=11080KB/s<br />
Write Speed #1: 6.0x1385=8310KB/s<br />
Write Speed #2: 4.0x1385=5540KB/s<br />
Write Speed #3: 2.0x1385=2770KB/s<br />
...<br />
</code></p>
<p><strong>ขั้นตอนที่ 3 &#8211; เตรียมไฟล์ที่จะเขียน</strong><br />
เตรียมไฟล์ที่จะเขียนลงบนแผ่น เช่นอยู่ใน /tmp/data-to-write/</p>
<p><strong>ขั้นตอนที่ 4 &#8211; เขียนไฟล์ลงดีวีดี</strong><br />
ใส่แผ่นเปล่าที่จะเขียนเข้าไปในไดรฟว์ แล้วใช้คำสั่ง growisofs เพื่อเขียนไฟล์ที่เตรียมไว้ ลงบนแผ่น</p>
<p>ตัวอย่างการใช้คำสั่ง growisofs เพื่อเขียนไฟล์ที่เก็บอยู่ใน /tmp/data-to-write/ ลงบนแผ่น<br />
<code><br />
[root@server ~]# <strong>cd /tmp/data-to-write/</strong><br />
[root@server data-to-write]# <strong>growisofs -dvd-compat -Z /dev/dvd -joliet-long -R -V "DataBackup-20080512" . </strong><br />
Executing 'mkisofs -joliet-long -R -V DataBackup-20080512 . | builtin_dd of=/dev/dvd obs=32k seek=0'<br />
0.27% done, estimate finish Mon May 12 13:52:03 2008<br />
0.55% done, estimate finish Mon May 12 13:54:28 2008<br />
0.82% done, estimate finish Mon May 12 14:09:05 2008<br />
...<br />
99.17% done, estimate finish Mon May 12 13:58:33 2008<br />
99.44% done, estimate finish Mon May 12 13:58:33 2008<br />
99.72% done, estimate finish Mon May 12 13:58:33 2008<br />
Total translation table size: 0<br />
Total rockridge attributes bytes: 7016<br />
Total directory bytes: 17270<br />
Path table size(bytes): 74<br />
Max brk space used 0<br />
1825135 extents written (3564 MB)<br />
builtin_dd: 1825136*2KB out @ average 7.5x1352KBps<br />
/dev/dvd: flushing cache<br />
/dev/dvd: updating RMA<br />
/dev/dvd: closing disc<br />
/dev/dvd: reloading tray</code></p>
<p>หมายเหตุ: เครื่องหมายจุด &#8220;.&#8221; สุดท้ายของคำสั่ง growisofs หมายถึงให้เขียนไฟล์จากไดเร็คทอรีปัจจุบันนี้ลงบนแผ่น</p>
<p><strong>ขั้นตอนที่ 5 &#8211; ตรวจสอบไฟล์ที่เขียนเสร็จแล้ว</strong><br />
ขั้นสุดท้าย ตรวจสอบไฟล์ที่เขียนลงบนแผ่น</p>
<p>ตัวอย่างการตรวจสอบไฟล์<br />
<code><br />
[root@server ~]# <strong>mount /dev/dvd /media/</strong><br />
mount: block device /dev/sr0 is write-protected, mounting read-only<br />
[root@server ~]# <strong>cd /media</strong><br />
[root@server media]# <strong>ls</strong><br />
FILE-1.DAT FILE-2.DAT FILE-3.DAT<br />
...<br />
</code></p>
<p>เมื่อตรวจสอบไฟล์บนแผ่นว่าครบถ้วนถูกต้องแล้ว ก็ใช้คำสั่ง eject เพื่อเอาแผ่นออกมาจากไดรฟว์<br />
<code><br />
[root@server media]# cd /<br />
[root@server media]# eject<br />
</code></p>
<p>หลังจากนั้นเราก็สามารถลบไฟล์ที่เก็บสำรองลงบนแผ่นแล้ว ออกจากฮาร์ดดิสก์ของเราได้เลย ได้เนื้อที่เพิ่มมาอีกเพียบเลย</p>
<p><strong>เขียนไฟล์ iso ลงแผ่นดีวีดีโดยตรงเลย</strong><br />
ขอเพิ่มเติมสำหรับเขียนไฟล์ที่ทำเป็นอิมเมจไว้แล้วเช่นไฟล์ประเภท iso สามารถทำได้โดยใช้คำสั่ง growisofs เหมือนกันแต่เป็นคำสั่งเป็นดังนี้</p>
<p>ตัวอย่างการเขียนไฟล์ DVD-Image.iso ลงบนแผ่นดีวีดี</p>
<p><code><br />
[root@server ~]# <strong>growisofs -dvd-compat -Z /dev/dvd=DVD-Image.iso</strong><br />
Executing 'builtin_dd if=DVD-Image.iso of=/dev/dvd obs=32k seek=0'<br />
/dev/dvd: "Current Write Speed" is 3.3x1352KBps.<br />
3080192/4513529856 ( 0.1%) @0.5x, remaining 73:13 RBU 100.0% UBU 9.7%<br />
27754496/4513529856 ( 0.6%) @5.3x, remaining 18:51 RBU 100.0% UBU 99.6%<br />
52756480/4513529856 ( 1.2%) @5.4x, remaining 14:05 RBU 100.0% UBU 99.6%<br />
...<br />
</code></p>
<p><strong>ข้อมูลอ้างอิง</strong></p>
<ul>
<li><a href="http://spalinux.com/2008/08/write_cd_on_linux">เขียนแผ่นซีดีบนลินุกซ์</a></li>
<li><a href="http://fy.chalmers.se/~appro/linux/DVD+RW/" target="_blank">Blu-ray Disc/ DVD+RW/+R/ -R[W] for Linux</a></li>
<li><a href="http://mirrors.kernel.org/fedora/releases/8/Everything/x86_64/os/Packages/genisoimage-1.1.6-6.fc8.x86_64.rpm" target="_blank">genisoimage-1.1.6-6.fc8.x86_64.rpm</a></li>
<li><a href="http://mirrors.kernel.org/fedora/releases/8/Everything/x86_64/os/Packages/dvd+rw-tools-7.0-7.fc8.x86_64.rpm" target="_blank">dvd+rw-tools-7.0-7.fc8.x86_64.rpm</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2008/05/write_dvd_on_linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

