/dev/shm问题处理

来源:互联网 发布:mac git图形化工具 编辑:程序博客网 时间:2024/06/04 20:22
/dev/shm问题处理
[root@oracle11g ~]# df -k /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
none                    257220    157504     99716  62% /dev/shm
[root@oracle11g ~]#


[root@oracle11g ~]# umount /dev/shm
umount: /dev/shm: device is busy
umount: /dev/shm: device is busy
[root@oracle11g ~]#
umount: /mnt: device is busy

umount: /mnt: device is busy


SQL> show parameter memory_target

 

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

memory_target                        big integer 1344M

--这里的memory_target 有1344M。

 

[root@rac1 ~]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3              14G   11G 2.4G  83% /

tmpfs                 978M   88K 978M   1% /dev/shm

/dev/sda1             194M   46M 139M  25% /boot

--这里可以看到tmpfs 只有978M。 这个参数我在安装DB的时候已经修改过:

[root@rac1 ~]# cat /etc/fstab

UUID=b1d2de8e-de31-4deb-b4e8-755c0ed01616/                       ext4    defaults        1 1

UUID=4df5aa5f-8ef0-473a-931a-51d11e21aa53/boot                   ext4    defaults        1 2

UUID=82085104-5021-4aaf-8e85-f213998107b6swap                    swap    defaults        0 0

tmpfs                   /dev/shm                tmpfs   defaults,size=3G    0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

--只是这里的配置在启动的时候没有生效。

--把tmpfs 重新mount 一下:

[root@rac1 ~]# umount /dev/shm

umount: /dev/shm: device is busy.

       (In some cases useful info about processes that use

        the device is found by lsof(8) or fuser(1))

--设备忙,用fuser处理一下:

[root@rac1 ~]# fuser -km /dev/shm

/dev/shm:             1805m

[root@rac1 ~]# umount /dev/shm

[root@rac1 ~]# mount /dev/shm

[root@rac1 ~]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3              14G   11G 2.4G  83% /

/dev/sda1             194M   46M 139M  25% /boot

tmpfs                 3.0G     0 3.0G   0% /dev/shm

--现在已经正常了。




假设无法卸载的设备为/mnt,运行下列命令即可:

# fuser -m -v /mnt
      用户 进程号 权限 命令
/mnt: galeki 335 ..c.. gqview
-m参数显示所有使用指定文件系统的进程,后面可以跟挂载点,或是dev设备,-v参数给出详细的输出,可以看出,原来是gqview这个程序还在霸占着移动设备,
fuser还给出了程序的进程号,知道了进程号,你就可以随便怎么处置这个程序了。
另外你也可以添加一个-k参数:
fuser -m -k /mnt
这招自动把霸占着/mnt/的程序杀死。如果你不是很明确是否要杀死所有霸占设备的程序,你还可以加一个-i参数,这样每杀死一个程序前,都会询问:
# fuser -m -v -i -k /mnt
    用户 进程号 权限命令
/mnt: galeki 371 ..c.. gqview
杀死进程371 ? (y/N)




[root@oracle11g ~]# df -k /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
none                    257220    157504     99716  62% /dev/shm
[root@oracle11g ~]# vi /etc/fstab


# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/hdc                /media/cdrom            auto    pamconsole,exec,noauto,managed 0 0
/dev/fd0                /media/floppy           auto    pamconsole,exec,noauto,managed 0 0


例如:为了将/dev/shm的大小增加到1GB,修改/etc/fstab的这行:默认的: 
none     /dev/shm       tmpfs   defaults        0 0
改成: 
none      /dev/shm      tmpfs   defaults,size=1024M        0 0
size参数也可以用G作单位:size=1G
重新mount /dev/shm使之生效:
# mount -o remount /dev/shm
马上可以用"df -h"命令检查变化。 


也可以用下面的方式
1.# mkdir /mnt/tmp 
2.# mount -t tmpfs -o size=800m,mode=1777 tmpfs /mnt/tmp


卸载:
1.# umount /mnt/tmp
当然也可以添加相应的设置到 /etc/fstab 里。
编辑 /etc/fstab,加入或修改 /tmp 这行:
tmpfs           /tmp            tmpfs   size=800m,mode=1777     0          0
直接使用 /dev/shm 的 tmpfs 应该是最方便的。/dev/shm 预设是挂载 ram的一半大小 。