Thứ tư, 13/07/2016 | 00:00 GMT+7


Linux có hệ thống và công cụ mạnh mẽ để quản lý các thiết bị phần cứng, bao gồm cả ổ lưu trữ. Trong bài viết này, ta sẽ trình bày ở cấp độ cao, cách Linux đại diện cho các thiết bị này và cách lưu trữ thô được tạo thành không gian có thể sử dụng trên server .

Lưu trữ khối là gì?

Lưu trữ khối là một tên khác của cái mà nhân Linux gọi là thiết bị khối. Thiết bị khối là một phần cứng được dùng để lưu trữ dữ liệu, như ổ đĩa cứng quay truyền thống (HDD), ổ đĩa trạng thái rắn (SSD), thẻ nhớ flash, v.v. Nó được gọi là thiết bị khối vì các giao diện kernel với phần cứng bằng cách tham chiếu đến các khối có kích thước cố định hoặc các khối không gian.

Vì vậy, về cơ bản, lưu trữ khối là những gì bạn nghĩ về lưu trữ đĩa thông thường trên máy tính. Sau khi được cài đặt , về cơ bản, nó hoạt động như một phần mở rộng của cây hệ thống file hiện tại và bạn có thể ghi hoặc đọc thông tin từ ổ đĩa một cách liền mạch.

Phân vùng đĩa là gì?

Phân vùng đĩa là một cách chia nhỏ ổ lưu trữ thành các đơn vị nhỏ hơn có thể sử dụng được. Phân vùng là một phần của ổ lưu trữ có thể được xử lý theo cách giống như chính ổ đĩa.

Phân vùng cho phép bạn phân đoạn không gian có sẵn và sử dụng mỗi phân vùng cho một mục đích khác nhau. Điều này mang lại cho user sự linh hoạt, cho phép họ có thể phân đoạn cài đặt của bạn để dễ dàng nâng cấp, nhiều hệ điều hành, không gian swap hoặc các hệ thống file chuyên biệt.

Trong khi đĩa có thể được định dạng và sử dụng mà không cần phân vùng, một số hệ điều hành mong đợi tìm thấy một bảng phân vùng, ngay cả khi chỉ có một phân vùng duy nhất được ghi vào đĩa. Thông thường, bạn nên phân vùng các ổ đĩa mới để có được sự linh hoạt hơn.

MBR so với GPT

Khi phân vùng đĩa, điều quan trọng là phải biết định dạng phân vùng sẽ được sử dụng. Điều này thường đi đến sự lựa chọn giữa MBR (Bản ghi khởi động chính) và GPT (Bảng phân vùng GUID).

MBR là hệ thống phân vùng truyền thống, đã được sử dụng hơn 30 năm. Vì tuổi đời của nó, nó có một số hạn chế nghiêm trọng. Ví dụ: nó không thể được sử dụng cho các đĩa có kích thước trên 2TB và chỉ có thể có tối đa bốn phân vùng chính. Do đó, phân vùng thứ tư thường được cài đặt như một "phân vùng mở rộng", trong đó "phân vùng logic" có thể được tạo. Điều này cho phép bạn chia nhỏ phân vùng cuối cùng để cho phép phân vùng bổ sung một cách hiệu quả.

GPT là một sơ đồ phân vùng hiện đại hơn cố gắng giải quyết một số vấn đề vốn có với MBR. Hệ thống chạy GPT có thể có nhiều phân vùng hơn trên mỗi đĩa. Điều này thường chỉ bị giới hạn bởi các hạn chế do chính hệ điều hành áp đặt. Ngoài ra, giới hạn kích thước đĩa không tồn tại với GPT và thông tin bảng phân vùng có sẵn ở nhiều vị trí để bảo vệ chống tham nhũng. GPT cũng có thể ghi một “MBR bảo vệ” cho các công cụ chỉ sử dụng MBR biết rằng đĩa đang được sử dụng.

Trong hầu hết các trường hợp, GPT là lựa chọn tốt hơn trừ khi hệ điều hành hoặc công cụ của bạn ngăn bạn sử dụng nó.

