Công nghệ - Sản phẩm

25 năm Linux và những triển vọng mới

(PCWorldVN) Linux định hình lại trung tâm dữ liệu và tạo ra điện toán đám mây, và Linux đang cách mạng hóa phát triển và phân phối ứng dụng.

Nếu có một thứ gì đó gọi là bất biến trong suốt 25 năm tuổi đời của Linux thì đó là nó luôn thay đổi. Chính bản thân nhân (kernel) của Linux đã có vài chục phiên bản khác nhau.

Các bản distribution (distro) mà giới công nghệ dùng mỗi ngày luôn thay đổi, còn văn hóa Linux đã len lỏi đến từng dự án nho nhỏ cuối tuần của người đi làm cho đến kiến trúc CNTT mang tầm toàn cầu.

Đến nay, chúng ta đang thấy những phiên bản đầu tiên của làn sóng thay đổi mới của Linux. Bộ chứa, unikernel và những thí nghiệm khác với hình thức định hình lại Linux từ trong ra ngoài, mở ra những cách thức mới mà hệ điều hành nguồn mở này có thể làm.

Cách mạng hóa về bộ chứa (container) của Linux

Các bộ chứa là một trong những đặc điểm mới của Linux, và chúng cho phép người dùng có được sự tách lập cao giữa các ứng dụng, hoặc thậm chí giữa những hệ thống ảo.

Điều rất đáng ghi nhận về bộ chứa là đây không chỉ là cách mà giới công nghệ chọn để phát triển phần mềm tách biệt với hệ thống vận hành thông thường. Nó còn được xem như trình điều khiển cho sự sáng tạo của Linux.

Ví dụ điển hình nhất, rõ ràng nhất về công nghệ bộ chứa Linux là Docker, là một sản phẩm phần mềm, dùng để chạy những ứng dụng một cách tách biệt, cũng như để đóng gói, phân phối, quản lý và lên lịch cho chúng chạy.

Docker đã được nhúng sẵn như là một tính năng của nhân Linux (chủ yếu trong thành phần cgroups và namespace), mang lại cách thuận tiện cho các nhà phát triển ứng dụng.

Không lâu sau khi Docker xuất người, giới công nghệ bắt đầu xôn xao về mô hình này. Linux đơn giản là lấy nó xuống và đưa nó thẳng vào cơ chế khởi động hệ điều hành, và là một phương tiện để chạy và quản lý các container khác.

Tại sao không tạo một Linux chuyên về bộ chứa, có sẵn những phiên bản Linux nhúng khác có sẵn cấu hình mạng hay các tính năng quản lý lưu trữ? CoreOS trả lời cho câu hỏi này.

Và còn nhiều lý do cho thấy tính ưu việt của bộ chứa. Trong đó, một phiên bản Linux thu gọn sẽ dễ dàng quản lý và bảo dưỡng hơn, dễ bảo vệ chống lại tấn công mạng hơn, và dễ phục hồi chống lại những kiểu tấn công như Hearthbleed hay Shellshock. Điều này cũng có nghĩa là có một Linux hấp dẫn với các nhà phát triển (developer) hơn so với nhà quản trị hệ thống (sys admin) hay chuyên viên dev ops.

Thành công của Docker và những thí nghiệm táo bạo của CoreOS đã tạo cảm hứng cho những distro Linux khác. Red Hat tích hợp hỗ trợ container trong hàng loạt sản phẩm của họ và công bố một Linux chuyển container mới có tên Red Hat Atomic Host.

Ở một góc độ nào đó, Atomic Host cũng giống như CoreOS, đó là phiên bản Linux gọn nhẹ, chỉ chạy container mà thôi. Nhưng ý tưởng của Red Hat không chỉ tạo một hệ thống tối giản rồi để đó. Red Hat dùng Atomic Host như một nền tảng để tạo một bản Linux distro hành chỉnh, sử dụng các container để quản lý phần mềm cài đặt trên nền tảng này.

Một cài đặt lỗi hay gặp vấn đề nào đó có thể phục hồi lại trạng thái ban đầu dễ dàng khi cần thiết. Tuy tính năng này chưa hoàn toàn thay thế được cách quản lý gói (package) Linux truyền thống nhưng nhiều cách chọn lựa lúc nào vẫn hơn chỉ một cách.

Canonical cũng có động thái tương tự với hệ thống đóng gói ứng dụng Snappy của họ, cũng dựa trên bộ chứa. Nguyên gốc được phát triển và triển khai bản cập nhật trên Ubuntu Phone OS nhưng Snappy dùng container để quản lý cài đặt phần mềm theo cách như một giao dịch cơ sở dữ liệu.

Unikernel: chỉ vừa đủ

