精华内容
下载资源
问答
  • Linux tmpfs和mount --bind

    千次阅读 2018-09-08 17:01:57
    Linux tmpfs作用及使用方法,首先了解下什么是tmpfs? 原文地址:http://www.iplaypy.com/linux/l6790.html mpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化; 它...

    Linux tmpfs作用及使用方法,首先了解下什么是tmpfs?

    原文地址:http://www.iplaypy.com/linux/l6790.html

    mpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化;
    它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。

    linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。

    Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多。
    当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果有足够大的物理内存,可以不划分Swap分区。

    关于SWAP的增加详见:VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)。

    但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。
    tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M。一般情况下,是配置的小于物理内存大小的。

    tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收重新划分的。

    当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源。

    tmpfs的用途是什么?

    例如:
    中的Automatic Memory Management特性就使用了/dev/shm。
    LINUX中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点提升系统性能。

    调整tmpfs大小大致有以下三种方法:

    1.直接挂载到需要的目录--比如系统的临时目录-可以根据实际需要挂载某个程序的临时文件的目录

    [root@bys3 ~]# mount -t tmpfs -o size=20m tmpfs /tmp
    [root@bys3 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 502M 0 502M 0% /dev/shm
    tmpfs 20M 0 20M 0% /tmp
    由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。可以写入/etc/fstab,这样重启后也有效。

    2./etc/fstab文件来修改/dev/shm的容量(增加size=100M选项即可),修改后,重新挂载即可:

    [root@bys3 ~]# cat /etc/fstab
    LABEL=/ / ext3 defaults 1 1
    LABEL=/boot /boot ext3 defaults 1 2
    tmpfs /dev/shm tmpfs defaults,size=600M 0 0
    tmpfs /tmp tmpfs defaults,size=25M 0 0
    devpts /dev/pts devpts gid=5,mode=620 0 0
    sysfs /sys sysfs defaults 0 0
    proc /proc proc defaults 0 0
    LABEL=SWAP-sda3 swap swap defaults 0 0
    /dev/sda5 swap swap defaults 0 0
    [root@bys3 ~]# mount -a --测试/etc/fstab无错误,重启OS系统
    [oracle@bys3 ~]$ df -h --重启后的信息如下,tmpfs文件系统的对应条目已经改变为配置的
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 600M 0 600M 0% /dev/shm
    tmpfs 25M 0 25M 0% /tmp

    3./dev/shm建一个tmp目前,并与/tmp绑定。 --这方法有点烦琐,不如方法1方便快捷。

    [root@bys3 ~]# mkdir /dev/shm/tmp
    [root@bys3 ~]# chmod 1777 /dev/shm/tmp
    [root@bys3 ~]# mount --bind /dev/shm/tmp /tmp -注意mount --bind 这里bind前是两个-
    [root@bys3 ~]# ls -ld /tmp

    drwxrwxrwt 2 root root 40 Dec 8 12:15 /tmp
    [root@bys3 ~]# df -h

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 600M 0 600M 0% /dev/shm
    tmpfs 600M 0 600M 0% /tmp ----可以看到/tmp使用到了 /dev/shm的空间。

    以上为Linux tmpfs作用及使用方法。

     

    mount --bind

    在固件开发过程中常常遇到这样的情况:为测试某个新功能,必需修改某个系统文件。而这个文件在只读文件系统上(总不能为一个小小的测试就重刷固件吧),或者是虽然文件可写,但是自己对这个改动没有把握,不愿意直接修改。这时候mount --bind就是你的好帮手。

    假设我们要改的文件是/etc/hosts,可按下面的步骤操作:

    1. 把新的hosts文件放在/tmp下。当然也可放在硬盘或U盘上。
    2. mount --bind /tmp/hosts /etc/hosts

    测试完成了执行 umount /etc/hosts 断开绑定。

    如果我需要在/etc下面增加一个exports文件怎么办?原来没有这个文件,不能直接bind。我们有两个方法:

    方法1:绑定整个/etc目录,绑定前先复制/etc

    # cp -a /etc /tmp
    # mount --bind /tmp/etc /etc

    此时的/etc目录是可写的,所做修改不会应用到原来的/etc目录,可以放心测试。

    方法2:挂载ramfs到/etc,同样要先复制/etc

    挂载ramfs
    # mkdir /tmp/etc
    # mount -t ramfs none /tmp/etc

    复制/etc,这里我们不能用cp -a,改用tar
    # cd /etc
    # tar cf - . |(cd /tmp/etc; tar xf -)
    # cd /

    覆盖/etc
    # mount --move /tmp/etc /etc

    测试完了记着 umount /etc

    展开全文
  • Linux tmpfs作用及使用方法,首先了解下什么是tmpfs? 原文地址:http://www.iplaypy.com/linux/l6790.html mpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化; 它...

    Linux tmpfs作用及使用方法,首先了解下什么是tmpfs?

    原文地址:http://www.iplaypy.com/linux/l6790.html

    mpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化;
    它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。

    linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。

    Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多。
    当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果有足够大的物理内存,可以不划分Swap分区。

    关于SWAP的增加详见:VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)。

    但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。
    tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M。一般情况下,是配置的小于物理内存大小的。

    tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收重新划分的。

    当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源。

    tmpfs的用途是什么?

    例如:
    中的Automatic Memory Management特性就使用了/dev/shm。
    LINUX中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点提升系统性能。

    调整tmpfs大小大致有以下三种方法:

    1.直接挂载到需要的目录--比如系统的临时目录-可以根据实际需要挂载某个程序的临时文件的目录

    [root@bys3 ~]# mount -t tmpfs -o size=20m tmpfs /tmp
    [root@bys3 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 502M 0 502M 0% /dev/shm
    tmpfs 20M 0 20M 0% /tmp
    由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。可以写入/etc/fstab,这样重启后也有效。

    2./etc/fstab文件来修改/dev/shm的容量(增加size=100M选项即可),修改后,重新挂载即可:

    [root@bys3 ~]# cat /etc/fstab
    LABEL=/ / ext3 defaults 1 1
    LABEL=/boot /boot ext3 defaults 1 2
    tmpfs /dev/shm tmpfs defaults,size=600M 0 0
    tmpfs /tmp tmpfs defaults,size=25M 0 0
    devpts /dev/pts devpts gid=5,mode=620 0 0
    sysfs /sys sysfs defaults 0 0
    proc /proc proc defaults 0 0
    LABEL=SWAP-sda3 swap swap defaults 0 0
    /dev/sda5 swap swap defaults 0 0
    [root@bys3 ~]# mount -a --测试/etc/fstab无错误,重启OS系统
    [oracle@bys3 ~]$ df -h --重启后的信息如下,tmpfs文件系统的对应条目已经改变为配置的
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 600M 0 600M 0% /dev/shm
    tmpfs 25M 0 25M 0% /tmp

    3./dev/shm建一个tmp目前,并与/tmp绑定。 --这方法有点烦琐,不如方法1方便快捷。

    [root@bys3 ~]# mkdir /dev/shm/tmp
    [root@bys3 ~]# chmod 1777 /dev/shm/tmp
    [root@bys3 ~]# mount --bind /dev/shm/tmp /tmp -注意mount --bind 这里bind前是两个-
    [root@bys3 ~]# ls -ld /tmp

    drwxrwxrwt 2 root root 40 Dec 8 12:15 /tmp
    [root@bys3 ~]# df -h

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 600M 0 600M 0% /dev/shm
    tmpfs 600M 0 600M 0% /tmp ----可以看到/tmp使用到了 /dev/shm的空间。

    以上为Linux tmpfs作用及使用方法。

     

    mount --bind

    在固件开发过程中常常遇到这样的情况:为测试某个新功能,必需修改某个系统文件。而这个文件在只读文件系统上(总不能为一个小小的测试就重刷固件吧),或者是虽然文件可写,但是自己对这个改动没有把握,不愿意直接修改。这时候mount --bind就是你的好帮手。

    假设我们要改的文件是/etc/hosts,可按下面的步骤操作:

    1. 把新的hosts文件放在/tmp下。当然也可放在硬盘或U盘上。
    2. mount --bind /tmp/hosts /etc/hosts

    测试完成了执行 umount /etc/hosts 断开绑定。

    如果我需要在/etc下面增加一个exports文件怎么办?原来没有这个文件,不能直接bind。我们有两个方法:

    方法1:绑定整个/etc目录,绑定前先复制/etc

    # cp -a /etc /tmp
    # mount --bind /tmp/etc /etc

    此时的/etc目录是可写的,所做修改不会应用到原来的/etc目录,可以放心测试。

    方法2:挂载ramfs到/etc,同样要先复制/etc

    挂载ramfs
    # mkdir /tmp/etc
    # mount -t ramfs none /tmp/etc

    复制/etc,这里我们不能用cp -a,改用tar
    # cd /etc
    # tar cf - . |(cd /tmp/etc; tar xf -)
    # cd /

    覆盖/etc
    # mount --move /tmp/etc /etc

    测试完了记着 umount /etc

    [原文链接](http://www.iplaypy.com/linux/l6790.html)
    展开全文
  • Linux tmpfs区满了过后怎么清理

    千次阅读 2019-05-22 11:26:30
    Linux tmpfs区满了过后怎么清理 我来答 cincoutvc 来自电脑网络类芝麻团2017-06-01 tmpfs文件系统是通过内存虚拟出来的磁盘(所以这个文件系统的大小在每个主机上都不一样),属于是针对内存的挂载,它每次开机...

    Linux tmpfs区满了过后怎么清理

     我来答 

    cincoutvc 
    来自电脑网络类芝麻团 2017-06-01

    tmpfs文件系统是通过内存虚拟出来的磁盘(所以这个文件系统的大小在每个主机上都不一样),属于是针对内存的挂载,它每次开机会挂载到/dev/shm这个目录。因为是内存的挂载,内存的特性你应该知道重启过后里面的内容就全没有了,所以一般不需要清理,每次开机后它都是空的。如果你需要手动清理,就清理/dev/shm这个目录(注意是个目录而不是个设备文件),因为tmpfs是开机挂载到这个目录。

     本回答被提问者采纳

    帳號被封過 
    来自电脑网络类芝麻团 2017-06-01

    1、 动态文件系统的大小。
    2、tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的tmpfs文件系统会完全驻留在内存 RAM 中,读写几乎可以是瞬间的。同时它也有一个缺点tmpfs数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
    注意: tmpfs不具备持久性,重启后数据不保留,请务必注意。

    展开全文
  • Linux tmpfs的使用问题解析 在不同的版本系统查看tmpfs分区的情况,有的可以查询到,有的则不行且不报错。如df命令,对于正常的结果如下: tmpfs 15360 96 15264 1% /var 异常情况,则不会有该条目。 尝试编译测试...

    Linux tmpfs的使用问题解析

    在不同的版本系统查看tmpfs分区的情况,有的可以查询到,有的则不行且不报错。如df命令,对于正常的结果如下:

    tmpfs 15360 96 15264 1% /var

    异常情况,则不会有该条目。

    尝试编译测试程序利用statfs获取挂载点的空间使用情况,在异常的情况下空间数据为0。

    测试程序过程为:

    1)stat获取挂载点文件类型 if ((s.st_mode & S_IFMT) == S_IFBLK) mountDevice = s.st_rdev; else mountDevice = s.st_dev;

    2)通过setmntent、getmntent、endmntent组合函数从/proc/mounts下找寻匹配的mntent节点,确定挂载点是在合法范围的

    3)statfs通过挂载点路径,获取挂载分区的属性数据测试程序本身应该没有问题,在正常版本下可以获取正确的数据。跟踪statfs的调用流程:SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct statfs__user *, buf)->static int vfs_statfs_native(struct dentry *dentry, struct statfs *buf)->int vfs_statfs(struct dentry *dentry, struct kstatfs *buf)->retval = dentry->d_sb->s_op->statfs(dentry, buf);

    从这里,有理由怀疑异常版本的tmpfs实现有问题,实现在shmem.c中,打开会发现其中有很多宏,有些实现是按宏区分为2份,比如与本问题相关的shmem_ops,

    ``` C

    1)static const struct super_operations shmem_ops;/*只是1个定义未初始化*/

    2)/*statfs被实现且被CONFIG_TMPFS管理*/

    static const struct super_operations shmem_ops = {

    .alloc_inode = shmem_alloc_inode,

    .destroy_inode = shmem_destroy_inode,

    #ifdef CONFIG_TMPFS

    .statfs = shmem_statfs,

    .remount_fs = shmem_remount_fs,

    .show_options = shmem_show_options,

    #endif

    .delete_inode = shmem_delete_inode,

    .drop_inode = generic_delete_inode,

    .put_super = shmem_put_super,

    };

    ``` 

    找到另外1个相关的宏CONFIG_SHMEM,并打开,重新编译版本,验证OK。shmem.c是被默认编入内核的,但其具体功能可能会由于控制宏开关的不同而表现不同。比如:在CONFIG_SHMEM和CONFIG_TMPFS均关闭的情况下,我们是可以使用tmpfs进行内存分区挂载的,但即使我们制定其挂载大小,对挂载分区的使用也是不会受限,会一致消耗内存直至无内存可用。

    展开全文
  • linux内核tmpfs/shmem浅析 https://blog.csdn.net/ctthuangcheng/article/details/8916065
  • Linux tmpfs是什么

    千次阅读 2017-12-08 23:13:58
    tmpfs是临时文件系统的意思,但是他又不是普通的文件系统,因为他不是物理磁盘上的空间,而是内存中的一块空间, 但却以物理磁盘分区的方式展示给用户,让用户操作这块空间。tmpfs不需要mkfs命令来格式化,这是他...
  • 我想用linux tmpfs来临时存放输入信息,并给其size定了一个值,我的问题是当我往里面写入的信息大小超过了设定的size时,有没有办法将tmpfs中的信息从头覆盖写入,或者擦除后重新写入?如果做不到,有没有别的方案...
  • linux tmpfs和swap介绍

    2016-12-31 12:00:35
    tmpfsLinux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,temfs主要存储暂存的文件。 linux内核中的VM子系统负责在后台管理虚拟内存资源Virtual Memory,即...
  • linux tmpfs /dev/shm 简述

    2018-04-03 17:45:54
    tmpfsLinux/Unix系统上的一种基于内存的文件系统。可以简单理解为内存文件系统,所以优点就是快。那么缺点就是重启后,内容就没了。 /dev/shm 是一个设备文件,它使用就是tmpfs文件系统。 /dev/shm 这个目录...
  • 个人博客首页(点击查看 详情) -- https://blog.51cto.com/11495268个人微信公众号(点击...1、简介ceph bluestore 挂载的 就是 tmpfs 文件系统,所以 学习 下 tmpfs 文件系统;本文 描述 tmpfs 文件系统 基础概念 ...
  • linux tmpfs 的使用说明

    千次阅读 2013-11-06 10:44:40
    总的来说tmpfs是一种虚拟内存文件系统 正如这个定义它最大的特点就是它的存储空间在VM里面,这里提一下VM(virtual memory) ,VM是由linux内核里面的vm子系统管理的东东,现在大多数操作系统都采用了虚拟内存 ...
  • Linux tmpfs文件系统

    2013-03-26 15:59:00
    Tmpfs 可能是现在 Linux 可以使用的最好的类似于 RAM 磁盘的系统,而且是 2.4 内核的一个新功能。然后,我们将简单地介绍另一个 2.4 内核的新功能,叫做“绑定安装”,它在安装(和重新安装)文件系统的时候带来了很...
  • Linux tmpfs 源码分析(一)

    千次阅读 2011-10-18 14:38:52
    Tmpfslinux 系统中基于内存/交换分区作的文件系统,与ramdisk不同的是,ramdisk是作为块设备,基于ext的文件系统,所以不可绕过的是page cache的内存复制,具体可以参考前面写的关于ramdisk, 对tmpfs来说就是直接...
  • tmpfsLinux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,temfs主要存储暂存的文件。linux内核中的VM子系统负责在后台管理虚拟内存资源Virtual Memory,即RAM和...
  • 一、tmpfs介绍tmpfs是一种虚拟内存文件系统,正如这个定义它最大的特点就是它的存储空间在VM里面VM是由linux内核里面的vm子系统管理的东西,现在大多数操作系统都采用了虚拟内存管理机制VM介绍1.linux下面VM(virtual ...
  • Linuxtmpfs

    千次阅读 2016-03-18 10:54:05
    tmpfsLinux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储暂存的文件。优势 : 1.动态文件系统的大小。 2.tmpfs 的另一个主要的好处是它闪电般的...
  • linuxtmpfs

    2017-11-23 11:32:00
    1、概述 tmpfs是ramfs的衍生品,ramfs是基于RAM的文件系统,不能使用swap空间;tmpfs可以动态释放空间、可以使用...tmapfs是存储在VM的文件系统,VM是linux的虚拟内存,由RM(物理内存)和swap组成。RM的读写性能优...
  • Linux修改Tmpfs

    千次阅读 2016-08-08 16:25:25
    有时候,当应用程序使用到Tmpfs时,而在部署的时候如果没有对应用程序占用的内存做足够的评估时,就有可能把Tmpfs用满,这个时候就需要调整Tmpfs的大小了,当然,调整的大小不能大于你机器内存大小,否则,你只能换...
  • linuxtmpfs

    2013-06-19 11:03:41
    默认linux系统开机时就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘)一样,但其实是不一样的。像虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘...
  • Linuxtmpfs介绍与使用

    2021-01-20 14:50:15
     tmpfsLinux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储 暂存的文件。  优势 :  1、 动态文件系统的大小。  2、tmpfs 的另一个主要的好处...
  • tmpfs是一种基于内存的文件系统,安装后即可使用,下面小编将针对Linux tmpfs的用途及大小的调整做个详细介绍,有兴趣的朋友可以来了解下。tmpfs介绍tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,109
精华内容 843
关键字:

linuxtmpfs

linux 订阅