ĐĂNG KÝ ĐỂ NHẬN THÔNG TIN MỚI NHẤT

Toàn bộ kiến thức hệ điều hành Linux áp dụng trong công việc

 

Các kiến thức về Linux áp dụng trong công việc

 

Mục tiêu của bài viết này: Trên thực tế tại các dự án mà Wecommit thực hiện, đa phần các cơ sở dữ liệu đều sử dụng hệ điều hành Linux, do đó chúng tôi muốn giúp các anh em lập trình có thể tiếp cận và làm việc với hệ điều hành này một cách đơn giản nhất, đỡ mất thời gian nhất.

Ngoài các tài liệu dành cho cộng đồng, chúng tôi có 01 chương trình sẽ giúp anh em lập trình tăng “vượt trội” về năng lực tối ưu cơ sở dữ liệu. Chúng tôi sẽ giúp bạn đem lại KẾT QUẢ tối ưu trực tiếp trên dự án của mình và làm cho tất cả các đồng nghiệp đều hết sức “ngỡ ngàng”. Bạn có thể tìm hiểu chi tiết về chương trình Từ điển tối ưu 100x hiệu năng tại đây. CLICK VÀO ĐÂY ĐỂ TÌM HIỂU.

Phần 1: Quản trị Linux cơ bản

Trong phần đầu tiên của tài liệu ta sẽ tìm hiểu các khái niệm và kiến thức cơ bản về hệ điều hành Linux. Qua đó biết cách giám sát và quản trị các hệ thống máy chủ được vận hành bởi Linux. Bên cạnh đó ta cũng sẽ biết thêm các câu lệnh phổ biến thường được dùng trong quá trình quản trị hệ điều hành Linux.

Bạn sẽ đi qua nội dung phần 1 lần lượt với các nội dung sau:

  • Xây dựng môi trường làm việc
  • Làm quen với hệ điều hành Linux
  • Làm việc với file và thư mục
  • Quản lý User, Group
  • Sử dụng VI và Bash Shell
  • Cài đặt và quản lý gói phần mềm
  • Cấu hình đĩa và phân vùng

Chương 1: Xây dựng môi trường làm việc

Trong chương đầu tiên của tài liệu ta sẽ cài đặt một máy chủ sử dụng hệ điều hành Oracle Linux chạy dưới dạng một máy ảo trên Windows với phần mềm quản lý là Oracle VM VirtualBox.

(Bạn có thể bỏ qua chương này nếu đã có sẵn một máy chủ Linux để thực hành)

1.1. Giới thiệu về Oracle Linux

Hiện tại trên mạng đã có rất nhiều các bài viết nói về Linux rồi nên tài liệu sẽ không tập trung vào định nghĩa của Linux nữa. Nói ngắn gọn, Linux là một hệ điều hành mã nguồn mở đa nhiệm đa người dùng. Đây chính là hệ điều hành mà bạn vẫn thường thấy người ta sử dụng với các hệ thống máy chủ mà không có giao diện gì cả, chỉ có một màn hình đen xì để gõ lệnh thao tác với máy tính. Ở mục 2.1 tài liệu sẽ nói rõ hơn về mục đích và lợi ích của việc sử dụng hệ điều hành Linux.

Vì là một hệ điều hành mã nguồn mở nên Linux có rất nhiều các bản phân phối khác nhau, gọi là distribution. Các bản phân phối này cùng được phát triển lên từ nhân của Linux (Kernel), do đó về bản chất chúng đều giống nhau. Thế nên bạn không cần lo lắng việc phải học cách sử dụng tất cả các bản phân phối thì mới hiểu được về Linux. Tiêu biểu trong số đó là các hệ điều hành như Redhat, Ubuntu, CentOS, v.v…

Các chương sau của tài liệu sẽ sử dụng một bản phân phối khác của Linux gọi là Oracle Linux, được chính hãng Oracle phát triển dựa trên mã nguồn của RedhatCentOS. Nhờ đó hệ điều hành Oracle Linux sẽ phù hợp với các hệ thống Cloud, Database và các sản phẩm khác của Oracle hơn.

Tải Oracle Linux

Để cài đặt được Oracle Linux ta cần có đĩa ISO chứa hệ điều hành.

  • Truy cập trang chủ sau được cung cấp bởi hãng Oracle tại đường link dưới đây để tải đĩa ISO Oracle Linux.

Oracle Linux ISOs | Oracle, Software. Hardware. Complete.

Hiện tại có 4 phiên bản (release version) của Oracle Linux đã và đang được phát hành sử dụng rộng rãi là 6,7,8 và mới nhất là phiên bản thứ 9. Ta sẽ sử dụng Oracle Linux 7.9 vì tính ổn định và tương thích cao hơn, không quá cũ như bản 6 cũng không quá mới như 8,9.

  • Trên trang chủ đã truy cập ở trên ta lựa chọn bản Full ISO (đầy đủ chức năng) cho Oracle Linux và tải về máy.

1.2. Quản lý máy ảo với Oracle VM VirtualBox

Để có thể sử dụng hệ điều hành Linux song song với Windows, ta sẽ chạy Linux trên một máy ảo được quản lý bởi Oracle VM VirtualBox. Đây là một phần mềm dùng để vận hành và quản lý các máy ảo khác nhau (virtual machine) trên một máy chủ thật duy nhất.

Trên thị trường hiện tại có rất nhiều các ứng dụng khác cũng phục vụ mục đích tương tự như VirtualBoxVMWare, Hyper-V, … nhưng ưu điểm của VirtualBox là ứng dụng nhẹ, dễ sử dụng và hoàn toàn miễn phí cho người dùng.

Tải VirtualBox

  • Truy cập vào trang chủ bằng đường link dưới đây để tải và cài đặt VirtualBox.

Downloads – Oracle VM VirtualBox

  • Với máy chủ thật là Windows bạn click chọn mục “Windows hosts” và tải file setup (.exe) của VirtualBox về máy.

  • Click đúp vào file setup vừa tải để tiến hành cài đặt VirtualBox. Dưới đây là giao diện cửa sổ quản lý của ứng dụng sau khi cài đặt xong.

1.3. Khởi tạo và cấu hình máy ảo

  • Trong cửa sổ quản lý của VirtualBox, chọn “New” để tạo một máy ảo mới.

  • Đặt tên, đường dẫn lưu trữ và chọn loại máy ảo sẽ dùng → Next.

  • Đặt dung lượng bộ nhớ RAM cho máy ảo (lựa chọn tùy thuộc tài nguyên máy thật) → Next.

  • Khởi tạo ổ đĩa cứng (Hard Disk) cho máy ảo dùng để lưu trữ → Next.

  • Chọn loại đĩa cứng là “VDI (Virtual Disk Image)” (VDI là loại đĩa dùng cho VirtualBox, VHD dùng cho các sản phẩm của Microsoft, còn VMDK được dùng cho VMWare) → Next.

  • Chọn “Dynamic allocated” để cấp phát động dung lượng đĩa, tức là dung lượng sẽ tự động nở dần ra theo thời gian sử dụng → Next.

  • Đặt đường dẫn và dung lượng tối đa cho đĩa → Create.

Sau khi khởi tạo thành công máy ảo ta sẽ tiến hành thiết lập thêm một vài cấu hình khác cho máy ảo ở trong mục “Setting”.

  • Trong mục “System” tăng số lượng nhân xử lý “Processor” của CPU (lựa chọn tùy thuộc tài nguyên máy thật).

  • Trong mục “Storage” ta thêm đĩa ISO chứa hệ điều hành tại “Controller: IDE”.

  • Có thể tạo thêm ổ đĩa mới (Hard Disk) nếu muốn tại mục “Controller: SATA”. Các bước tương tự như đã thực hiện trước đó, sau đó chọn đĩa vừa tạo → Choose.

  • Cấu hình mạng cho máy ảo chọn loại adapter là “Bridged” để máy ảo thông được ra ngoài máy thật và truy cập vào được Internet.

  • Có thể chọn tối đa 4 adapter cho máy ảo, mỗi adapter 1 loại khác nhau.

(mục 1.5 sẽ giải thích thêm về các loại adapter mạng cho máy ảo)

  • Tạm thời bỏ qua các mục cấu hình khác chưa cần thiết. Sau đó chọn “Start” để khởi động máy ảo.

1.4. Cài đặt Hệ điều hành

Sau khi được thêm đĩa ISO, khi được bật máy ảo sẽ tự động boot để bắt đầu quá trình cài đặt hệ điều hành. Đĩa ISO sẽ tự động được gỡ khỏi máy ảo sau khi reboot lại máy ảo lúc cài đặt hệ điều hành thành công.

  • Chọn “Install Oracle Linux 7.9” để cài đặt. Hoặc có thể chọn “Test this media …” để kiểm tra cấu hình máy ảo trước khi cài nhưng sẽ mất nhiều thời gian hơn.

  • Chọn ngôn ngữ dùng trong quá trình cài đặt (tiếng Anh – English) → Continue.

