2015-01-16 17 views

Trả lời

17

Có 4 lĩnh vực (source):

  • inode
  • thiết bị lớn số
  • thiết bị nhỏ số
  • byte bù đắp

Giả sử rằng một đĩa cứng sẽ được phân đoạn trong hàng nghìn phần rất nhỏ với số cho mỗi phần, inode sẽ ít nhiều giống như số lượng phần nhỏ mà tệp bắt đầu. Vì vậy, một inode là duy nhất cho mỗi đĩa cứng, nhưng để giải quyết các trường hợp có nhiều đĩa trên cùng một máy chủ, sử dụng số thiết bị lớn và nhỏ được yêu cầu để đảm bảo tính duy nhất của bộ mã hóa {inode, số thiết bị phụ, số thiết bị nhỏ}. Thông tin chính xác hơn về inodes trên Wikipedia.

Điều đó nói rằng, tôi không chắc chắn rằng (ví dụ) tệp được gắn qua NFS không thể va chạm với tệp cục bộ do inode của tệp được gắn qua NFS có vẻ như là tệp từ xa. Mặc dù tôi không nghĩ rằng các nhà văn plugin phiền về trường hợp như vậy, và mặc dù sử dụng NFS bản thân mình, không bao giờ chạy vào bất kỳ rắc rối cho đến nay. Ngoài ra tôi nghi ngờ xác suất va chạm là rất nhỏ. Bây giờ với bộ ba được hình thành bởi số thiết bị inode và lớn và nhỏ, chúng tôi có cách nhắm mục tiêu tệp nhật ký duy nhất đang được plugin đọc mà không có lỗi (hoặc ít nhất đó là ý định ban đầu). Số cuối cùng, bù đắp byte, theo dõi khoảng cách tệp nhật ký đầu vào đã được đọc và xuất sang Logstash như thế nào.

Trong một số kiến ​​trúc cụ thể như Solaris hoặc Windows đã xảy ra lỗi khi phát hiện sai số inode, bằng 0. Ví dụ này có thể dẫn đến các vấn đề như logstash không phát hiện chuyển tập tin.

+0

Tại sao không mô tả tất cả 4 trường tự trả lời của bạn và có thể có nhiều thẩm quyền hơn? –

+0

Tôi chỉ đang đưa ra những thông tin hiếm hoi mà đã khó thu thập. Mục đích của tôi không phải là để bắt đầu một bài viết wikipedia. Dù sao bạn làm cho tôi nhận ra rằng "bù đắp byte" là không rõ ràng cho tất cả mọi người, vì vậy tôi đã thêm một số thông tin thêm. – Aldian

2

Điều này cực kỳ hữu ích. Tôi muốn lập bản đồ tất cả các tập tin AsDB của tôi đến đầu vào logstash, vì vậy tôi đặt cùng một chút bash hai lót để in bản đồ này.

filesystems=$(grep path /etc/logstash/conf.d/*.conf | awk -F'=>' '{ print $2 }' | xargs -I {} df -P {} 2>/dev/null | grep -v Filesystem | sort | uniq | cut -d' ' -f 1) 
for fs in $filesystems; do for f in $(ls -a .sincedb_*); do echo $f; inodes=$(cut -d' ' -f 1 $f); for inode in $inodes; do sudo debugfs -R "ncheck $inode" $fs 2>/dev/null | grep -v Inode | cut -f 2; done; echo; done; done 

Tôi vừa ghi lại chi tiết về mapping SinceDB files to logstash input.

Các vấn đề liên quan