Định dạng và Hệ thống file

Mặc dù kernel Linux có thể nhận dạng đĩa thô, nhưng ổ đĩa này không thể được sử dụng nguyên trạng. Để sử dụng nó, nó phải được định dạng. Định dạng là quá trình ghi một hệ thống file vào đĩa và chuẩn bị cho các hoạt động của file . Hệ thống file là hệ thống cấu trúc dữ liệu và kiểm soát cách thông tin được ghi vào và truy xuất từ đĩa bên dưới. Nếu không có hệ thống file , bạn không thể sử dụng thiết bị lưu trữ cho bất kỳ hoạt động nào liên quan đến file .

Có nhiều định dạng hệ thống file khác nhau, mỗi định dạng có sự cân bằng giữa một số kích thước khác nhau, bao gồm hỗ trợ hệ điều hành. Ở mức độ cơ bản, tất cả chúng đều giới thiệu cho user một đại diện giống nhau của đĩa, nhưng các tính năng mà mỗi loại hỗ trợ và cơ chế được sử dụng để kích hoạt hoạt động của user và bảo trì có thể rất khác nhau.

Một số hệ thống file phổ biến hơn cho Linux là:

  • Ext4 : Hệ thống file mặc định phổ biến nhất là Ext4, hoặc version thứ tư của hệ thống file mở rộng. Hệ thống file Ext4 được ghi log , tương thích ngược với các hệ thống cũ, cực kỳ ổn định và có hỗ trợ và công cụ hoàn thiện. Đó là một lựa chọn tốt nếu bạn không có nhu cầu chuyên biệt.
  • XFS : XFS chuyên về hiệu suất và các file dữ liệu lớn. Nó định dạng nhanh chóng và có đặc điểm thông lượng tốt khi xử lý các file lớn và khi làm việc với các đĩa lớn. Nó cũng có các tính năng chụp nhanh trực tiếp. XFS sử dụng ghi log metadata thay vì ghi log cả metadata và dữ liệu. Điều này dẫn đến hiệu suất nhanh, nhưng có thể dẫn đến hỏng dữ liệu trong trường hợp mất điện đột ngột.
  • Btrfs : Btrfs là hệ thống file copy-on-ghi hiện đại, giàu tính năng. Kiến trúc này cho phép một số chức năng quản lý dung lượng được tích hợp trong lớp hệ thống file , bao gồm ảnh chụp nhanh, sao chép, dung lượng , v.v. Btrfs vẫn gặp một số vấn đề khi xử lý các đĩa đầy đủ. Có một số cuộc tranh luận về sự sẵn sàng của nó đối với dung lượng công việc production và nhiều administrator hệ thống đang chờ đợi hệ thống file đạt đến độ chín lớn hơn.
  • ZFS : ZFS là một hệ thống file và quản lý dung lượng sao chép-ghi-ghi với bộ tính năng mạnh mẽ và hoàn thiện. Nó có các tính năng toàn vẹn dữ liệu tuyệt vời, có thể xử lý kích thước hệ thống file lớn, có các tính năng dung lượng điển hình như chụp nhanh và sao chép, và có thể tổ chức dung lượng thành các mảng giống RAID và RAID cho mục đích dự phòng và hiệu suất. Về việc sử dụng trên Linux, ZFS có một lịch sử gây tranh cãi do lo ngại về cấp phép. Tuy nhiên, Ubuntu hiện đang vận chuyển một module kernel binary cho nó và Debian bao gồm mã nguồn trong repository của nó. Hỗ trợ trên các bản phân phối khác vẫn chưa được xác định.

Cách Linux quản lý thiết bị lưu trữ

Tệp thiết bị trong / dev

Trong Linux, hầu hết mọi thứ đều được biểu diễn bằng một file . Điều này bao gồm phần cứng như ổ lưu trữ, được thể hiện trên hệ thống dưới dạng file trong folder /dev . Thông thường, các file đại diện cho thiết bị lưu trữ bắt đầu bằng sd hoặc hd theo sau là một chữ cái. Ví dụ: ổ đĩa đầu tiên trên server thường là /dev/sda .