Nếu gọt Linux xuống còn kernel và vài container vẫn chưa đủ tối giản thì một tập dự án khác đang muốn giảm Linux xuống còn kernel, một ứng dụng, không còn gì khác. Giới công nghệ gọi đây là "unikernel".

Tựa như container, unikernel không phải là ý tưởng mới, chúng có vài hình thái tương tự cách nay vài chục năm. Unikernel được chuộng là vì nó nhỏ gọn và khởi động nhanh, ít bị lỗ hổng tấn công, nhưng tạo ra nó lại phức tạp. Có nhiều dự án unikernel nhưng không dùng Linux, mà dùng kernel được viết từ đầu hoặc dựa trên những kernel tối giản như MiniOS của Xen Project.

Một cách để Linux có thể dùng như nền tảng cho một unikernel là "library OS". Lúc này, kernel Linux được chuyển thành một thư viện code lớn để liên kết với một ứng dụng. Graphiene Library OS là một dự án sử dụng cách tiếp cận này và có thể được biên dịch (compile) để nhúng vào các ứng dụng thuần Linux, không cần chỉnh sửa trong một kernel có thể khởi động.

Một ví dụ điển hình của sự kết hợp giữa unikernel và Linux là cách của Docker. Công ty này mua lại Unikernel Systems gốc ở Anh Quốc, từng làm việc với unikernel theo nhiều kịch bản khác nhau, và đã sử dụng vài công nghệ của họ để chạy Docker for Mac và các sản phẩm của Windows. Ban đầu, để chạy Docker trên desktop ta cần khởi động một bản distro Linux hoàn chỉnh trong VirtualBox. Nhưng nay, người dùng có thể dùng công nghệ của mỗi nền tảng để khởi động một nhân Linux tùy chỉnh với một Docker Engine nhúng.

Nhưng không phải doanh nghiệp nào nhắm đến unikernel cũng có con đường bằng phẳng phía trước. Docker quan tâm đến unikernel đã khiến cộng đồng công nghệ gần đây chỉ trích. Nhiều chuyên gia cho rằng unikernel không phù hợp cho "sản xuất", đơn giản vì khuyết điểm của nó nhiều hơn ưu điểm. Mọi thứ đều chạy trong một quy trình đơn, duy nhất; unikernel khó sửa lỗi (debug); chúng tạo ra các hàm phụ thuộc (dependencies) về ngôn ngữ và phải cần đến các stack để tạo ra unikernel. Alex Polvi ở CoreOS cũng quan ngại unikernel vì những khuyết điểm trên. Nhưng kế hoạch của Docker hiện nay chỉ nhắm đến một trường hợp đặc thù: desktop, và họ chưa có ý định thay thế container bằng unikernel.

Luôn luôn có cánh cửa phía trước

Tất cả dự án Linux nêu trên không thực sự làm cho Linux nhỏ hơn, tối thiểu hóa kích thước của nó. Những bản distro Linux bé xíu từ lâu đã là chất keo của thế giới Linux. Điều mới là những vấn đề từ lâu nay về phân phối phần mềm, quản lý và bảo trì phần mềm của giới công nghệ nay Linux mang lại một cách tiếp cận mới, cách giải quyết mới gọn gàng hơn, sáng tạo hơn, thậm chí có nhiều cách mới để sử dụng kernel Linux.

Từ đây, chúng ta sẽ bắt đầu ở đâu? Luôn có những thảo luận, tranh luận giữa cách tạo ra và vận hành các bộ chứa kiểu Docker như thế nào. Như làm thế nào quản lý các runtime container như là một dịch vụ Linux; các container có phải là một phần của OS, hay là một bổ sung của người dùng, hay là dạng lai... Câu trả lời đúng nhất là khi chúng ta cùng áp dụng container vào trong từng trường hợp mà thôi.

Với unikernel và Linux, tương lai của sự kết hợp này nằm ở nơi nào mà cả hai hợp nhau nhất và tại sao lại hợp như vậy. Chế độ unikernel trong vận hành không có nghĩa là thay thế các bộ chứa. Nhưng nó mở ra cơ hội mà trước nay chưa hề có hoặc chưa được xem xét nghiêm túc.

Một trong những vấn đề lo ngại của Linux là tính phân mảnh, là vì Linux quá đa dạng nên việc thiết lập hệ thống sẽ không đảm bảo tốt tính thống nhất, nhất quán hệ thống. Khi bàn đến sản phẩm tiêu dùng như Android hay Linux là môi trường trên máy tính bàn thì đó luôn là vấn đề. Nhưng một vấn đề khác khi chúng ta nói về Linux như là một lớp chèn vào giữa những lớp khác, thì lớp Linux luôn đóng vai trò quan trọng, luôn là lớp nền.

PCWorld

Bùi Lê Duy, container, hệ điều hành, Linux


      © 2021 FAP
        2,588,375       1,393