Tại sao tạp chí systemd của tôi không liên tục khởi động lại?


8

Tôi đang gặp một vấn đề rất kỳ lạ với hình ảnh Fedora 21 mới trên ví dụ Linode. Tôi không thể tái tạo nó bên ngoài Linode. Vấn đề là tạp chí systemd của tôi không liên tục trong các lần khởi động lại. Theo tài liệu :

Theo mặc định, tạp chí lưu trữ dữ liệu nhật ký trong / run / log / tạp chí /. Vì / run / không ổn định, dữ liệu nhật ký sẽ bị mất khi khởi động lại. Để làm cho dữ liệu liên tục, việc tạo / var / log / tạp chí / nơi systemd-journald sẽ lưu trữ dữ liệu là đủ.

Tôi đã kiểm tra rằng / var / log / tạp chí tồn tại và tôi cũng đã đặt Storage=persistenttrong /etc/systemd/journald.conf. Thư mục nhật ký chứa một loạt dữ liệu:

$ du -sh /var/log/journal/
89M /var/log/journal/

Tạp chí, tuy nhiên, chỉ chứa các mục nhật ký kể từ lần khởi động lại hệ thống cuối cùng:

$ journalctl --list-boots
 0 9f6a5a789dd64ec0b067140905e6da86 Thu 2015-03-19 15:08:48 GMT—Thu 2015-03-19 22:14:37 GMT

Ngay cả khi tôi journalctl --flushtrước khi khởi động lại, các bản ghi bị mất. Tôi nghi ngờ đây là một vấn đề với hình ảnh Fedora 21 của Linode và tôi đã mở một vé hỗ trợ với họ. Trong khi đó, tôi tiếp tục tìm kiếm nguyên nhân của vấn đề này.

Làm thế nào tôi có thể gỡ lỗi này? Điều gì có thể gây ra điều này? Tôi có thể làm gì để sữa nó?

Câu trả lời:


14

Lý do cho hành vi này là do định danh máy /etc/machine-idthay đổi trong mỗi lần khởi động lại. Điều này bắt đầu một thư mục đăng nhập mới dưới /var/log/journal. Nhật ký cũ có thể được xem bằng lệnh sau:

journalctl --merge

Tôi vẫn đang xem xét nguyên nhân của việc thay đổi id máy. Linode hỗ trợ nhận thức được vấn đề. Tôi sẽ cập nhật câu trả lời này khi tôi biết nhiều hơn.


CẬP NHẬT - Nguyên nhân cốt lõi của vấn đề chỉ đơn giản là Linode đã loại bỏ nội dung /etc/machine-idtừ hình ảnh hệ thống tập tin của họ. Kết quả là chuỗi các sự kiện sau đây:

  1. Hạt nhân tải và gắn kết hệ thống tập tin gốc chỉ đọc
  2. systemd, chạy từ ramdisk ban đầu, cố gắng đọc /etc/machine-idtừ hệ thống tập tin gốc (tập tin tồn tại nhưng không có nội dung)
  3. systemd không thể đọc định danh máy, nhưng cũng không thể ghi mới vì hệ thống tập tin gốc được gắn chỉ đọc
  4. systemd mounts tmpfson /etc/machine-id(Có, rõ ràng bạn có thể gắn hệ thống tập tin vào một tập tin )
  5. systemd gọi systemd-machine-id-setup để tạo id máy ngẫu nhiên và lưu trữ nó trong trạng thái không ổn định/etc/machine-id
  6. Hệ thống khởi động với một định danh máy dễ bay hơi

Bạn có thể kiểm tra xem hệ thống của bạn có biến động không, thay vì id máy vĩnh viễn bằng cách xem kết quả đầu ra của mount:

$ mount | grep machine-id
tmpfs on /etc/machine-id type tmpfs (ro,mode=755)

Vấn đề rất dễ khắc phục: chỉ cần viết id máy liên tục vào thực /etc/machine-id . Đây là nói dễ hơn làm, tuy nhiên, bởi vì bạn không thể unmount tmpfstừ /etc/machine-idtrên một hệ thống chạy. Đây là các bước tôi đã thực hiện để sửa nó trên Linode:

  1. cp /etc/machine-id /etc/machine-id.copy, sau đó tắt nguồn hệ thống
  2. Trong Trình quản lý Linode, chuyển đến tab Cứu và khởi động vào chế độ cứu
  3. Truy cập hệ thống thông qua bảng điều khiển Lish
  4. Gắn kết hệ thống tập tin gốc: mount /dev/xvda /mnt
  5. Di chuyển bản sao được tạo ở bước 1 sang id máy thật: mv /etc/machine-id.copy /etc/machine-id
  6. Khởi động lại

Đó là những hậu quả của việc thiếu id máy khi khởi động. Tôi hy vọng điều này sẽ giúp một người qua đường ngẫu nhiên trong tương lai.


5
Bạn có thể thay đổi / etc / machine-id mà không cần cứu / khởi động lại bằng cách sử dụng liên kết của /:mkdir /tmp/mnt; mount --bind / /tmp/mnt; cp -a /etc/machine-id /tmp/mnt/etc/; umount /tmp/mnt
rudimeier
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.