Linux 文件系统基础

linux文件系统几个常识

1. 如何确认当前系统挂载了哪些文件系统?


reno.chen@ubuntu:~$ mount
/dev/mapper/ubuntu--vg-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,relatime,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,relatime,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,relatime,perf_event)
cgroup on /sys/fs/cgroup/net_prio type cgroup (rw,relatime,net_prio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,relatime,hugetlb)
/dev/sda2 on /boot type ext2 (rw)
/dev/sdb1 on /development type ext4 (rw)
/dev/sdb2 on /home type ext4 (rw)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
reno.chen@ubuntu:~$ cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=264129784k,nr_inodes=66032446,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=52828188k,mode=755 0 0
/dev/mapper/ubuntu--vg-root / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/cgroup tmpfs rw,relatime,size=4k,mode=755 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
none /run/user tmpfs rw,nosuid,nodev,noexec,relatime,size=102400k,mode=755 0 0
none /sys/fs/pstore pstore rw,relatime 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/cpu cgroup rw,relatime,cpu 0 0
cgroup /sys/fs/cgroup/cpuacct cgroup rw,relatime,cpuacct 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,relatime,devices 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,relatime,freezer 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,relatime,net_cls 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/net_prio cgroup rw,relatime,net_prio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,relatime,hugetlb 0 0
/dev/sda2 /boot ext2 rw,relatime 0 0
/dev/sdb1 /development ext4 rw,relatime,data=ordered 0 0
/dev/sdb2 /home ext4 rw,relatime,data=ordered 0 0
rpc_pipefs /run/rpc_pipefs rpc_pipefs rw,relatime 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
systemd /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,name=systemd 0 0
/dev/mapper/ubuntu--vg-root /var/lib/docker/aufs ext4 rw,relatime,errors=remount-ro,data=ordered 0 0

2. linux ext2文件系统?
ext2文件系统分区是由inode以及block这两个部分组成,其中inode用来存储文件的属性信息;而block区域则用来存储实际的文件内容。因为这个原因,所以可能会存在两个比较极端的情况:

  • 磁盘中的文件size都很小,造成了磁盘上的inode都被用完但是block区域却仍然有大量剩余从而造成磁盘空间浪费;
  • 磁盘上的文件size都很大,造成了磁盘上放了为数不多的几个文件后block区域就被用完从而造成inode空间的浪费。

ext2文件系统由于缺少日志系统,从而给系统管理带来不便,所以在ext3文件系统中增加了日志系统,即:
ext3 = ext2 + 日志系统

 

 

3. 关于inode的一点说明?
常规情况下,一个inode即对应着一个文件。
但是由于硬连接的存在(硬链接是一个inode,但是block中有文件内容的多份copy),所以也是有特例的存在。
正是inode与block的划分,从而让创建文件的硬链接和软连接提供了可能。
另外inode结构是不包含文件名信息的。

 

4. VFS?
linux提供了VFS,这让应用程序编程变得简单,因为应用程序不用去考虑不同文件系统的差异。

 

5. 为什么在同一个文件系统中move会很快,而在不同文件系统中move会很慢呢?
因为在同一个文件系统中copy,不需要move block区域中的数据区,而只需要修改inode信息;
而在不同文件系统中move,不但要修改inode信息,同时block区域中存放的文件信息也必须要
copy到另一个文件系统中。

 

6. 伪文件系统?
伪文件系统是从内存中创建的文件系统。一旦系统断电文件系统中的内容就会丢失。

7. 如何查看文件系统的使用情况?
(1)使用df命令可以帮助我们实现这一需求,

reno.chen@ubuntu:~$ df
Filesystem                   1K-blocks       Used Available Use% Mounted on
udev                         264129784          4 264129780   1% /dev
tmpfs                         52828188      21856  52806332   1% /run
/dev/mapper/ubuntu--vg-root 3124228496 2581650112 383853676  88% /
none                                 4          0         4   0% /sys/fs/cgroup
none                              5120          0      5120   0% /run/lock
none                         264140936          0 264140936   0% /run/shm
none                            102400          0    102400   0% /run/user
/dev/sda2                       241965      39188    190285  18% /boot
/dev/sdb1                   1922346428  825685404 998988392  46% /development
/dev/sdb2                   7750813060 7162931528 197240176  98% /home

(2)使用stat命令进行查看,利用-f选项来查看指定文件所在的文件系统信息,

reno.chen@ubuntu:~$ stat /dev
  File: ‘/dev’
  Size: 4360            Blocks: 0          IO Block: 4096   directory
Device: 6h/6d   Inode: 2           Links: 16
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-02-20 09:35:04.474863357 +0800
Modify: 2019-02-12 11:03:19.977060812 +0800
Change: 2019-02-12 11:03:19.977060812 +0800
 Birth: -
