Hệ thống tập tin nhanh nhất cho các nhà phát triển xây dựng là gì?


10

Tôi đang kết hợp một hộp Linux sẽ hoạt động như một máy chủ xây dựng tích hợp liên tục; Chúng tôi chủ yếu sẽ xây dựng các công cụ Java, nhưng tôi nghĩ câu hỏi này áp dụng cho bất kỳ ngôn ngữ được biên dịch nào.

Tôi nên sử dụng cài đặt cấu hình và hệ thống tập tin nào? (Ví dụ: tôi biết tôi sẽ không cần thời gian cho việc này!) Máy chủ bản dựng sẽ dành nhiều thời gian để đọc và viết các tệp nhỏ và quét các thư mục để xem tệp nào đã được sửa đổi.

CẬP NHẬT: Toàn vẹn dữ liệu là một ưu tiên thấp trong trường hợp này; nó chỉ là một cỗ máy xây dựng ... những cổ vật cuối cùng sẽ được nén lại và lưu trữ ở nơi khác. Nếu hệ thống tập tin trên máy xây dựng bị hỏng và mất tất cả dữ liệu, chúng ta có thể xóa và chụp lại hình ảnh; bản dựng sẽ tiếp tục chạy như trước.



Đừng đọc liên kết gravyface đã cho, nhưng cũng chắc chắn để dành phân vùng bạn sẽ thực hiện các bản dựng của mình, sau đó bạn có thể kiểm tra các câu trả lời bạn nhận được ở đây. Nếu bạn có tiền, hãy xem liệu bạn có thể từ bỏ bằng cách sử dụng đĩa không (sử dụng ramdisk hoặc tmpfs cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem )
trở thành

Câu trả lời:


6

Sử dụng ext4fs làm hệ thống tệp cơ sở với một vài tùy chọn tăng tốc như

noatime,data=writeback,nobh,barrier=0,commit=300

Sau đó, union gắn một tdfs ramdisk lên trên đó để các tệp được viết trong quá trình xây dựng có được lợi ích của ramdisk. Thay đổi quy trình xây dựng để di chuyển các nhị phân kết quả ra khỏi tmpfs ở cuối quá trình xây dựng hoặc hợp nhất các tmpfs trở lại ext4fs trước khi ngắt kết nối.


Mặc dù nó nhanh hơn đáng chú ý : barrier=0, Từ wiki vòm: "Vô hiệu hóa các rào cản khi đĩa không thể đảm bảo bộ nhớ cache được ghi đúng trong trường hợp mất điện có thể dẫn đến hỏng hệ thống tệp nghiêm trọng và mất dữ liệu."
ideaman42

6

Hệ thống tập tin nhanh nhất? tmpfs gắn ngoài RAM có sẵn, với noatimebộ.

Điều này chỉ khả thi nếu bạn có quy trình kiểm tra mọi thứ cần thiết để xây dựng cây nguồn của mình (vì nội dung của hệ thống tệp tmpfs sẽ biến mất khi bạn khởi động lại) và nếu nguồn và đối tượng phù hợp với một góc hợp lý của RAM có sẵn của bạn ( với đủ dư để chạy trình biên dịch & trình liên kết của bạn mà không cần trao đổi). Điều đó nói rằng bạn không thể đánh bại RAM vì tốc độ ..


Đây là một câu trả lời tuyệt vời, nhưng không hoàn toàn là câu tôi đang tìm kiếm; đó là nhiều RAM hơn tôi có thể đủ khả năng. (Có thể trong một vài năm khi RAM chỉ bằng một nửa giá!)
Dan Fabulich

@Dan - Cây nguồn của bạn lớn cỡ nào? :-)
voretaq7

Cây nguồn không quá lớn, nhưng các đối tượng được xây dựng và các tệp thử nghiệm quá lớn để phù hợp với bộ nhớ mà không cần trao đổi.
Dan Fabulich

2

Theo câu trả lời của Michael Dillon tôi có thể thêm rằng bạn có thể tạo hệ thống tập tin ext4 với một vài tùy chọn:

mkfs.ext4 -O dir_index,extent -i 8096 /dev/<disk>


dir_index
    Use hashed b-trees to speed up lookups in large directories.

extent 
    Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead.  This is a  much  more  efficient  encoding  which  speeds  up filesystem access, especially for large files.

-i 8096 cung cấp cho bạn nhiều nút hơn trên mỗi kích thước, hữu ích vì môi trường xây dựng tạo ra rất nhiều tệp.


0

Đối với các nguồn, tốt hơn là nên có hỗ trợ nén khi đang bay, đó là Reiser4 hoặc Btrfs . Cả hai đều "không dành cho sản xuất", mặc dù tôi đã nghe nói về những người sử dụng cả hai FS rất nhiều và hạnh phúc. :-)