Các phân vùng trên các ổ đĩa này cũng có các file bên trong /dev , được biểu thị bằng cách thêm số phân vùng vào cuối tên ổ.Ví dụ: phân vùng đầu tiên trên ổ đĩa từ ví dụ trước sẽ là /dev/sda1 .

Trong khi các file thiết bị /dev/sd*/dev/hd* đại diện cho cách truyền thống để chỉ ổ đĩa và phân vùng, có một nhược điểm đáng kể khi sử dụng các giá trị này bởi chính chúng. Nhân Linux quyết định thiết bị nào nhận được tên nào trong mỗi lần khởi động, vì vậy điều này có thể dẫn đến các tình huống khó hiểu trong đó thiết bị của bạn thay đổi các node thiết bị.

Để khắc phục sự cố này, folder /dev/disk chứa các folder con tương ứng với các cách khác nhau, bền bỉ hơn để xác định đĩa và phân vùng trên hệ thống. Chúng chứa các softlink được tạo khi khởi động trở lại đúng file /dev/[sh]da* . Các liên kết được đặt tên theo đặc điểm nhận dạng của folder (ví dụ: theo nhãn phân vùng trong folder /dev/disk/by-partlabel ). Các liên kết này sẽ luôn trỏ đến đúng thiết bị, vì vậy chúng được dùng làm định danh tĩnh cho không gian lưu trữ.

Một số hoặc tất cả các folder con sau có thể tồn tại trong /dev/disk :

  • by-label : Hầu hết các hệ thống file đều có cơ chế gắn nhãn cho phép gán các tên tùy ý do user chỉ định cho một đĩa hoặc phân vùng. Thư mục này bao gồm các liên kết được đặt tên theo các nhãn do user cung cấp này.
  • by-uuid : UUID hoặc số nhận dạng duy nhất phổ biến, là một chuỗi dài, duy nhất gồm các chữ cái và số được dùng làm ID cho tài nguyên lưu trữ. Chúng thường không thể đọc được bởi con người, nhưng được đảm bảo khá nhiều là duy nhất, ngay cả trên các hệ thống. Do đó, có thể là một ý kiến hay khi sử dụng UUID để tham chiếu đến bộ nhớ có thể di chuyển giữa các hệ thống, vì ít có khả năng xảy ra xung đột về tên.
  • by-partlabelby-partuuid : Bảng GPT cung cấp bộ nhãn và UUID của riêng chúng, cũng được dùng để nhận dạng. Chức năng này gần giống như hai folder trước đó, nhưng sử dụng số nhận dạng dành riêng cho GPT.
  • by-id : Thư mục này chứa các liên kết được tạo bởi số sê-ri của chính phần cứng và phần cứng mà chúng được gắn vào. Điều này không hoàn toàn liên tục, vì cách thiết bị được kết nối với hệ thống có thể thay đổi tên by-id nó.
  • by-path : Giống như by-id , folder này dựa vào kết nối thiết bị lưu trữ với chính hệ thống. Các liên kết ở đây được xây dựng bằng cách sử dụng cách diễn giải của hệ thống về phần cứng được sử dụng để truy cập thiết bị. Điều này có nhược điểm giống như by-id là kết nối thiết bị với một cổng khác có thể thay đổi giá trị này.

Thông thường, by-label hoặc by-uuid là những lựa chọn tốt nhất để xác định liên tục các thiết bị cụ thể.

Ghi chú
Dung lượng lưu trữ khối DigitalOcean kiểm soát số sê-ri thiết bị được báo cáo với hệ điều hành. Điều này cho phép phân loại theo by-id được ổn định một cách tin cậy trên nền tảng này. Đây là phương pháp ưa thích để đề cập đến dung lượng DigitalOcean vì nó vừa bền bỉ vừa có thể dự đoán được trong lần khởi động đầu tiên.

Gắn thiết bị khối

