0
0
Lập trình
Admin Team
Admin Teamtechmely

Cơ Bản về Linux cho Kỹ Sư Cloud và DevOps

Đăng vào 6 tháng trước

• 8 phút đọc

Giới thiệu

Linux là một hệ điều hành mã nguồn mở giống như Unix, phục vụ như nền tảng cho nhiều phiên bản Linux khác nhau. Với sự ổn định, bảo mật và linh hoạt, Linux được sử dụng rộng rãi trong DevOps, Cloud, và máy chủ.

Tại sao Linux lại phổ biến?

  1. Mã nguồn mở: Miễn phí để sử dụng và sửa đổi.
  2. Đa người dùng & Đa nhiệm: Hỗ trợ nhiều người dùng và quy trình cùng lúc.
  3. Bảo mật & Ổn định: An ninh mạnh mẽ và hiếm khi gặp sự cố.
  4. Tùy biến: Có thể được sửa đổi để phù hợp với nhu cầu khác nhau.
  5. Hỗ trợ dòng lệnh: Giao diện dòng lệnh mạnh mẽ cho tự động hóa và lập kịch bản.

Nơi sử dụng Linux?

  • Chạy hầu hết các máy chủ web.
  • Được sử dụng cho lập trình và tự động hóa.
  • Thích hợp cho hacking đạo đức và kiểm tra bảo mật.
  • Được sử dụng trong thiết bị thông minh và IoT.

Nhân Linux

Nhân là thành phần cốt lõi của Linux, đóng vai trò là cầu nối giữa phần cứng và phần mềm, quản lý tài nguyên hệ thống như CPU, bộ nhớ và thiết bị.

Chức năng chính:

  • Quản lý quy trình – Kiểm soát các ứng dụng đang chạy.
  • Quản lý bộ nhớ – Phân bổ RAM một cách hiệu quả.
  • Quản lý thiết bị – Kết nối phần cứng như USB, bàn phím và GPU.
  • Quản lý hệ thống tệp – Xử lý việc lưu trữ và truy xuất dữ liệu.
  • Bảo mật & Mạng – Cung cấp bảo vệ hệ thống và giao tiếp mạng.

Quy trình khởi động Linux

Khi một hệ thống Linux được bật, một loạt các bước xảy ra. Mỗi bước đảm bảo rằng hệ thống hoạt động và ở trạng thái sử dụng được.

Không gian nhân và không gian người dùng

Không gian nhân

Không gian nhân là khu vực dành riêng cho hệ điều hành chạy ở chế độ tin cậy cao.

  1. Chạy ở chế độ đặc quyền (ring 0).
  2. Tương tác trực tiếp với phần cứng CPU, bộ nhớ, thiết bị I/O.
    • Xử lý các cuộc gọi hệ thống, quản lý bộ nhớ và lập lịch trình quy trình.
  3. Bao gồm các mô-đun nhân, trình điều khiển thiết bị và dịch vụ hệ thống.
  4. Mã không gian nhân thực thi trong một môi trường được bảo vệ và cách ly để đảm bảo ổn định, bảo mật, và kiểm soát tài nguyên hệ thống.

Ví dụ: Mã nhân & trình điều khiển thiết bị, Lập lịch trình quy trình và Xử lý cuộc gọi hệ thống.

Không gian người dùng

Dùng để chạy ứng dụng người dùng mà không có quyền truy cập trực tiếp vào phần cứng.

  1. Chạy ở chế độ không đặc quyền (ring 3).
  2. Không thể truy cập trực tiếp phần cứng (phải yêu cầu nhân qua các cuộc gọi hệ thống).
  3. Cung cấp môi trường thực thi an toàn cho các ứng dụng.
  4. Nếu một ứng dụng gặp sự cố, nó sẽ không ảnh hưởng đến hệ điều hành.

Ví dụ: Trình duyệt web, trình soạn thảo văn bản, trình phát media, công cụ dòng lệnh, chương trình không gian người dùng tương tác với nhân.

Sự khác biệt chính

Tính năng Không gian nhân Không gian người dùng
Chế độ truy cập Đặc quyền (Ring 0) Không đặc quyền (Ring 3)
Truy cập HW trực tiếp Không
Tác động đến ổn định Một sự cố có thể làm sập hệ thống Một sự cố chỉ ảnh hưởng đến ứng dụng
Các thành phần ví dụ Nhân, trình điều khiển, cuộc gọi hệ thống Ứng dụng, shell, thư viện