Tổng quan các bước trong quá trình cài đặt hệ điều hành “Installation Summary” gồm các mục trong hình dưới đây.

  • Đặt múi giờ cho máy ảo trong mục “Date & Time”. Lưu ý chọn chính xác để máy ảo kết nối Internet ổn định (Region: Asia, City: Ho_Chi_Minh) → Done.

  • Lựa chọn đĩa nguồn để cài đặt hệ điều hành trong mục “Installation Source” (đĩa sr0 chính là đĩa ISO được thêm vào máy ảo) → Done.

  • Lựa chọn đĩa đích để chứa hệ điều hành trong mục “Installation Destination”, ổ đĩa sda là đĩa cứng đầu tiên được tạo và thêm vào máy ảo (lần lượt các ổ đĩa tiếp theo được thêm sẽ là sdb, sdc, v.v…) → Done.

  • Lưu ý tích chọn “Automatically configure partitioning” để tự động cấu hình các phân vùng cho cần thiết hệ điều hành (boot, home, root, swap, v.v…).

  • Trong mục “Software Selection” ta sẽ chọn “Server with GUI” để tạo hệ điều hành với đầy đủ các chức năng cơ bản và có thêm giao diện người dùng (GUI):

(Các hệ thống máy chủ thực tế không dùng GUI vì không cần thiết lẫn tốn tài nguyên. Tuy nhiên máy chủ tài liệu dùng để thực hành nên sẽ cài Linux như một bản Desktop để thuận tiện cho người mới làm quen)

  • Trong mục “Network & Host Name” là danh sách các card mạng tương ứng với các adapter đã được thêm ở bước khởi tạo máy ảo. Tạm thời ta sẽ bỏ qua bước này, cấu hình mạng sẽ được thực hiện sau ở mục 1.5. Có thể đặt lại tên cho máy chủ Host name nếu muốn → Apply → Done.

  • Ngoài ra còn các cấu hình khác như kích hoạt “KDUMP” (hỗ trợ xử lý sự cố khi máy chủ Linux bị crash), đặt các chính sách bảo mật trong “Security Policy”, v.v… Ta sẽ để mặc định không thay đổi các cấu hình này.

  • Chọn “Begin Installation” để bắt đầu cài đặt Oracle Linux. Trong quá trình cài đặt ta cần đặt mật khẩu cho user quản trị là root, và tạo thêm một user khác ngoài root (ở đây đặt là utest).

  • Sau khi cài đặt xong cần Reboot khởi động lại máy ảo trước khi sử dụng được hệ điều hành.

  • Thêm một bước cấu hình nữa là đồng ý với điều khoản sử dụng của Linux. Cũng có thể cấu hình mạng luôn ở bước này nhưng ta sẽ thực hiện sau → Finish Configuration.

  • Đăng nhập vào user đã tạo trước đó. Có thể chọn đăng nhập bằng user root bằng cách ấn vào dòng “Not listed?”, sau đó điền tên và mật khẩu.

  • Sau khi cài đặt và đăng nhập xong bạn có thể bắt đầu sử dụng Linux như một máy tính thông thường. Dưới đây là màn hình Desktop của Oracle Linux.

1.5. Cấu hình mạng cho máy ảo

Khi sử dụng VirtualBox hoặc VMWare, bạn thường sẽ thấy cấu hình mạng cho máy ảo sử dụng 1 trong 4 loại Network Adapter chủ yếu sau đây:

    • NAT (Network Address Translation): cho phép kết nối ra thế giới bên ngoài nhưng ngược lại thì không. Bên ngoài muốn kết nối tới cần phải thông qua một phương thức gọi là Port Forwarding. Tạm thời khái niệm này không thực sự cần thiết này nên bạn có thể tìm đọc ở các nguồn khác bên ngoài để biết thêm. NAT cũng không cho phép các máy ảo liên lạc với nhau.
    • Bridged: ngược lại với NAT, cho phép kết nối 2 chiều đến máy thật và Internet. Đây cũng là loại mạng phù hợp nhất để bắt đầu thực hành với người mới vì nó khá dễ hiểu và dễ dùng. Máy ảo sẽ gần như tương đương với máy thật hay bất cứ một máy tính nào khác trong cùng mạng LAN.
    • Host-only: cho phép máy ảo kết nối đến máy thật và các máy ảo khác với nhau, trừ kết nối ra ngoài mạng Internet. Cùng với Internal, Host-only thường được dùng để mô phỏng lại một hệ thống mạng nội bộ tách biệt khỏi Internet và thế giới bên ngoài.
    • Internal: gần giống với Host-only nhưng chỉ cho phép liên lạc giữa các máy ảo với nhau.
  • Tổng quan cách hoạt động và sự khác biệt của 4 loại adapter trên là như sau:
VM → Host VM ← Host VM ←→ VM VM → Internet VM ← Internet
NAT Port Forward Port Forward
Bridged
Host-only
Internal
  • Ta sẽ cấu hình mạng máy ảo sử dụng “Bridged Adapter”. Chọn biểu tượng setting trong menu trên góc phải màn hình desktop.

  • Kéo xuống mục “Network”, bạn sẽ thấy 4 card mạng Ethernet của máy ảo với tên lần lượt tương ứng với 4 loại adapter đã cấu hình ở bước chọn Network Adapter
    • enp0s3: Bridged
    • enp0s8: NAT
    • enp0s9: Host-only
    • enp0s10: Internal

  • Click vào biểu tượng setting của card mạng “enp0s3” và vào mục “IPv4”. Tích chọn đặt IP tĩnh (Manual) để thuận tiện cho việc kết nối từ xa (remote) sau này sẽ cần sử dụng.

  • Đặt địa chỉ IP, Netmask Gateway cho máy ảo tùy theo địa chỉ máy thật của bạn. Ví dụ máy thật là 192.168.1.32 (mạng LAN) thì máy ảo sẽ là 192.168.1.x, với x nằm trong khoảng từ 2 đến 255 (192.168.1.1 được dùng làm Default Gateway).

(cấu hình địa chỉ IP trên máy thật)

(cấu hình địa chỉ IP trên máy ảo)

  • Thiết lập địa chỉ xong chọn “Apply” và gạt nút “On” để bật card mạng lên.

Lúc này thì máy ảo của bạn đã có thể giao tiếp với máy thật lẫn các máy tính khác trong cùng mạng LAN và kết nối được ra ngoài Internet. Như vậy là bạn đã hoàn thành chương đầu tiên bằng việc xây dựng thành công môi trường máy ảo Linux để thực hành, hãy tiếp tục đến với các chương sau của tài liệu để tìm hiểu và quản trị hệ điều hành Linux.

Chương 2: Làm quen với hệ điều hành Linux

Trước khi bắt đầu ngay với việc thực hành các câu lệnh trên Linux, bạn cần hiểu các khái niệm cơ bản của hệ điều hành Linux trước. Điều này sẽ giúp bạn làm quen với Linux và thực hành các câu lệnh nhanh hơn. Ta sẽ bắt đầu với mục đích và lợi ích khi sử dụng Linux, sau đó tìm hiểu về kiến trúc hệ điều hành và cách thức kết nối đến cũng như thao tác với Linux thông qua giao diện dòng lệnh.

2.1. Tại sao sử dụng Linux?

Như đã nói ở mục 1.1, chúng ta sẽ không đi lan man vào định nghĩa và lịch sử hình thành phát triển của Linux nữa, vì điều đó có thể khiến bạn trôi về tận nửa thế kỷ trước với rất nhiều các khái niệm phức tạp lạ lẫm chưa thực sự cần thiết ở thời điểm hiện tại như UNIX, GNU, v.v…

Vậy câu hỏi chính được đặt ra là tại sao dùng Linux? Tại sao hầu hết các hệ thống máy chủ lại sử dụng Linux? Tại sao không phải một hệ điều hành khác thân thuộc và phổ biến hơn là Windows?

“Linux rất nhẹ và miễn phí”

Lý do đầu tiên chắc chắn không thể bỏ qua được với cả người dùng doanh nghiệp lẫn cá nhân đó là Linux hoàn toàn miễn phí.

  • Với Windows, bạn cũng có thể tải về và cài đặt miễn phí nhưng sau đó sẽ cần phải kích hoạt (activate) hệ điều hành lên. Tức là phải trả tiền license cho Microsoft nếu muốn sử dụng đầy đủ tính năng của hệ điều hành. Và như bạn đã biết, hầu hết người dùng đã làm gì để được sử dụng Windows miễn phí rồi 🙂
  • Với Linux thì đơn giản hơn, nó chỉ có duy nhất một license là GPL (General Public License). Hiểu nôm na thì người dùng Linux có thể thoải mái tải về và sử dụng Linux, có thể sửa đổi hoặc tái phân phối lại Linux và chia sẻ cho người khác sử dụng. Chính vì điều này mà cộng đồng người dùng Linux thực ra cũng rất lớn, số lượng hệ thống các doanh nghiệp sử dụng cũng vậy, chỉ là bạn chưa khám phá ra thôi.

