Chương 6: Backup cuối cùng — phát hiện backup system đã hỏng từ 342 năm trước
Chương 6: Backup cuối cùng — phát hiện backup system đã hỏng từ 342 năm trước
Sau khi xử lý Coder's Nightmare, tôi nghĩ mọi chuyện sẽ dễ hơn. Tôi đã sai — một cách ngoạn mục, một cách mà chỉ một lập trình viên mới hiểu được: bạn fix được một bug, và bạn nhận ra nó chỉ là triệu chứng của một vấn đề lớn hơn gấp trăm lần đang nằm sâu trong lõi hệ thống.
Chúng tôi ở lại Thư viện Cấm thêm hai ngày. Sylvara mở kho lưu trữ — một căn phòng nằm sâu dưới tầng hầm, không phải nơi có Coder's Nightmare, mà là một phòng đọc biệt lập với những kệ sách cao đến trần, mỗi cuốn sách đều được bọc trong giấy dầu để chống ẩm mốc. Tôi muốn tìm hiểu một điều: tại sao backup system lại hỏng?
"Đây là Archive Vault." Sylvara nói, tay chỉ vào những kệ sách xếp theo thứ tự thời gian — từ những cuốn cũ nhất với gáy đã mờ màu đến những cuốn mới hơn, dù cái 'mới' cũng đã hàng trăm năm tuổi. "Chứa nhật ký của tất cả Keeper — từ số 1 đến số 12."
"Nhật ký?"
"Ghi chép hàng ngày. Mỗi Keeper đều phải viết nhật ký. Là quy định."
Tôi nhíu mày. "Quy định của ai?"
"Của... System." Mắt Sylvara nhìn tôi — một ánh nhìn có ý nghĩa hơn bất kỳ lời giải thích nào.
System — thứ mà tôi tưởng chỉ là một tập hợp code — có quy định. Tôi ghi nhận điều đó trong đầu, cảm giác mơ hồ rằng thế giới này phức tạp hơn một cái server game bình thường.
"Cho tao xem Keeper #12."
Sylvara lần theo các kệ sách, ngón tay lướt qua những gáy sách cũ kỹ. Cuối cùng chị ấy rút ra một cuốn sách bìa da đen, đã ố vàng đến mức gần như nâu đất. Bụi phả ra khi chị ấy mở nó.
Nhật ký Keeper #12 — 342 năm trước
Tôi mở cuốn sách — những trang giấy khô vàng, gần như vỡ vụn dưới ngón tay tôi — và bắt đầu đọc.
Ngày 1: "Được chọn làm Keeper. System giới thiệu. Có vẻ ổn. Console đẹp."
Ngày 7: "Đã quen với việc gõ lệnh. Entity cũng dễ thương. Hôm nay có một Elf vào nhờ buff drop rate. Ta buff 500%. Hắn vui lắm."
Những dòng đầu còn lạc quan, một Keeper mới đầy hy vọng. Nhưng càng đọc, tôi càng thấy giọng văn thay đổi — những con chữ ngắn dần, những câu viết hời hợt hơn.
Ngày 30: "Bắt đầu thấy mệt. Có quá nhiều entity. Quá nhiều bug. Quá nhiều người dùng yêu cầu vô lý. Họ nghĩ Keeper là cái máy vô tận."
Ngày 60: "Server lag kinh khủng. Memory leak ở hero_selection process. Ta kill process — hậu quả là 1 hero mất tích. Entity phản đối. Họ không hiểu."
Tôi cau mày, đọc tiếp.
Ngày 90: "Hôm nay có một group adventurer đến gặp ta. Họ yêu cầu ta tạo một item hiếm cho họ. Ta bảo không được. Họ chửi ta. Ta ban nick họ 30 ngày. Họ kêu gọi tẩy chay Keeper."
Ngày 120: "Ta không muốn làm Keeper nữa."
Chỉ một câu. Ngắn. Dứt khoát. Như một câu lệnh exit trong terminal.
Ngày 150: "Ta đã thử chạy backup script. Nó báo lỗi: 'Backup destination not found.'"
Ngày 151: "Đã kiểm tra. Ổ backup bị hỏng do không sử dụng trong 500 năm. HDD chết. Không thể phục hồi."
Ngày 152: "Ta không thể backup. Không thể sửa. Ta chỉ có thể giả vờ mọi thứ ổn."
Tim tôi hẫng một nhịp. Tôi có thể hình dung ra Keeper #12 — một người như tôi — ngồi trước console, nhìn vào ổ cứng đã chết, và nhận ra mình bất lực.
Ngày 180: "Hôm nay System gửi cảnh báo: 'Server health: 23%.' Ta không biết làm gì."
Ngày 200: "Ta đã quyết định. Ta sẽ đi."
Ngày 201: "Chuẩn bị xong. Đã tạo script emergency_backup.py — dù biết nó không thể chạy vì ổ hỏng. Nhưng ai đó sau ta có thể sửa."
Ngày cuối: "Gửi Keeper tiếp theo — nếu có ai đó đọc được cái này: Ta xin lỗi. Ta không thể sửa ổ backup. Ta không thể sửa thế giới. Ta chỉ có thể bỏ đi. Hy vọng mày làm tốt hơn.
— Keeper #12, ký tên."
Tôi gấp sách lại, cảm giác nặng nề trong lồng ngực. Một người — giống tôi — đã ngồi ở vị trí này, nhìn vào hệ thống đổ nát, và không thể làm gì. Họ đã bỏ đi không phải vì hèn nhát, mà vì họ đã kiệt sức. Những dòng chữ cuối cùng của Keeper #12 ám ảnh tôi: "Hy vọng mày làm tốt hơn."
"Có một ổ backup HDD bị hỏng?" tôi hỏi, giọng khàn hơn tôi dự định.
"Phải." Sylvara bước tới, tay cầm một cuốn sách khác — bìa xanh, ghi chép kỹ thuật. "Keeper #3 đã setup backup system. Ông ấy dùng một ổ cứng vật lý — đặt dưới Admin Tower. Nhưng 500 năm không kiểm tra — HDD chết."
"Ổ cứng đó vẫn còn?"
"Theo lý thuyết — có." Sylvara gật đầu. "Dưới tầng hầm Admin Tower."
"Tại sao không ai thay?"
"Vì muốn thay — cần quyền truy cập vật lý. Và Keeper #12 là người cuối cùng biết lối vào." Chị ấy nhìn tôi, mắt trầm hẳn xuống. "Ông ấy bỏ đi — không ai vào được."
Tôi đứng dậy, đặt cuốn nhật ký xuống bàn. Ánh nến làm bóng tôi đổ dài trên tường. "Có lối vào khác không?"
Sylvara im lặng — một sự im lặng nặng hơn bất kỳ câu trả lời nào. "Có một lối. Nhưng nó ở..."
"Ở đâu?"
Cô ấy ngập ngừng, ngón tay miết vào mép sách. "...Echovale."
Tôi thở dài, đưa tay xoa mặt. Mệt mỏi nhưng không bất ngờ. "Tất nhiên rồi." Tại sao mọi thứ ở thế giới này luôn dẫn đến cái lục địa đầy bug đó?
Chúng tôi quay về Admin Tower — Elara và Morgoth đi cùng, Morgoth vì muốn tiếp tục hành trình "tìm lại bản thân" (và ở gần Sylvara — mặc dù họ đã có ba ngày đẹp đẽ trong thư viện, hắn vẫn đi theo chúng tôi như một cái bóng trung thành với một nụ cười nhẹ trên môi), Elara vì lý do thực tế hơn nhiều: "không thể để thằng Keeper tự sát một mình."
Tôi bắt đầu tìm kiếm lối vào tầng hầm ngay trong phòng ngủ của mình — cái phòng nơi tôi thức dậy lần đầu, với cái bàn gỗ mục và cái ghế ọp ẹp. Theo nhật ký Keeper #12, lối vào là một cánh cửa bí mật dưới sàn phòng.
Tôi dời giường — một cái giường gỗ nặng trịch, tôi phải dùng cả vai để đẩy nó, cảm giác như đang đẩy một cái server rack thời trung cổ. Và đúng vậy — dưới tấm thảm cũ kỹ — một cánh cửa sắt hình vuông, mỗi cạnh chừng một mét, nằm lún phún trên nền đất. Ổ khóa — chìa khóa — nhưng ổ khóa đã gỉ xanh, không còn hình dạng ban đầu.
"Búa đâu?" tôi hỏi, không ngoảnh lại.
Elara đứng sau lưng, tay chống hông. "Mày định đập lần nữa à?"
"Đập ổ khóa chứ không phải ổ cứng."
Cô ấy lắc đầu — cái lắc đầu của một người đã chấp nhận rằng đồng đội mình sẽ giải quyết mọi vấn đề bằng bạo lực — nhưng vẫn đưa tôi một cây rìu nhỏ từ túi đồ bên hông. Tôi nhận lấy, cảm nhận trọng lượng của nó.
Một nhát — âm thanh kim loại vang lên khô khốc, ổ khóa vỡ tan thành nhiều mảnh gỉ sét.
Tôi mở cửa — những bản lề sắt kêu lên một tiếng rít dài, như thể chúng cũng đang phàn nàn vì bị đánh thức sau hàng thế kỷ. Một cầu thang đổ xuống tối om, một mùi ẩm mốc và đất ướt xông lên, làm tôi phải nhăn mặt.
"Lại xuống hầm à..." tôi lẩm bẩm.
"Lần này có tao." Elara nói, rút thanh kiếm dài bên hông — ánh thép lóe lên trong bóng tối.
"Và ta." Morgoth bước tới, giọng trầm, quyền trượng trong tay hắn phát ra một tia sáng tím nhẹ — không phải ma thuật hủy diệt, mà chỉ đơn giản là một ngọn đèn.
"Tốt."
Dưới tầng hầm — tối đến mức tôi có thể cảm nhận được bóng tối như một thực thể có khối lượng, lạnh đến mỗi hơi thở đều tạo ra một làn khói trắng mờ. Những bức tường đá cũ kỹ rỉ nước, từng giọt nước rơi đều đặn trong bóng tối — tí tách, tí tách — như một đồng hồ đếm ngược. Ở cuối hành lang, một căn phòng nhỏ.
Trong căn phòng — một chiếc kệ sắt, gỉ sét, nghiêng về một bên như sắp đổ. Trên kệ — một ổ cứng HDD model từ thập niên 1990, vỏ kim loại màu be, phủ đầy bụi trắng như một lớp vải liệm. Những sợi cáp rời rạc treo lủng lẳng như những mạch máu đã khô. Nó nằm đó — không kết nối, không nguồn, không sự sống.
"Đây là backup duy nhất của thế giới." Tôi nói, giọng vọng trong căn phòng nhỏ.
Elara nhìn ổ cứng, đầu nghiêng — như thể cô ấy đang cố hiểu làm thế nào một cục sắt nhỏ bé lại có thể chứa cả một thế giới. "Cục sắt này — chứa ký ức của mấy triệu người?"
"Phải."
"Và nó hỏng?"
"Đúng."
"Fix được không?"
Tôi nhặt ổ cứng lên — nó nặng hơn tôi tưởng, một khối kim loại đặc và lạnh, nặng chừng hai kilogram. Tôi xoay nó trong tay, ngắm nhìn nó dưới ánh sáng lờ mờ của ngọn đèn ma thuật của Morgoth. Ổ cứng cơ — HDD — xưa cũ, dễ hỏng. Nhưng tôi biết một thứ.
"Đưa tao về phòng."
Tôi nối ổ cứng vào console. Cả căn phòng im lặng đến mức tôi có thể nghe thấy tiếng kim loại của ổ cứng cọ vào cổng kết nối. Nó kêu cạch... cạch... cạch... — âm thanh kinh điển của HDD chết, âm thanh của một trái tim cơ học đang cố đập nhưng không còn sức.
"Ổ cứng kêu." Elara nói, giọng khó chịu.
"Tao biết."
"Nó chết rồi."
"Tao biết."
"Fix được không?"
Tôi không trả lời. Tôi gõ:
> dd if=/dev/hda of=/tmp/backup.img bs=512 conv=noerror,sync
Kết quả hiện ra, từng chữ như một mũi kim châm vào tim tôi:
dd: /dev/hda: Input/output error
Đã đọc: 47 sector tốt / 1,024,803 sector lỗi
Dung lượng phục hồi: 0.004%
0.004%. Còn 99.996% không thể đọc.
Tôi nói, giọng đều đều — cố giấu sự thất vọng: "Chết rồi."
"Thật?" Elara thì thầm.
"Thật."
Không ai nói gì trong một lúc lâu. Chỉ có tiếng ổ cứng kêu cạch... cạch... vọng ra từ console, như tiếng kêu cứu cuối cùng của một thế giới không thể được cứu. Tôi ngồi đó, nhìn con số 0.004%, và cảm thấy một sự bất lực quen thuộc — cảm giác mà tôi đã từng có mỗi khi một dự án thất bại, mỗi khi một bug không thể fix, mỗi khi một production server sụp đổ lúc 3 giờ sáng. Nhưng lần này — không có cà phê, không có đồng đội để gọi, không có Stack Overflow để tra.
Rồi Morgoth nói, giọng trầm và đều như một dòng code được viết rất cẩn thận: "Nếu không thể khôi phục — tạo mới."
Tôi quay lại nhìn hắn. "Mới?"
"Phải. Mày là Keeper. Mày có thể tạo backup mới."
"Từ dữ liệu hiện tại?" Tôi cảm thấy một tia sáng — nhỏ, nhưng đủ để xua tan bóng tối.
"Phải."
"Từ server đang chạy — ngay bây giờ?"
"Phải."
Tôi nhìn Morgoth. Hắn không còn là Demon Lord existential crisis nữa. Đôi mắt hắn đã thay đổi — không còn vô định, mà tập trung, bình tĩnh, như một người đã sống 500 năm và học được rất nhiều thứ từ việc quan sát 12 Keeper đến rồi đi. Hắn nói như một sysadmin đồng nghiệp, không phải như một chúa tể bóng tối.
"Mày biết gì về backup?"
Hắn đưa tay ra, chỉ vào console. "500 năm — ta thấy 12 Keeper làm việc. Mỗi người một cách. Keeper #3 dùng đĩa vật lý. Keeper #6 muốn dùng cloud. Keeper #9 không bao giờ backup. Và giờ — mày có thể chọn cách của mày."
"Vậy tao nên làm thế nào?"
Morgoth đặt tay lên vai tôi — một bàn tay nặng nề, ấm áp, như một lời động viên từ một đồng đội cũ. "Bắt đầu lại."
🌟 Notes cuối chương
| Item | Chi tiết |
|---|---|
| Phát hiện | HDD backup chết 342 năm trước, chỉ còn 0.004% dữ liệu |
| Nhật ký | Keeper #12 bỏ việc vì không thể sửa backup |
| Kế hoạch | Tạo backup mới từ server đang chạy |
| Đồng minh | Morgoth trở thành sysadmin đồng nghiệp |
| Elara | Tiếp tục đi cùng, quan hệ tốt hơn |
Chương 7: Tạo backup mới — khi developer phải làm việc của DBA