百科问答小站 logo
百科问答小站 font logo



何为文件系统,何为根文件系统? 第1页

  

user avatar   xi-yang-86-73 网友的相关建议: 
      

你的问题本来就是应当三言两语打发的,因为根本不涉及底层原理。

1:什么是文件系统?

用来增删改查“文件名=>存储位置”的映射数据结构。主要要干两件事情:

  • 文件夹、文件是树状的,存储器地址是线性的,需要映射。
  • 文件尺寸是可变的,需要管理。
2:什么是根文件系统?

Unix没有盘符的概念,要求自己的文件系统是单一的一棵树。直接挂载在整棵树根上的那个盘里面的文件系统,就是根文件系统。

实际上可以更灵活、更复杂,比如Unix都是可以chroot的,把一个目录重新定义成当前根。

3:为啥还要挂载其它文件系统?

你当然可以这么做,实际上Linux初学者经常在PC上这么做。

但是Unix要求自己只有一整棵文件树,那么现在如果你有两个硬盘,怎么办?

启动过程究竟要挂载几次文件系统?

这显然完全取决于具体实现。

4:

那么具体是怎么对应的?

比如,第一个盘挂在/上,第二个盘挂在/mnt/foo上,第三个盘挂在/mnt/bar上,就是这么对应的。

Linux有一个用户态的程序mount来管理挂载,有一个配置文件/etc/fstab来控制启动之后额外分区的挂载。在此之前的行为,我并不很了解。现代Linux已经很复杂,会建立一大堆系统挂载,这是我笔记本上装的debian的挂载状态:

       $ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=8177560k,nr_inodes=2044390,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=1637876k,mode=755) /dev/sdb1 on / type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=3636) mqueue on /dev/mqueue type mqueue (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) tmpfs on /tmp type tmpfs (rw,nosuid,nodev) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) /dev/sdc4 on /home type ext3 (rw,relatime,data=ordered) /dev/sdc3 on /mnt/d type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) tmpfs on /run/user/123 type tmpfs (rw,nosuid,nodev,relatime,size=1637872k,mode=700,uid=123,gid=136) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=1637872k,mode=700,uid=1000,gid=1000) gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)     

里面只有/dev/sdXXX那些是挂载的硬盘,其它都是系统挂上的特殊目录。

ramdisk文件系统管理着ram空间,那么掉电后数据不就没了吗?

没了就没了,本来就不打算让你放正经东西啊。

是不是这种情况下必须再挂载一个flash空间的文件系统?

你都搞嵌入式了,那显然需不需要flash完全取决于你的产品设计啊。




  

相关话题

  Linus 真心诚意地夸过哪些人或技术? 
  如何看待华为高管援引报告,称2020年鸿蒙将超Linux,成为世界第五大操作系统? 
  为什么 Windows 不提供内存文件系统? 
  在未来的五年到十年内,Linux将会替代Windows成为主流操作系统吗? 
  路由器的 USB 接口速率较慢到底是什么原因啊? 
  废旧的 Android 手机能拿来干什么有趣的事? 
  Windows 环境下为什么没有免费的 PDF 编辑软件? 
  做32位/64位跨版本编程,有什么需要注意的么? 
  为什么说 exFAT 会丢数据呢? 
  Linux下有哪些给你带来「快感」的软件? 

前一个讨论
为什么 Windows 不提供内存文件系统?
下一个讨论
「绝艺」成为中国国家围棋队指定训练 AI 后会有哪些影响?





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利