Lý do tiếp theo Linux được ưu tiên dùng cho hệ thống máy chủ là Linux rất nhẹ và dễ vận hành, bảo trì.

  • Dễ nhận thấy nhất đó là các hệ thống máy chủ đều không cần sử dụng giao diện người dùng (GUI). Windows tất nhiên cũng có phiên bản vận hành được mà không cần GUI, nhưng sẽ cực kỳ khó dùng, và gần như chẳng ai dùng Windows mà không có GUI cả.
  • Ngoài các bản Desktop thì Linux cho máy chủ sẽ không cần đến GUI. Các thao tác hoạt động với hệ điều hành sẽ thông qua giao diện dòng lệnh (tìm hiểu ở mục 2.3). Do đó Linux rất nhẹ và không tốn tài nguyên hệ thống khi vận hành. Linux cũng nhanh hơn vì có ít tiến trình và dịch vụ chạy ngầm hơn Windows.
  • Linux cũng dễ vận hành cho các máy chủ cũ đã có tuổi thọ hơn. Ngược lại Windows rất chậm trên phần cứng cũ. Đây cũng là lý do các doanh nghiệp chọn cách an toàn là dùng Linux vì chi phí bảo trì thấp, lẫn hạn chế nâng cấp không cần thiết và ưu tiên hệ thống đang vận hành tốt.

“Linux an toàn và bảo mật”

So với hệ điều hành Windows, Linux bảo mật và có tính minh bạch cao hơn.

  • Linux là hệ điều hành mã nguồn mở, tức là ai cũng có thể vọc vạch nghiên cứu mã nguồn của nó. Dẫn đến việc phát triển và hoàn thiện Linux sẽ nhanh chóng hơn, phát hiện ra nhiều lỗ hổng bảo mật hơn. Mã nguồn mở cũng đồng nghĩa với việc các nhà phát triển sẽ không thể tìm cách thu thập dữ liệu người dùng để phục vụ quảng cáo hay các mục đích khác được.
  • Có thể bạn không tin nhưng sự thật là bạn chắc chắn rất ít hoặc chưa từng nghe thấy cụm từ “Phần mềm diệt Virus cho Linux”. Lý do không phải là vì Linux miễn nhiễm với virus, mà là do hacker ít để ý đến Linux hơn do số lượng người dùng trên thị trường của nó không đủ lớn để họ dành thời gian tạo virus tấn công hệ thống (chỉ chiếm 2-3%).
  • Việc Linux bảo mật tốt cũng đến từ một nguyên nhân khác, đó là người dùng Linux thường có yêu cầu trình độ và kinh nghiệm về kỹ thuật cao hơn. Windows đánh vào tập người dùng cơ bản trên thị trường, và tất nhiên họ cũng thường xuyên là đối tượng bị hacker “hỏi thăm” hơn.

Tất cả mọi hệ thống trên thế giới, bất kể hệ điều hành hay công nghệ nào đi chăng nữa, thì đều có chung một điểm yếu trong vấn đề bảo mật. Đó chính là lỗ hổng về người dùng trong hệ thống. Từ trình độ kỹ thuật cho đến thói quen sinh hoạt làm việc đều có thể được các hacker khai thác tối đa để tấn công. Vậy nên nếu bạn là một quản trị viên thì bạn cần phải hiểu thật rõ về hệ thống, cũng như biết cách làm việc với nó một cách thuần thục và nghiêm túc nhất.

2.2. Kiến trúc hệ điều hành Linux

Hệ điều hành Windows đã được tối ưu trải nghiệm nhất có thể cho người dùng, vây nên bạn sẽ không biết và gần như chẳng quan tâm đến những gì xảy ra ở đằng sau hệ điều hành. Linux ngược lại có phần thô sơ hơn và tất cả mọi thứ đều “cởi mở” với bạn. Vậy nên nếu bạn không hiểu mình đang đứng ở đâu trên hệ điều hành, đang sử dụng thành phần nào thì sẽ rất khó để làm việc với các câu lệnh trên Linux một cách thành thạo được.

Kiến trúc Linux mà tài liệu giới thiệu sẽ tập trung vào 2 phần chính đó là kiến trúc thành phần và cấu trúc cây thư mục trên Linux.

Kiến trúc thành phần Linux

Bản chất hệ điều hành là một phần mềm đứng giữa phần cứng máy tính và người dùng. Kiến trúc của hệ điều hành Linux cũng tương tự như vậy, có thể được chia làm 4 thành phần chính như hình dưới đây.

  • Hardware: tài nguyên phần cứng của máy chủ, bao gồm CPU, RAM, Hard Disk, v.v…
  • Kernel: nhân của của tất cả các hệ điều hành thuộc họ Linux, đây là thành phần quan trọng nhất của hệ điều hành chịu trách nghiệm quản lý tài nguyên máy chủ phân chia cho các tiến trình và ứng dụng sử dụng.
  • Shell: thành phần đứng giữa người dùng và Kernel, làm nhiệm vụ “phiên dịch” các câu lệnh của người dùng cho Kernel hiểu để thao tác với phần cứng.
  • User: thành phần trên cùng của kiến trúc Linux, đây chính là các chương trình, ứng dụng (Program, Application) hay câu lệnh mà người dùng chạy trong quá trình sử dụng Linux.

Nhìn vào kiến trúc hệ điều hành, bạn có thể rút ra một kinh nghiệm khi lựa chọn và sử dụng Linux. Đó là điều mà bạn cần quan tâm không phải phiên bản hệ điều hành Linux, mà chính là kiểm tra phiên bản Kernel của nó có tương thích với phần mềm hay chương trình mà bạn đang muốn sử dụng hay không.

Cấu trúc cây thư mục Linux

Đối với Linux, tất cả đều là file. Từ file thông thường, thư mục, đĩa cho đến thiết bị ngoại vi, mọi thứ đều được hệ điều hành Linux coi là các file trong hệ thống. Tất cả các “file” này được tổ chức theo cấu trúc dạng cây phân cấp (FHS – File Hierarchy Structure) trong đó cao nhất là thư mục gốc /(gọi là root) là như hình dưới đây.

Tạm thời chức năng của từng thư mục con ở dưới thư mục “/” bạn chưa cần tìm hiểu lúc này. Hiểu đơn giản các thư mục này có chức năng quan trọng với hệ điều hành cũng giống như thư mục “Program Files”, “Windows”, “Users”, v.v… trong ổ C trên Windows. Khi làm việc trên Linux bạn sẽ không thao tác click chuột để mở ổ C, ổ D hay các thư mục khác như trên Windows được. Thay vào đó bạn cần dùng lệnh để di chuyển, hay “leo trèo” trên cây thư mục của Linux để đến được vị trí thư mục cần thao tác. Hiểu được khái niệm này sẽ giúp bạn không bị bối rối khi sử dụng hệ điều hành Linux, cũng như thao tác các câu lệnh chính xác và hiệu quả hơn.

2.3. Giao diện dòng lệnh của Linux

Giao diện dòng lệnh (CLI – Command-line Interface) là giao diện để người dùng gõ các câu lệnh thao tác với máy tính hay ứng dụng, phần mềm, v.v… Trái ngược với giao diện người dùng GUI, bạn sẽ không thể dùng màn hình (monitor) và chuột để thao tác được, mà tất cả sẽ phải thông qua các lệnh được nhập từ bàn phím. Giao diện dòng lệnh của Linux gọi là Terminal, vì trước đó ta đã cài máy ảo Linux sử dụng bản Desktop (có GUI), nên ta có thể mở Terminal ngay trong máy ảo để thao tác câu lệnh với Linux.

  • Click chuột trái vào màn hình desktop của Oracle Linux, chọn “Open Terminal”

  • Giao diện của Terminal sẽ như hình dưới đây.

Vây là bạn đã có thể bắt đầu thực hành thao tác với các câu lệnh bằng cách sử dụng Terminal trong Linux. Nhưng như đã nói ở mục 2.1, khi làm việc với các hệ thống máy chủ vận hành bởi Linux, ta sẽ không sử dụng giao diện người dùng như máy tính thông thường được. Vì máy chủ thường không có màn hình lẫn chuột hay bàn phím để thao tác. Thế nên bạn cần kết nối điều khiển từ xa (remote control) để có thể làm việc với máy chủ đó. Ngay sau đây ta sẽ tiến hành kết nối điều khiển từ xa máy ảo Linux.

(Bạn có thể bỏ qua phần tiếp theo của mục 2.3 này và bắt đầu thực hành câu lệnh với Linux ở chương 3 luôn nếu muốn)

Kết nối điều khiển từ xa Linux

Trước đó ta đã cấu hình mạng sử dụng Bridged adapter, nên máy ảo Linux đã thông mạng với máy thật và kết nối được ra ngoài Internet. Ta sẽ tiến hành kết nối điều khiển từ xa máy ảo sử dụng công cụ PuTTY.

  • Trước hết ta cần kiểm tra kết nối giữa máy ảo và máy thật. Sử dụng Command Prompt trên Windows Terminal trên Linux để thực hiện thông mạng kiểm tra với lệnh “ping”. Kết nối thành công sẽ hiển thị output có thông báo “0% Loss” như dưới đây. Lưu ý có thể bạn cần tắt Firewall trên máy thật.
ping <ip_address>

(từ máy thật đến máy ảo)

(từ máy ảo đến máy thật)

PuTTY là một công cụ dùng để kết nối và điều khiển từ xa các máy chủ hỗ trợ các giao thức SCP, SSH, Telnet, v.v… PuTTY cũng cho phép người dùng tải về cài đặt và sử dụng miễn phí.

  • Tải và cài đặt công cụ PuTTY trên trang chủ sau. Lựa chọn file cài đặt MSI (.msi) 64-bit x86 cho Windows.

