Linux / lab

Lộ trình tự học · 40 phiên · 2 tiếng mỗi phiên

Từ user thành thạo đến systems engineer

Không đọc sách tuyến tính. Mỗi phase có một câu hỏi cần trả lời và một thứ chạy được phải làm ra. Sách là tra cứu, man page là nguồn chính, và mọi thứ chạy trên VM được phép phá.

Nhịp~4h/tuần · ~20 tuần
Tỉ lệ1 phần đọc, 2 phần lab
Host labbare metal, có VT-x
GuestUbuntu 24.04 noble

Nền giả định: dùng Linux hằng ngày, đã vận hành server thật và chạy container ở môi trường có người dùng. Nên lộ trình bỏ hẳn phần nhập môn và bắt đầu từ chỗ mà việc vận hành hằng ngày không dạy được — tầng dưới của những thứ mình đã dùng.

Sáu phase

  • Phase 0 Dựng lab P1–P2

    Có môi trường được phép phá, tái tạo trong dưới 2 phút. libvirt/virt-install, cloud image, serial console, snapshot.

    Mốc: M-L0 — lab VM dựng lại bằng một lệnh

  • Phase 1 Process, file descriptor, signal P3–P8

    Tầng nền. fork/exec/wait, zombie và orphan, bảng fd → open file description → inode, process group và controlling terminal, signal trong shutdown container.

    Mốc: M-L1 — đọc được /proc/<pid>/, giải thích fd và signal

  • Phase 2 Memory, page cache, OOM P9–P13

    Trả lời cho "máy còn RAM mà vẫn chết" và "disk đầy nhưng xoá file không giải phóng". RSS vs PSS, writeback, OOM killer, cgroup v2 memory controller.

    Mốc: M-L2 — phân tích một vụ OOM từ dmesg

  • Phase 3 Filesystem, mount, overlayfs P14–P18

    Trả lời cho dạng sự cố kinh điển: container update xong thì dữ liệu biến mất. VFS và inode, mount propagation, overlayfs — chính là cơ chế image layer của Docker — và LVM.

    Mốc: M-L3 — vẽ đường đi từ file trong container tới vị trí thật trên host

  • Phase 4 Namespace, cgroup, container tự viết P19–P25

    Phase ROI cao nhất: sau đây Docker Swarm không còn là hộp đen. 8 namespace, pivot_root, cgroup v2, capabilities và seccomp.

    Mốc: M-L4 — container dưới 200 dòng, có cgroup limit, không dùng Docker

  • Phase 5 Network stack P26–P32

    Giải thích overlay network của Swarm. netns và veth, netfilter hook, conntrack và NAT, VXLAN cùng bài toán MTU.

    Mốc: M-L5 — dựng tay overlay network qua VXLAN

  • Phase 6 Observability & performance P33–P40

    Phase tạo khác biệt nghề nghiệp lớn nhất. USE method, perf và flame graph, bpftrace, và vì sao average vô dụng.

    Mốc: M-L6 — một bài phân tích hiệu năng hoàn chỉnh trên một hệ thống thật

Năm nguyên tắc

  1. Mỗi phase kết thúc bằng một thứ chạy được, không phải một tập note.
  2. Không test trên server production. Mọi thứ chạy trên VM throwaway.
  3. Gặp lệnh lạ → đọc man section 2/5/7 trước khi đọc blog. man 7 namespaces, man 5 proc, man 2 clone là tài liệu chất lượng cao nhất và luôn đúng version.
  4. Note theo dạng câu hỏi → thí nghiệm → kết quả, không phải tóm tắt sách.
  5. Không giải thích được một khái niệm bằng lời trong 2 phút → chưa nắm, quay lại làm lab.
Về cách soạn giáo trình

Mỗi phiên là một sổ tay: cơ chế bên dưới trước, rồi việc cần làm, rồi tiêu chí nghiệm thu. Chuỗi lệnh đầy đủ có, nhưng gập lại sau spoiler — mở ra sau khi đã tự thử, hoặc khi kẹt quá lâu. Đọc xong mà chỉ copy-paste được thì phiên đó coi như bỏ.

Nguồn chính

man-pages và Documentation/ của kernel là nguồn bắt buộc, không phải nguồn phụ. Sách dùng để tra theo chương: The Linux Programming Interface cho Phase 1–5, Systems Performance (2nd ed) cho Phase 6. Bám thêm blog Julia Evans và LWN.

Mọi khẳng định kỹ thuật trên site này đối chiếu tài liệu upstream. Chỗ nào lệch với bản soạn ban đầu thì được ghi lại ở Ghi chú thay vì sửa lặng lẽ.