Tệp thiết bị trong /dev được sử dụng để giao tiếp với trình điều khiển Kernel cho thiết bị được đề cập. Tuy nhiên, cần có một bản tóm tắt hữu ích hơn để coi thiết bị như một phần của không gian khả dụng.

Trong Linux và các hệ điều hành giống Unix khác, toàn bộ hệ thống, dù có bao nhiêu thiết bị vật lý tham gia, đều được biểu diễn bằng một cây file thống nhất duy nhất. Như vậy, khi hệ thống file trên ổ đĩa hoặc phân vùng được sử dụng, nó phải được nối vào cây hiện có. Mount là quá trình gắn một phân vùng hoặc ổ đĩa đã được định dạng vào một folder trong hệ thống file Linux. Nội dung của ổ đĩa sau đó có thể được truy cập từ folder đó.

Các ổ đĩa hầu như luôn được gắn trên các folder trống chuyên dụng (gắn trên một folder không trống nghĩa là nội dung thông thường của folder sẽ không thể truy cập được cho đến khi ổ đĩa được ngắt kết nối). Có nhiều tùy chọn lắp đặt khác nhau có thể được đặt để thay đổi hoạt động của thiết bị được gắn. Ví dụ: ổ đĩa có thể được gắn ở chế độ chỉ đọc đảm bảo rằng nội dung của nó sẽ không bị thay đổi.

Tiêu chuẩn phân cấp hệ thống file khuyến nghị sử dụng /mnt hoặc một folder con bên dưới nó cho các hệ thống file được gắn tạm thời. Nếu điều này phù hợp với trường hợp sử dụng của bạn, đây có lẽ là nơi tốt nhất để gắn nó. Nó không đưa ra khuyến nghị về nơi lắp thêm bộ nhớ lâu dài, vì vậy bạn có thể chọn bất kỳ sơ đồ nào bạn muốn. Trong nhiều trường hợp, folder con /mnt hoặc /mnt cũng được sử dụng để lưu trữ lâu dài hơn.

Làm cho mount vĩnh viễn với / etc / fstab

Hệ thống Linux xem xét một file có tên /etc/fstab (bảng hệ thống file ) để xác định hệ thống file nào sẽ mount trong quá trình khởi động. Các hệ thống file không có mục nhập trong file này sẽ không được tự động mount (ngoại lệ là những hệ thống được xác định bởi các file đơn vị systemd .mount , mặc dù chúng không phổ biến tại thời điểm này).

Tệp /etc/fstab khá đơn giản. Mỗi dòng đại diện cho một hệ thống file khác nhau cần được mount . Dòng này chỉ định thiết bị khối, điểm mount để gắn nó vào, định dạng ổ đĩa và các tùy chọn mount , cũng như một số thông tin khác.

Quản lý lưu trữ phức tạp hơn

Mặc dù hầu hết các trường hợp sử dụng đơn giản không cần cấu trúc quản lý bổ sung, nhưng các mô hình quản lý phức tạp hơn có thể đạt được hiệu suất cao hơn, dự phòng hoặc linh hoạt hơn.

RAID là gì?

RAID là viết tắt của r edundant a rray of i ndependent d isks. RAID là công nghệ ảo hóa và quản lý lưu trữ cho phép bạn group các ổ đĩa lại với nhau và quản lý chúng như một đơn vị duy nhất với các tính năng bổ sung.