Linux Desktop vs. Linux Server

Tổng quan

Các bản phân phối Linux có sẵn cho cả máy tính để bàn và máy chủ. Mặc dù chúng chia sẻ cùng một nhân, nhưng được tối ưu hóa cho các trường hợp sử dụng khác nhau.

Tính năng Linux Desktop Linux Server
Mục đích Thiết kế cho sử dụng cá nhân, năng suất, đa phương tiện Tối ưu hóa cho dịch vụ lưu trữ, cơ sở dữ liệu và mạng
GUI Có giao diện đồ họa (GNOME, KDE, v.v.) Thường không có GUI (dựa trên CLI) cho hiệu suất và bảo mật
Hiệu suất Tối ưu hóa cho tương tác người dùng, đa nhiệm Tối ưu hóa cho ổn định, thời gian hoạt động, và hiệu quả tài nguyên
Phần mềm Bao gồm ứng dụng máy tính để bàn (trình duyệt, bộ ứng dụng văn phòng, trình phát media) Bao gồm phần mềm máy chủ (Apache, MySQL, Docker, Kubernetes)
Bảo mật Bảo mật tập trung vào người dùng, tự động cập nhật Bảo mật cứng, dịch vụ không cần thiết tối thiểu
Quản lý năng lượng Ngủ, hibernate, tối ưu hóa pin Luôn bật để đảm bảo độ tin cậy và thời gian hoạt động
Phần cứng Hỗ trợ phần cứng tiêu dùng (GPU, Wi-Fi, Bluetooth) Hỗ trợ phần cứng doanh nghiệp (RAID, RAM ECC, hoạt động không có đầu)

Hệ thống tệp và phân cấp của Linux

Thư mục Mục đích
/ Thư mục gốc. Tất cả cấu trúc hệ thống tệp bắt đầu từ đây.
/bin/ Tập tin nhị phân lệnh người dùng cần thiết cho hoạt động hệ thống trong chế độ người dùng đơn.
/boot/ Chứa các tập tin cần thiết để khởi động hệ thống, bao gồm nhân Linux và cấu hình bootloader (như GRUB).
/dev/ Tập tin thiết bị đại diện cho phần cứng (ví dụ: /dev/sda, /dev/tty).
/etc/ Tập tin cấu hình cụ thể cho máy chủ (ví dụ: cài đặt mạng, dịch vụ, người dùng).
/home/ Thư mục chính cho người dùng thông thường (ví dụ: /home/alice, /home/bob).
/lib/ Thư viện chia sẻ và mô-đun nhân cần thiết cho các nhị phân trong /bin//sbin/.
/media/ Điểm gắn cho phương tiện có thể tháo rời (USB, CD, v.v.).
/mnt/ Điểm gắn tạm thời cho việc gắn kết hệ thống tệp thủ công.
/opt/ Gói phần mềm tùy chọn và phần mềm ứng dụng bổ sung.
/root/ Thư mục chính cho root (siêu người dùng).
/sbin/ Nhị phân hệ thống cần thiết (ví dụ: fsck, reboot) chủ yếu được sử dụng cho quản trị hệ thống.
/srv/ Dữ liệu cho các dịch vụ do hệ thống cung cấp (ví dụ: dữ liệu máy chủ web, dữ liệu FTP).
/tmp/ Tập tin tạm thời được tạo bởi các ứng dụng; thường bị xóa khi khởi động lại.
/usr/ Phân cấp thứ hai cho dữ liệu người dùng chỉ đọc; chứa hầu hết các lệnh người dùng, thư viện, tài liệu và ứng dụng.
/usr/bin/ Nhị phân người dùng không cần thiết (đa số các lệnh người dùng).
/usr/lib/ Thư viện cho các chương trình nằm trong /usr/bin//usr/sbin/.
/usr/include/ Tập tin tiêu đề cho phát triển.
/usr/sbin/ Nhị phân quản trị hệ thống không cần thiết.
/var/ Tập tin biến - nội dung dự kiến sẽ thay đổi thường xuyên (nhật ký, tập tin spool, bộ nhớ cache).
/var/log/ Tập tin nhật ký hệ thống (ví dụ: /var/log/syslog, /var/log/auth.log).
/var/cache/ Dữ liệu cache từ các ứng dụng.
/var/spool/ Dữ liệu đang chờ xử lý (ví dụ: công việc in, hàng đợi mail).

Quản lý gói phân phối

Hệ thống quản lý gói cho phép chúng ta đơn giản hóa quy trình cài đặt, nâng cấp và gỡ bỏ các gói phần mềm.

Chúng ta biết rằng trong Windows, chúng ta có thể cài đặt phần mềm bằng cách nhấp đúp vào tệp .exe, nhưng trong Linux, chúng ta phải cài đặt phần mềm thông qua các gói.

Gói Linux:

Một gói Linux là một tệp nén chứa phần mềm, thư viện và cấu hình cần thiết cho việc cài đặt trên hệ thống Linux.

Các loại gói Linux:

  • Dựa trên Debian (.deb) – Sử dụng trong Ubuntu, Debian. Được quản lý bởi apt/dpkg (Advanced Package Tool).
  • Dựa trên Red Hat (.rpm) – Sử dụng trong CentOS, Fedora. Được quản lý bởi yum/dnf/rpm (Yellowdog Updater Modified).
  • Dựa trên Arch (.pkg.tar.zst) – Sử dụng trong Arch Linux và được quản lý bởi pacman.

Sự khác biệt giữa APT và APT GET

Trong hệ thống dựa trên Debian, chúng ta có cả công cụ quản lý gói apt và apt-get.

APT GET: Trong nhiều năm, đây là công cụ tiêu chuẩn cho quản lý gói. Tuy nhiên, nó có một số hạn chế, chẳng hạn như không có chỉ báo tiến độ tích hợp và khả năng tải xuống song song.

APT: APT hiện là công cụ quản lý gói được sử dụng nhiều nhất cho các hệ thống dựa trên Debian. Nó được xây dựng dựa trên các chức năng của apt-get nhưng tinh vi hơn và bao gồm nhiều chức năng hơn như chỉ báo tiến độ tích hợp và khả năng tải xuống song song.

Sự khác biệt giữa APT và DPKG

DPKG:

dpkg là công cụ cấp thấp được sử dụng để cài đặt, gỡ bỏ và quản lý các gói .deb trên các hệ thống dựa trên Debian. Tuy nhiên, nó có một số hạn chế. Ví dụ, nó không tự động xử lý phụ thuộc hoặc lấy gói từ các kho trực tuyến.

APT:

apt là công cụ quản lý gói được sử dụng nhiều nhất cho các hệ thống dựa trên Debian. Nó được xây dựng dựa trên dpkg nhưng cung cấp các tính năng nâng cao hơn như giải quyết phụ thuộc tự động, truy cập kho trực tuyến, chỉ báo tiến độ tích hợp và khả năng tải xuống song song.

Shell là gì?

Shell là một giao diện dòng lệnh cho phép người dùng tương tác với hệ điều hành bằng cách thực thi các lệnh.

Shell cho phép chúng ta đăng nhập vào các máy chủ hoặc hệ thống cục bộ hoặc từ xa. Cả hai chế độ đồ họa và chế độ văn bản đều được hỗ trợ.

Dưới đây là một số công cụ phổ biến cho việc đăng nhập và quản lý từ xa trong Linux:

  1. MobaXterm
  2. OpenSSH
  3. PuTTY
  4. Terminator
  5. Cockpit
  6. Ansible

Kết nối SSH vào shell

Đối với các phiên thực hành này, chúng ta sẽ sử dụng MobaXterm và terminal mặc định làm công cụ đăng nhập từ xa. Sau khi cài đặt Ubuntu Server trên VirtualBox, chúng ta có thể SSH vào máy chủ đó. Đầu tiên, chúng ta cần kiểm tra địa chỉ IP của máy chủ Ubuntu bằng lệnh sau:

Terminal:

Kiểm tra IP của VM/Instance.

Copy
ip a

Chạy lệnh này để thiết lập đăng nhập từ xa SSH:

Copy
ssh <tên người dùng>@<địa chỉ IP>
ssh -i <vị trí tệp .pem> <tên người dùng>@<địa chỉ IP>

MobaXterm:

  1. Nhấp vào nút phiên
  2. Sau đó nhấp vào nút SSH
  3. Nhập địa chỉ IP của máy chủ
  4. Nhấn ok để mở phiên ssh

Cảm ơn bạn đã đọc bài viết này.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào