และในที่สุดเราก็เจอปัญหาจากการที่ Container ใช้งาน Storage จนเต็มแล้วเราเองก็ขยายมันไม่เป็นเลยทำให้ต้องไปหาข้อมูลเพิ่ม
แล้วนำมาเขียนเก็บไว้ในตอนนี้ เรื่องของ Storage Pool กับ Linux Container
เราคิดว่า Storage Pool นั้นสำคัญเพราะเป็นพื้นที่ใช้งานหลักของ Container เลย และบางส่วนก็จะต่อออกไปที่ Host เพิ่มด้วย
Storage จะติดอยู่กับ Profile หนึ่งตัวในตอนที่เรา LXD Init ครั้งแรกนั้นเอง จากที่หาข้อมูล จะมีการแนะนำว่าให้ใช้ btrfs และ zsf
"Recommended setup : The two best options for use with LXD are ZFS and btrfs."
อ้างอิงจาก : https://lxd.readthedocs.io/en/latest/storage/
ข้อมูลเพิ่มเติม : https://medium.com/life-at-dek-d/
เราเคยใช้อยู่ 2 ตัวคือ btrfs และ zfs (ต้องลง zfsutils_linux ก่อน)
เราจะเขียนการใช้งานส่วนของ zfs ก่อน แล้วตัวอื่นถ้าใช้พอเป็นแล้วจะมาเขียนอีกที
การใช้งาน ZFS Pool
ในการ Initial LXD ครั้งแรกเพื่อสร้าง Profile ถ้าเราไม่ได้ติดตั้ง zfsutils_linux ก่อน เวลาสร้าง Storage Poolเราจะไม่สามารถเลือกใช้งาน zfs ได้ งั้นก็ไปติดตั้งก่อน
sudo apt install zfsutils-linux
เมื่อทำการติดตั้งเสร็จแล้วตอนที่เราทำการ Initial LXD ก็สามารถเลือก Storage Pool เป็นแบบ zfs ได้แล้ว
ต่อไปเป็นตัวอย่างที่เราทำการสร้าง Storage Pool ขึ้นมาใหม่ เมื่อเราติดตั้ง zfsutils_linux เราจะสามารถใช้ zpool ได้
# คำสั่งใช้ดู pool ที่สร้างไว้ sudo zpool list # คำสั่งที่ใช้สร้าง pool ตรง path-file ใช้ path เต็มเริ่มจาก root path (/) sudo zpool create <pool-name> <path-file> # คำสั่งใช้ขยายขนาดของ pool -e หมายถึง expand sudo zpool online -e <pool-name> <path-file>
ลองสร้าง Pool ชื่อ Standard_Pool
# สร้าง Directory รองรับไว้ก่อน cd / sudo mkdir /lxd sudo mkdir /lxd/pool # สร้างไฟล์ขนาด 10G ที่ /lxd/pool/standard sudo truncate -s 10G /lxd/pool/standard # แสดงข้อมูลไฟล์ที่สร้าง และแสดงขนาดของไฟล์ ls /lxd/pool/ -lsh ## เราจะเห็นไฟล์ และขนาดไฟล์ตามนี้ sarankon@ubuntu:~$ ls /lxd/pool/ -lsh total 0 0 -rw-r--r-- 1 root root 10G Aug 3 00:15 standard # แสดงข้อมูล Storage Pool ที่มีอยู่ sudo zpool list ## ตอนนี้ยังไม่มีข้อมูล sarankon@ubuntu:~$ sudo zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT # สร้าง Storage Pool sudo zpool create standard_pool /lxd/pool/standard ## สร้าง Storage Pool แล้วดูข้อมูล Storage Pool อีกครั้ง sarankon@ubuntu:~$ sudo zpool create standard_pool /lxd/pool/standard sarankon@ubuntu:~$ sudo zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT standard_pool 9.94G 272K 9.94G - 0% 0% 1.00x ONLINE - # เมื่อเราใช้งานไปสักพักแล้วต้องการขยายก็ทำตามนี้ # เพิ่มขนาดให้ไฟล์ /lxd/pool/standard sudo truncate -s +5G /lxd/pool/standard ## เมื่อทำการเพิ่มขนาด และให้แสดงข้อมูลแล้วจะพบว่าขนาดไฟล์ใหญ่ขึ้นตามต้องการแล้ว sarankon@ubuntu:~$ sudo truncate -s +5G /lxd/pool/standard sarankon@ubuntu:~$ ls /lxd/pool/ -lsh total 1.3M 1.3M -rw-r--r-- 1 root root 15G Aug 3 00:23 standard ## แต่เมื่อเราดูขนาดจาก Storage Pool จะพบว่ามันไม่ขยาย sarankon@ubuntu:~$ sudo zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT standard_pool 9.94G 272K 9.94G - 0% 0% 1.00x ONLINE - # สั่งให้ Standard_Pool ขยายขึ้น sudo zpool online -e standard_pool /lxd/pool/standard ## สั่งให้ Standard_Pool ขยายแล้วลองตรวจสอบข้อมูลพบว่าขยายเรียบร้อยแล้ว sarankon@ubuntu:~$ sudo zpool online -e standard_pool /lxd/pool/standard sarankon@ubuntu:~$ sudo zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT standard_pool 14.9G 363K 14.9G - 0% 0% 1.00x ONLINE - ### เราสามารถขยายขนาดของ Pool ได้โดยที่ Container ยังทำงานอยู่
เมื่อเราได้ Pool แล้วเราจะยังใช้งาน Pool นี้ไม่ได้จนกว่าจะบอกให้ LXD รู้ก่อนว่าเราจะใช้ Storage Pool นี้
เราใช้คำสั่ง lxc storage ในการจัดการ Storage สำหรับ Container เอาไปใช้งาน
# แสดงรายการ Storage Pool lxc storage list # แสดงข้อมูล Storage Pool lxc storage show <pool-name> lxc storage info <pool-name> # สร้างและลบ Storage Pool ตรง pool-name เป็นชื่อที่เราตั้งเอง lxc storage create <pool-name> <type> source=<pool-name-in-zpool-list> lxc storage delete <pool-name> ## แสดงรายการ Storage Pool ที่ Container เอาไปใช้งานได้ sarankon@ubuntu:~$ lxc storage list +--------------+-------------+--------+-------------------------------------+---------+ | NAME | DESCRIPTION | DRIVER | SOURCE | USED BY | +--------------+-------------+--------+-------------------------------------+---------+ | default | | zfs | /var/lib/lxd/disks/pool_default.img | 0 | +--------------+-------------+--------+-------------------------------------+---------+ ## ทำการสร้าง Storage Pool sarankon@ubuntu:~$ lxc storage create standard_pool zfs source=standard_pool Storage pool standard_pool created ## แสดงรายการ Storage Pool อีกครั้ง sarankon@ubuntu:~$ lxc storage list +---------------+-------------+--------+-------------------------------------+---------+ | NAME | DESCRIPTION | DRIVER | SOURCE | USED BY | +---------------+-------------+--------+-------------------------------------+---------+ | default | | zfs | /var/lib/lxd/disks/pool_default.img | 0 | +---------------+-------------+--------+-------------------------------------+---------+ | standard_pool | | zfs | standard_pool | 1 | +---------------+-------------+--------+-------------------------------------+---------+ ## เท่านี้ก็เรียบร้อยสามารถเอาไปใช้งานได้เลย
เราจะเอาไปใส่ใน Profile ก็ได้ หรือจะบอกตอนสร้าง Container ก็ได้ว่าให้ใช้ Storage Pool อะไร
# ตัวอย่าง ก็ใส่ --storage <pool-name> ลงไป lxc launch ubuntu/18.04 ubuntu --storage standard_pool # เมื่อสร้างเสร็จแล้วใช้คำสั่ง lxc storage info standard_pool จะเห็นว่า container ไหนใช้งานอยู๋ sarankon@ubuntu:~$ lxc storage info standard_pool info: description: "" driver: zfs name: standard_pool space used: 444.73MB total space: 15.09GB used by: containers: - ubuntu images: - de52e3b19d0f1a0d129ade357ce86a77f7bd18ecebbdfe6528104be169392979
ไม่มีความคิดเห็น:
แสดงความคิดเห็น