<?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>Mon, 26 Jul 2010 09:51:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<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>0</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>