8. 如何确认当前系统中可以支持哪些文件系统?
使用cat /proc/filesystems可以查看,
其中第一列nodev表示该类型文件不需要挂载在一个块设备上,否则就需要挂在一个块设备上;
第二列表示当前系统中支持的文件系统类型。
reno.chen@ubuntu:~$ cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   cgroup
nodev   tmpfs
nodev   devtmpfs
nodev   debugfs
nodev   tracefs
nodev   securityfs
nodev   sockfs
nodev   pipefs
nodev   devpts
        ext3
        ext2
        ext4
nodev   hugetlbfs
        vfat
nodev   ecryptfs
        fuseblk
nodev   fuse
nodev   fusectl
nodev   pstore
nodev   mqueue
nodev   rpc_pipefs
nodev   nfs
nodev   nfs4
nodev   nfsd
nodev   binfmt_misc
nodev   aufs

9. 如何加载一个文件系统?
方法一:由于系统启动时会通过读取/etc/fstab来配置那些固定的文件系统,所以针对那些需要固定加载的文件系统,我们可以在/etc/fstab中配置好;
方法二:系统启动后,根据需要,自行加载文件系统。

reno.chen@ubuntu:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda2 during installation
UUID=c313ec0d-86a6-4fe5-97d9-a90ff4bf505c /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0
/dev/sdb1 /development ext4 defaults 0 1
/dev/sdb2 /home ext4 defaults 0 1
上述转至https://www.cnblogs.com/0616--ataozhijia/p/3894461.html

文件系统常用命令

一、文件系统查看命令df

    df [选项] [挂载点]

      -a  查看所有文件系统信息,包括特殊文件系统

      -h  使用习惯单位显示容量

      -T  显示文件系统类型

      -m  以MB为单位显示容量

      -k   以KB为单位显示容量

  注:df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令和程序占用的空间             (最常见的是文件已经被删除,但是程序并没有释放空间)

二、统计目录或文件大小du

    du [选项] [目录名或文件名]

      -a  显示每个子文件的池畔占用量

      -h  使用习惯单位显示磁盘占用量

      -s  统计总占用量,不列出子目录子文件

  注:du命令是面向文件的,只会计算文件和目录占用的空间

三、文件系统修复命令fsck

    fsck [选项] 分区设备文件名

      -a  不用显示用户提示,自动修复文件系统

      -y  自动修复

四、显示磁盘状态命令dumpe2fs

    dufpe2fs 分区设备文件名

五、挂载命令mount

  1 查询系统中已经挂载的设备

      mount -l      

        -l:显示卷标名称

      

      将设备文件名为 “ /dev/sda5 ” 的设备挂载到根目录 “ / ” (挂载点)下,文件系统为                              ext4,拥有读写权限

  2 依据配置文件/etc/fstab的内容,自动挂载

      mount -a

  3 挂载命令

      mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点

        -t 文件系统  加入文件系统类型来指定挂载的类型

               默认文件系统是ext4

               光驱文件系统是iso9660

               windows文件系统是vfat、fat

               FTNS移动硬盘文件系统是ntfs-3g

        -L 卷标名     分区别名

        -o 特殊权限  可以指定挂载的额外选项

特殊权限
atime/noatime更新/不更新访问时间
async/sync异步/同步
auto/noauto自动/手动
defaults定义默认值,async、auto、exec、rw、suid、nouser、dev
exec/noexec执行/不执行,设定是否允许在文件系统中执行文件
remount重新挂载已经挂载的文件系统
rw/ro读写/只读
suid/nosuid具有/不具有SUID权限
user/nouser允许/不允许普通用户挂载
usrquota写入代表文件系统支持用户磁盘配额,默认不支持
grpquota写入代表文件系统支持组磁盘配额,默认不支持

      例:

        mount -o remount,noexec /home  重载挂载/home分区,并使用noexec权限

        vi /home/hello.sh         编写脚本文件   

        chmod 755 hello.sh        改变脚本文件的模式为755

        ./hello.sh             执行脚本文件

        mount -o remount,exec /home     重新挂载/home分区,使用exec权限  

  4 挂载光盘

      mkdir /mnt/cdrom             建立光盘挂载点

      mount -t iso9660 /dev/cdrom /mnt/cdrom/   挂载光盘

      umount /mnt/cdrom            卸载光盘(必须再光盘外进行)

  5 挂载U盘

      fdisk -l                  查看U盘设备文件名

      mkdir /mnt/usb               建立U盘挂载点

      mount -t vfat /dev/sdb1 /mnt/usb/      挂载光盘

      umount /mnt/usb/             卸载U盘

  6 NTFS

      待...

上述转至https://www.cnblogs.com/zhw-626/p/8509176.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值