Download PuTTY: latest release (0.77) (greenend.org.uk)

  • Cửa sổ giao diện của PuTTY sau khi cài đặt xong sẽ như hình dưới đây.

  • Điền địa chỉ IP máy ảo, lưu lại tên kết nối trong mục “Saved Sessions” sau đó ấn “Save” và “Open” để mở kết nối.

  • Chọn “Accept” để đồng ý kết nối đến máy chủ Linux.

  • Điền thông tin username password muốn kết nối đến. Sau khi kết nối thành công ta có thể sử dụng CLI của Linux ngay trên Windows qua công cụ PuTTY.

Như vậy là bạn đã hoàn thành chương 2 bằng việc kết nối điều khiển từ xa máy chủ Linux. Lợi ích của việc kết nối từ xa là bạn có thể copy paste thực thi câu lệnh thay vì phải gõ lại cả câu lệnh trên giao diện người dùng của máy ảo. Sau này khi làm việc với Linux bạn sẽ thường xuyên sử dụng các công cụ remote khác nhau để điều khiển máy chủ từ xa, nên việc làm quen từ bây giờ là điều cần thiết nếu muốn quản trị hệ điều hành Linux.

Chương 3: Làm việc với file và thư mục

3.1. Di chuyển trong cây thư mục

Ta đã biết tất cả file và thư mục trong Linux được tổ chức theo cấu trúc dạng cây thư mục. Vậy nên khi làm việc với Linux bạn cần phải biết mình đang đứng ở đâu, làm việc với thư mục nào và cách để di chuyển đến các thư mục khác ra sao.

  • Để biết vị trí thư mục hiện tại ta dùng lệnh “pwd”.
[root@ol79 ~]# pwd

/root

[root@ol79 ~]#

(“/root” là thư mục chủ (nhà) của user root, khác với “/” dù cùng được gọi là root)

  • Để di chuyển đến thư mục khác ta dùng lệnh “cd”, sau đó là đường dẫn đến thư mục mong muốn.
[root@ol79 ~]# cd /home/utest/

[root@ol79 utest]# pwd

/home/utest

[root@ol79 utest]#

(“/home” là thư mục chủ của tất cả các user khác ngoài root, mỗi user một thư mục con cùng tên với user đó)

  • Để quay lại thư mục vừa làm việc trước đó ta sẽ chỉ định dấu “-” cho lệnh “cd”.
[root@ol79 ~]# cd /home/utest

[root@ol79 utest]# pwd

/home/utest

[root@ol79 utest]# cd -

/root

[root@ol79 ~]#
  • Để di chuyển đến thư mục mẹ của thư mục hiện tại, ta chỉ định dấu “..” sau lệnh “cd”.
[root@ol79 ~]# pwd

/root

[root@ol79 ~]# cd ..

[root@ol79 /]# pwd

/

[root@ol79 /]#

Sau đây là các kí hiệu chỉ định thư mục dùng để thao tác các lệnh trong cây mục thư mục của Linux.

Kí hiệu
Mô tả
~
Thư mục chủ của user hiện tại
.
Thư mục hiện tại
..
Thư mục mẹ của thư mục hiện tại
-
Thư mục đã làm việc trước đó

3.2. Xem danh sách phần tử trong thư mục

Trước đó ta đã biết cách định hướng và di chuyển trong cây thư mục, sau đây ta sẽ biết thêm cách để xem danh sách các phần tử của 1 thư mục. Qua đó biết được trong hệ điều hành hiện đang có những thư mục nào tồn tại và cấu trúc cây thư mục ra sao.

  • Gõ lệnh “ls” để hiện danh sách phần tử thư mục hiện tại.
[root@ol79 ~]# ls

anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates

Desktop Downloads Music Public Videos

[root@ol79 ~]#
  • Để xem danh sách phần tử của một thư mục bất kỳ, ta chỉ định thêm đường dẫn đến thư mục đó sau lệnh “ls”. Ví dụ xem dưới thư mục gốc “/” có những gì.
[root@ol79 ~]# ls /

bin dev home lib64 mnt proc run srv tmp var

boot etc lib media opt root sbin sys usr

[root@ol79 ~]#
  • Thêm option -l sau lệnh “ls” để hiển thị danh sách theo hàng dọc và có thêm thêm thông tin chi tiết về các phần tử.
[root@ol79 ~]# ls -l /

total 32

lrwxrwxrwx. 1 root root 7 Oct 17 17:15 bin -> usr/bin

dr-xr-xr-x. 4 root root 4096 Oct 17 17:34 boot

drwxr-xr-x. 20 root root 3340 Oct 18 14:38 dev

drwxr-xr-x. 142 root root 8192 Oct 18 14:39 etc

drwxr-xr-x. 3 root root 19 Oct 17 17:29 home

lrwxrwxrwx. 1 root root 7 Oct 17 17:15 lib -> usr/lib

lrwxrwxrwx. 1 root root 9 Oct 17 17:15 lib64 -> usr/lib64

drwxr-xr-x. 2 root root 6 Apr 11 2018 media

drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt

drwxr-xr-x. 3 root root 16 Oct 17 17:21 opt

dr-xr-xr-x. 233 root root 0 Oct 18 14:38 proc

dr-xr-x---. 14 root root 4096 Oct 18 14:39 root

drwxr-xr-x. 40 root root 1260 Oct 18 14:39 run

lrwxrwxrwx. 1 root root 8 Oct 17 17:15 sbin -> usr/sbin

drwxr-xr-x. 2 root root 6 Apr 11 2018 srv

dr-xr-xr-x. 13 root root 0 Oct 18 14:38 sys

drwxrwxrwt. 18 root root 4096 Oct 18 15:40 tmp

drwxr-xr-x. 13 root root 4096 Oct 17 17:15 usr

drwxr-xr-x. 20 root root 4096 Oct 17 17:33 var

[root@ol79 ~]#

Sau đây là các phần cần quan tâm trong thông tin hiển thị chi tiết của phần tử. Lấy ví dụ với thư mục “/etc”:

drwxr-xr-x. 142 root root 8192 Oct 18 14:39 etc

  • Loại phần tử (hiển thị“d” là thư mục, “-” là file): d
  • Quyền thực thi (sẽ tìm hiểu ở mục 4.3): rwxr-xr-x
  • User và Group chủ: root root
  • Ngày giờ tạo: Oct 18 14:39

3.3. Tạo mới file và thư mục

Sau đây ta sẽ thực hành tạo file và thư mục trên Linux. Lưu ý hiện tại ta vẫn đang sử dụng user quyền cao nhất là root nên các thao tác sẽ rất dễ dàng. Nhưng vẫn cần cẩn thận trong việc thao tác di chuyển hay xóa file sau này, nên ta thực hiện trong thư mục chủ của user root là thư mục “ /root”.

  • Tạo mới thư mục dùng lệnh “mkdir”.
[root@ol79 ~]# pwd

/root

[root@ol79 ~]# mkdir testdir/

[root@ol79 ~]# ls -l

total 8

-rw-------. 1 root root 2072 Oct 17 17:31 anaconda-ks.cfg

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Desktop

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Documents

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Downloads

-rw-r--r--. 1 root root 2120 Oct 17 17:35 initial-setup-ks.cfg

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Music

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Pictures

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Public

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Templates

drwxr-xr-x. 2 root root 6 Oct 18 16:10 testdir

drwxr-xr-x. 2 root root 6 Oct 17 23:47 Videos

[root@ol79 ~]#

(lưu ý thực ra không cần thiết có dấu / sau tên thư mục nhưng đây là thói quen tốt để phân biệt thư mục với file trong Linux)

  • Ta có thể tạo nhiều thư mục cùng lúc bằng cách lần lượt viết tên của chúng cách nhau sau lệnh “mkdir”.
[root@ol79 ~]# cd testdir/

[root@ol79 testdir]# mkdir dir1/ dir2/ dir3/

[root@ol79 testdir]# ls -l

total 0

drwxr-xr-x. 2 root root 6 Oct 18 16:17 dir1

drwxr-xr-x. 2 root root 6 Oct 18 16:17 dir2

drwxr-xr-x. 2 root root 6 Oct 18 16:17 dir3

[root@ol79 dir4-2]#
  • Để tạo mới nhiều thư mục lồng nhau (cả thư mục mẹ và con) ta thêm option -p sau lệnh “mkdir”.
[root@ol79 ~]# mkdir -p testdir/dir4/dir4-1/dir4-2/

[root@ol79 ~]# cd testdir/dir4/dir4-1/dir4-2/

[root@ol79 dir4-2]# pwd

/root/testdir/dir4/dir4-1/dir4-2

[root@ol79 dir4-2]#
  • Tạo mới 1 file ta dùng lệnh “touch”.
[root@ol79 ~]# cd testdir/

[root@ol79 testdir]# touch testfile.txt

[root@ol79 testdir]# ls -l

total 0

drwxr-xr-x. 2 root root 6 Oct 18 16:17 dir1

drwxr-xr-x. 2 root root 6 Oct 18 16:17 dir2

drwxr-xr-x. 2 root root 6 Oct 18 16:17 dir3

drwxr-xr-x. 3 root root 20 Oct 18 16:27 dir4

-rw-r--r--. 1 root root 0 Oct 18 16:30 testfile.txt