Lựa chọn tiếp theo (tôi thường làm) là Reiser3 , không phải Ext3 . Ext3 có thể nhanh hơn một chút hiện nay, nhưng Reiser3 không có giới hạn thời gian định dạng i-nút, hỗ trợ thay đổi trực tuyến tùy chọn "data =". Nó có hỗ trợ "đuôi" cho phép đóng gói các tập tin nhỏ gọn hơn, nhưng nếu bạn lo ngại về tốc độ, hãy "chú ý" nó.

Cả XFS và JFS sẽ là một nỗi đau cho trường hợp "nhiều tệp nhỏ", đặc biệt nếu bạn cần phải xử lý chúng.

(Quên đề cập đến EXT4: Vâng, thậm chí còn nhanh hơn, sau đó là EXT3. Nhưng tất cả các hạn chế của EXT3 đã đề cập ở trên cũng là của EXT4).


0

Các hoạt động bạn mô tả đưa ra một số gợi ý chính về những gì hệ thống tệp lý tưởng cần có thể thực hiện:

  • R / w ngẫu nhiên truy cập trong quá trình xây dựng.
  • Nhiều, rất nhiều tệp được cập nhật theo thứ tự ngắn, do đó, hoạt động siêu dữ liệu nhanh là rất quan trọng.
  • Xử lý hiệu quả nhiều tệp nhỏ trên các hệ thống tệp rất nặng.
  • Đủ trưởng thành để không có nguy cơ mất dữ liệu trong các trường hợp cạnh không thường xuyên và tối nghĩa.

Btrfs và Ext4 là ba trong số trên, và thứ tư là nghi vấn. Ext4 có lẽ đã đủ trưởng thành cho điều đó, nhưng btrfs vẫn chưa hoàn thành. noatimegiúp làm cho các hoạt động dữ liệu meta hiệu quả hơn, nhưng khi bạn tạo ra một loạt các tệp mới, bạn vẫn cần các op-data meta để được nhanh chóng hét lên.

Đó là khi lưu trữ cơ bản bắt đầu trở thành một yếu tố. Các hoạt động siêu dữ liệu XFS có xu hướng tập trung trong một vài khối, có thể làm căng các hoạt động. Các hệ thống tệp kiểu Ext sẽ tốt hơn về việc đưa dữ liệu meta đến gần hơn với dữ liệu mà nó mô tả. Tuy nhiên, nếu bộ nhớ của bạn đủ trừu tượng (bạn đang chạy trong VPS hoặc được gắn với SAN) thì điều đó không quan trọng .

Mỗi hệ thống tập tin có một số tăng tốc nhỏ có thể được thực hiện để tăng thêm vài điểm phần trăm. Dung lượng lưu trữ cơ bản sẽ ảnh hưởng lớn đến mức tăng bạn sẽ thấy.

Theo cách nói lưu trữ, nếu bạn có đủ chi phí hoạt động I / O trong bộ lưu trữ của mình, thì sự thiếu hiệu quả của hệ thống tệp bắt đầu không quan trọng lắm. Nếu bạn sử dụng SSD cho phân vùng xây dựng của mình, lựa chọn hệ thống tệp ít quan trọng hơn so với những gì bạn thấy thoải mái hơn khi làm việc.


Tôi thực sự không quan tâm đến việc mất dữ liệu nhiều như vậy. (Cập nhật câu hỏi để làm rõ.) Ý tôi là, mất dữ liệu không phải là một điều tốt, nhưng tôi không lưu trữ dữ liệu quan trọng; Tôi đang xử lý nhiều tệp và di chuyển dữ liệu đi nơi khác. Nếu tôi có thể đủ khả năng RAM, tôi chỉ cần sử dụng tmpfs như voretaq7 được đề xuất ở trên.
Dan Fabulich

0

Đối với nhiều tệp nhỏ, tôi khuyên dùng Reiser trên ext3, xfs, jfs ..., mặc dù tôi đã nghe nói rằng ext4 tốt hơn rất nhiều (nghĩa là ngược lại với những gì sẵn sàng nói) so với các phiên bản trước đây của mẫu truy cập này.

Reiser đẩy rất nhiều cấu trúc tệp lên cây inode - vì vậy nó hoạt động thực sự tốt khi xử lý các tệp nhỏ.

Tuy nhiên, sự khác biệt trong hành vi giữa các hệ thống tệp hàng đầu là tương đối nhỏ so với lợi ích bạn sẽ nhận được bằng cách có đủ bộ nhớ vật lý để lưu trữ / bộ đệm một cách hiệu quả.

và quét các thư mục để xem tập tin nào đã được sửa đổi.

Đây là một cách ngu ngốc để giải quyết vấn đề - mặc dù nó tương đối đơn giản. Nếu nó quan trọng, hãy nghĩ về việc viết một trình xử lý inotify để lập chỉ mục các mod.

OTOH, nếu bạn đang sử dụng flash SSD (sẽ cho thời gian tìm kiếm rất thấp) Tôi khuyên bạn nên sử dụng một fs phân phối ghi hiệu quả hơn vì lý do tuổi thọ - ví dụ: JFFS2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.