页面

2010年6月25日

将 Gentoo/Funtoo 的 Portage 移到 /dev/shm 上

原理大致上是利用/dev/shm把portage放到内存里面去,由于portage的小文件很多,而在硬盘上操作小文件效率低下,不管是 search 还是 sync ,在笔记本电脑上尤为明显。
注意:为了能将 Portage 移动到内存上,必须要有大于1GB的空闲内存

将 Portage 移到 /dev/shm 上

  1. 备份当前的 portage 和 layman

    # mv /usr/portage /usr/portage.bak
    # mv /var/lib/layman /var/lib/layman.bak
  2. 创建目录

    # mkdir /dev/shm/portage
    # mkdir /dev/shm/layman
    # ln -sf /dev/shm/portage /usr/portage
    # ln -sf /dev/shm/layman /var/lib/layman
  3. 将 Portage 复制到 /dev/shm 上

    # cp -r /usr/portage.bak/* /dev/shm/portage
    # cp -r /var/lib/layman.bak/* /dev/shm/layman
现在可以开始体验内存上的 Portage 速度相对于在硬盘上有多快了,但由于内存的特性,现在所做的一切都会在关机后消失,所以还需要一个启动脚本,每次开机就将 Portage 放到内存上,关机会自动备份到硬盘里,不需要人工干预。

设置启动脚本

  1. 设置变量

    /etc/conf.d/portage 文件范例
    # vi /etc/conf.d/portage
    
    PORTAGE_DIR=/dev/shm/portage     #存放portage的目录。
    LAYMAN_DIR=/dev/shm/layman       #存放layman的目录。
    BACKUP_DIR=/var                  #存放备份文件的目录。
  2. 创建脚本

    /etc/init.d/portage 文件范例
    # vi /etc/init.d/portage
    
    !/sbin/runscript
    # Copyright 2009 Chen Wen 
    # All rights reserved. Released under the GPL-3 license.
     
    description="Save and restore the portage in to /dev/shm."
    depend()
    {
        need localmount
    }
     
    start()
    {
        if [ ! -f "${PORTAGE_DIR}/header.txt" ]; then
            ebegin "Extract portage"
            tar xPf ${BACKUP_DIR}/portage.tar.gz -C /
            eend $? "Error extract prtage"
            ebegin "Extract layman"
            tar xPf ${BACKUP_DIR}/layman.tar.gz -C /
            eend $? "Error extract layman"
        fi
        return 0
    }
     
    stop()
    {
        if [ -f "${PORTAGE_DIR}/header.txt" ]; then
            ebegin "Saving portage"
            tar zpPcf ${BACKUP_DIR}/portage.tar.gz ${PORTAGE_DIR}
            eend $? "Failed to save portage"
            ebegin "Saving layman"
            tar zpPcf ${BACKUP_DIR}/layman.tar.gz ${LAYMAN_DIR}
            eend $? "Failed to save layman"
        fi
    }
  3. 设置脚本开机自启动

    # chmod +x /etc/init.d/portage
    # /etc/init.d/portage start
    # rc-update add portage default
至此,该脚本能独立运作了。

参考文献

  1. 利用/dev/shm 加速 portage運作
  2. Gentoo手册

没有评论:

发表评论