[root@ol79 testdir]#
  • Tạo mới bằng lệnh “touch” sẽ cho ra file rỗng không có nội dung gì bên trong. Tạm thời ta sẽ dùng lệnh “echo” như sau để ghi nội dung vào 1 file và lệnh “cat” để xem nội dung file đó.
[root@ol79 testdir]# echo "hello world" > testfile.txt

[root@ol79 testdir]# cat testfile.txt

hello world

[root@ol79 testdir]#
  • Lệnh “echo” hoạt động như hàm “printf” trong C hay “print” trong Python, dùng để in chuỗi ra màn hình. Dấu “>” để ghi đè file, muốn ghi thêm dòng sau file dùng dấu “>>”.
[root@ol79 testdir]# echo "hello Linux"

Hello Linux

[root@ol79 testdir]# echo "hello Linux" > testfile.txt

[root@ol79 testdir]# cat testfile.txt

hello Linux

[root@ol79 testdir]# echo "hello user" >> testfile.txt

[root@ol79 testdir]# cat testfile.txt

hello Linux

Hello user

[root@ol79 testdir]#

3.4. Các thao tác khác file và thư mục

Ta sẽ thực hiện các thao tác khác bao gồm di chuyển, sao chép, đổi tên hay xóa với file và thư mục.

  • Di chuyển 1 file hay thư mục dùng lệnh “mv” sau đó là nguồn và đích đến của nó.
[root@ol79 testdir]# pwd

/root/testdir

[root@ol79 testdir]# ls

dir1 dir2 dir3 dir4 testfile.txt

[root@ol79 testdir]# mv dir1/ /root/

[root@ol79 testdir]# ls

dir2 dir3 dir4 testfile.txt

[root@ol79 testdir]# ls /root/

anaconda-ks.cfg dir1  Downloads Music Public testdir

Desktop Documents initial-setup-ks.cfg Pictures Templates Videos

[root@ol79 testdir]#
  • Đổi tên 1 file hay thư mục ta cũng dùng lệnh “mv” nhưng chỉ định rõ tên mới tại đích đến của nó.
[root@ol79 testdir]# mv dir2/ /root/directory2/

[root@ol79 testdir]# ls

dir3 dir4 testfile.txt

[root@ol79 testdir]# ls /root/

anaconda-ks.cfg directory2 initial-setup-ks.cfg Public Videos

Desktop Documents Music Templates

dir1 Downloads Pictures testdir

[root@ol79 testdir]#
  • Sao chép 1 file dùng lệnh “cp”. Cũng có thể đổi tên khi sao chép như lệnh “mv” bằng cách chỉ định tên mới tại đích đến.
[root@ol79 testdir]# cp testfile.txt /root/

[root@ol79 testdir]# ls

dir3 dir4 testfile.txt

[root@ol79 testdir]# ls /root/

anaconda-ks.cfg directory2 initial-setup-ks.cfg Public testfile.txt

Desktop Documents Music Templates Videos

dir1 Downloads Pictures testdir

[root@ol79 testdir]#
  • Để sao chép 1 thư mục ta thêm option -r sau lệnh “cp”. Option -r sẽ tự động sao chép cả thư mục con bên trong thư mục được sao chép.
[root@ol79 testdir]# touch dir3/testfile3.txt

[root@ol79 testdir]# ls dir3/

testfile3.txt

[root@ol79 testdir]# cp -r dir3/ /root/directory3/

[root@ol79 testdir]# ls /root/

anaconda-ks.cfg directory2 Downloads Pictures testdir

Desktop directory3 initial-setup-ks.cfg Public testfile.txt

dir1 Documents Music Templates Videos

[root@ol79 testdir]# ls /root/directory3/

testfile3.txt

[root@ol79 testdir]#
  • Xóa file hay thư mục dùng lệnh “rm”, với thư mục ta cũng thêm option -r. Linux sẽ hỏi lại để xác nhận muốn xóa hay không, gõ phím “y” để xác nhận xóa.
[root@ol79 ~]# rm testfile.txt

rm: remove regular file 'testfile.txt'? y

[root@ol79 ~]# rm -r directory2/

rm: remove directory 'directory2/'? y

[root@ol79 ~]# ls

anaconda-ks.cfg directory3 initial-setup-ks.cfg Public Videos

Desktop Documents Music Templates

dir1 Downloads Pictures testdir

[root@ol79 ~]#
  • Thêm option -f để ép xóa mà không cần xác nhận.
[root@ol79 ~]# rm -rf dir1/ directory3/

[root@ol79 ~]# ls

anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates Videos

Desktop Downloads Music Public testdir

[root@ol79 ~]#

(lưu ý thao tác này có thể sẽ rất nguy hiểm vì lệnh “rm” sẽ thực hiện xóa vĩnh viễn chứ không đưa vào thùng rác như Windows)

Chương 4: Quản lý User và Group

Hệ điều hành Linux cũng có các user và group như Windows nhưng thay vì chỉ có 2 group (hay 2 loại user) trên Windows Standard Administrator, Linux có thể thoải mái tạo nhiều group khác nhau và phân quyền cụ thể được cho từng user lẫn group. Đây cũng chính là một phần lý do kiến vấn đề bảo mật trên Linux tốt hơn Windows. Ở chương này ta sẽ thực hành tạo mới và tìm hiểu cơ chế phân quyền cho user và group trên Linux.

4.1. Tạo, xóa User và Group

Để tạo và xóa user, group trên Linux ta sử dụng các lệnh “groupadd” “useradd” cùng các option của chúng như sau.

  • Tạo mới group sử dụng lệnh “groupadd” và xem thông tin group vừa tạo trong file “/etc/group”. Nếu nội dung file quá dài, ta có thể thêm “| grep <string>” để chỉ lấy dòng chứa thông tin mong muốn như sau.
[root@ol79 ~]# groupadd gtest1

[root@ol79 ~]# cat /etc/group | grep gtest1

gtest1:x:1001:

[root@ol79 ~]#

(1001 là ID mặc định của group đầu tiên được người dùng tạo)

  • Có thể chỉ định ID riêng cho group bằng cách thêm option -g sau lệnh “groupadd”.
[root@ol79 ~]# groupadd -g 2222 gtest2

[root@ol79 ~]# cat /etc/group | grep gtest2

gtest2:x:2222:

[root@ol79 ~]#
  • Tạo user mới bằng lệnh “useradd”, thêm option -u để chỉ định ID và xem thông tin user trong file “/etc/passwd”. Thường thì mỗi user mới được tạo ra sẽ có 1 group mặc định cùng tên với user đó.
    • Tên User: utest1
    • ID User: 1111
    • ID Group: 1111
    • Thư mục chủ: /home/utest1
    • Bash Shell mặc định (tìm hiểu sau ở chương 5): /bin/bash
[root@ol79 ~]#  useradd -u 1111 utest1

[root@ol79 ~]# cat /etc/passwd | grep utest1

utest1:x:1111:1111::/home/utest1:/bin/bash

[root@ol79 ~]#
  • Chỉ định group chính (Primary Group) cho user bằng cách thêm option -g, chỉ định các group phụ (Secondary Group) với option -G sau lệnh “useradd.
[root@ol79 ~]# useradd -u 2222 -g gtest2 -G gtest1 utest2

[root@ol79 ~]# cat /etc/passwd | grep utest2

utest2:x:2222:2222::/home/utest2:/bin/bash

[root@ol79 ~]#
  • Xem thông tin group của user với lệnh “id”. Group chính sẽ được hiển thị thêm ID (gid) riêng, còn các group phụ chỉ có tên group.
[root@ol79 ~]# id utest2

uid=2222(utest2) gid=2222(gtest2) groups=2222(gtest2),1001(gtest1)

[root@ol79 ~]#
  • Ta có thể thay đổi group cho user với lệnh “usermod”, cũng thêm option -g -G.
[root@ol79 ~]# usermod -g gtest2 -G gtest1 utest1

[root@ol79 ~]# id utest1

uid=1111(utest1) gid=2222(gtest2) groups=2222(gtest2),1001(gtest1)

[root@ol79 ~]#
  • Đặt mật khẩu cho user dùng lệnh “passwd”. Lưu ý password khi gõ sẽ không hiển thị dạng ***” hay “•••”, thay vào đó Linux ẩn hết ký tự đi nên bạn hãy tắt các bộ gõ tiếng Việt và nhớ rõ password khi đặt cho user.
[root@ol79 ~]# passwd utest1

Changing password for user utest1.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

[root@ol79 ~]#

4.2. Đăng nhập và xóa User, Group

Ta có thể login lại một session mới với PuTTY bằng 1 user khác giống như đã thực hiện với user root trước đó. Lưu ý dấu nhắc lệnh của user root “#” còn tất cả user khác là dấu “$”

login as: utest

utest@192.168.1.100's password:

[utest@ol79 ~]$

[utest@ol79 ~]$
  • Dùng lệnh “exit” để logout khỏi user đó đồng thời thoát session PuTTY.
[utest@ol79 ~]$ exit
  • Hoặc ta có thể chuyển sang user khác từ user root mà không cần mật khẩu bằng lệnh “su” và dấu “-” kèm tên user ở sau. Nếu gõ lệnh “exit” ta sẽ quay lại user root vì session ban đầu login bằng root.
[root@ol79 ~]# su - utest

Last login: Tue Oct 18 23:05:48 +07 2022 from 192.168.1.32 on pts/1