Các đặc tính của mảng RAID phụ thuộc vào mức RAID của nó, về cơ bản nó xác định cách các đĩa trong mảng liên quan với nhau. Mức được chọn có tác động đến hiệu suất và khả năng dự phòng của tập hợp. Một số cấp độ phổ biến hơn là:

  • RAID 0 : Mức này biểu thị việc phân dải ổ đĩa. Điều này nghĩa là khi dữ liệu được ghi vào mảng, nó được chia nhỏ và phân phối giữa các đĩa trong tập hợp. Điều này giúp tăng hiệu suất vì nhiều đĩa có thể được ghi vào hoặc đọc đồng thời. Nhược điểm là một ổ đĩa bị lỗi có thể làm mất tất cả dữ liệu trong toàn bộ mảng, vì không có đĩa nào chứa đủ thông tin về nội dung để xây dựng lại.
  • RAID 1 : RAID 1 về cơ bản là sao chép ổ đĩa. Mọi thứ được ghi vào mảng RAID 1 đều được ghi vào nhiều đĩa. Ưu điểm chính là dự phòng dữ liệu, cho phép dữ liệu tồn tại trong ổ cứng bị mất ở hai bên gương. Vì nhiều ổ chứa cùng một dữ liệu nên dung lượng có thể sử dụng bị giảm đi một nửa.
  • RAID 5 : RAID 5 sọc dữ liệu trên nhiều ổ đĩa, tương tự như RAID 0. Tuy nhiên, cấp độ này cũng thực hiện tính chẵn lẻ phân tán trên các ổ đĩa. Về cơ bản, điều này nghĩa là nếu ổ đĩa bị lỗi, các ổ đĩa còn lại có thể xây dựng lại mảng bằng cách sử dụng thông tin chẵn lẻ được chia sẻ giữa chúng. Thông tin chẵn lẻ đủ để xây dựng lại bất kỳ một đĩa nào, nghĩa là mảng có thể tồn tại bất kỳ sự cố mất đĩa nào. Thông tin chẵn lẻ làm giảm không gian có sẵn trong mảng bằng dung lượng của một đĩa.
  • RAID 6 : RAID 6 có các thuộc tính giống như RAID 5, nhưng cung cấp tính chẵn lẻ gấp đôi. Điều này nghĩa là mảng RAID 6 có thể chịu được việc mất 2 ổ đĩa bất kỳ. Dung lượng của mảng lại bị ảnh hưởng bởi số lượng chẵn lẻ, nghĩa là dung lượng có thể sử dụng bị giảm bởi hai đĩa có giá trị không gian.
  • RAID 10 : RAID 10 là sự kết hợp của cấp độ 1 và 0. Đầu tiên, hai tập hợp các mảng được sao chép được tạo ra. Sau đó, dữ liệu được kẻ sọc trên chúng. Điều này tạo ra một mảng có một số đặc điểm dự phòng trong khi vẫn cung cấp hiệu suất tốt. Tuy nhiên, điều này yêu cầu khá nhiều ổ đĩa và tổng dung lượng bằng một nửa dung lượng ổ đĩa kết hợp.

LVM là gì?

LVM, hoặc tương tự L ogical V olume M , là một hệ thống tóm tắt các đặc tính vật lý của các thiết bị lưu trữ bên dưới để tăng tính linh hoạt và sức mạnh. LVM cho phép bạn tạo các group thiết bị vật lý và quản lý nó như thể nó là một khối không gian duy nhất. Sau đó, bạn có thể phân đoạn không gian nếu cần thành các khối hợp lý, có chức năng như các phân vùng.

LVM được triển khai trên các phân vùng thông thường và giải quyết được nhiều hạn chế vốn có của các phân vùng cổ điển. Ví dụ: sử dụng ổ đĩa LVM, bạn có thể dễ dàng mở rộng phân vùng, tạo phân vùng trải dài nhiều ổ đĩa, chụp ảnh nhanh trực tiếp các phân vùng và di chuyển ổ đĩa sang các đĩa vật lý khác nhau. LVM được dùng kết hợp với RAID để cung cấp khả năng quản lý linh hoạt với các đặc tính hiệu suất RAID truyền thống.

Đi đâu tiếp theo?

Nếu bạn có thiết bị lưu trữ mới mà bạn muốn sử dụng trong hệ thống Linux của bạn , bài viết này sẽ hướng dẫn bạn quy trình cơ bản về phân vùng, định dạng và gắn hệ thống file mới của bạn. Điều này sẽ đủ cho hầu hết các trường hợp sử dụng mà bạn chủ yếu quan tâm đến việc bổ sung thêm dung lượng. Để tìm hiểu cách thực hiện các việc quản trị lưu trữ cơ bản, hãy xem bài viết này .


Tags:

Các tin liên quan