OverlayFS是一种联合文件系统,允许在不修改原始文件系统的情况下,通过“层叠”多个目录(lowerdir:基础层;upperdir:自定义层;workdir:工作目录)实现定制。适用于需要保留原始系统的同时添加或修改文件(如个性化配置、软件安装)。
sudo apt install overlayroot aufs-utils(部分系统可能需要overlayfs包)。lowerdir(基础文件系统,如/)、upperdir(自定义文件存储目录)、workdir(OverlayFS工作目录)。mount命令将层叠目录挂载到目标路径(如/mnt/custom),命令格式为:sudo mount -t overlay overlay -o lowerdir=/,upperdir=/path/to/upperdir,workdir=/path/to/workdir /mnt/custom。upperdir中添加、修改或删除文件(如桌面主题、配置文件),这些更改会实时反映在挂载点。/etc/fstab,实现系统重启后自动挂载。FUSE(用户空间文件系统)允许在用户态编写自定义文件系统,适用于需要特殊目录遍历逻辑(如过滤文件、虚拟文件)的场景。
sudo apt install build-essential libfuse-dev(开发工具和FUSE库)。fusepy库简化开发,示例代码实现自定义readdir(目录遍历)功能:import os, errno from fuse import FUSE, Operations class CustomReaddirFS(Operations): def __init__(self): self.files = {'/': ['file1.txt', 'file2.txt']} # 自定义文件列表 def readdir(self, path, fh): if path == '/': return ['.', '..', *self.files.keys()] # 返回目录内容(含.和..) else: return ['.', '..'] + self.files.get(path, []) # 返回子目录内容 def read(self, path, size, offset, fh): if path in self.files: return self.files[path][offset:offset+size] # 读取文件内容 else: raise IOError(errno.ENOENT) if __name__ == '__main__': FUSE(CustomReaddirFS(), '/mnt/custom_readdir', nothreads=True, foreground=True) /mnt/custom_readdir),通过ls、cat命令验证自定义逻辑(如仅显示file1.txt和file2.txt)。若系统使用LVM(逻辑卷管理),扩展流程更灵活,不影响现有数据。
pvresize命令扩展物理卷到最大可用空间:sudo pvresize /dev/sda1(/dev/sda1为物理卷路径)。lvextend命令增加逻辑卷大小(如增加10G或扩展到卷组所有剩余空间):sudo lvextend -L +10G /dev/debian-vg/root(debian-vg为卷组名,root为逻辑卷名);sudo lvextend -l +100%FREE /dev/debian-vg/root。sudo resize2fs /dev/debian-vg/root;sudo xfs_growfs /dev/debian-vg/root(xfs文件系统需先挂载)。df -h命令查看逻辑卷大小是否增加。若未使用LVM,需通过fdisk/parted调整分区大小,再扩展文件系统(风险较高,需备份数据)。
parted工具(实时操作,无需重启):sudo parted /dev/sda进入交互界面,输入resizepart 2(假设/dev/sda2为根分区),设置新结束扇区(如100%表示使用全部空间),退出并保存。partprobe命令让内核重新读取分区表:sudo partprobe /dev/sda。resize2fs命令:sudo resize2fs /dev/sda2;若为xfs,需先挂载再执行xfs_growfs。针对VirtualBox环境,需先调整虚拟磁盘大小,再扩展分区及文件系统。
fdisk调整分区→partprobe刷新→resize2fs扩展文件系统)。/home、/etc)。e2fsck -f /dev/sdX(ext4)检查文件系统完整性,避免操作失误导致数据丢失。