Tản mạn 2025.002
Chuỗi tản mạn
Một vài thứ hay ho trong ngày
-
Resize trên LVM: Phụ thuộc vào khả năng shrink và grow của các filesystem, có bảng so sánh, cơ mà sẽ điểm lại vài file system phổ biến:
- JFS với XFS không thể shrink được. Vì sao XFS không shrink được?: không ai viết tính năng này cho XFS cả, và XFS sinh ra không phải dành cho workstation, như chia sẻ ở đây từ 2012 thì “The reason it hasn’t been done is that there is basically no demand for shrinking large filesystems. Storage is -cheap-, and in most environments data sets and capacity only grow.”. Bản xfsprogs 5.12 vào 2021, xfs_growfs: support shrinking unused space (Gao Xiang) bắt đầu có tính năng shrink nhưng đang ở chế độ thử nghiệm
- Btrfs có thể online shrink và online grow được (vừa mount vừa shrink).
- Các thể loại Ext từ 2 đến 4 đều phải unmount khi shrink. Có người hỏi vì sao không làm live shrink?: “because the folks who wrote ext4 don’t support this”, với cả để “backward compatibility with ext2” (ext2 từ 1993, và sau đó là ext4 vào 2006). Khó khăn để triển khai được những tính năng mới. Các tính năng online grow của ext4 thì vẫn thực hiện được.
- Đến đoạn này đọc được giới thiệu cuốn Practical File System design để cày.
- NTFS trên Win có thể online shrink và grow được. NTFS sinh ra từ 1993, cùng thời điểm với ext2, kể cũng lạ. Tính năng native shrink mới được giới thiệu trong Windows Vista với Windows Server 2008, 15 năm sau khi sinh ra, 2 năm sau khi ext4 được giới thiệu. Cơ mà NTFS trên Linux thì các thao tác shrink hay grow đều chỉ làm được offline.
- HFS+ trên Mac, sinh ra từ 1998, các thứ đều làm online được mà không làm offline được. Cái này tìm ra thì có thấy HFS+ để metadata table khó truy cập hơn (MacOS mã nguồn đóng mà), nên có thể coi là có cả vấn đề fragmentation, nên vụ làm offline chịu.
- HFS (không phải HFS+, sinh ra từ 1985): không thể shrink hay grow được (?). HFS từ thời điểm quá cổ khi giới hạn kích thước file chỉ ở 2GB.
- exFAT: không thể resize được (theo mô tả trên bảng wiki), cơ mà không phải, như một chia sẻ từ 2018 có cách nhưng rất cực khổ cho người dùng luôn, sau khi anh ta thử 10 cái partition manager đỉnh nhất không hỗ trợ, thì có mỗi DiskGenius (ex Partition Guru) - v4.9.6.564 là được việc: “Did the job, but not so geniously. It didn’t understand my GPT partition layout (whole disk displayed as free). I had to rebuild the GPT with another tool that actually deleted my other linux partition. Be sure your disk manager sees all your partitions.”. Như vậy là làm được nhưng nguy hiểm.
-
Xem file bị lock trên Windows:
- Dùng giao diện thì ta có thể check phần Associated Handles ở tab CPU trong Resource Monitor
- Hoặc có thể dùng command sau để in ra process đang tham gia vào file
c:\Program Files\SysinternalsSuite>handle.exe |findstr /i "file-or-path-in-question"`- Có mấy tool hiện đại, như LockHunter: được mô tả là “delete files blocked by something you do not know”, hay SystemInformer làm bộ tổng thể như Resource Monitor nhưng hỗ trợ regex tìm file handles (Resource Monitor chỉ có search string thường).
- Tool nữa, tên WhoLockMe Explorer cơ mà cho các phiên bản cũ (NT/2k/XP): viết dưới dạng một extension cho Microsoft Explorer, bằng cách chuột phải vào file trong Explorer và view được luôn.
- Tool OpenedFilesView của NirSoft viết cho từ Win2000 tới Win11. Xem qua mấy phần mềm khác của NirSoft đều đỉnh cả, support một khoảng rộng các phiên bản hệ điều hành.
- Cơ mà có một bài viết của Raymond Chen về chuyện những file handle có thể liên hệ với mutex handle và ảnh hưởng tới tính toàn vẹn của dữ liệu nếu chương trình tiếp tục chạy. Chưa kể tới chuyện những file như log hay config bị corrupt sau đó đưa cho kỹ thuật viên xấu số của hãng để phản ánh dịch vụ sẽ là một công việc “ối giời ôi” cho họ.
- Nên chung quy là hết sức cẩn thận với việc tác động vào file handle.
-
Thay netmask của loopback interface:
- Cách thiết bị loopback hoạt động: The only purpose of the loopback interface is to return the packets sent to it, i.e. whatever you send to it is received on the interface.
- Hiểu sâu thêm về loopback interface qua một bài blog:
- Vì sao lại cần loopback?: Một ví dụ: rất thực tế khi nếu không dùng loopback, đường mạng đứt hoặc bất kỳ trục trặc nào đó không có IP của NIC thì các kết nối từ service này sang service kia qua IP của NIC đều bị đứt. Và dĩ nhiên không phải dịch vụ nào cũng thiết kế để truyền qua linux socket.
- Khi capture packet trên interface này thì ta sẽ không nhận địa chỉ mac trong packet, do không cần tới layer 2 của OSI
- Tác giả đọc cẩn thận source của upstream linux kernel, IP của loopback được định nghĩa ở trong một header, và routing cho dải 127.0.0.0 được đặt ở phần code routing, có check xem địa chỉ đi và địa chỉ đến với hàm
ipv4_is_loopback.
- Debian sử dụng một địa chỉ IP khác 127.0.1.1 cho hostname như một newsletter chia sẻ, và 127.0.0.1 cho localhost, thì việc chỉnh netmask từ 8 sang 24 sẽ gặp sự cố.
-
iptable NAT policy dùng ACCEPT thay cho DROP?: điều thắc mắc thú vị là sao không dùng DROP thay cho ACCEPT với NAT table, nhìn trông không được “bảo mật”. Có một trả lời rằng NAT mục đích là translation, và iptable dùng một chuỗi các rule nhỏ hơn, thì ACCEPT mục đích là để đưa tiếp packet đến với rule quyết định tiếp theo. Chuỗi này chỉ cần có 1 DROP là packet biến mất, nên dễ hiểu sao có nhiều ACCEPT. DROP sẽ xuất hiện ở trong filter table hơn là nat table.
-
Touchscreen scrolling linux: thêm biến môi trường
MOZ_USE_XINPUT2=1trước khi chạy trình duyệt firefox thì dùng ngon màn hình cảm ứng luôn. -
Training: No DNS: ôn bài về DNS với session
-
Restic: tool dùng backup viết bằng go. Trước giờ mình vẫn dùng zbackup mà không biết tới restic. Xem qua
-
CVE-2025-23359: Nvidia Container Toolkit: file thực thi có thể thay vào symlink thẳng tới file trên host
-
Vụ Sandworm APT44: qua tin này và tin này, Ukraine dùng đồ crack nhiều, từ kính doanh cho tới các đơn vị trọng yếu, với 3 lần bị dính sập năng lượng (lab test cho Russia luôn). Note lại vụ StarLightMedia, tập đoàn TV truyền hình lớn nhất của Ukraine: 2 server (chính và backup) sập cùng lúc, và còn nhiều tháng ngày ly kì check log điều tra sau đó…