[utest@ol79 ~]$

[utest@ol79 ~]$ exit

logout

[root@ol79 ~]#
  • Nếu đứng từ user khác mà chuyển sang user root với lệnh “su – root” thì Linux vẫn yêu cầu mật khẩu root vì đây là user quản trị cao nhất của hệ điều hành.
[utest@ol79 ~]$ su - root

Password:

Last login: Tue Oct 18 23:03:35 +07 2022 from 192.168.1.32 on pts/0

[root@ol79 ~]#
  • Xóa group dùng lệnh “groupdel”, thêm option -f để ép xóa nếu đó là group chính của 1 user nào đó.
[root@ol79 ~]# groupdel gtest1

[root@ol79 ~]# cat /etc/group | grep gtest1

[root@ol79 ~]#

[root@ol79 ~]# groupdel gtest2

groupdel: cannot remove the primary group of user 'utest2'

[root@ol79 ~]# groupdel -f gtest2

[root@ol79 ~]# cat /etc/group | grep gtest2

[root@ol79 ~]#
  • Để xóa user ta dùng lệnh “userdel”, thêm option -r để xóa thư mục chủ “/home/<username>” và thư mục chứa email “/var/spool/mail/<username>” của user đó.
[root@ol79 ~]# userdel -r utest2

[root@ol79 ~]# cat /etc/passwd | grep utest2

[root@ol79 ~]# ls /home

utest utest1

[root@ol79 ~]#
  • Thêm option -f để ép xóa nếu user đó đang login vào hệ điều hành. Session của user vẫn sẽ còn kết nối với hệ điều hành nhưng sẽ không thao tác được gì thêm mà buộc phải thoát ra.
[root@ol79 ~]# userdel -rf utest1

userdel: user utest1 is currently used by process 5631

[root@ol79 ~]# cat /etc/passwd | grep utest1

[root@ol79 ~]#

4.3. Các loại quyền trên Linux

Trên Linux có 3 loại quyền cơ bản cho file và thư mục như các hệ điều hành khác là:

  • Quyền đọc: r, số hiệu 4
  • Quyền ghi: w, số hiệu 2
  • Quyền thực thi: x, số hiệu 1

Với 3 loại quyền trên ta có thể kết hợp lại ra 7 loại quyền đầy đủ cho file và thư mục trên Linux như sau.

Số hiệu Mô tả Kí hiệu
0 Không có quyền – – –
1 Quyền thực thi – – x
2 Quyền ghi – w –
3 Quyền ghi và thực thi (1 + 2) – w x
4 Quyền đọc r – –
5 Quyền đọc và thực thi (1 + 4) r – x
6 Quyền đọc và ghi (2 + 4) r w –
7 Quyền đọc và thực thi (1 + 2 + 4) r w x

Với mỗi loại quyền sẽ có 3 loại đối tượng khác nhau để tác động lên file và thư mục như sau:

  • User chủ file: kí hiệu u
  • Group chủ file: kí hiệu g
  • User khác (other): kí hiệu o

Ta sẽ thực hiện lại lệnh “ls -l” để xem quyền thực thi trong thông tin chi tiết của phần tử.

  • Quyền thực thi của file: ký tự đầu tiên d để ám chỉ đây là thư mục, các ký tự còn lại sẽ chia làm từng nhóm 3 ký tự liên tiếp lần lượt là quyền của u, go:
    • u: rwx
    • g: r-x
    • o: r-x
  • User chủ: root
  • Group chủ: root
[root@ol79 ~]# ls -l | grep testdir

drwxr-xr-x. 4 root root 50 Oct 18 16:54 testdir

[root@ol79 ~]#

4.4. Phân quyền file và thư mục

  • Để thay đổi lại user và group chủ file ta thực hiện lệnh “chown” với format như sau <username>:<groupname>.
[root@ol79 ~]# groupadd gtest

[root@ol79 ~]# usermod -g gtest utest

[root@ol79 ~]# ls -l | grep testdir

drwxr-xr-x. 4 root root 50 Oct 18 16:54 testdir

[root@ol79 ~]#

[root@ol79 ~]# chown utest:gtest testdir/

[root@ol79 ~]# ls -l | grep testdir

drwxr-xr-x. 4 utest gtest 50 Oct 18 16:54 testdir

[root@ol79 ~]#
  • Lệnh “chown” sẽ chỉ thực hiện lên thư mục được chỉ định chứ không bao gồm thư mục con của nó. Thêm option -R để áp dụng lên toàn bộ thư mục con và file bên trong.
[root@ol79 ~]# ls -l | grep testdir

drwxr-xr-x. 4 utest gtest 50 Oct 18 16:54 testdir

[root@ol79 ~]# ls -l testdir/

total 4

drwxr-xr-x. 2 root root 27 Oct 18 17:07 dir3

drwxr-xr-x. 3 root root 20 Oct 18 16:27 dir4

-rw-r--r--. 1 root root 12 Oct 18 16:40 testfile.txt

[root@ol79 ~]#

[root@ol79 ~]# chown -R utest:gtest testdir/

[root@ol79 ~]# ls -l testdir/

total 4

drwxr-xr-x. 2 utest gtest 27 Oct 18 17:07 dir3

drwxr-xr-x. 3 utest gtest 20 Oct 18 16:27 dir4

-rw-r--r--. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 ~]#

Để thay đổi lại quyền thực thi cho file ta sử dùng lệnh “chmod” sau đó là số hiệu quyền muốn thực hiện cho 3 loại đối tượng lần lượt là u, g, o.

  • Ví dụ thay đổi quyền cao nhất 777 (rwx + rwx + rwx) cho file.
[root@ol79 testdir]# ls -l | grep testfile

-rw-r--r--. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#

[root@ol79 testdir]# chmod 777 testfile.txt

[root@ol79 testdir]# ls -l | grep testfile

-rwxrwxrwx. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#
  • Ví dụ khác đổi quyền lại thành 664 (rw + rw + r) cho file.
[root@ol79 testdir]# ls -l | grep testfile.txt

-rwxrwxrwx. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#

[root@ol79 testdir]# chmod 664 testfile.txt

[root@ol79 testdir]# ls -l | grep testfile.txt

-rw-rw-r--. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#

Nếu muốn thêm hoặc bớt quyền cho 1 đối tượng cụ thể ta cũng sử dụng lệnh “chmod” sau đó là kí hiệu của loại quyền và đối tượng, dấu “+”, “-” ám chỉ hành động thêm hay bớt quyền.

  • Ví dụ thêm quyền ghi cho các user khác (o).
[root@ol79 testdir]# ls -l | grep testfile.txt

-rw-rw-r--. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#

[root@ol79 testdir]# chmod o+w testfile.txt

[root@ol79 testdir]# ls -l | grep testfile.txt

-rw-rw-rw-. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#
  • Ví dụ thêm quyền thực thi cho user chủ và bớt quyền ghi cho group.
[root@ol79 testdir]# ls -l | grep testfile.txt

-rw-rw-r--. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#

[root@ol79 testdir]# chmod u+x,g-w testfile.txt

[root@ol79 testdir]# ls -l | grep testfile.txt

-rwxr--rw-. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#
  • Nếu bạn không chỉ định đối tượng cho lệnh chmod” thì mặc định tất cả đối tượng đều sẽ ảnh hưởng bởi lệnh “chmod”.
[root@ol79 testdir]# ls -l | grep testfile.txt

-rwxr--rw-. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#

[root@ol79 testdir]# chmod +x testfile.txt

[root@ol79 testdir]# ls -l | grep testfile.txt

-rwxr-xrwx. 1 utest gtest 12 Oct 18 16:40 testfile.txt

[root@ol79 testdir]#

Lệnh “chmod” cũng có thể thêm option -R để áp dụng thay đổi quyền lên cả file và thư mục con.

Chương 5: Sử dụng VI và Bash Shell

Ở chương 5 này Khi làm việc với file trong Linux, ta sẽ sử dụng công cụ soạn thảo văn bản Vi (hay còn gọi là Vim). Mặc dù có nhiều công cụ soạn thảo khác nhau qua nhiều năm phát triển của Linux, nhưng Vi vẫn có vị thế riêng của mình vì có lịch sử lâu đời hơn và cũng thân thuộc với cộng đồng người dùng hơn. Song song với đó ta sẽ học cách cũng như cách viết các script tự động hóa công việc sử dụng Bash Shell trong Linux.

5.1. Soạn thảo văn bản với Vi

Vi hay Vim (cũng là Vi nhưng tốt hơn) là một phần mềm soạn thảo văn bản lâu đời trên hệ điều hành Linux giống như Notepad của Windows vậy. Vi hầu hết đã được cài đặt sẵn với các bản phân phối của Linux, nên chỉ tốn 1 câu lệnh là bạn có thể bắt đầu sử dụng được Vi.

Ưu điểm của Vi là gọn nhẹ, dùng được với các lệnh tự động và quan trọng không cần đến GUI để sử dụng. Nhược điểm của nó tất nhiên là hơi phức tạp đối với người mới, thế nên ta mới có chương 5 để học cách sử dụng Vi cơ bản.

  • Gõ lệnh “vi” sau đó là tên file muốn tạo và bạn sẽ được đưa vào trong trình soạn thảo Vi. Ở đây chúng ta sẽ tạo file script (đuôi .sh) để tiện sử dụng cho các script ở mục 5.3 và 5.4.
