Cách quản lý mảng RAID với mdadm trên Ubuntu 16.04
Mảng RAID giúp tăng hiệu suất và khả năng dự phòng bằng cách kết hợp các đĩa riêng lẻ thành các thiết bị lưu trữ ảo theo các cấu hình cụ thể. Trong Linux, tiện íchmdadm
giúp bạn dễ dàng tạo và quản lý mảng RAID phần mềm. Trong hướng dẫn trước, ta đã trình bày cách tạo mảng RAID với mdadm
trên Ubuntu 16.04 . Trong hướng dẫn này, ta sẽ trình bày cách quản lý mảng RAID trên server Ubuntu 16.04. Quản lý mảng RAID khá đơn giản trong hầu hết các trường hợp.
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần quyền truy cập vào user sudo
không phải root. Bạn có thể làm theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 của ta để cài đặt user thích hợp.
Như đã đề cập ở trên, hướng dẫn này sẽ trình bày về quản lý mảng RAID. Làm theo hướng dẫn của ta về cách tạo mảng RAID với mdadm
trên Ubuntu 16.04 để tạo một hoặc nhiều mảng trước khi bắt đầu với hướng dẫn này. Hướng dẫn này sẽ giả định bạn có một hoặc nhiều mảng để hoạt động.
Truy vấn thông tin về thiết bị RAID
Một trong những yêu cầu thiết yếu nhất để quản lý thích hợp là khả năng tìm kiếm thông tin về cấu trúc, các thiết bị thành phần và trạng thái hiện tại của mảng.
Để nhận thông tin chi tiết về thiết bị RAID, hãy chuyển thiết bị RAID có tùy chọn -D
hoặc --detail
tới mdadm
:
- sudo mdadm -D /dev/md0
Thông tin quan trọng về mảng sẽ được hiển thị:
Output/dev/md0: Version : 1.2 Creation Time : Mon Aug 8 21:19:06 2016 Raid Level : raid10 Array Size : 209584128 (199.88 GiB 214.61 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Aug 8 21:36:36 2016 State : active Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Name : mdadmwrite:0 (local to host mdadmwrite) UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d Events : 18 Number Major Minor RaidDevice State 0 8 0 0 active sync set-A /dev/sda 1 8 16 1 active sync set-B /dev/sdb 2 8 32 2 active sync set-A /dev/sdc 3 8 48 3 active sync set-B /dev/sdd
Từ chế độ xem này, bạn có thể thấy mức RAID, kích thước mảng, tình trạng của các phần riêng lẻ, UUID của mảng, các thiết bị thành phần và role của chúng. Thông tin được cung cấp trong chế độ xem này đều được dán nhãn khá tốt.
Để nhận chi tiết rút gọn cho một mảng, thích hợp để thêm vào file /dev/mdadm/mdadm.conf
, bạn có thể chuyển vào cờ --brief
hoặc -b
với chế độ xem chi tiết:
- sudo mdadm -Db /dev/md0
OutputARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=0dc2e687:1dfe70ac:d440b2ac:5828d61d
Để có được bản tóm tắt nhanh chóng mà con người có thể đọc được về thiết bị RAID, hãy sử dụng tùy chọn -Q
để truy vấn nó:
- sudo mdadm -Q /dev/md0
Output/dev/md0: 199.88GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.
Điều này được dùng để tìm thông tin quan trọng về thiết bị RAID trong nháy mắt.
Nhận thông tin về các thiết bị thành phần
Bạn cũng có thể sử dụng mdadm
để truy vấn các thiết bị thành phần riêng lẻ.
Tùy chọn -Q
, khi được sử dụng với thiết bị thành phần, sẽ cho bạn biết mảng mà nó là một phần và role của nó:
- sudo mdadm -Q /dev/sdc
Output/dev/sdc: is not an md array /dev/sdc: device 2 in 4 device active raid10 /dev/md0. Use mdadm --examine for more detail.
Bạn có thể nhận thêm thông tin chi tiết bằng cách sử dụng các tùy chọn -E
hoặc - --examine
:
- sudo mdadm -E /dev/sdc
Output/dev/sdc: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d Name : mdadmwrite:0 (local to host mdadmwrite) Creation Time : Mon Aug 8 21:19:06 2016 Raid Level : raid10 Raid Devices : 4 Avail Dev Size : 209584128 (99.94 GiB 107.31 GB) Array Size : 209584128 (199.88 GiB 214.61 GB) Data Offset : 131072 sectors Super Offset : 8 sectors Unused Space : before=130984 sectors, after=0 sectors State : active Device UUID : b0676ef0:73046e93:9d9c7bde:c80352bb Update Time : Mon Aug 8 21:36:36 2016 Bad Block Log : 512 entries available at offset 72 sectors Checksum : 8be1be96 - correct Events : 18 Layout : near=2 Chunk Size : 512K Device Role : Active device 2 Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
Thông tin này tương tự như thông tin được hiển thị khi sử dụng tùy chọn -D
với thiết bị mảng, nhưng tập trung vào mối quan hệ của thiết bị thành phần với mảng.
Đọc thông tin / proc / mdstat
Để nhận thông tin chi tiết về từng mảng đã lắp ráp trên server của bạn, hãy kiểm tra file /proc/mdstat
. Đây thường là cách tốt nhất để tìm trạng thái hiện tại của các mảng đang hoạt động trên hệ thống của bạn:
- cat /proc/mdstat
OutputPersonalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0] 209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] unused devices: <none>
Đầu ra ở đây khá dày đặc, cung cấp nhiều thông tin trong một khoảng không gian nhỏ.
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] . . .
Dòng Personalities mô tả các mức RAID và cấu hình khác nhau mà kernel hiện đang hỗ trợ.
Dòng bắt đầu bằng md0 mô tả phần đầu của mô tả thiết bị RAID. (Các) dòng thụt lề theo sau cũng mô tả thiết bị này.
. . . md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0] . . .
Dòng đầu tiên cho biết mảng đang hoạt động (không bị lỗi) và được cấu hình là RAID 10. Sau đó, các thiết bị thành phần được sử dụng để xây dựng mảng được liệt kê. Các số trong ngoặc mô tả “ role ” hiện tại của thiết bị trong mảng (điều này ảnh hưởng đến các bản sao dữ liệu mà thiết bị được cung cấp).
. . . 209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] . . .
Dòng thứ hai được hiển thị trong ví dụ này cho biết số khối mà thiết bị ảo cung cấp, version metadata (1.2 trong ví dụ này) và kích thước khối của mảng. Vì đây là mảng RAID 10 nên nó cũng bao gồm thông tin về bố cục của mảng (ví dụ này đã được cấu hình để lưu trữ hai bản sao của mỗi phần dữ liệu trong bố cục “gần”).
Các mục cuối cùng trong dấu ngoặc vuông đều đại diện cho các thiết bị hiện có sẵn trong một tập hợp tốt. Số đầu tiên trong dấu ngoặc số cho biết kích thước của một mảng lành mạnh trong khi số thứ hai biểu thị số lượng thiết bị hiện có sẵn. Các dấu ngoặc khác là chỉ báo trực quan về tình trạng của mảng, với “U” đại diện cho các thiết bị khỏe mạnh và “_” đại diện cho các thiết bị bị lỗi.
Nếu mảng của bạn hiện đang lắp ráp hoặc khôi phục, bạn có thể có một dòng khác hiển thị tiến trình. Nó sẽ trông giống như thế này:
. . . [>....................] resync = 0.9% (2032768/209584128) finish=15.3min speed=225863K/sec . . .
Điều này mô tả hoạt động hiện đang được áp dụng và tiến trình hiện tại theo một số cách khác nhau. Nó cũng cung cấp tốc độ hiện tại và thời gian ước tính cho đến khi hoàn thành.
Sau khi bạn đã biết rõ về mảng nào hiện đang chạy trên hệ thống của bạn , bạn có thể thực hiện một số hành động.
Dừng một mảng
Để dừng một mảng, bước đầu tiên là ngắt kết nối nó.
Bước ra ngoài folder được mount và ngắt kết nối bằng lệnh :
- cd ~
- sudo umount /mnt/md0
Bạn có thể dừng tất cả các mảng đang hoạt động bằng lệnh :
- sudo mdadm --stop --scan
Nếu bạn muốn dừng một mảng cụ thể, hãy chuyển nó vào lệnh mdadm --stop
:
- sudo mdadm --stop /dev/md0
Điều này sẽ dừng mảng. Bạn sẽ phải tập hợp lại mảng để truy cập lại nó.
Bắt đầu một mảng
Để bắt đầu tất cả các mảng được xác định trong file cấu hình hoặc /proc/mdstat
, hãy nhập:
- sudo mdadm --assemble --scan
Để bắt đầu một mảng cụ thể, bạn có thể chuyển nó vào làm đối số cho mdadm --assemble
:
- sudo mdadm --assemble /dev/md0
Điều này hoạt động nếu mảng được xác định trong file cấu hình.
Nếu định nghĩa chính xác cho mảng bị thiếu trong file cấu hình, mảng vẫn có thể được bắt đầu bằng cách chuyển vào các thiết bị thành phần:
- sudo mdadm --assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Khi mảng được lắp ráp, nó có thể được mount như bình thường:
- sudo mount /dev/md0 /mnt/md0
Mảng bây giờ sẽ có thể truy cập được tại điểm mount .
Thêm thiết bị dự phòng vào một mảng
Thiết bị dự phòng có thể được thêm vào bất kỳ mảng nào cung cấp khả năng dự phòng (chẳng hạn như RAID 1, 5, 6 hoặc 10). Phần dự phòng sẽ không được mảng sử dụng tích cực trừ khi một thiết bị đang hoạt động bị lỗi. Khi điều này xảy ra, mảng sẽ đồng bộ hóa lại dữ liệu vào ổ đĩa dự phòng để sửa chữa mảng về trạng thái hoàn toàn. Không thể thêm phụ tùng vào mảng không dư thừa (RAID 0) vì mảng sẽ không tồn tại khi ổ đĩa bị lỗi.
Để thêm phụ tùng, chỉ cần chuyển mảng và thiết bị mới vào lệnh mdadm --add
:
- sudo mdadm /dev/md0 --add /dev/sde
Nếu mảng không ở trạng thái xuống cấp, thiết bị mới sẽ được thêm vào làm phụ tùng. Nếu thiết bị hiện đang xuống cấp, hoạt động đồng bộ lại sẽ bắt đầu ngay lập tức bằng cách sử dụng ổ đĩa dự phòng để thay thế ổ đĩa bị lỗi.
Sau khi bạn thêm phụ tùng, hãy cập nhật file cấu hình để phản ánh hướng thiết bị mới của bạn:
- sudo nano /etc/mdadm/mdadm.conf
Xóa hoặc comment dòng hiện tại tương ứng với định nghĩa mảng của bạn:
. . . # ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=d81c843b:4d96d9fc:5f3f499c:6ee99294
Sau đó, thêm cấu hình hiện tại của bạn:
- sudo mdadm --detail --brief /dev/md0 | sudo tee -a /etc/mdadm/mdadm.conf
Thông tin mới sẽ được tiện ích mdadm
sử dụng để lắp ráp mảng.
Tăng số lượng thiết bị đang hoạt động trong một mảng
Có thể phát triển một mảng bằng cách tăng số lượng thiết bị đang hoạt động trong assembly. Quy trình chính xác phụ thuộc một chút vào mức RAID bạn đang sử dụng.
Với RAID 1 hoặc 10
Bắt đầu bằng cách thêm thiết bị mới làm phụ tùng, giống như đã trình bày trong phần trước:
- sudo mdadm /dev/md0 --add /dev/sde
Tìm hiểu số lượng thiết bị RAID hiện tại trong mảng:
- sudo mdadm --detail /dev/md0
Output/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 15:29:26 2016 Raid Level : raid1 Array Size : 104792064 (99.94 GiB 107.31 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent . . .
Ta có thể thấy rằng trong ví dụ này, mảng được cấu hình để tích cực sử dụng hai thiết bị và tổng số thiết bị có sẵn cho mảng là ba (vì ta đã thêm một thiết bị dự phòng).
Bây giờ, hãy cấu hình lại mảng để có thêm một thiết bị hoạt động. Phụ tùng sẽ được sử dụng để đáp ứng yêu cầu ổ đĩa bổ sung:
- sudo mdadm --grow --raid-devices=3 /dev/md0
Mảng sẽ bắt đầu cấu hình lại với một đĩa hoạt động bổ sung. Để xem tiến trình đồng bộ hóa dữ liệu, hãy nhập:
- cat /proc/mdstat
Bạn có thể tiếp tục sử dụng thiết bị khi hoàn tất .
Với RAID 5 hoặc 6
Bắt đầu bằng cách thêm thiết bị mới làm phụ tùng, giống như đã trình bày trong phần trước:
- sudo mdadm /dev/md0 --add /dev/sde
Tìm hiểu số lượng thiết bị RAID hiện tại trong mảng:
- sudo mdadm --detail /dev/md0
Output/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 18:38:51 2016 Raid Level : raid5 Array Size : 209584128 (199.88 GiB 214.61 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent . . .
Ta có thể thấy rằng trong ví dụ này, mảng được cấu hình để tích cực sử dụng ba thiết bị và tổng số thiết bị có sẵn cho mảng là bốn (vì ta đã thêm một thiết bị dự phòng).
Bây giờ, hãy cấu hình lại mảng để có thêm một thiết bị hoạt động. Phụ tùng sẽ được sử dụng để đáp ứng yêu cầu truyền động bổ sung. Khi phát triển mảng RAID 5 hoặc RAID 6, điều quan trọng là phải bao gồm một tùy chọn bổ sung được gọi là --backup-file
. Điều này sẽ trỏ đến một vị trí ngoài mảng nơi lưu trữ file backup chứa thông tin quan trọng.
- sudo mdadm --grow --raid-devices=4 --backup-file=/root/md0_grow.bak /dev/md0
Kết quả sau cho biết rằng phần quan trọng sẽ được backup :
Outputmdadm: Need to backup 3072K of critical section..
Mảng sẽ bắt đầu cấu hình lại với một đĩa hoạt động bổ sung. Để xem tiến trình đồng bộ hóa dữ liệu, hãy nhập:
- cat /proc/mdstat
Bạn có thể tiếp tục sử dụng thiết bị khi quá trình này hoàn tất.
Sau khi định hình lại hoàn tất, bạn cần mở rộng hệ thống file trên mảng để tận dụng không gian bổ sung:
- sudo resize2fs /dev/md0
Mảng của bạn bây giờ phải có một hệ thống file phù hợp với dung lượng của nó.
Với RAID 0
Vì mảng RAID 0 không thể có ổ đĩa dự phòng (không có cơ hội để tạo lại mảng RAID 0 bị hỏng), ta phải thêm thiết bị mới vào cùng thời điểm ta phát triển mảng.
Trước tiên, hãy tìm số lượng thiết bị RAID hiện tại trong mảng:
- sudo mdadm --detail /dev/md0
Output/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 19:17:14 2016 Raid Level : raid0 Array Size : 209584128 (199.88 GiB 214.61 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent . . .
Bây giờ ta có thể tăng số lượng thiết bị RAID trong cùng một thao tác với việc bổ sung ổ đĩa mới:
- sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc
Bạn sẽ thấy kết quả cho biết rằng mảng đã được thay đổi thành RAID 4:
Outputmdadm: level of /dev/md0 changed to raid4 mdadm: added /dev/sdc
Đây là điều bình thường và được mong đợi. Mảng sẽ chuyển trở lại thành RAID 0 khi dữ liệu đã được phân phối lại cho tất cả các đĩa hiện có.
Bạn có thể kiểm tra tiến trình của hành động bằng lệnh :
- cat /proc/mdstat
Khi quá trình đồng bộ hóa hoàn tất, hãy thay đổi kích thước hệ thống file để sử dụng không gian bổ sung:
- sudo resize2fs /dev/md0
Mảng của bạn bây giờ phải có một hệ thống file phù hợp với dung lượng của nó.
Xóa thiết bị khỏi mảng
Đôi khi, việc xóa ổ đĩa khỏi mảng RAID là cần thiết nếu có lỗi hoặc nếu bạn cần chuyển đĩa.
Để xóa thiết bị, trước tiên thiết bị đó phải được đánh dấu là “không thành công” trong mảng. Bạn có thể kiểm tra xem có thiết bị bị lỗi hay không bằng cách sử dụng mdadm --detail
:
- sudo mdadm --detail /dev/md0
Output/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 21:42:12 2016 Raid Level : raid5 Array Size : 209584128 (199.88 GiB 214.61 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Thu Aug 11 14:10:43 2016 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 1 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K Name : mdadmwrite:0 (local to host mdadmwrite) UUID : bf7a711b:b3aa9440:40d2c12e:79824706 Events : 144 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 0 1 active sync /dev/sda 2 8 16 2 active sync /dev/sdb 0 8 32 - faulty /dev/sdc
Tất cả các dòng được đánh dấu đều cho biết rằng ổ đĩa không còn hoạt động ( /dev/sdc
trong ví dụ này).
Nếu bạn cần xóa ổ không gặp sự cố, bạn có thể tự đánh dấu ổ đó là không thành công bằng tùy chọn --fail
:
- sudo mdadm /dev/md0 --fail /dev/sdc
Outputmdadm: set /dev/sdc faulty in /dev/md0
Nếu bạn nhìn vào kết quả của mdadm --detail
, bạn sẽ thấy rằng thiết bị hiện được đánh dấu là bị lỗi.
Khi thiết bị bị lỗi, bạn có thể xóa thiết bị khỏi mảng bằng mdadm --remove
:
- sudo mdadm /dev/md0 --remove /dev/sdc
Outputmdadm: hot removed /dev/sdc from /dev/md0
Sau đó, bạn có thể thay thế nó bằng một ổ đĩa mới, sử dụng cùng lệnh mdadm --add
mà bạn sử dụng để thêm ổ đĩa dự phòng:
- sudo mdadm /dev/md0 --add /dev/sdd
Outputmdadm: added /dev/sdd
Mảng sẽ bắt đầu khôi phục bằng cách sao chép dữ liệu vào ổ đĩa mới.
Xóa một mảng
Để hủy một mảng, bao gồm tất cả dữ liệu có bên trong, hãy bắt đầu theo quy trình mà ta đã sử dụng để dừng một mảng.
Đầu tiên, ngắt kết nối hệ thống file :
- cd ~
- sudo umount /mnt/md0
Tiếp theo, dừng mảng:
- sudo mdadm --stop /dev/md0
Sau đó, xóa chính mảng bằng lệnh --remove
nhắm đến thiết bị RAID:
- sudo mdadm --remove /dev/md0
Sau khi chính mảng bị xóa, bạn nên sử dụng mdadm --zero-superblock
trên mỗi thiết bị thành phần. Thao tác này sẽ xóa siêu khối md
, một tiêu đề được mdadm
sử dụng để lắp ráp và quản lý các thiết bị thành phần như một phần của một mảng. Nếu điều này vẫn còn, nó có thể gây ra sự cố khi cố gắng sử dụng lại đĩa cho các mục đích khác.
Bạn có thể thấy rằng siêu khối vẫn tồn tại trong mảng bằng cách kiểm tra cột FSTYPE
trong kết quả lsblk --fs
:
- lsblk --fs
OutputNAME FSTYPE LABEL UUID MOUNTPOINT sda linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdb linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdc linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdd vda ├─vda1 ext4 DOROOT 4f8b85db-8c11-422b-83c4-c74195f67b91 / └─vda15
Trong ví dụ này, /dev/sda
, /dev/sdb
và /dev/sdc
đều là một phần của mảng và vẫn được gắn nhãn như vậy.
Xóa các nhãn bằng lệnh :
- sudo mdadm --zero-superblock /dev/sda /dev/sdb /dev/sdc
Tiếp theo, hãy đảm bảo bạn xóa hoặc comment bất kỳ tham chiếu nào đến mảng trong file /etc/fstab
:
- sudo nano /etc/fstab
. . . # /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0
Lưu file khi bạn hoàn tất.
Xóa hoặc comment bất kỳ tham chiếu nào đến mảng khỏi file /etc/mdadm/mdadm.conf
:
- nano /etc/mdadm/mdadm.conf
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=bf7a711b:b3aa9440:40d2c12e:79824706
Lưu file khi bạn hoàn tất.
Cập nhật initramfs bằng lệnh :
- sudo update-initramfs -u
Thao tác này sẽ xóa thiết bị khỏi môi trường khởi động sớm.
Kết luận
Tiện ích mdadm
của Linux giúp bạn quản lý mảng khá dễ dàng khi bạn hiểu các quy ước mà nó sử dụng và những nơi bạn có thể tìm kiếm thông tin. Hướng dẫn này không phải là đầy đủ, nhưng phục vụ để giới thiệu một số nhiệm vụ quản lý mà bạn có thể cần phải thực hiện hàng ngày.
Khi bạn đã thoải mái tạo và quản lý các mảng RAID với mdadm
, có một số hướng khác nhau mà bạn có thể khám phá tiếp theo. Các lớp quản lý dung lượng như LVM tích hợp chặt chẽ với RAID và cho phép bạn phân vùng không gian linh hoạt thành các dung lượng hợp lý. Tương tự, mã hóa LUKS và dm-crypt thường được sử dụng để mã hóa các thiết bị RAID trước khi ghi hệ thống file . Linux cho phép tất cả các công nghệ này được sử dụng cùng nhau để nâng cao khả năng lưu trữ của bạn.
Các tin liên quan
Cách tạo Mảng RAID với mdadm trên Ubuntu 16.042016-08-16
Cách thiết lập NFS Mount trên Ubuntu 16.04
2016-08-04
Cách cài đặt và sử dụng Byobu để quản lý thiết bị đầu cuối trên Ubuntu 16.04
2016-08-04
Cách cài đặt và cấu hình Ansible trên Ubuntu 16.04
2016-07-22
Cách cài đặt và cấu hình Sphinx trên Ubuntu 16.04
2016-07-22
Cách triển khai ứng dụng Node.js và MongoDB với Rancher trên Ubuntu 14.04
2016-07-18
Cách cài đặt và sử dụng BaasBox trên Ubuntu 14.04
2016-07-13
Cách thiết lập notebook Jupyter để chạy IPython trên Ubuntu 16.04
2016-06-15
Cách cài đặt Go 1.6 trên Ubuntu 16.04
2016-05-19
Cách cài đặt và sử dụng Composer trên Ubuntu 16.04
2016-05-17