Author: grianggrai.n

  • Canonical Livepatch Service

    Canonical Livepatch Service

    Apply critical kernel patches without rebooting.

    โฆษณา

    • Fixes are applied automatically, without restarting your system
    • Reduces downtime, keeping your Ubuntu LTS systems secure
      and compliant
    • Included as part of all Ubuntu Advantage for Infrastructure
      support packages
    • ใครควรใช้ เครื่อง ubuntu 16.04 ขึ้นไป
    • เริ่มได้
    • เปิดเว็บ https://auth.livepatch.canonical.com/ เลือก Ubuntu user แล้วกดปุ่ม Get your Livepatch token

    ก็จะไปหน้านี้

    • กด Accept all and visit site
    • ก็ให้ log in ให้เรียบร้อย หากยังไม่ได้สมัคร user ของ Ubuntu one ก็ให้เลือก I don’t have an Ubuntu One account เพื่อสร้าง account

    หลังจากกด Create account ให้ไปเช็คเมล์ที่ใช้ลงทะเบียนแล้วกด verify

    • ก็จะได้หน้าที่มี Token สำหรับลงทะเบียน
    • ติดตั้งโปรแกรมชื่อ canonical-livepatch ด้วยคำสั่ง
    sudo snap install canonical-livepatch
    • เมื่อติดตั้งเสร็จได้ผลลัพธ์ว่า

    canonical-livepatch 9.5.5 from Canonical✓ installed

    • แล้วต่อด้วยคำสั่ง copy จากในเว็บได้เลย
    sudo canonical-livepatch enable $TOKEN
    • โดย $TOKEN คือค่าที่ได้จากในหน้าเว็บ
    • ก็จะได้ผลว่าประมาณว่า

    Successfully enabled device. Using machine-token: xxxxxxxxxxx

    • เสร็จ!!! แบบง่ายๆ และงงๆ
    • และสำหรับ 1 email address สามารถใช้ token เดียวกันได้ 3 เครื่อง สำหรับผู้ใช้ฟรี!!
    • ตั้งแต่ใช้มาประมาณ 1 ปีครึ่ง ก็ไม่รู้ว่ามีอัพเดตอะไรบ้างเหมือนกัน กรั่กๆ
    • ตรวจสอบสถานะของ canonical-livepatch ด้วยคำสั่ง
    sudo canonical-livepatch status --verbose
    • ก็จะได้ประมาณว่า
    • จบขอให้สนุก

    อ้างอิง

    https://ubuntu.com/security/livepatch

  • How to apache2 HTTP/2

    • วันนี้อัพเกรตเครื่อง licensing เป็น 20.04.1 เลยมาดูว่ามีอะไรที่ควรเปลี่ยนอีกบ้าง ก็มี HTTP/2 นี่ละ ออกมาหลายปีแล้วยังไม่ได้เริ่มใช้งาน เท่าที่ตรวจสอบเว็บเซิร์ฟเวอร์ฝั่ง windows เป็น http/2 เกือบหมดแล้ว

    https://thanwa.medium.com/http-2-คืออะไร-แตกต่างจาก-http-1-1-อย่างไร-5dfb14e46ae4

    HTTP/1.1 และ HTTP/2 ต่างกันอย่างไร
    • เริ่มได้
    • ตรวจสอบก่อนว่า server ใช้ http/2 หรือไม่ทำได้โดยใช้ web developer tool บน web browser เช่น Firefox กด F12
    Web Developer

    คลิกหัวข้อ Network ซึ่งในครั้งแรกจะไม่สามารถดูได้ว่าใช้ http/2 แล้วหรือไม่ ให้คลิกขวาดังรูป แล้วเลือก Protocol

    Web Developer

    จะได้เป็น

    HTTP/1.1

    จะเห็น http/1.1 ในช่อง Protocol ถ้าเป็น http/2 จะได้ดังภาพ

    HTTP/2
    • ขั้นตอนต่อไปนี้ทำบน Ubuntu 20.04.1 อาจใช้ได้กับ 18.04.x ด้วยเช่นกัน
    • เริ่มด้วยการเปิด module ของ apache2 ที่ชื่อ http2 ด้วยคำสั่ง
    sudo a2enmod http2
    • เมื่อตรวจสอบแฟ้ม /etc/apache2/mods-enabled/http2.conf (ด้วย editor ที่ชื่นชอบ) จะพบว่ามีข้อความต่อไปนี้อยู่แล้ว
    Protocols h2 h2c http/1.1
    • โดยปกติ Http/1 จะถูกเรียกใช้ก่อนเสมอ เว้นแต่ว่า web browser นั้นจะรองรับ http/2 แต่เราต้องการ http/2 ถูกเลือกก่อนจึงต้องกำหนดตามนั้น
    • แต่ web browser ก็มีการเลือก Protocol เองด้วยเพื่อเป็นการบังคับให้เลือก ตามลำดับของ server ให้ใส่ข้อความต่อไปนี้เพิ่มลงไป
    ProtocolsHonorOrder On

    *** จากการทดสอบพบว่า web browser สมัยใหม่เลือก http/2 ก่อนอยู่แล้ว ไม่จำเป็นต้องใส่ก็ได้ เพราะงั้นแค่เปิดดูแล้วก็ออกจากแฟ้ม

    • รีสตาร์ท apache2 ด้วยคำสั่ง
    sudo systemctl restart apache2
    • ตรวจสอบว่า เป็น http/2 แล้วหรือไม่ด้วยคำสั่ง
    curl -I --http2 -s https://domain.com/ | grep HTTP

    ได้ผลดังภาพ

    curl

    แปลว่า http/2 ทำงานแล้ว

    • ทีนี้เว็บเรามันทำด้วย mod_php ต้องเปลี่ยนมาใช้ PHP-FPM
    • ติดตั้ง php7.4-fpm เพิ่มด้วยคำสั่ง
    sudo apt install -y php7.4-fpm
    • ปิดการใช้งาน mod_php ด้วยคำสั่ง
    sudo a2dismod php7.4
    • ปิดการใช้งาน apache mpm_prefork ด้วยคำสั่ง
    sudo a2dismod mpm_prefork
    • หลังจากนั้นเปิด การทำงานของ mpm_event, proxy_fcgi และ setenvif
    sudo a2enmod mpm_event proxy_fcgi setenvif
    • เปิดการทำงานของ php7.4-fpm ด้วยคำสั่ง
    sudo systemctl start php7.4-fpm
    • ให้ php7.4-fpm ทำงานทุกครั้งที่รีสตาร์ท
    sudo systemctl enable php7.4-fpm
    • เปิดการทำงานของ php7.4-fpm ใน apache2
    sudo a2enconf php7.4-fpm
    • เริ่มการทำงานของ apache2 ใหม่
    sudo systemctl restart apache2
    • ทดสอบว่าเป็น http/2 แล้วด้วยคำสั่ง
    curl -I --http2 -s https://domain.com/ | grep HTTP

    ได้ผลดังภาพ

    • จริงๆ ตรวจสอบด้วย web browser ก็ได้ แต่อยากอวด command line
    • จบขอให้สนุก

    อ้างอิง

    https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/

    https://httpd.apache.org/docs/2.4/howto/http2.html

  • Windows Terminal (3)

    • ติดตั้ง WSL2 ก็แล้ว แต่ใช้แค่ bash ดูไม่ว้าววววว เลย ให้ดูตัวอย่างก่อนที่

    https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

    สวยงามอล่างฉ่าง
    • มาติดตั้ง zsh และ theme กัน
    • เริ่มจากติดตั้ง zsh
    sudo apt install zsh
    install zsh
    • ต่อด้วยคำสั่งต่อไปนี้เพื่อติดตั้ง ohmyzsh
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    • จากภาพจะมีการเปลี่ยน default shell ด้วยเปลี่ยนจาก bash เป็น zsh ฉะนั้นเมื่อเปิด wsl terminal ครั้งใดก็จะได้เป็น zsh shell ทุกครั้ง
    • สิ่งที่เพิ่มมาและมีความสำคัญมากคือ .oh-my-zsh และ .zshrc
    • เสร็จละง่าย!! แต่ theme ตั้งต้นอาจจะไม่ฉูดฉาด
    • แก้ไขแฟ้ม .zshrc ด้วย editor ที่ชื่นชอบ!
    • ดูชื่อ theme ต่างๆ ได้ที่ https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
    • มองหาคำว่า ZSH_THEME=”robbyrussell” สามารถเปลี่ยน robbyrussell เป็นอย่างอื่นได้เลย เช่น bira เปลี่ยนแล้ว save เมื่อออกมาอยู่ที่ prompt ให้พิมพ์
    . ./.zshrc
    • (อ่านว่า จุด-เว้นวรรค-จุด-สแลช-จุด-แซ่ด-เอส-เอช-อาร์-ซี)
    • หรือพิมพ์ว่า
    source .zshrc
    • ก็จะเปลี่ยนหน้าตาไปทันที ก่อนหน้านี้ต้องเคยติดตั้ง powerline font มาก่อนซึ่งในตอนที่ 1 ได้ให้ติดตั้งไปแล้ว จะได้ดังรูป
    • สวยแล้ว ทั้งนี้สวยแต่ละคนไม่เท่ากันก็อาจจะลองเปลี่ยนเป็นชื่ออื่นๆ ได้เลย หรือหากต้องการเขียนเองก็ทำได้ อ่านเอกสารเองนะจ๊ะ
    • เท่านี้ก่อนสำหรับ zsh shell
    • สำหรับ zsh สามาติดตั้งได้บน linux server แทบทุกดิสโทรเลยทีเดียว และโดยเฉพาะอย่างยิ่ง ubuntu หรือ debian ยังมี repository และ plugin เสริมต่างๆ ของ zsh อีกด้วย (ค่ายอื่นอาจจะมีแต่ไม่ได้ใช้งานมากเลยไม่ทราบนะครับ)
    • จบขอให้สนุก
    • ต้นฉบับ https://ohmyz.sh/
  • Windows Terminal (2)

    Q: วันก่อนติดตั้ง WSL2 แล้วอยากใช้งาน bash บน Windows Terminal ด้วยทำไง?

    A: กด แล้วเลือก Ubuntu 20.04 ไงล่ะ!!

    Q: ไม่อยากกดเอาแบบเปิดมาแล้วเป็น ubuntu เลยอ่ะ

    A: แก้ Settings คลิก เลือก Settings

    จะเป็นการเปิดการตั้งค่าต่างๆ ด้วย Text Editor ที่ชื่นชอบ

    เลื่อนลงมาดูเรื่อยๆ จะเจอว่ามี Ubuntu-20.04 อยู่

    สนใจบรรทัดที่เขียนว่า “guid”: ให้ copy ข้อความที่อยู่ภายใน “{ }” มาทั้งหมด จากตัวอย่างคือ 07b52e3e-de2c-5db4-bd2d-ba144ed6c273 แล้วให้เลื่อนจอขึ้นไปด้านบนจนเห็นบรรทัดที่มีข้อความว่า “defaultProfile”: แทนที่ข้อความที่อยู่ภายในเครื่องหมาย “{ }” ด้วยข้อความที่ copy ไว้

    เปลี่ยนเป็น

    แล้ว save ปิดแล้วเปิดใหม่ก็จะได้ Ubuntu-20.04 เป็นค่า default

    • จบขอให้สนุก
  • SSH:- no matching key exchange method found

    เดี๋ยวนี้ใน Windows 10 ก็มี ssh ให้ใช้งาน แต่พอใช้กับเซิร์ฟเวอร์รุ่นเก่าๆ ก็เข้าไม่ได้ซะงั้น ไปลอง ssh ฝั่ง Linux (WSL2) ก็ให้ผลเหมือนกันคือ!!!

    Linux
    Windows
    • ถ้าเป็นเมื่อก่อน วิ่งไปหา putty อย่างไว…. แต่ Windows อุตส่าห์ทำมาให้ใช้แล้วทั้งทีจะไม่ใช้ได้ยังไง
    • สิ่งที่ต้องตรวจสอบก่อนคือ man ssh_config สำหรับ Linux ฝั่ง client ว่ารองรับ ciphers และ kexalgorithms แบบไหนรองรับหรือไม่ ส่วนฝั่ง Windows 10 จะอิงตาม OpenBSD manual ซึ่งเหมือนกับ Linux แหละ
    KexAlgorithms
    Ciphers
    • สร้างแฟ้ม .ssh/config โดย
      • Linux ก็จะให้สร้างที่ /home/username/.ssh/
      • Windows ก็อยู่ที่ C:\Users\username\.ssh
    • สำหรับ error ว่า no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 ให้เพิ่มข้อความต่อไปนี้ลงในแฟ้ม .ssh/config โดย somhost.example.org เป็นชื่อและโดเมนเนมของ server เป้าหมาย
    Host somehost.example.org
    	KexAlgorithms +diffie-hellman-group1-sha1
    • สำหรับ error ว่า no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se ให้เลือกมา 1 cipher ที่ปรากฎใน error มาใส่ในแฟ้ม .ssh/config
    Host somehost.example.org
        Ciphers aes256-cbc
    • บาง server ต้องรวมทั้งสองอย่างเช่น
    Host somehost.example.org
        KexAlgorithms +diffie-hellman-group1-sha1
        Ciphers aes256-cbc
    • ถ้าไม่อยากสร้างแฟ้ม .ssh/config สามารถสั่งผ่าน command line ได้เลยเช่น
    ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 oracle@somehost.example.org

    หรือ ถ้ามี error 2 อย่าง

    ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes256-cbc oracle@somehost.example.org

    เมื่อสร้างแฟ้ม .ssh/config แล้วลอง ssh เข้าไปใหม่

    Linux
    Windows
  • Windows Subsystem for Linux Installation Guide for Windows 10

    เพื่อเป็นการไม่เสียเวลา เริ่ม

    • เปิด Powershell ด้วยสิทธิ์ของ Administrator แล้วพิมพ์คำสั่ง ต่อไปนี้เพื่อเปิดใช้งาน “Windows Subsystem for Linux” หรือ wsl โดยจะเป็นรุ่น 1 หรือ wsl1
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    wsl1
    • ปรับรุ่นให้เป็นรุ่น 2 โดย Windows 10 ที่ใช้งาน ต้องเป็น Windows 10 version 2004, Build 19041 1903, Build 18362 ขึ้นไปเท่านั้น
    • ตรวจสอบรุ่นของ Windows ด้วยคำสั่ง winver (start->run)
    winver
    • เปิดใช้งาน Virtual Machine Platform พิมพ์คำสั่งต่อไปนี้ ใน powershell ของ administrator
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    Virtual Machine Platform
    • restart เครื่องเพื่อให้การปรับรุ่น wsl1 เป็น wsl2 สมบูรณ์
    • ตั้งค่าให้ wsl2 เป็นค่าเริ่มต้นด้วยคำสั่ง
    wsl --set-default-version 2
    Set default wsl2
    • ซึ่งจะเจอข้อความตามภาพ ให้ไปดาวน์โหลด kernel ได้จาก https://aka.ms/wsl2kernel โหลดมาแล้วติดตั้งให้เรียบร้อย (Next technology)
    download kernel
    • สั่งคำสั่งเดิมอีกครั้งเพื่อตั้งค่าให้ wsl เป็นรุ่น 2 เป็นค่าเริ่มต้น
    Set default wsl2
    • สามารถดูรายละเอียดความแตกต่างของ wsl2 ได้ที่ https://aka.ms/wsl2
    • ติดตั้ง Linux ที่ต้องการจาก Microsoft Store หรือคลิกลิงค์ด้านล่างเพื่อเข้า Microsoft Store
    ubuntu 20.04
    • ติดตั้งเสร็จแล้วคลิก Launch ใน Microsoft Store
    • จะเป็นการเปิดหน้าของลินุกส์ขึ้นมาและให้ตั้งค่าต่างๆ username และ password
    Setup
    • ตั้งค่าเสร็จได้ดังภาพ
    Fin
    • ตั้งค่าลินุกส์ให้เป็น wsl2 ตรวจสอบว่าเป็นรุ่นไหนอยู่ด้วยคำสั่ง
    wsl --list --verbose
    check version
    • ซึ่งถ้าหากยังเป็นรุ่น 1 สามารถเปลี่ยนได้ด้วยคำสั่ง
    wsl --set-version <distribution name> <versionNumber>
    • โดยแทนที่ <distribution name> ด้วยชื่อเต็มที่ได้จากคำสั่ง wsl –list –verbose เช่น Ubuntu-20.04 และ <versionNumber> ด้วย 1 หรือ 2 ตามต้องการ
    • จบขอให้สนุก

    ต้นฉบับ

    https://docs.microsoft.com/en-us/windows/wsl/install-win10

  • Windows Terminal (1)

    เบื่อ cmd ใช้ Windows Terminal แทนกันดีกว่า… ให้ดูรูปก่อน

    สวยงามตระการตา!!!

    บางคนใช้แล้วอาจจะมีความสุข

    เริ่มได้

    • เหมาะสำหรับ Windows 10 version 1909 ขึ้นไป
    • ติดตั้ง Git
    • ติดตั้ง Windows Terminal จาก Microsoft Store หรือ จาก Github

    ถ้าหากติดตั้งจาก Github ต้องติดตั้ง Desktop Bridge VC++ v14 Redistributable Package ด้วย และโปรแกรมจะไม่อัพเดตตัวเองต้องโหลดมาปรับรุ่นเองทุกครั้ง

    ระวัง!!!
    • ติดตั้งแล้วเปิดใช้งานจะได้หน้าตาประมาณนี้
    • เราจะเปลี่ยนหน้าตากันเริ่มจากพิมพ์คำสั่งต่อไปนี้ (ต้องเชื่อมต่ออินเตอร์เน็ต)
    Install-Module posh-git -Scope CurrentUser
    Install-Module oh-my-posh -Scope CurrentUser

    Posh-Git เอาไว้แสดงข้อมูลของ Git ใน prompt
    Oh-My-Posh เป็น theme สวยๆ ของ powershell นั่นเอง

    • ต่อด้วยคำสั่ง
    Set-ExecutionPolicy Unrestricted -Scope CurrentUser
    • ตรวจสอบโฟลเดอร์สำหรับเก็บ Profile ของ PowerShell ด้วยคำสั่ง
    echo $PROFILE
    • สร้างแฟ้ม $PROFILE (ไฟล์ขื่อ Microsoft.PowerShell_profile.ps1 ในโฟลเดอร์ C:\Users\haruo\OneDrive\Documents\WindowsPowerShell\) โดยมีข้อความต่อไปนี้
    Import-Module posh-git
    Import-Module oh-my-posh
    Set-Theme Paradox
    • ปิดแล้วเปิดใหม่ก็จะได้ดังภาพ
    • จะเห็นว่ามีเครื่องหมาย  อยู่ที่ prompt ด้วยจำเป็นต้องลงฟอนท์เพิ่มเติมนั่นคือฟอนท์ Powerline ซึ่งสามารถติดตั้งโดยโหลด Cascadia Code มาติดตั้ง
    • เมื่อติดตั้งแล้วให้เปลี่ยนฟอนท์ของ Windows Terminal โดยคลิก แล้วเลือก Settings
    • จะเป็นการเปิดการตั้งค่า default ที่เรียกใช้งานอยู่ ด้วย default text editor
    • เลื่อน cursor ลงมาประมาณบรรทัดที่ 38 แล้วกด enter เพิ่มข้อความว่า
    "fontFace": "Cascadia Code PL",
    "fontSize": 10,
    • save แล้วไปดูผลได้เลย
    • สวยแล้ว!
    • จบขอให้สนุก
    • Oh-My-Posh ยังมี Theme อื่นๆ ลองเข้าไปเลือกดูได้
    • เปลี่ยน theme ได้โดยแก้แฟ้ม $PROFILE เปลี่ยนจาก Paradox เป็นอย่างอื่นเช่น Darkblood เป็นต้น save ปิดแล้วเปิด Windows Terminal ใหม่
  • Change BYTE to CHAR for all columns, all tables

    เมื่อมีการสร้างฟิลด์ให้มีชนิดเป็น char หรือ varchar2 จริงๆ แล้ว มันมีหน่วยย่อยไปอีกว่าจะให้เป็น Byte หรือ Char ซึ่งโดยปกติจะเป็น Byte สามารถเปลี่ยนค่า default นี้ได้ด้วยการเปลี่ยนตัวแปรของระบบตัวแปรชื่อ nls_length_semantics

    https://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams127.htm#REFRN10124

    ดูรายละเอียดเพิ่มเติม

    ทีนี้ Byte กับ Char มันสำคัญอย่างไร…สำคัญเรื่องการแปลง Character Set เช่น จาก TH8ASCII เป็น AL32UTF8 จากข้อมูลเดิม 1 ตัวอักษรเท่ากับ 1Byte สำหรับ TH8ASCII และ 3Byte สำหรับ AL32UTF8 ทำให้เมื่อเราสร้างฟิลด์ ตอนมี Character set บน TH8ASCII ชนิดของข้อมูลเป็น varchar2 มีขนาด 3Byte ถ้าจะนำข้อมูลเข้าอีกฐานข้อมูลที่มี Character Set เป็น AL32UTF8 จะนำเข้าไม่ได้เพราะขนาดเกินจำนวน Byte ที่สร้างคือกลายเป็น 9Byte ต้องกลับไปเปลี่ยนต้นทางจากหน่วย Byte เป็น Char คือเก็บเป็นตัวอักษรแทน

    ทีนี้เราจากสร้างสคริปต์เพื่อ สร้างสคริปต์ อีกที… ด้วยคำสั่ง (สคริปต์ในตัวอย่างนี้จะเป็นการสร้างจาก Username SCOTT)

    SELECT 'alter table '||owner||'.'|| table_name ||
           ' modify '||column_name||' varchar2('|| 
           data_length ||' CHAR); '
      FROM all_tab_columns
     WHERE data_type = 'VARCHAR2'
       AND char_used = 'B'
       and owner in ('SCOTT')
    ;

    เมื่อสั่งสคริปต์ทำงานจะได้ผลลัพธ์ประมาณว่า

    alter table

    ทีนี้จากสคริปต์ข้างต้น จะดึงข้อมูลของ Table และ View มาทั้งหมดทำให้เมื่อได้สคริปต์ไปแล้วสั่งทำงานจะมี error ต้องกรองเอา view ออก

    error

    เปลี่ยนสคริปต์ใหม่เป็น

    select 'alter table '||all_objects.OWNER||'.'||'"'||all_objects.OBJECT_NAME ||'"'||' modify '||'("'||column_name||'"'||' varchar2('|| ALL_TAB_COLUMNS.DATA_LENGTH ||' CHAR)); '
    from   all_objects,all_tab_columns
    where  all_objects.object_type in ('TABLE')
    and all_tab_columns.data_type = 'VARCHAR2'
    AND all_tab_columns.char_used = 'B'
    and object_name not in (select all_objects.object_name from all_objects where all_objects.object_type = 'VIEW')
    and all_objects.object_name=all_tab_columns.table_name
    and all_objects.owner in ('SCOTT');

    เมื่อสั่งรันสคริปต์จะได้ผลลัพธ์

    alter script

    ก็จะสามารถนำสคริปต์ที่ได้ไปสั่งรันได้ปกติ

    Complete

    หลังจากเปลี่ยนข้อมูล TH8ASCII จาก Byte เป็น Char แล้วสามารถนำเข้าใน AL32UTF8 ได้เลย

    จบขอให้สนุก

    ต้นฉบับ

    http://webgeest.blogspot.com/2014/12/change-byte-to-char-for-all-columns-all.html

  • How to create LVM volume group and logical volume

    LVM ย่อมาจาก Logical Volume Manager ความสามารถของ LVM คือสามารถสร้าง logical partition ขยายไปบนฮาร์ดดิสก์หลายๆ ลูกได้ ขั้นตอนต่อไปนี้เป็นขั้นตอนที่ทำบน CentOS หรือ Oracle Linux หรือ ค่าย Redhat Enterprise Linux ส่วนฝั่ง Debian ก็สามารถใช้คำสั่งเดียวกันทำงานเหมือนกัน แต่อาจจะต้องติดตั้งโปรแกรมเพิ่ม

    โดยขนาดสูงสุดที่ LVM ทำได้ขึ้นกับชนิดของ CPU และ Kernel ที่ใช้งาน

    • สำหรับ Kernel 2.4 บน CPU 32-Bit มีขนาดได้ไม่เกิน 2TB
    • สำหรับ Kernel 2.6 บน CPU 32-Bit มีขนาดได้ไม่เกิน 16TB
    • สำหรับ Kernel 2.6 บน CPU 64-Bit มีขนาดได้ไม่เกิน 8EB
    • ป้จจุบัน Kernel รุ่น ? CPU 64-Bit ยังไม่มีคำตอบ

    แต่เมื่อ format ให้มีระบบไฟล์แบบ ext4 จะสร้างพาทิชั่นได้ไม่เกิน 1EB เท่านั้น

    ขึ้นกับ file system ใช้งานด้วย
    • เริ่มได้
    • เข้าระบบด้วยบัญชีผู้ใช้ที่มีสิทธิ์ของ root ซึ่งอาจจะเป็น root เอง หรือ user ที่อยู่ในกลุ่ม wheel หากเข้าด้วยบัญชีผู้ใช้อื่นๆ ที่ไม่ใช่ root ให้สั่งคำสั่ง
    su -
    ตามด้วยรหัสผ่านของ root

    หรือ

    sudo -i
    ตามด้วยรหัสผ่านของผู้ใช้ที่เรียกคำสั่งนี้

    จึงจะสามารถทำคำสั่งต่อไปได้

    • ตรวจสอบว่ามีฮาร์ดดิสก์ลูกไหนถูกใช้งานอยู่บ้างด้วยคำสั่ง
    df -h
    • ได้ผลลัพธ์ประมาณดังรูป
    df
    df
    • จากภาพข้างต้น /dev/sda ถูกใช้งานอยู่แล้วคือ /dev/sda1 และ /dev/sda2 ให้ตรวจสอบว่ามีดิสก์ลูกอื่นอีกหรือไม่ด้วยคำสั่ง
    fdisk -l|grep /dev
    fdsik
    fdisk
    • จะเห็นว่ามี /dev/sdb, /dev/sdc และ /dev/sdd ที่ว่างอยู่
    • จะใช้ /dev/sdb
    • เริ่มจากสร้างพื้นที่สำหรับทำ LVM ก่อนด้วยคำสั่ง
    fdisk /dev/sdb

    กด n ตามด้วย p ตามด้วย 1 แล้ว enter 2 ครั้ง

    กด t แล้วพิมพ์ 8e แล้วกด w ดังภาพ

    fdisk
    fdisk
    • สร้าง LVM physical volume โดยใช้คำสั่ง pvcreate
    pvcreate /dev/sdb1
    • สร้าง LVM volume group ชื่อ vg_u01
    vgcreate vg_u01 /dev/sdb1
    • สร้าง LVM logical volume group ชื่อ lv_u01 ใน volume group ที่ชื่อ vg_u01 โดยให้มีขนาดทั้งหมดที่มีอยู่ใน vg_u01
    lvcreate -n lv_u01 -l 100%FREE vg_u01

    ดังภาพ

    pvcreate, vgcreate, lvcreate
    pvcreate, vgcreate, lvcreate
    • ดูสถานะว่า LVM สร้างเสร็จแล้วด้วยคำสั่ง
     pvscan
    pvscan
    • ดูสถานะว่ามี Physical Volume เท่าไหร่ ด้วยคำสั่ง
    pvdisplay
    pvdisplay
    • ก่อนใช้งานอย่าลืม format โดย device ที่จะต้อง format จะกลายเป็น /dev/vg_u01/lv_u01 ให้มีชื่อว่า u01
    mkfs.ext4 -L u01 /dev/vg_u01/lv_u01
    mkfs.ext4
    • สร้าง mount point ให้กับ lv_u01
    mkdir /u01
    • mount lv_u01 เข้ากับ /u01
    mount LABEL=u01 /u01
    • ตรวจสอบว่า /u01 ถูกเรียกใช้งานแล้ว ใส่ -h เพื่อให้ระบุขนาดเป็น GMK
    df -h
    mkdir, mount, df
    • สั่งให้ mount อัตโนมัติทุกครั้งที่บูตเครื่องเพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/fstab
    LABEL=u01       /u01    ext4    defaults 0 0
    fstab
    • จบขอให้สนุก
    • อาจจะยังไม่เห็นภาพว่าแล้วมันกระจายไปดิสก์หลายๆ ลูกได้อย่างไร อธิบายง่ายๆ /u01 สามารถอยู่ได้บนฮาร์ดดิสก์มากกว่าหนึ่งลูก โดยเห็นเป็นพื้นที่เดียวกันคือ /u01 ซึ่งอาจจะประกอบไปด้วย /dev/sdb1, /dev/sdc1 ใน vg_u01
    • ยังมีเรื่องการเพิ่มขนาดภายหลังให้ดูที่ http://portal.psu.ac.th/blog/howto/6281 ไปพลางก่อน