<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>ezylinux – แหล่งความรู้ลีนุกซ์</title>
	<atom:link href="http://www.ezylinux.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://www.ezylinux.com/</link>
	<description></description>
	<lastBuildDate>Fri, 25 Aug 2023 03:59:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3</generator>
	<itunes:explicit>yes</itunes:explicit><copyright>Copyright © EzyLinux - Linux Server &amp; Desktop.</copyright><itunes:subtitle/><itunes:category text="Technology"><itunes:category text="Gadgets"/></itunes:category><itunes:author>Tum.</itunes:author><item>
		<title>How to stress test the memory on linux</title>
		<link>https://www.ezylinux.com/how-to-stress-test-the-memory-on-linux/</link>
					<comments>https://www.ezylinux.com/how-to-stress-test-the-memory-on-linux/#respond</comments>
		
		
		<pubDate>Fri, 03 Aug 2018 07:26:16 +0000</pubDate>
				<category><![CDATA[System]]></category>
		<category><![CDATA[ram]]></category>
		<category><![CDATA[Stress test]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3762</guid>

					<description><![CDATA[<p>คำสั่ง stress ช่วยให้เราสามารถทำการทดสอบ workload บน cpu, memory, io, HDD บน POSIX system ซึ่งในบทความนี้จะมาแชร์คำสั่งที่ใช้ในการทดสอบ workload ให้ใช้ memory 95% เพื่อทดสอบ memory ว่าจะมีปัญหาหรือไม่ สำหรับ Linux kernel &#60; 3.14 สำหรับ Linux kernel &#62;= 3.14</p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-stress-test-the-memory-on-linux/">How to stress test the memory on linux</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>คำสั่ง stress ช่วยให้เราสามารถทำการทดสอบ workload บน cpu, memory, io, HDD บน POSIX system ซึ่งในบทความนี้จะมาแชร์คำสั่งที่ใช้ในการทดสอบ workload ให้ใช้ memory 95% เพื่อทดสอบ memory ว่าจะมีปัญหาหรือไม่</p>



<p>สำหรับ Linux kernel &lt; 3.14</p>



<p><pre class="brush: bash; title: ; notranslate">stress --vm-bytes $(awk '/MemFree/{printf &amp;quot;%d\n&amp;quot;, $2 * 0.95;}' &amp;amp;amp;amp;lt; /proc/meminfo)k --vm-keep -m 1 </pre></p>



<p>สำหรับ Linux kernel &gt;= 3.14<br>
<pre class="brush: bash; title: ; notranslate">
stress --vm-bytes $(awk '/MemAvailable/{printf &amp;quot;%d\n&amp;quot;, $2 * 0.95;}' &amp;amp;amp;lt; /proc/meminfo)k --vm-keep -m 1</pre></p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-stress-test-the-memory-on-linux/">How to stress test the memory on linux</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/how-to-stress-test-the-memory-on-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>Ansible Tutorial – Directory layout and Example</title>
		<link>https://www.ezylinux.com/ansible-tutorial-directory-layout-example/</link>
					<comments>https://www.ezylinux.com/ansible-tutorial-directory-layout-example/#respond</comments>
		
		
		<pubDate>Tue, 26 Jul 2016 15:17:05 +0000</pubDate>
				<category><![CDATA[Configuration management]]></category>
		<category><![CDATA[Ansible]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3701</guid>

					<description><![CDATA[<p>Ansible เป็น configuration management ที่เป็น agentless ซึ่งไม่ต้อง require agent เหมือนพวก puppet, Chef, Salt การทำงานของ ansible จะทำงานผ่าน SSH ดังนั้นแค่เครื่องสามารถ remote ด้วย SSH ได้ก็ทำงานได้ Ansible เขียนเป็นไฟล์ YAML เดียวก็สามารถทำงานได้แล้ว แต่ถ้าหากมีขั้นตอนการทำงานที่เยอะจะทำให้ยุ่งยากในการแก้ไข และนำกลับมาใช้ใหม่ ดังนั้นในบทความนี้ผมจะมาอธิบาย directory... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/ansible-tutorial-directory-layout-example/">Ansible Tutorial &#8211; Directory layout and Example</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" fetchpriority="high" src="http://www.ezylinux.com/wp-content/uploads/2016/07/ansible-logo.png" alt="ansible-logo" width="437" height="346" class="aligncenter size-full wp-image-3721" srcset="https://www.ezylinux.com/wp-content/uploads/2016/07/ansible-logo.png 437w, https://www.ezylinux.com/wp-content/uploads/2016/07/ansible-logo-300x238.png 300w" sizes="(max-width: 437px) 100vw, 437px" /><br />
Ansible เป็น configuration management ที่เป็น agentless ซึ่งไม่ต้อง require agent เหมือนพวก puppet, Chef, Salt การทำงานของ ansible จะทำงานผ่าน SSH ดังนั้นแค่เครื่องสามารถ remote ด้วย SSH ได้ก็ทำงานได้ </p>
<p>Ansible เขียนเป็นไฟล์ YAML เดียวก็สามารถทำงานได้แล้ว แต่ถ้าหากมีขั้นตอนการทำงานที่เยอะจะทำให้ยุ่งยากในการแก้ไข และนำกลับมาใช้ใหม่ ดังนั้นในบทความนี้ผมจะมาอธิบาย directory layout เพื่อให้คนที่เริ่มศึกษาได้เข้าใจหลักการสร้างและกำหนด directory layout ได้ถูกต้อง<br />
<span id="more-3701"></span></p>
<h4>Directory Layout</h4>
<p>ตัวอย่างข้างล่างคือ Top level ของ directory และไฟล์ต่างๆ </p>
<pre>
├── production                # ไฟล์ inventory สำหรับ production servers
├── staging                   # ไฟล์ inventory สำหรับ staging
├── dev                       # ไฟล์ inventory สำหรับ development
├── group_vars/
│   ├── group1                # กำหนด variable ในแต่ละ group โดยอ้างอิงจาก inventory file
│   ├── group2                # 
│   └── all                   # ถ้าหากต้องการกำหนด variable เป็น default value หรือใช้งานได้ทั้งหมด
├── host_vars/
│   └── hostname1             # กำหนด variable แบบเฉพาะเจาะจงเครื่อง โดยชื่อไฟล์คือชื่อเครื่องใน inventory file
├── library/                  # custom modules (optional)
├── filter_plugins/           # custom filter plugins (optional)
├── site.yml                  # ไฟล์ playbook หลัก
├── nginxservers.yml          # ไฟล์ playbook ของ nginx server
├── mysqlservers.yml          # playbook ของ MySQL server
│
└── roles/
    ├── common/               # role ชื่อ common
    │   ├── tasks/            # 
    │   │   └── main.yml      #  tasks ต่างๆของ role
    │   ├── handlers/         #
    │   │   └── main.yml      # handlers file
    │   ├── templates/        # Folder สำหรับเก็บไฟล์ template
    │   │   └── ntp.conf.j2   #  - ไฟล์ templates ลงท้ายด้วย .j2
    │   ├── files/            #  ไฟล์ที่ต้องการให้ ansible ทำการ copy ไปยัง folder ที่ต้องการ
    │   │   ├── bar.txt       #  
    │   │   └── foo.sh        #   
    │   ├── vars/             #
    │   │   └── main.yml      #  variable ในระดับ role
    │   ├── defaults/         #
    │   │   └── main.yml      #  lower priority variable สำหรับ role
    │   └── meta/             #
    │       └── main.yml      #  role dependencies
    │
    ├── webtier/              # role ชื่อ webtier โดยมีโครงสร้างของ folder เหมือนกับ common role
    └── monitoring/           # role ชื่อ monitoring โดยมีโครงสร้างของ folder เหมือนกับ common role
</pre>
<p>จากโครงสร้าง folder ข้างบนจะสามารถแยกอธิบายเป็นส่วนๆได้ตามนี้</p>
<h4>Inventory file</h4>
<p>ใช้ define hostname และ group ของ hostname เพื่อให้ ansible ทราบว่าจะไปรันที่ server ไหนบ้าง จากตัวอย่างโครงสร้าง file และ folder ด้านบนมีการกำหนด inventory file ไว้ 3 ไฟล์ด้วยกันคือ production, staging และ dev เพื่อเวลาเรียกใช้งานสามารถระบุ environment ที่ต้องการรันได้เลย</p>
<p>ตัวอย่างการรันด้วยการระบุ inventory file </p>
<p><code># ansible-playbook -i production site.yml</code></p>
<p>ตัวอย่าง inventory file </p>
<pre>
[thailand-nginxservers]
www-th-1.ezylinux.com
www-th-2.ezylinux.com

[singapore-nginxservers:vars]  # Apply variables using :vars
www-sg-1.ezylinux.com
ntp_server=ntp.sg.ezylinux.com

[thailand-mysqlservers]
db-th-1.ezylinux.com
db-th-2.ezylinux.com

[singapore-mysqlservers]
db-sg-1.ezylinux.com

# nginxservers in both Thailand and Singapore 
[nginxservers:children]   # Make groups of groups using the :children suffix.
thailand-nginxservers
singapore-nginxservers

# mysqlservers in both Thailand and Singapore
[dbservers:children]
thailand-mysqlservers
singapore-mysqlservers

# everything in the Thaland
[thailand:children]
thailand-nginxservers
thailand-mysqlservers

# everything in the Singapore
[singapore:children]
singapore-nginxservers
singapore-mysqlservers
</pre>
<h4>Group Variables</h4>
<p>เป็นการกำหนด variable สำหรับ group ต่างๆที่ได้ define ไว้ที่ inventory file โดยมีข้อกำหนดว่า</p>
<ol>
<li>ชื่อไฟล์ต้องเป็นชื่อ group บน inventory file</li>
<li>อยู่ใน folder group_vars</li>
</ol>
<p>ตัวอย่างเช่น กลุ่ม server ที่ thailand ให้ใช้ ntp server ที่ไทย</p>
<pre>
---
# file: group_vars/thailand
ntp: th.pool.ntp.org
</pre>
<h4>Host Variables</h4>
<p>เป็นการกำหนด variable สำหรับราย host ที่ได้ถูก define ไว้ที่ inventory file</p>
<p>ตัวอย่างเช่น กำหนดให้ db-th-1.ezylinux.com รัน mysql ด้วย port 3307</p>
<pre>
---
# file: host_vars/db-th-1.ezylinux.com
mysql_port: 3307
</pre>
<h4>Roles</h4>
<p>ใน ansible เราสามารถแยกงานต่างๆ ออกเป็น role เพื่อให้ง่ายต่อการใช้งาน แก้ไข และนำกลับมาใช้กับงานใหม่ ตัวอย่างเช่น ตั้งชื่อ folder ว่า common ใน roles หมายถึงว่า role ชื่อ common และภายใน folder common ก็มี folder ต่างๆ ตามตัวอย่าง</p>
<p>** role สามารถมี dependency ซึ่งจะช่วยให้สามารถกำหนดลำดับการทำงานของ role ได้</p>
<pre>
└── roles/
    ├── common/               # role ชื่อ common
    │   ├── tasks/            # ไฟล์ YAML ที่กำหนดขั้นตอนการทำงาน
    │   ├── handlers/         # ไฟล์ YAML ที่จะถูก notify จาก task เพื่อให้ทำงานที่กำหนด
    │   ├── templates/        # Folder สำหรับเก็บไฟล์ Jinja2 template
    │   ├── files/            # ไฟล์ที่ต้องการให้ ansible ทำการ copy ไปยัง folder ที่ต้องการ
    │   ├── vars/             # variable ที่เกี่ยวข้องกับ role นี้
    │   ├── defaults/         # lower priority variables
    │   └── meta/             # role dependencies
</pre>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/ansible-tutorial-directory-layout-example/">Ansible Tutorial &#8211; Directory layout and Example</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/ansible-tutorial-directory-layout-example/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>PackStack gets “Failed to load plugin from file prescript_000.py” error</title>
		<link>https://www.ezylinux.com/packstack-gets-failed-load-plugin-file-prescript_000-py-error/</link>
					<comments>https://www.ezylinux.com/packstack-gets-failed-load-plugin-file-prescript_000-py-error/#respond</comments>
		
		
		<pubDate>Fri, 19 Feb 2016 05:26:46 +0000</pubDate>
				<category><![CDATA[Cloud / Cluster]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[PackStack]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3675</guid>

					<description><![CDATA[<p>เมื่อทำการรัน packstack เพื่อ install openstack แล้วพบ error เหมือนด้านล่าง [root@openstack-liberty1 ~]# packstack --answer-file=answers.txt ERROR:root:Failed to load plugin from file prescript_000.py ERROR:root:Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 884, in loadPlugins... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/packstack-gets-failed-load-plugin-file-prescript_000-py-error/">PackStack gets &#8220;Failed to load plugin from file prescript_000.py&#8221; error</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="http://www.ezylinux.com/wp-content/uploads/2016/02/RDO-logo-1024x410.jpg" alt="RDO-logo" width="1024" height="410" class="aligncenter size-large wp-image-3678" srcset="https://www.ezylinux.com/wp-content/uploads/2016/02/RDO-logo-1024x410.jpg 1024w, https://www.ezylinux.com/wp-content/uploads/2016/02/RDO-logo-300x120.jpg 300w, https://www.ezylinux.com/wp-content/uploads/2016/02/RDO-logo.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /><br />
เมื่อทำการรัน packstack เพื่อ install openstack แล้วพบ error เหมือนด้านล่าง</p>
<p><code><br />
[root@openstack-liberty1 ~]# packstack --answer-file=answers.txt<br />
ERROR:root:Failed to load plugin from file prescript_000.py<br />
ERROR:root:Traceback (most recent call last):<br />
  File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 884, in loadPlugins<br />
    moduleobj = __import__(moduleToLoad)<br />
  File "/usr/lib/python2.7/site-packages/packstack/plugins/prescript_000.py", line 35, in <module><br />
    from packstack.modules.documentation import update_params_usage<br />
  File "/usr/lib/python2.7/site-packages/packstack/modules/documentation.py", line 20, in <module><br />
    from docutils import core<br />
  File "/usr/lib/python2.7/site-packages/docutils/core.py", line 20, in <module><br />
    from docutils import frontend, io, utils, readers, writers<br />
  File "/usr/lib/python2.7/site-packages/docutils/frontend.py", line 41, in <module><br />
    import docutils.utils<br />
  File "/usr/lib/python2.7/site-packages/docutils/utils/__init__.py", line 20, in <module><br />
    import docutils.io<br />
  File "/usr/lib/python2.7/site-packages/docutils/io.py", line 18, in <module><br />
    from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput<br />
  File "/usr/lib/python2.7/site-packages/docutils/utils/error_reporting.py", line 46, in <module><br />
    locale_encoding = locale.getlocale()[1] or locale.getdefaultlocale()[1]<br />
  File "/usr/lib64/python2.7/locale.py", line 511, in getdefaultlocale<br />
    return _parse_localename(localename)<br />
  File "/usr/lib64/python2.7/locale.py", line 443, in _parse_localename<br />
    raise ValueError, 'unknown locale: %s' % localename<br />
ValueError: unknown locale: UTF-8</p>
<p>ERROR:root:Traceback (most recent call last):<br />
  File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 949, in main<br />
    loadPlugins()<br />
  File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 892, in loadPlugins<br />
    raise Exception("Failed to load plugin from file %s" % item)<br />
Exception: Failed to load plugin from file prescript_000.py</p>
<p>ERROR : Failed to load plugin from file prescript_000.py<br />
Traceback (most recent call last):<br />
  File "/usr/bin/packstack", line 15, in <module><br />
    run_setup.main()<br />
  File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 1019, in main<br />
    print(output_messages.ERR_CHECK_LOG_FILE_FOR_MORE_INFO % (logFile))<br />
UnboundLocalError: local variable 'logFile' referenced before assignment<br />
</code></p>
<p>วิธีแก้ไขให้รัน </p>
<p><code>export LC_ALL=en_US.UTF-8<br />
export LANG=en_US.UTF-8<br />
</code></p>
<p>แล้วแก้ไขไฟล์ ~/.bash_profile และเพิ่มคำสั่งด้านล่างลงไป เพื่อให้ครั้งต่อไปเมื่อ login เข้ามาระบบจะทำการ export ให้อัตโนมัติครับ</p>
<p><code>export LC_ALL=en_US.UTF-8<br />
export LANG=en_US.UTF-8</code></p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/packstack-gets-failed-load-plugin-file-prescript_000-py-error/">PackStack gets &#8220;Failed to load plugin from file prescript_000.py&#8221; error</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/packstack-gets-failed-load-plugin-file-prescript_000-py-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>How to fix memory leak from big nfs_inode_cache</title>
		<link>https://www.ezylinux.com/how-to-fix-memory-leak-from-big-nfs_inode_cache/</link>
					<comments>https://www.ezylinux.com/how-to-fix-memory-leak-from-big-nfs_inode_cache/#respond</comments>
		
		
		<pubDate>Thu, 03 Dec 2015 09:27:54 +0000</pubDate>
				<category><![CDATA[System]]></category>
		<category><![CDATA[Memory leak]]></category>
		<category><![CDATA[nfs_inode_cache]]></category>
		<category><![CDATA[Slab]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3664</guid>

					<description><![CDATA[<p>ได้รับแจ้งว่า Linux server เครื่องหนึ่งมีการใช้งาน memory เกินกว่า 90% ซึ่งทางผู้ดูแลตรวจสอบแล้วไม่พบว่ามี process ใดใช้งาน memory มาก ซึ่งผมได้เข้าไปตรวจสอบเบื้ยงต้นด้วยคำสั่ง free ก็ไม่พบอะไรผิดปรกติ [root@ezylinux ~]# free -m total used free shared buffers cached Mem: 7982 7885 97 0... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-fix-memory-leak-from-big-nfs_inode_cache/">How to fix memory leak from big nfs_inode_cache</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>ได้รับแจ้งว่า Linux server เครื่องหนึ่งมีการใช้งาน memory เกินกว่า 90% ซึ่งทางผู้ดูแลตรวจสอบแล้วไม่พบว่ามี process ใดใช้งาน memory มาก ซึ่งผมได้เข้าไปตรวจสอบเบื้ยงต้นด้วยคำสั่ง free ก็ไม่พบอะไรผิดปรกติ </p>
<p><code>[root@ezylinux ~]# free -m<br />
             total       used       free     shared    buffers     cached<br />
Mem:          7982       7885         97          0        137        366<br />
-/+ buffers/cache:       7380        601<br />
Swap:         4285          0       4285</code></p>
<p>จากนั้นจึงได้ตรวจสอบ process ต่างๆอีกครั้ง ว่ามี process ไหนบ้างที่ใช้งาน memory สูง ซึ่งก็ไม่พบ ดังนั้นจึงได้ทำการตรวจสอบ /proc/meminfo ด้วยคำสั่งด้านล่าง<br />
<span id="more-3664"></span><br />
<code><br />
[root@ezylinux ~]# cat /proc/meminfo<br />
MemTotal:      8174308 kB<br />
MemFree:         96112 kB<br />
Buffers:        143332 kB<br />
Cached:         378332 kB<br />
SwapCached:          0 kB<br />
Active:         233340 kB<br />
Inactive:       335120 kB<br />
         ...<br />
Slab:          7480856 kB<br />
         ...<br />
VmallocTotal: 34359738367 kB<br />
VmallocUsed:    265956 kB<br />
VmallocChunk: 34359470659 kB<br />
HugePages_Total:     0<br />
HugePages_Free:      0<br />
HugePages_Rsvd:      0<br />
Hugepagesize:     2048 kB<br />
</code></p>
<p>พบว่า Slab มีการใช้งานที่มากถึง 7306 MB หรือประมาณ 90% (แรมของระบบ 8GB) แล้ว Slab คืออะไร?</p>
<p>Slab คือ Cache ของ memory pool allocator บน kernel object</p>
<p>จากข้อมูลข้างบนให้รันคำสั่ง slaptop เพื่อหา object ที่มีการใช้งาน memory มากที่สุด </p>
<p><code>   OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME<br />
8603424 8603424 100%    1.01K 2867808        3  7476347K nfs_inode_cache<br />
3080826 3080737  99%    0.21K 171157       18    684628K dentry_cache<br />
 24717  12515  50%    0.52K   3531        7     14124K radix_tree_node<br />
 11365  11108  97%    0.74K   2273        5      9092K ext3_inode_cache</code></p>
<p>จากตัวอย่างพบว่า nfs_inode_cache มีการใช้งาน memory มากถึง 7GB </p>
<p><strong>แนวทางการแก้ไขปัญหา</strong></p>
<ol>
<li>รันคำสั่ง sync เพื่อทำการ flush file system buffers</li>
<li>รันคำสั่ง ด้านล่างเพื่อ clear dentries และ inodes<br />
<code>echo 2 > /proc/sys/vm/drop_caches</code></li>
</ol>
<p>หรือ รันคำสั่งด้านล่าง<br />
<code> sync && echo 2 > /proc/sys/vm/drop_caches</code></p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-fix-memory-leak-from-big-nfs_inode_cache/">How to fix memory leak from big nfs_inode_cache</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/how-to-fix-memory-leak-from-big-nfs_inode_cache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>How to fix “loopback devices is strongly discouraged for production use” on Docker</title>
		<link>https://www.ezylinux.com/3663-2/</link>
					<comments>https://www.ezylinux.com/3663-2/#respond</comments>
		
		
		<pubDate>Mon, 03 Aug 2015 09:02:05 +0000</pubDate>
				<category><![CDATA[Containerization]]></category>
		<category><![CDATA[Docker]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3663</guid>

					<description><![CDATA[<p>สำหรับคนที่ใช้ docker (1.6+) บน CentOS7 หรือ RHEL7 จะพบ warning เกิดขึ้นกังตัวอย่างด้านล่าง # docker run centos /bin/echo &#8220;ezylinux.com&#8221; Usage of loopback devices is strongly discouraged for production use. Either use `&#8211;storage-opt dm.thinpooldev`... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/3663-2/">How to fix &#8220;loopback devices is strongly discouraged for production use&#8221; on Docker</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="http://www.ezylinux.com/wp-content/uploads/2015/08/docker.png" alt="docker" width="792" height="269" class="aligncenter size-full wp-image-3727" srcset="https://www.ezylinux.com/wp-content/uploads/2015/08/docker.png 792w, https://www.ezylinux.com/wp-content/uploads/2015/08/docker-300x102.png 300w, https://www.ezylinux.com/wp-content/uploads/2015/08/docker-768x261.png 768w" sizes="(max-width: 792px) 100vw, 792px" /><br />
สำหรับคนที่ใช้ docker (1.6+) บน CentOS7 หรือ RHEL7 จะพบ warning เกิดขึ้นกังตัวอย่างด้านล่าง</p>
<p># docker run centos /bin/echo &#8220;ezylinux.com&#8221;<br />
Usage of loopback devices is strongly discouraged for production use. Either use `&#8211;storage-opt dm.thinpooldev` or use `&#8211;storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.</p>
<p>warning นี้เกิดจาก docker ได้ตั้งค่าการใช้งาน storage เป็น devicemapper และสร้าง loopback device (ตัวอย่าง /dev/loop0) ขึ้นมา เนื่องจากไม่พบ AUFS driver ซึ่งเป็น default storage ของ docker (จะมีอยู่ใน Ubuntu) </p>
<p>* Mode การทำงานนี้ loopback device บน devicemapper ไม่เหมาะกับ Production<br />
** ทาง RedHat ไม่ชอบ AUFS จึงไม่ได้นำมาใช้ใน distro ของตนและได้ไปพัฒนา OverlayFS และ devicemapper thin provisioning มาใช้แทน </p>
<p>สำหรับแนวทางแก้ไขสามารถทำได้ดังนี้<br />
ปิด Warning โดยแก้ไขที่ไฟล์ /etc/sysconfig/docker-storage </p>
<p>DOCKER_STORAGE_OPTIONS = &#8220;&#8211;storage-opt dm.no_warn_on_loop_devices = true&#8221;</p>
<p>DOCKER_STORAGE_OPTIONS = &#8220;&#8211;storage-opt dm.thinpooldev = /dev/mapper/VolGroup-docker&#8221;</p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/3663-2/">How to fix &#8220;loopback devices is strongly discouraged for production use&#8221; on Docker</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/3663-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>How to fix dead VLAN (4095) on neutron</title>
		<link>https://www.ezylinux.com/fix-dead-vlan-4095-neutron/</link>
					<comments>https://www.ezylinux.com/fix-dead-vlan-4095-neutron/#respond</comments>
		
		
		<pubDate>Fri, 03 Jul 2015 17:19:28 +0000</pubDate>
				<category><![CDATA[Cloud / Cluster]]></category>
		<category><![CDATA[Neutron]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[VLAN]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3653</guid>

					<description><![CDATA[<p>เมื่อทำการสร้าง network และ router บน OpenStack แล้ว แต่เครื่อง VM ใน network วงนี้ไม่สามารถ ping ไปยัง gateway หรือ router ได้ให้ตรวจสอบ VLAN ที่ได้ทำการ tag ใน openvswitch บนเครื่อง compute node และ network node ด้วยคำสั่ง... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/fix-dead-vlan-4095-neutron/">How to fix dead VLAN (4095) on neutron</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="http://www.ezylinux.com/wp-content/uploads/2015/02/OpenStack-Cloud-Images.jpg" alt="OpenStack Cloud Images" width="580" height="200" class="aligncenter size-full wp-image-3540" srcset="https://www.ezylinux.com/wp-content/uploads/2015/02/OpenStack-Cloud-Images.jpg 580w, https://www.ezylinux.com/wp-content/uploads/2015/02/OpenStack-Cloud-Images-300x103.jpg 300w" sizes="(max-width: 580px) 100vw, 580px" /></p>
<p>เมื่อทำการสร้าง network และ router บน OpenStack แล้ว แต่เครื่อง VM ใน network วงนี้ไม่สามารถ ping ไปยัง gateway หรือ router ได้ให้ตรวจสอบ VLAN ที่ได้ทำการ tag ใน openvswitch บนเครื่อง compute node และ network node ด้วยคำสั่ง</p>
<p><code>ovs-vsctl show</code></p>
<p>และถ้าผลลัพธ์ แสดง tag: 4095 ดังตัวอย่าง</p>
<p><code>Port "qr-5c55955c-59"<br />
            tag: 4095<br />
            Interface "qr-5c55955c-59"<br />
                type: internal</code></p>
<p>หรือ<br />
<code>Port "tapec669c5e-e1"<br />
            tag: 4095<br />
            Interface "tapec669c5e-e1"</code></p>
<p>แสดงว่า network interface ถูกกำหนดเป็น dead vlan จึงทำให้ไม่สามารถติดต่อใครได้</p>
<p>แนวทางแก้ไข<br />
ให้ทำการลบและสร้าง network ใหม่</p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/fix-dead-vlan-4095-neutron/">How to fix dead VLAN (4095) on neutron</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/fix-dead-vlan-4095-neutron/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>How to fix cloud-config not work with error “Failed loading yaml blob”</title>
		<link>https://www.ezylinux.com/how-to-fix-cloud-config-not-work-with-error-failed-loading-yaml-blob/</link>
					<comments>https://www.ezylinux.com/how-to-fix-cloud-config-not-work-with-error-failed-loading-yaml-blob/#respond</comments>
		
		
		<pubDate>Thu, 25 Jun 2015 11:32:25 +0000</pubDate>
				<category><![CDATA[Cloud / Cluster]]></category>
		<category><![CDATA[cloud-config]]></category>
		<category><![CDATA[cloud-init]]></category>
		<category><![CDATA[yaml]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3648</guid>

					<description><![CDATA[<p>ถ้าหากมีการใช้งาน cloud-config บน EC2 instance บน AWS หรือ OpenStack แล้วพบว่าไม่ทำงานตามที่กำหนดไว้ และได้ตรวจสอบ error ก็พบข้อความ &#8220;Failed at merging in cloud config part from &#8230;&#8221; เหมือนตัวอย่างด้านล่าง ให้ทำการตรวจสอบ yaml ว่า validate หรือไม่ เนื่องจากอาจเกิดจากมีการใช้ tab... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-fix-cloud-config-not-work-with-error-failed-loading-yaml-blob/">How to fix cloud-config not work with error &#8220;Failed loading yaml blob&#8221;</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>ถ้าหากมีการใช้งาน cloud-config บน EC2 instance บน AWS หรือ OpenStack แล้วพบว่าไม่ทำงานตามที่กำหนดไว้ และได้ตรวจสอบ error ก็พบข้อความ &#8220;Failed at merging in cloud config part from &#8230;&#8221; เหมือนตัวอย่างด้านล่าง</p>



<p><code>2014-05-10 12:14:12,458 - util.py[WARNING]: Failed loading yaml blob<br>
2014-05-10 12:14:12,480 - util.py[WARNING]: Failed loading yaml blob<br>
2014-05-10 12:14:12,481 - util.py[WARNING]: Failed at merging in cloud config part from part-001</code></p>



<p>ให้ทำการตรวจสอบ yaml ว่า validate หรือไม่ เนื่องจากอาจเกิดจากมีการใช้ tab มาแทนเว้นวรรค โดยสามารถเข้าไปที่ http://www.yamllint.com/ เพื่อทำการตรวจสอบ yaml และลองใหม่อีกครั้งครับ</p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-fix-cloud-config-not-work-with-error-failed-loading-yaml-blob/">How to fix cloud-config not work with error &#8220;Failed loading yaml blob&#8221;</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/how-to-fix-cloud-config-not-work-with-error-failed-loading-yaml-blob/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>MySQL ERROR 1206: The total number of locks exceeds the lock table size</title>
		<link>https://www.ezylinux.com/mysql-error-1206-the-total-number-of-locks-exceeds-the-lock-table-size/</link>
					<comments>https://www.ezylinux.com/mysql-error-1206-the-total-number-of-locks-exceeds-the-lock-table-size/#respond</comments>
		
		
		<pubDate>Wed, 24 Jun 2015 18:08:42 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL ERROR 1206]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3527</guid>

					<description><![CDATA[<p>ถ้าหากทำการรัน query บน table ที่มีจำนวน row มากมายมหาศาลบน InnoDB storage engine และได้ error ERROR 1206 (HY000): The total number of locks exceeds the lock table size สาเหตุ ERROR 1206 ช้างบน หมายถึง... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/mysql-error-1206-the-total-number-of-locks-exceeds-the-lock-table-size/">MySQL ERROR 1206: The total number of locks exceeds the lock table size</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="http://www.ezylinux.com/wp-content/uploads/2012/05/mysql-logo.png" alt="mysql-logo" width="489" height="253" class="aligncenter size-full wp-image-2015" srcset="https://www.ezylinux.com/wp-content/uploads/2012/05/mysql-logo.png 489w, https://www.ezylinux.com/wp-content/uploads/2012/05/mysql-logo-300x155.png 300w" sizes="(max-width: 489px) 100vw, 489px" /><br />
ถ้าหากทำการรัน query บน table ที่มีจำนวน row มากมายมหาศาลบน InnoDB storage engine และได้ error </p>
<p><code>ERROR 1206 (HY000): The total number of locks exceeds the lock table size</code></p>
<p>สาเหตุ ERROR 1206 ช้างบน หมายถึง MySQL ไม่มีเนื้อที่เหลือพอที่จะสามารถเก็บทุก row lock ที่จะใช้ในการ execute บน query ที่จะรันได้</p>
<p>การแก้ไข ทำการเพิ่ม innodb_buffer_pool_size ให้มีขนาดใหญ่กว่าเดิม (default 8MB) และ restart MySQL</p>
<p>การแก้ไขเฉพาะหน้า ให้ทำการกำหนดจำนวน row ที่จะถูก query ลง ตัวอย่างเช่น ถ้าหากต้องการลบข้อมูล 500,000 row จาก table หนึ่งแล้วเกิด &#8220;ERROR 1206 (HY000): The total number of locks exceeds the lock table size&#8221; ขึ้น ให้ทำการลดจำนวน row ที่จะ query ลง เช่น ลบข้อมูลทีละ 10,000 row แทน แต่ถ้าเป็นการ insert ให้ทำการ insert ในครั้งเดียว</p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/mysql-error-1206-the-total-number-of-locks-exceeds-the-lock-table-size/">MySQL ERROR 1206: The total number of locks exceeds the lock table size</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/mysql-error-1206-the-total-number-of-locks-exceeds-the-lock-table-size/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>MySQL Replication: ‘Got fatal error 1236’</title>
		<link>https://www.ezylinux.com/mysql-replication-got-fatal-error-1236/</link>
					<comments>https://www.ezylinux.com/mysql-replication-got-fatal-error-1236/#respond</comments>
		
		
		<pubDate>Wed, 24 Jun 2015 17:32:17 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Error 1236]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3617</guid>

					<description><![CDATA[<p>ระบบ MySQL replication จะมีการทำงานโดย slave จะดึงข้อมูลจาก binlog ที่ master server เพื่อไปทำการ replay ที่เครื่อง slave เอง ซึ่งถ้าหากเกิดปัญหา slave หยุดทำงานด้วย error 1236 ดังข้างล่าง เราสามาถทำการแก้ไขอย่างไร และสาเหตุเกิดจากอะไรมาดูกันครับ Last_IO_Error: Got fatal error 1236 from master... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/mysql-replication-got-fatal-error-1236/">MySQL Replication: &#8216;Got fatal error 1236&#8217;</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="http://www.ezylinux.com/wp-content/uploads/2012/05/mysql-logo.png" alt="mysql-logo" width="489" height="253" class="aligncenter size-full wp-image-2015" srcset="https://www.ezylinux.com/wp-content/uploads/2012/05/mysql-logo.png 489w, https://www.ezylinux.com/wp-content/uploads/2012/05/mysql-logo-300x155.png 300w" sizes="(max-width: 489px) 100vw, 489px" /><br />
ระบบ MySQL replication จะมีการทำงานโดย slave จะดึงข้อมูลจาก binlog ที่ master server เพื่อไปทำการ replay ที่เครื่อง slave เอง ซึ่งถ้าหากเกิดปัญหา slave หยุดทำงานด้วย error 1236 ดังข้างล่าง เราสามาถทำการแก้ไขอย่างไร และสาเหตุเกิดจากอะไรมาดูกันครับ </p>
<p><code>Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event 'mysql-bin.000005' at 1185833, the last event read from '/var/log/mysql/mysql-bin.000005' at 1185833, the last byte read from '/var/log/mysql/mysql-bin.000005' at 1185852.</code></p>
<p>สาเหตุเกิดจาก master server เกิด crash ทำให้ binlog cache ไม่ได้ flush ลง disk (ทำให้เกิด binlog corrupt) แต่ในขณะนั้น slave ได้รับ position ใหม่แต่ไม่สามารถดึงข้อมูลจาก master ได้เนื่องจาก binlog ที่ทำการดึงเกิด corrupt เรียบร้อยแล้ว<br />
<span id="more-3617"></span><br />
<strong>การแก้ไข MySQL Replication: &#8216;Got fatal error 1236&#8217;</strong></p>
<ol>
<li>ตรวจสอบหา binlog และ position ที่สามารถให้ slave เริ่มทำงานใหม่ได้ โดยทั้วไปแล้ว binlog ที่ corrupt จะไม่สามารถเขียนต่อได้ ดังนั้น MySQL จึงสร้าง binlog ขึ้นมาใหม่โดยที่ชื่อจะต่อจากชื่อเดิม เช่น ในตัวอย่าง binlog ที่เกิดปัญหาคือ mysql-bin.000005 ดังนั้น binlog ที่จะใช้เป็นตัวอ้างอิงให้ slave ทำงานใหม่คือ mysql-bin.000006</li>
<li>หลังจากได้ binlog แล้วให้รันคำสั่งด้านล่างที่ slave เพื่อให้ slave เริ่ม sync ข้อมูลจากจุดอ้างอิงใหม่<br />
<code>mysql> STOP SLAVE;<br />
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=4;<br />
mysql> START SLAVE;</code></li>
<li>ตรวจสอบ slave status ด้วยคำสั่ง<br />
<code>mysql> SHOW SLAVE STATUS;</code>
</li>
</ol>
<p><strong>การป้องกันปัญหา MySQL Replication: &#8216;Got fatal error 1236&#8217;</strong><br />
เปิดใช้งาน sync_binlog ที่ master server ซึ่งจะช่วยให้ master server ทำการ flush cache ทุกครั้งที่มีการ write</p>
<ul>
<li>แก้ไขที่ MySQL Console<br />
<code>mysql> SET GLOBAL sync_binlog=1;</code>
</li>
<li>แก้ไขที่ my.cnf<br />
<code>sync_binlog=1</code></li>
</ul>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/mysql-replication-got-fatal-error-1236/">MySQL Replication: &#8216;Got fatal error 1236&#8217;</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/mysql-replication-got-fatal-error-1236/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
		<item>
		<title>How to fix an ssh connection refused with “no hostkey alg”</title>
		<link>https://www.ezylinux.com/how-to-fix-an-ssh-connection-refused-with-no-hostkey-alg/</link>
					<comments>https://www.ezylinux.com/how-to-fix-an-ssh-connection-refused-with-no-hostkey-alg/#respond</comments>
		
		
		<pubDate>Wed, 24 Jun 2015 16:27:10 +0000</pubDate>
				<category><![CDATA[SSH/Telnet]]></category>
		<category><![CDATA[no hostkey alg]]></category>
		<guid isPermaLink="false">http://www.ezylinux.com/?p=3614</guid>

					<description><![CDATA[<p>ถ้าหากทำการ remote ด้วย ssh ไปยัง server แล้วพบ error &#8220;no hostkey alg&#8221; ดังตัวอย่างด้านล่าง debug1: Reading configuration data /etc/ssh_config debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22. debug1: Connection established. debug1: identity file... </p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-fix-an-ssh-connection-refused-with-no-hostkey-alg/">How to fix an ssh connection refused with &#8220;no hostkey alg&#8221;</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="http://www.ezylinux.com/wp-content/uploads/2013/04/bash-shell-terminal.png" alt="bash shell" width="128" height="128" class="aligncenter size-full wp-image-2669" /><br />
ถ้าหากทำการ remote ด้วย ssh ไปยัง server แล้วพบ error &#8220;<strong>no hostkey alg</strong>&#8221; ดังตัวอย่างด้านล่าง<br />
<code>debug1: Reading configuration data /etc/ssh_config<br />
debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22.<br />
debug1: Connection established.<br />
debug1: identity file /home/tum/.ssh/identity type -1<br />
debug1: identity file /home/tum/.ssh/id_rsa type 1<br />
debug1: identity file /home/tum/.ssh/id_dsa type -1<br />
debug1: Enabling compatibility mode for protocol 2.0<br />
debug1: Local version string SSH-2.0-OpenSSH_6.2<br />
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3<br />
debug1: match: OpenSSH_5.3 pat OpenSSH_5*<br />
debug1: SSH2_MSG_KEXINIT sent<br />
debug1: SSH2_MSG_KEXINIT received<br />
debug1: kex: server->client aes128-ctr hmac-md5 none<br />
debug1: kex: client->server aes128-ctr hmac-md5 none<br />
no hostkey alg</code></p>
<p>การแก้ไขปัญหาสามารถทำได้โดยรัน command เพื่อสร้าง rsa และ dsa keys ดังนี้</p>
<p><code># ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key<br />
# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key<br />
</code></p>
<p>The post <a rel="nofollow" href="https://www.ezylinux.com/how-to-fix-an-ssh-connection-refused-with-no-hostkey-alg/">How to fix an ssh connection refused with &#8220;no hostkey alg&#8221;</a> appeared first on <a rel="nofollow" href="https://www.ezylinux.com">ezylinux - แหล่งความรู้ลีนุกซ์</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ezylinux.com/how-to-fix-an-ssh-connection-refused-with-no-hostkey-alg/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<dc:creator>Tum.</dc:creator></item>
	</channel>
</rss>