[root@ol79 testdir]# vi script.sh

~

~

~

"script.sh" [New File]

Vi có 2 loại chế độ (mode) sử dụng là Insert Mode và Command Mode. Insert Mode để ghi nội dung file như thông thường, còn Command Mode để thao tác lệnh với trình soạn thảo như lưu, thoát file, v.v…

  • Khi mở trình soạn thảo với lệnh “vi”, ta sẽ mặc định vào Command Mode, lúc này ta ấn phím “i” để vào Insert Mode (hiện dòng chữ “INSERT” cuối màn hình tức là đã vào Insert Mode) và ghi nội dung file như bình thường.
echo "hello"

~

~

~

-- INSERT --

(trong file ta sẽ ghi nội dung là các lệnh Linux để sử dụng cho các mục sau)

  • Sau khi ghi nội dung xong, ấn phím “esc” để thoát Insert Mode và quay lại Command Mode. Để lưu và thoát file ta gõ lệnh “:x” hoặc “:wq” và ấn Enter.
echo "hello"

~

~

~

:wq
  • Kiểm tra nội dung file vừa được ghi với lệnh “cat”.
[root@ol79 testdir]# vi script.sh

[root@ol79 testdir]# cat script.sh

echo "hello"

[root@ol79 testdir]#

Một vài lưu ý khi sử dụng Vi:

  • Lệnh “vi” sẽ tạo mới file với tên được chỉ định nếu chưa tồn tại file đó (như ví dụ trên thì ta đã tạo và sửa đồng thời file “script.sh”.
  • Không nên tạo và ghi file với Vi từ xa để (đứng ở ngoài thư mục cần tạo file), vì nếu thư mục mẹ chưa được tạo sẽ có lỗi như dưới đây. Hãy “cd” vào thư mục trước rồi mới thực hiện tạo và ghi nội dung file với “vi”,
[root@ol79 testdir]# vi /root/testscript/script.sh

echo "hello"

~

~

~

:wq

~

~

~

"/root/testscript/script.sh" E212: Can't open file for writing

Press ENTER or type command to continue

Dưới đây là các lệnh cơ bản trong Command Mode của Vi.

Lệnh Mô tả
:w Lưu
:q Thoát
:q! Ép buộc thoát mà không lưu
😡 Lưu và thoát
:u Đảo ngược thay đổi vừa thực hiện

5.2. Thế nào là Script Bash Shell?

Như đã nói ở mục 2.2 về kiến trúc của hệ điều hành Linux, Shell là thành phần nằm giữa người dùng và Kernel, có nhiệm vụ phiên dịch các câu lệnh cho Kernel hiểu để thao tác với tài nguyên phần cứng của máy tính

Bash Shell là một ngôn ngữ lập trình thông dịch dùng cho Shell của các hệ thống Linux. Các lệnh mà bạn gõ từ trước đến nay đều thuộc tập lệnh của Bash Shell, để xem đường dẫn chứa Bash Shell ta thực hiện như dưới đây.

[root@ol79 ~]# echo $SHELL

/bin/bash

[root@ol79 ~]#

(“$SHELL” là tên biến chứa đường dẫn đến Bash Shell cho người dùng sử dụng để thực thi các câu lệnh thao tác với Kernel)

Bash Shell là một ngôn ngữ thông dịch nên ta có thể tập hợp các câu lệnh của nó lại thành 1 file gọi là các file script Bash Shell. Sau đó thực thi file script này để tự động hóa các công việc trên Linux mà không phải gõ lại các lệnh nhiều lần.

Các file script Bash Shell sẽ có đuôi “.sh” và nội dung file có thể chứa 1 hay nhiều câu lệnh như file “script.sh” ta đã tạo với lệnh “vi” ở mục 5.1.

  • Trước hết ta cần cấp quyền thực thi cho file.
[root@ol79 testdir]# chmod u+x script.sh

[root@ol79 testdir]# ls -l | grep script

-rwxr--r--. 1 root root 13 Oct 23 23:05 script.sh

[root@ol79 testdir]#
  • Để chạy file ta chỉ cần gõ tên file kèm đường dẫn đến file đó. Ta có thể ghi cụ thể đường dẫn hoặc dùng dấu “.” để ám chỉ đường dẫn thư mục hiện tại (xem lại mục 3.1) như sau.
[root@ol79 testdir]# /root/testdir/script.sh

hello

[root@ol79 testdir]# ./script.sh

hello

[root@ol79 testdir]#

Chương 6: Cài đặt và quản lý gói phần mềm

Trong Linux, các ứng dụng hay chương trình đều được cài đặt thông qua các gói phần mềm gọi là Package. …

6.1. Cài đặt gói phần mềm với Yum

  • Gõ lệnh “yum install <package_name>”. Thêm option -y để tự động đồng ý với các dependency package khác khi kèm.
[root@ol79 testdir]# yum install -y httpd

Loaded plugins: langpacks, ulninfo

Resolving Dependencies

--> Running transaction check

---> Package httpd.x86_64 0:2.4.6-97.0.7.el7_9.5 will be installed

--> Processing Dependency: httpd-tools = 2.4.6-97.0.7.el7_9.5 for package-2.4.6-97.0.7.el7_9.5.x86_64

--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-97.0..5.x86_64

--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.7.el7_9.5.x86_64

--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-7.0.7.el7_9.5.x86_64

--> Running transaction check

---> Package apr.x86_64 0:1.4.8-7.el7 will be installed

---> Package apr-util.x86_64 0:1.5.2-6.0.1.el7 will be installed

---> Package httpd-tools.x86_64 0:2.4.6-97.0.7.el7_9.5 will be installed

---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed

--> Finished Dependency Resolution

...

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : apr-1.4.8-7.el7.x86_64 1/5

Installing : apr-util-1.5.2-6.0.1.el7.x86_64 2/5

Installing : httpd-tools-2.4.6-97.0.7.el7_9.5.x86_64 3/5

Installing : mailcap-2.1.41-2.el7.noarch 4/5

Installing : httpd-2.4.6-97.0.7.el7_9.5.x86_64 5/5

Verifying : mailcap-2.1.41-2.el7.noarch 1/5

Verifying : httpd-tools-2.4.6-97.0.7.el7_9.5.x86_64 2/5

Verifying : apr-util-1.5.2-6.0.1.el7.x86_64 3/5

Verifying : apr-1.4.8-7.el7.x86_64 4/5

Verifying : httpd-2.4.6-97.0.7.el7_9.5.x86_64 5/5

Installed:

httpd.x86_64 0:2.4.6-97.0.7.el7_9.5

Dependency Installed:

apr.x86_64 0:1.4.8-7.el7

apr-util.x86_64 0:1.5.2-6.0.1.el7

httpd-tools.x86_64 0:2.4.6-97.0.7.el7_9.5

mailcap.noarch 0:2.1.41-2.el7

Complete!

[root@ol79 testdir]#

  • Kiểm tra danh sách gói đã cài “yum list”. Thêm “| grep” để tìm được tên gói mong muốn.
[root@ol79 testdir]# yum list | grep httpd

httpd.x86_64 2.4.6-97.0.7.el7_9.5 @ol7_latest

httpd-tools.x86_64 2.4.6-97.0.7.el7_9.5 @ol7_latest

httpd-devel.x86_64 2.4.6-97.0.7.el7_9.5 ol7_latest

httpd-manual.noarch 2.4.6-97.0.7.el7_9.5 ol7_latest

keycloak-httpd-client-install.noarch 0.8-1.el7 ol7_latest

libmicrohttpd.i686 0.9.33-2.el7 ol7_latest

libmicrohttpd.x86_64 0.9.33-2.el7 ol7_latest

python2-keycloak-httpd-client-install.noarch

[root@ol79 testdir]#
  • Xóa gói đã cài “yum remove”.
[root@ol79 testdir]# yum remove -y httpd

Loaded plugins: langpacks, ulninfo

Resolving Dependencies

--> Running transaction check

---> Package httpd.x86_64 0:2.4.6-97.0.7.el7_9.5 will be erased

--> Finished Dependency Resolution

Dependencies Resolved

...

Remove 1 Package

Installed size: 3.7 M

Downloading packages:

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Erasing : httpd-2.4.6-97.0.7.el7_9.5.x86_64 1/1

Verifying : httpd-2.4.6-97.0.7.el7_9.5.x86_64 1/1

Removed:

httpd.x86_64 0:2.4.6-97.0.7.el7_9.5

Complete!

[root@ol79 testdir]#

6.2. Cài đặt gói phần mềm với RPM

  • Gõ lệnh “rpm -i <package_name>”.
[root@ol79 testdir]# rpm -i

[root@ol79 testdir]#
  • Gõ lệnh “rpm -i <package_name>”.
[root@ol79 testdir]# rpm -ivh

[root@ol79 testdir]#
  • Gõ lệnh “rpm – <package_name>”.
[root@ol79 testdir]# rpm -qa | grep

[root@ol79 testdir]#

Chương 7: Cấu hình đĩa và phân vùng

7.1. Quản lý, cấu hình đĩa

  • Xem danh sách đĩa có trên hệ điều hành dùng lệnh “lsblk”.
[root@ol79 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 100G 0 disk

sr0 11:0 1 1024M 0 rom

sda 8:0 0 100G 0 disk

├─sda2 8:2 0 99G 0 part

│ ├─ol-swap 252:1 0 2G 0 lvm [SWAP]

│ ├─ol-home 252:2 0 47G 0 lvm /home

│ └─ol-root 252:0 0 50G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot
  • Thực hiện partition đĩa sdb với lệnh “fdisk”.
[root@ol79 ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0x77bfbb02.

Command (m for help):
  • Thực hiện partition đĩa sdb với lệnh “fdisk”.
[root@ol79 ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0x77bfbb02.

Command (m for help): m

Command action

a toggle a bootable flag

b edit bsd disklabel

c toggle the dos compatibility flag

d delete a partition

g create a new empty GPT partition table

G create an IRIX (SGI) partition table

l list known partition types

m print this menu

n  add a new partition

o create a new empty DOS partition table

p print the partition table

q quit without saving changes

s create a new empty Sun disklabel

t change a partition's system id

u change display/entry units

v verify the partition table

w write table to disk and exit

x extra functionality (experts only)
  • Gõ phím “n” để tạo partition mới.
Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-209715199, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +30G

Partition 1 of type Linux and of size 30 GiB is set
  • Kiểm tra partition vừa tạo.
Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x77bfbb02

Device Boot Start End Blocks Id System

/dev/sdb1 2048 62916607 31457280 83 Linux
  • Tạo thêm partition mới .
Command (m for help): n

Partition type:

p primary (1 primary, 0 extended, 3 free)

e extended

Select (default p): p

Partition number (2-4, default 2):

First sector (62916608-209715199, default 62916608):

Using default value 62916608

Last sector, +sectors or +size{K,M,G} (62916608-209715199, default 209715199): +30G

Partition 2 of type Linux and of size 30 GiB is set

Command (m for help): n

Partition type:

p primary (2 primary, 0 extended, 2 free)

e extended

Select (default p): p

Partition number (3,4, default 3): 3

First sector (125831168-209715199, default 125831168):

Using default value 125831168

Last sector, +sectors or +size{K,M,G} (125831168-209715199, default 209715199):

Using default value 209715199

Partition 3 of type Linux and of size 40 GiB is set
  • Kiểm tra lại bảng partition của đĩa sdb và thoát khỏi trình tạo của lệnh “fdisk”.
Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x77bfbb02

Device Boot Start End Blocks Id System

/dev/sdb1 2048 62916607 31457280 83 Linux

/dev/sdb2 62916608 125831167 31457280 83 Linux

/dev/sdb3 125831168 209715199 41942016 83 Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.
  • Kiểm tra lại danh sách đĩa với lệnh “lsblk”.
[root@ol79 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 100G 0 disk

├─sdb2 8:18 0 30G 0 part

├─sdb3 8:19 0 40G 0 part

└─sdb1 8:17 0 30G 0 part

sr0 11:0 1 1024M 0 rom

sda 8:0 0 100G 0 disk

├─sda2 8:2 0 99G 0 part

│ ├─ol-swap 252:1 0 2G 0 lvm [SWAP]

│ ├─ol-home 252:2 0 47G 0 lvm /home

│ └─ol-root 252:0 0 50G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

[root@ol79 ~]#
  • Format lại định dạng đĩa.
[root@ol79 ~]# mkfs.ext4 /dev/sdb3

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

2621440 inodes, 10485504 blocks

524275 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=2157969408

320 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done
  • Thực hiện mount đĩa lên thành phân vùng.
[root@ol79 testdir]# mkdir -p /data3

[root@ol79 ~]# mount /dev/sdb3 /data3

[root@ol79 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 100G 0 disk

├─sdb2 8:18 0 30G 0 part

├─sdb3 8:19 0 40G 0 part /data3

└─sdb1 8:17 0 30G 0 part

sr0 11:0 1 1024M 0 rom

sda 8:0 0 100G 0 disk

├─sda2 8:2 0 99G 0 part

│ ├─ol-swap 252:1 0 2G 0 lvm [SWAP]

│ ├─ol-home 252:2 0 47G 0 lvm /home

│ └─ol-root 252:0 0 50G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

[root@ol79 ~]#

7.2. Cấu hình LVM trên Linux

  • Kiểm tra danh sách Physical Volume trên máy.
[root@ol79 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 ol lvm2 a-- <99.00g 4.00m
  • Tạo Physical Volume mới.
[root@ol79 ~]# pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created.

[root@ol79 ~]#
  • Kiểm tra thông tin chi tiết Physical Volume.
[root@ol79 ~]# pvdisplay

...

--- NEW Physical volume ---

PV Name /dev/sdb1

VG Name

PV Size 30.00 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID xjYN11-ZvAU-1Xlh-HBIl-578o-cd1E-nQ0i45

[root@ol79 ~]#
  • Kiểm tra danh sách Volume Group.
[[root@ol79 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

ol 1 3 0 wz--n- <99.00g 4.00m

[root@ol79 ~]#
  • Tạo Volume Group mới.
[root@ol79 ~]# vgcreate vg_data /dev/sdb1

Volume group "vg_data" successfully created

[root@ol79 ~]#
  • Kiểm tra thông tin chi tiết Volume Group.
[root@ol79 ~]# vgdisplay

...

--- Volume group ---

VG Name vg_data

System ID

Format lvm2

Metadata Areas 1

Metadata Sequence No 1

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 0

Open LV 0

Max PV 0

Cur PV 1

Act PV 1

VG Size <30.00 GiB

PE Size 4.00 MiB

Total PE 7679

Alloc PE / Size 0 / 0

Free PE / Size 7679 / <30.00 GiB

VG UUID m8QrUe-Igbe-vYlE-i9qd-3dq0-cT2n-NJVcv0

[root@ol79 ~]#
  • Kiểm tra Logical Volume.
[root@ol79 ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

home ol -wi-ao---- 46.99g

root ol -wi-ao---- 50.00g

swap ol -wi-ao---- 2.00g
  • Tạo Logical Volume mới với 100% dung lượng từ Volume Group.
[root@ol79 ~]# lvcreate -l 100%FREE -n lv_DATA vg_data

Logical volume "lv_DATA" created.

[root@ol79 ~]#
  • Tạo Logical Volume mới với 100% dung lượng từ Volume Group.
[root@ol79 ~]# lvdisplay

...

--- Logical volume ---

LV Path /dev/vg_data/lv_DATA

LV Name lv_DATA

VG Name vg_data

LV UUID bKWASq-IB7G-lscb-xetu-0Dv9-LErt-56irIq

LV Write Access read/write

LV Creation host, time ol79, 2022-10-20 15:24:38 +0700

LV Status available

# open 0

LV Size <30.00 GiB

Current LE 7679

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 252:3

[root@ol79 ~]#
  • Kiểm tra lại danh sách đĩa với lệnh “lsblk”.
[root@ol79 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 100G 0 disk

├─sdb2 8:18 0 30G 0 part

├─sdb3 8:19 0 40G 0 part /data3

└─sdb1 8:17 0 30G 0 part

 └─vg_data-lv_DATA 252:3 0 30G 0 lvm

sr0 11:0 1 1024M 0 rom

sda 8:0 0 100G 0 disk

├─sda2 8:2 0 99G 0 part

│ ├─ol-swap 252:1 0 2G 0 lvm [SWAP]

│ ├─ol-home 252:2 0 47G 0 lvm /home

│ └─ol-root 252:0 0 50G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

[root@ol79 ~]#

7.3. Thay đổi kích thước đĩa

  • Thêm đĩa vào Volume Group, cần tạo Physical Volume trước.
[root@ol79 ~]# pvcreate /dev/sdb2

Physical volume "/dev/sdb2" successfully created.

[root@ol79 ~]# vgextend vg_data /dev/sdb2

Volume group "vg_data" successfully extended

[root@ol79 ~]#

[root@ol79 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

ol 1 3 0 wz--n- <99.00g 4.00m

vg_data 2 1 0 wz--n- 59.99g 0
  • Tăng kích thước Logical Volume.
[root@ol79 ~]# lvextend -l +100%FREE /dev/vg_data/lv_DATA

Size of logical volume vg_data/lv_DATA changed from <30.00 GiB (7679 extents) to 59.99 GiB (15358 extents).

Logical volume vg_data/lv_DATA successfully resized.

[root@ol79 ~]#
  • Tăng kích thước Logical Volume.
[root@ol79 ~]# lsblk
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb                   8:16   0  100G  0 disk
├─sdb2                8:18   0   30G  0 part
│ └─vg_data-lv_DATA 252:3    0   60G  0 lvm
├─sdb3                8:19   0   40G  0 part /data3
└─sdb1                8:17   0   30G  0 part
  └─vg_data-lv_DATA 252:3    0   60G  0 lvm
sr0                  11:0    1 1024M  0 rom
sda                   8:0    0  100G  0 disk
├─sda2                8:2    0   99G  0 part
│ ├─ol-swap         252:1    0    2G  0 lvm  [SWAP]
│ ├─ol-home         252:2    0   47G  0 lvm  /home
│ └─ol-root         252:0    0   50G  0 lvm  /
└─sda1                8:1    0    1G  0 part /boot
[root@ol79 ~]#

 

 

Views: 6333





    Câu hỏi bảo mật

    Trả lời

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *