Oracle® Solaris 11 安全性準則

結束列印檢視

更新日期: 2014 年 9 月
 
 

如何限制 tmpfs 檔案系統的大小

tmpfs 檔案系統的大小預設為沒有限制。因此,tmpfs 可能會成長到填滿可用的系統記憶體和交換空間。/tmp 目錄是所有應用程式和使用者都能夠使用的目錄,因此某個應用程式就可能佔滿所有可用的系統記憶體。同樣的,有不良意圖的未授權使用者可能會在 /tmp 目錄中建立大型檔案,因而導致系統變慢。為避免效能影響,您可以限制每個 tmpfs 掛載的大小。

您可以嘗試數個不同的值,以獲取最佳系統效能。

開始之前

若要編輯 vfstab 檔案,您必須是具備 solaris.admin.edit/etc/vfstab 授權的管理員。若要重新啟動系統,您必須要被指派「維護與修復」權限設定檔。root 角色具有所有這些權限。如需更多資訊,請參閱Securing Users and Processes in Oracle Solaris 11.2 中的Using Your Assigned Administrative Rights

  1. 判斷您系統上的記憶體數量。

    備註 -  以下範例所使用的 SPARC T3 系列系統配備有可加快 I/O 速度的固態磁碟 (ssd) 和八顆 279.40 MB 硬碟。系統擁有約 500 GB 的記憶體。
    % prtconf | head
    System Configuration:  Oracle Corporation  sun4v
    Memory size: 523776 Megabytes
    System Peripherals (Software Nodes):
    
    ORCL,SPARC-T3-4
    scsi_vhci, instance #0
    disk, instance #4
    disk, instance #5
    disk, instance #6
    disk, instance #8
  2. 計算 tmpfs 的記憶體限制。

    視系統記憶體大小而定,若為大型系統,您可能想要以大約 20% 來計算記憶體限制,若為較小的系統,您可能要以大約 30% 來計算記憶體限制。

    因此,對於較小的系統,請使用 .30 作為乘數。

    10240M x .30 ≈ 340M

    對於較大的系統,請使用 .20 作為乘數。

    523776M x .20 ≈ 10475M
  3. /etc/vfstab 檔案中的 swap 項目修改為限制的大小。
    # pfedit /etc/vfstab
    #device     device       mount       FS      fsck    mount mount
    #to mount   to fsck      point       type    pass    at boot options
    #
    ...
    #swap       -            /tmp        tmpfs   -       yes     -
    swap        -            /tmp        tmpfs   -       yes     size=10400m
    /dev/zvol/dsk/rpool/swap   -      -  swap    -       no      - 
  4. 重新啟動系統。
    # reboot
  5. 驗證大小限制是否生效。
    % mount -v
    swap on /system/volatile type tmpfs
    read/write/setuid/devices/rstchown/xattr/dev=89c0006 on Tues Feb 4 14:07:27 2014
    swap on /tmp type tmpfs
    read/write/setuid/devices/rstchown/xattr/size=10400m/dev=89c0006 on Tues ...
  6. 監視記憶體使用量,並依據您的網站需求調整。

    df 命令有時會很有用。而 swap 命令可提供最有用的統計資料。

    % df -h /tmp
    Filesystem Size Used Available Capacity Mounted on
    swap          7.  4G     44M    7.4G 1%       /tmp
    
    % swap -s
    total: 190248k bytes allocated + 30348k reserved = 220596k used,
    7743780k available 

    如需更多資訊,請參閱 tmpfs(7FS)mount_tmpfs(1M)df(1M) 以及 swap(1M) 等線上手冊。