Vệ sinh phân vùng hệ thống OneFS

Ngoài phân vùng lưu trữ dữ liệu /ifs, giống như hầu hết các hệ điều hành có nguồn gốc từ UNIX, OneFS sử dụng một số phân vùng hệ thống, bao gồm:

Phân vùng Sự miêu tả
/ Phân vùng gốc chứa tất cả dữ liệu để khởi động và chạy hệ thống, đồng thời chứa hình ảnh phần mềm OneFS cơ sở.
/phát triển Phân vùng tệp thiết bị. Ví dụ, ổ đĩa được truy cập thông qua tệp thiết bị khối như /dev/ad0.
/nếu Phân vùng hệ thống tập tin cụm, bao gồm tất cả các nút của cụm. Bao gồm /ifs/.ifsvar.
/chúng tôi Phân vùng cho các chương trình của người dùng.
/var Phân vùng để lưu trữ dữ liệu biến đổi, chẳng hạn như tệp nhật ký, v.v. Trong OneFS, phân vùng này chủ yếu được sử dụng cho /var/run và /var/log.
/var/sụp đổ Phân vùng sự cố được cấu hình cho lệnh dump nhị phân.

Một lợi thế của việc có các phân vùng riêng biệt, thay vì một khối không gian lớn, là các phần khác nhau của hệ điều hành được bảo vệ phần nào khỏi nhau. Ví dụ, nếu /var đầy, nó không ảnh hưởng đến phân vùng gốc /.

OneFS tự động thực hiện phần lớn việc dọn dẹp hệ thống của nó. Tuy nhiên, đôi khi phân vùng OneFS /var trên một hoặc nhiều nút của cụm sẽ đầy, thường là do hoạt động ghi nhật ký nặng và/hoặc các tệp lõi hiện diện. Nếu /var đạt 75%, 85% hoặc 95% dung lượng, sự kiện CELOG sẽ tự động được kích hoạt và cảnh báo sẽ được gửi đi.

Lệnh CLI sau đây sẽ cung cấp chế độ xem về mức sử dụng /var trên toàn bộ cụm:

# isi_for_array -s “du -h /var | Sort -n | tail -n10”

Giải pháp thông thường cho tình huống này là xoay vòng các tệp nhật ký trong /var/log. Nếu sau khi xoay vòng nhật ký, phân vùng /var trở lại mức sử dụng bình thường, thì việc xem lại danh sách các nhật ký được ghi gần đây thường sẽ xác định được một nhật ký cụ thể đang xoay vòng thường xuyên hay quá mức. Xoay vòng nhật ký thường sẽ giải quyết vấn đề phân vùng đầy đủ bằng cách nén hoặc xóa các nhật ký lớn và cũ, do đó tự động giảm mức sử dụng phân vùng.
 Lệnh CLI ‘df -i’, chạy trên nút đã báo cáo lỗi, sẽ hiển thị chi tiết của phân vùng /var. Ví dụ:

# df -i | grep var | sự cố grep -v

Hệ thống tập tin 1K-blocks Đã sử dụng Khả dụng Dung lượng iused ifree %iused Đã gắn kết trên

/dev/mirror/var0 1013068 49160 882864 5% 1650 139276 92% /var

Nếu giá trị phần trăm sử dụng là 90% hoặc cao hơn, như trên, khuyến nghị là giảm số lượng tệp trong phân vùng /var. Để xóa các tệp không thuộc phân vùng /var, trước tiên hãy chạy lệnh ‘find’ sau trên nút đã tạo cảnh báo. Lệnh này sẽ hiển thị bất kỳ tệp nào trong phân vùng /var có kích thước lớn hơn 5 MB:

# tìm -x /var -type f -size +10000 -exec ls -lh {} \; | awk ‘{ in $9 “: ” $5 }’

Đầu ra sẽ hiển thị bất kỳ tệp lớn nào thường không thuộc phân vùng /var. Những tệp này có thể bao gồm các hiện vật như gói cài đặt OneFS, thu thập nhật ký cụm, chụp gói tin hoặc các tệp do người dùng tạo khác. Xóa các tệp hoặc di chuyển chúng đến thư mục /ifs. Nếu bạn không chắc chắn tệp nào, nếu có, là ứng cử viên khả thi để xóa, hãy liên hệ với Dell Support để được trợ giúp.

Lệnh CLI ‘fstat’ là một công cụ hữu ích để liệt kê các tệp đang mở trên một nút hoặc trong một thư mục hoặc hiển thị các tệp đã được mở bởi một quy trình cụ thể. Thông tin này có thể vô cùng hữu ích để xác định xem một quy trình có đang giữ một tệp lớn đang mở hay không. Ví dụ, các tệp đang mở của một nút trên một nút có thể được hiển thị như sau:

#fthống kê

Danh sách các tệp đang mở sẽ hữu ích cho việc theo dõi các tiến trình đang ghi các tệp lớn.

Sử dụng cờ ‘-f’ sẽ thu hẹp đầu ra của fstat vào một thư mục cụ thể:

# fstat -f <đường dẫn thư mục>

Tương tự như vậy, để liệt kê các tệp được mở bởi một tiến trình cụ thể:

# fstat -p <pid>

Nếu không tìm thấy tệp nào đang mở trong thư mục /var , hoàn toàn có thể một tệp lớn đã bị hủy liên kết và đang chiếm dung lượng vì một hoặc nhiều quy trình đã mở tệp. Lệnh fstat có thể được sử dụng để xác nhận điều này như sau:

# fstat -f /var | grep var

Nếu một tiến trình đang giữ một tệp mở, đầu ra tương tự như sau sẽ được hiển thị:

gốc lwio 98281 4 /var 69612 -rw——- 100120000 rw

Ở đây, daemon lwio (PID 98281) có một tệp 100MB mở ra, xấp xỉ 100MB (100120000 byte). Số inode của tệp, 69612, có thể được sử dụng để lấy tên của tệp:

gốc lwio 98281 4 /var 69612 -rw——- 100120000 rw

/var/log/lwiod.log

Nếu một tiến trình đang giữ một tệp lớn mở và không tìm thấy inode của tệp đó, tệp đó được coi là ‘không được liên kết’. Trong trường hợp này, giải pháp thường là khởi động lại tiến trình vi phạm.

Lưu ý:  trước khi dừng và khởi động lại một tiến trình, hãy cân nhắc mọi hậu quả tiêu cực có thể xảy ra. Ví dụ, việc dừng daemon OneFS SMB, lwiod, trong ví dụ trên có khả năng ngắt kết nối người dùng SMB.

Nếu không có đề xuất nào ở trên giải quyết được vấn đề, giới hạn kích thước tệp rollover của tệp nhật ký có thể được giảm xuống và bản thân tệp được nén lại. Để thực hiện việc này, trước tiên hãy tạo bản sao lưu của tệp /etc/newsyslog.conf như sau:

# cp /etc/newsyslog.conf /ifs/newsyslog.conf

# cp /etc/newsyslog.conf /etc/newsyslog.bak

Tiếp theo, mở tệp /ifs/newsyslog.conf trong trình soạn thảo như ’emacs’ hoặc ‘vi’ và tìm dòng sau:

/var/log/wtmp 644 3 * @01T05 B

Chỉnh sửa dòng này thành nội dung sau:

/var/log/wtmp 644 3 10000 @01T05 ZB

Những thay đổi này hướng dẫn hệ thống chuyển qua tệp /var/log/wtmp khi tệp đạt đến 10 MB và sau đó nén tệp bằng gzip. Lưu và đóng tệp /ifs/newsyslog.conf, sau đó chạy lệnh sau để sao chép tệp ‘newsyslog.conf’ đã cập nhật vào các nút còn lại trên cụm:

# isi_for_array ‘cp /ifs/newsyslog.conf /etc/newsyslog.conf’

Nếu các bản ghi khác luân phiên nhau thường xuyên hoặc nếu các giải pháp trên không giải quyết được sự cố, hãy chạy lệnh isi_gather_info để thu thập nhật ký, sau đó liên hệ với bộ phận Hỗ trợ của Dell để được trợ giúp.

Có một số tùy chọn có sẵn để dừng các tiến trình và tạo tệp lõi trong OneFS:

Lệnh CLI Sự miêu tả
gcore Tạo tệp dump lõi của tiến trình đang chạy mà không thực sự tắt tiến trình đó.
giết -6 Dừng một tiến trình duy nhất và lấy tệp dump lõi
giết chết tất cả -6 Dừng tất cả các tiến trình và lấy tệp dump lõi
giết -9 Buộc một tiến trình dừng lại

Lệnh CLI ‘gcore’ có thể tạo tệp đổ lõi từ một tiến trình đang chạy mà không thực sự giết nó. Đầu tiên, lệnh CLI ‘ps’ có thể được sử dụng để tìm và hiển thị ID tiến trình (PID) cho một tiến trình đang chạy:

# ps -auxww | egrep ‘NGƯỜI DÙNG|lsass’ | grep -v grep

 

NGƯỜI DÙNG PID %CPU %MEM VSZ RSS TT STAT THỜI GIAN BẮT ĐẦU LỆNH

root 68547 0.0 0.3 150464 38868 ?? S CN11PM 0:06.87 lw-container lsass (lsass)

Trong ví dụ trên, PID cho quy trình lsass là 68547. Tiếp theo, lệnh CLI ‘gcore’ có thể được sử dụng để tạo bản sao lưu lõi của PID này và ghi đầu ra vào vị trí tùy chọn, trong ví dụ này là tệp có tên chính xác là ‘lsass.core’.

# gcore -c /ifs/data/Isilon_Support/lsass.core 68547

 

# ls -lsia /ifs/data/Isilon_Support/lsass.core

4297467006 58272 -rw——- 1 root wheel 239280128 10 tháng 6 19:10 /ifs/data/Isilon_Support/lsass.core

Thông thường, thư mục /ifs/data/Isilon_Support cung cấp vị trí tuyệt vời để ghi coredump. Rõ ràng, /var không phải là lựa chọn tuyệt vời vì phân vùng có thể đã đầy.

Cuối cùng, khi coredump đã được viết, công cụ ‘isi_gather_info’ có thể được sử dụng để hợp nhất tệp lõi và các nhật ký cụm có liên quan cùng với lõi thành một tệp tar thuận tiện.

# isi_gather_info –local-only -f /ifs/data/Isilon_Support/lsass.core

 

# ls -lsia /ifs/data/Isilon_Support | grep -i thu thập

4298180122 26 -rw-r–r– + 1 gốc bánh xe 19 tháng 6 năm 10 15:44 last_full_gather

Bộ nhật ký kết quả, ‘/ifs/data/Isilon_Support/last_full_gather’, sau đó đã sẵn sàng để tải lên bộ phận Hỗ trợ của Dell để điều tra và phân tích thêm.