AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 693792
Accepted
Jay M
Jay M
Asked: 2015-05-23 01:10:57 +0800 CST2015-05-23 01:10:57 +0800 CST 2015-05-23 01:10:57 +0800 CST

AUFS:如何创建仅部分目录树的读/写分支?

  • 772

AuFS(另一个联合文件系统)允许我们将两棵树合并为一棵,即使这些树重叠。然后,我们可以将合并树的写入指向其中一个分支并读取到另一个分支。

它的经典用途是使用闪存文件系统和 ram 磁盘,像这样(参考 1)创建一个不会破坏 Linux 的只读根文件系统。所有文件写入都进入 ram。重新启动后,系统会自行恢复到出厂配置。

  • /dir1= 只读
  • /dir2= 读/写
  • /aufs/dir1=和的合并/dir2

/aufs然后重新安装--move以使其成为/(根)

简化后,(参考文献 1)中的示例就是这样做的

mount -t aufs br=/dir2:/dir1 /aufs
mount --move /aufs /

但是,我想使用它以使可写 ( /dir2) 位于真实磁盘上,而不是 ramdisk 上。这样在重新启动后它将保留其数据。

但我需要确保不保留 dir2 中的某些文件并恢复为 ( /dir1) 默认值。这可确保未来的引导始终使用出厂时的文件。不会丢失用户和记录数据。

/etc例如,在, /bin,/boot中更改的文件/usr不应在重新启动后继续存在。

AUFS 网页(参考文献 2)的示例很少。

那么问题来了:使用 AuFS 的正确方法是什么?

我可以想到以下几点:

  1. 以某种方式修改第一个挂载命令
  2. 在第二次挂载之前使用 aufs add/del 添加更多挂载命令
  3. /dir2只需删除在引导时不应保留的树
  4. 部分树 ( etc, bin, boot, lib, etc) 在tmpfs

参考 1:https
://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash 参考 2:http ://aufs.sourceforge.net/aufs.html

linux
  • 1 1 个回答
  • 7431 Views

1 个回答

  • Voted
  1. Best Answer
    chaos
    2015-05-23T02:00:01+08:002015-05-23T02:00:01+08:00

    选项 #1:auFS它本身不支持这样的挂载选项,所以选项 #1 已失效。你必须解决这个问题。

    选项#3:当然,您可以在每次启动时简单地删除这些目录。这可能是我在这里看到的最简单的方式。

    选项 #2:您可以使用tmpfs. 所以首先创建一个tmpfs,假设大小为 500 MB:

    mount -t tmpfs -o rw,size=500M tmpfs /tmpfs
    

    我们现在有:

    • /dir1: 只读
    • /dir2:读/写
    • /tmpfs: 在 RAM 中读/写
    • /aufs/dir1:和的叠加/dir2

    在里面/tmpfs,我们创建了你想要保留的那些目录:

    mkdir -p /tmpfs/{etc,usr,boot,bin}
    

    请注意,当我们已经合并两个目录时,我们会这样做。所以当目录树/aufs已经存在时。但是,现在我们为每个应该保留的目录执行一次 aufs 挂载:

    mount -t aufs -o dirs=/tmpfs/etc=rw:/dir2/etc=ro none /aufs/etc
    mount -t aufs -o dirs=/tmpfs/usr=rw:/dir2/usr=ro none /aufs/usr
    mount -t aufs -o dirs=/tmpfs/boot=rw:/dir2/boot=ro none /aufs/boot
    mount -t aufs -o dirs=/tmpfs/bin=rw:/dir2/bin=ro none /aufs/bin
    

    您现在有一个目录树,/aufs您可以在任何地方写入文件,但是当您写入时/etc,它将被写入/tmpfs/etcRAM 中的 . 例如,其他文件/home被写入/dir2/home,这是一个可读写的文件系统,因此在重新启动后仍然存在。

    另一个解决方案:我还使用使用覆盖文件系统并保留用户数据的客户端系统。这是我解决它的方法:只需一个只读文件系统和一个安装在它上面的 tmpfs。稍后当用户登录时,我从可读写的 samba 服务器挂载他的主目录。因此,他的所有用户数据都存储并保存在 中/home,其余的在重新启动后无法幸免。在您的情况下,您可以将/home其放入另一个可读写的物理分区,然后将其挂载到/aufs/home.

    • 2

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve