Tôi cũng như nhiều người dùng MacBook Pro khác đã gặp phải vấn đề không đủ bộ nhớ trong. Nói chính xác hơn, rMBP tôi sử dụng hàng ngày được trang bị ổ SSD có dung lượng chỉ 256GB, điều này đương nhiên là không đủ trong một thời gian dài.
Và trên hết, khi tôi bắt đầu quay video trong các chuyến bay của mình, tình hình chỉ trở nên tồi tệ hơn. Dung lượng cảnh quay được quay sau những chuyến bay như vậy là hơn 50 GB và ổ SSD 256 GB kém cỏi của tôi rất nhanh chóng bị đầy, buộc tôi phải mua ổ 1TB bên ngoài. Tuy nhiên, sau một năm, nó không còn có thể xử lý lượng dữ liệu tôi tạo ra nữa, chưa kể việc thiếu tính dự phòng và sao lưu khiến nó không phù hợp để lưu trữ những thông tin quan trọng.
Vì vậy, đã có lúc tôi quyết định xây dựng một NAS lớn với hy vọng rằng hệ thống này sẽ tồn tại ít nhất vài năm mà không cần nâng cấp thêm.
Tôi viết bài viết này chủ yếu như một lời nhắc nhở về chính xác những gì tôi đã làm và cách tôi đã làm trong trường hợp tôi cần phải làm lại. Tôi hy vọng rằng nó cũng sẽ hữu ích cho bạn nếu bạn quyết định làm điều tương tự.
Có lẽ nó dễ mua hơn?
Vì vậy, chúng ta biết mình muốn đạt được điều gì, câu hỏi vẫn là: bằng cách nào?
Lần đầu tiên tôi xem xét các giải pháp thương mại và đặc biệt là Synology, công ty được cho là cung cấp hệ thống NAS cấp tiêu dùng tốt nhất trên thị trường. Tuy nhiên, chi phí của dịch vụ này hóa ra khá cao. Hệ thống 4 khay rẻ nhất có giá trên 300 USD và không bao gồm ổ cứng. Ngoài ra, bản thân việc lấp đầy bên trong của một bộ sản phẩm như vậy không có gì đặc biệt ấn tượng, điều này đặt ra câu hỏi về hiệu suất thực sự của nó.
Sau đó tôi nghĩ: tại sao không tự mình xây dựng một máy chủ NAS?
Tìm một máy chủ phù hợp
Nếu bạn định lắp ráp một máy chủ như vậy, thì trước hết bạn cần tìm phần cứng phù hợp. Một máy chủ đã qua sử dụng sẽ khá phù hợp cho bản dựng này vì chúng ta sẽ không cần nhiều hiệu năng cho các tác vụ lưu trữ. Trong số những thứ cần thiết, chúng ta cần lưu ý dung lượng RAM lớn, một số đầu nối SATA và card mạng tốt. Vì máy chủ của tôi sẽ hoạt động ở nơi thường trú của tôi nên mức độ tiếng ồn cũng có vấn đề.
Tôi bắt đầu tìm kiếm trên eBay. Mặc dù tôi tìm thấy ở đó rất nhiều Dell PowerEdge R410/R210 đã qua sử dụng với giá dưới 100 USD, nhưng có kinh nghiệm làm việc trong phòng máy chủ, tôi biết rằng các thiết bị 1U này tạo ra quá nhiều tiếng ồn và không phù hợp để sử dụng tại nhà. Theo quy định, các máy chủ tháp thường ít ồn ào hơn, nhưng thật không may, có rất ít máy chủ trên eBay và tất cả chúng đều đắt tiền hoặc không đủ mạnh.
Nơi tiếp theo để tìm là Craiglist, nơi tôi tìm thấy ai đó đang bán một chiếc HP ProLiant N40L đã qua sử dụng với giá chỉ 75 USD! Tôi đã quen với những máy chủ này, thậm chí thường có giá khoảng 300 USD đã được sử dụng, vì vậy tôi đã gửi email cho người bán với hy vọng rằng quảng cáo vẫn còn hoạt động. Khi biết được trường hợp này, tôi không cần suy nghĩ kỹ đã đến San Mateo để nhận máy chủ này, điều này thoạt nhìn chắc chắn làm tôi hài lòng. Nó ít bị mài mòn và ngoại trừ một chút bụi, mọi thứ khác đều tuyệt vời.
Hình ảnh máy chủ, ngay sau khi mua
Dưới đây là thông số kỹ thuật của bộ sản phẩm tôi đã mua:
- CPU: Bộ xử lý lõi kép AMD Turion(tm) II Neo N40L (64-bit)
- RAM: RAM 8 GB không phải ECC (được chủ sở hữu trước cài đặt)
- Đèn flash: Ổ USB 4GB
- Kết nối SATA: 4 + 1
- NIC: 1 Gbps trên NIC trên bo mạch
Không cần phải nói, dù đã ra đời được vài năm nhưng thông số kỹ thuật của máy chủ này vẫn vượt trội so với hầu hết các lựa chọn NAS trên thị trường, đặc biệt là về RAM. Một thời gian sau, tôi thậm chí còn nâng cấp lên 16 GB ECC với kích thước bộ đệm tăng lên và khả năng bảo vệ dữ liệu tăng cường.
Lựa chọn ổ cứng
Bây giờ chúng tôi có một hệ thống làm việc tuyệt vời và tất cả những gì còn lại là chọn ổ cứng cho nó. Rõ ràng, với 75 đô la đó, tôi chỉ có máy chủ mà không có ổ cứng HDD, điều này không làm tôi ngạc nhiên.
Sau khi thực hiện một số nghiên cứu, tôi phát hiện ra rằng ổ cứng WD Red phù hợp nhất để chạy hệ thống NAS 24/7. Để mua chúng, tôi đã tìm đến Amazon, nơi tôi mua 4 bản, mỗi bản 3 TB. Về cơ bản, bạn có thể kết nối bất kỳ ổ cứng nào mà bạn thích nhưng hãy đảm bảo rằng chúng có cùng dung lượng và tốc độ. Điều này sẽ giúp bạn tránh được các vấn đề về hiệu suất RAID có thể xảy ra về lâu dài.
Thiết lập hệ thống
Tôi nghĩ rằng nhiều người sẽ sử dụng hệ thống này để xây dựng NAS của họ
Việc cài đặt CentOS trên USB khá đơn giản - chỉ cần chỉ định USB làm nguồn khởi động và khi khởi chạy, trình hướng dẫn cài đặt sẽ hướng dẫn bạn qua tất cả các giai đoạn của quá trình cài đặt.
xây dựng RAID
Sau khi cài đặt thành công CentOS, tôi cũng cài đặt ZFS trên Linux theo hướng dẫn trong danh sách
Khi quá trình này hoàn tất, tôi đã tải mô-đun ZFS Kernel:
$ sudo modprobe zfs
Và tạo mảng RAIDZ1 bằng lệnh zpool
:
$ sudo zpool create data raidz1 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609145 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609146 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609147 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609148
$ sudo zpool add data log ata-SanDisk_Ultra_II_240GB_174204A06001-part5
$ sudo zpool add data cache ata-SanDisk_Ultra_II_240GB_174204A06001-part6
Xin lưu ý rằng ở đây tôi đang sử dụng ID của ổ cứng thay vì tên hiển thị của chúng (sdx
) để giảm khả năng chúng không thể gắn kết sau khi khởi động do thay đổi chữ cái.
Tôi cũng đã thêm bộ đệm ZIL và L2ARC chạy trên một ổ SSD riêng, chia ổ SSD đó thành hai phân vùng: 5GB cho ZIL và phần còn lại cho L2ARC.
Còn với RAIDZ1 thì có thể chịu được 1 ổ đĩa bị hỏng. Nhiều ý kiến cho rằng không nên sử dụng tùy chọn nhóm này do có khả năng đĩa thứ hai bị lỗi trong quá trình xây dựng lại RAID, có thể dẫn đến mất dữ liệu. Tôi đã bỏ qua khuyến nghị này vì tôi thường xuyên tạo bản sao lưu của dữ liệu quan trọng trên một thiết bị từ xa và việc lỗi toàn bộ mảng chỉ có thể ảnh hưởng đến tính khả dụng của dữ liệu chứ không ảnh hưởng đến sự an toàn của dữ liệu. Nếu bạn không có khả năng tạo bản sao lưu thì tốt hơn nên sử dụng các giải pháp như RAIDZ2 hoặc RAID10.
Bạn có thể xác minh rằng việc tạo nhóm đã thành công bằng cách chạy:
$ sudo zpool status
и
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data
Theo mặc định, ZFS gắn trực tiếp nhóm mới được tạo vào /
, điều này nói chung là không mong muốn. Bạn có thể thay đổi điều này bằng cách chạy:
zfs set mountpoint=/mnt/data data
Từ đây bạn có thể chọn tạo một hoặc nhiều bộ dữ liệu để lưu trữ dữ liệu. Tôi đã tạo hai cái, một để sao lưu Time Machine và một để lưu trữ tệp dùng chung. Tôi đã giới hạn kích thước của tập dữ liệu Time Machine ở hạn mức 512 GB để ngăn chặn sự tăng trưởng vô tận của nó.
Tối ưu hóa
zfs set compression=on data
Lệnh này cho phép hỗ trợ nén ZFS. Tính năng nén sử dụng năng lượng CPU tối thiểu nhưng có thể cải thiện đáng kể thông lượng I/O, do đó luôn được khuyến khích.
zfs set relatime=on data
Với lệnh này, chúng tôi giảm số lượng cập nhật xuống atime
để giảm việc tạo IOPS khi truy cập tệp.
Theo mặc định, ZFS trên Linux sử dụng 50% bộ nhớ vật lý cho ARC. Trong trường hợp của tôi, khi tổng số tệp nhỏ, con số này có thể tăng lên 90% một cách an toàn vì sẽ không có ứng dụng nào khác chạy trên máy chủ.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112
Sau đó sử dụng
$ python arc_summary.py
...
ARC Size: 100.05% 11.55 GiB
Target Size: (Adaptive) 100.00% 11.54 GiB
Min Size (Hard Limit): 0.27% 32.00 MiB
Max Size (High Water): 369:1 11.54 GiB
...
Thiết lập nhiệm vụ định kỳ
Tôi đã sử dụng
Cài đặt Netatalk
Thiết lập cấu hình
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x configuration file
;
[Global]
; Global server settings
mimic model = TimeCapsule6,106
; [Homes]
; basedir regex = /home
; [My AFP Volume]
; path = /path/to/volume
; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes
[Datong's Files]
path = /mnt/data/datong
valid users = datong
[Datong's Time Machine Backups]
path = /mnt/data/datong_time_machine_backups
time machine = yes
valid users = datong
Xin lưu ý rằng vol dbnest
là một cải tiến lớn trong trường hợp của tôi, vì theo mặc định Netatalk ghi cơ sở dữ liệu CNID vào thư mục gốc của hệ thống tệp, điều này hoàn toàn không mong muốn vì hệ thống tệp chính của tôi chạy trên USB và do đó tương đối chậm. Bật lên vol dbnest
dẫn đến việc lưu cơ sở dữ liệu trong thư mục gốc của Tập, trong trường hợp này thuộc về nhóm ZFS và đã hoạt động hiệu quả hơn rất nhiều.
Kích hoạt cổng trong Tường lửa
$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp
sudo tường lửa-cmd --permanent --zone=public --add-port=afpovertcp/tcp
Nếu mọi thứ được định cấu hình chính xác, máy của bạn sẽ hiển thị trong Finder và Time Machine cũng sẽ hoạt động.
Cài đặt thêm
Giám sát THÔNG MINH
Bạn nên theo dõi trạng thái ổ đĩa của mình để ngăn ngừa lỗi ổ đĩa.
$ sudo yum install smartmontools
$ sudo systemctl start smartd
Daemon cho UPS
Giám sát mức sạc của UPS APC và tắt hệ thống khi mức sạc sắp hết.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsd
Nâng cấp phần cứng
Một tuần sau khi thiết lập hệ thống, tôi bắt đầu ngày càng lo ngại về bộ nhớ không phải ECC của máy chủ. Ngoài ra, trong trường hợp ZFS, bộ nhớ bổ sung để đệm sẽ rất hữu ích. Vì vậy, tôi quay lại Amazon nơi tôi mua 2 RAM Kingston DDR3 8GB ECC với giá 80 USD mỗi chiếc và thay thế RAM máy tính để bàn do chủ sở hữu trước đó lắp đặt. Hệ thống khởi động lần đầu tiên mà không gặp bất kỳ sự cố nào và tôi đảm bảo rằng hỗ trợ ECC đã được kích hoạt:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.
Kết quả
Tôi rất hài lòng với kết quả. Giờ đây, tôi có thể liên tục giữ cho kết nối mạng LAN 1Gbps của máy chủ luôn bận rộn bằng cách sao chép tệp và Time Machine hoạt động hoàn hảo. Vì vậy, nhìn chung, tôi hài lòng với việc thiết lập.
Tổng chi phí:
- 1 * HP ProLiant N40L = $75
- RAM 2 * 8 GB ECC = $174
- Ổ cứng 4 * WD Red 3 TB = $440
trong tổng số = $ 689
Bây giờ tôi có thể nói rằng cái giá đó là xứng đáng.
Bạn có tạo máy chủ NAS của riêng mình không?
Nguồn: www.habr.com