zoukankan      html  css  js  c++  java
  • Azure Linux VM Swap 分区

    默认情况下,Windows Azure上的Linux VM是没有Swap分区的。下面我们以Ubuntu为例,为Windows Azure上的Linux虚拟机创建Swap分区。

    Windows Azure会为每个虚拟机分配一个临时盘,这个临时盘在Windows Server操作系统中是[D:]盘,在Linux中是/dev/sdb1。值得一提的是,在D系列的虚拟机中,临时盘是SSD存储。显然,临时盘是创建Swap分区的好地方。既然是临时盘,就千万不要把应用和数据存储在上面,否则数据丢了就只能自己哭了。

    查看/dev/sdb1的挂载位置

    lsblk

    假设查找到/dev/sdb1的挂载点是/mnt

    创建Swap分区文件

    sudo fallocate -l [Swap文件大小,例如:5g] [Swap文件完整路径,例如:/mnt/myswapfile]

    修改Swap文件权限

    sudo chmod 600 [Swap文件完整路径]

    创建Swap文件系统

    sudo mkswap [Swap文件完整路径]

    启用Swap分区

    sudo swapon [Swap文件完整路径]

    接下来执行[free]命令就可以看到Swap分区了。

    到此为止,Swap分区就创建完毕了,但是,重启之后,发现Linux系统依然没有Swap分区!没关系,只要修改fstab就可以搞定啦。

    [Swap文件完整路径] swap swap defaults 0 0

    到此为止,故事貌似是结束了,但是,某天有客户反映,在CentOS 7.1中,这个办法不好使!没错呀,上面的步骤我都是在Ubuntu系统中验证通过的,为什么会这样呢?于是我重新创建了2个VM:1个CentOS 7.1,一个Ubuntu 14.04 LTS。在创建Swap文件的时候,发现Ubunt和CentOS对临时盘[/dev/sdb1]的挂载点不一样:

    CentOS——/mnt/resource
    Ubuntu——/mnt

    除此之外,并没有发现其他不同。上述步骤在Ubuntu 14.04 LTS中依然有效,在CentOS中的确不工作!

    经过一番Google,发现某大牛的一段解释:

    /mnt/resource(即临时盘/dev/sdb1)是由WALinuxAgent负载挂载的,但是不清楚这个挂载动作会在什么时间完成。而通过fstab挂载Swap分区是在WALinuxAgent挂载/mnt/resource之前就完成的。

    那也就是说:在fstab挂载Swap分区的时候,WALinuxAgent还没有把/mnt/resource/挂载到系统中,即:fstab挂载Swap分区是失败的!

    好吧,我相信这说法是靠谱的,但是Ubuntu为什么可以呢?

    先不管为什么了,那么在CentOS中到究竟应该该如何解决这个问题呢?答案是:修改WALinuxAgent的配置:/etc/waagent.conf

    sudo vim /etc/waagent.conf

    对以下两行代码进行修改:

    # Create and use swapfile on resource disk.
    ResourceDisk.EnableSwap=y
    
    # Size of the swapfile.
    ResourceDisk.SwapSizeMB=[Swap文件大小,单位是MB]
    #例如:ResourceDisk.SwapSizeMB=4096

    保存后重新启动虚拟机,发现Swap文件已经出现在/mnt/resource中,默认的文件名是:swapfile,,执行[free -m]命令也能看到Swap分区了。至此,问题解决。

    不过修改WALinuxAgent配置文件的方式在Ubuntu环境中是不好使的!

    总结一下就是:

    Ubuntu——手工创建Swap文件,然后修改/etc/fstab挂载Swap分区。

    CentOS——修改WALinuxAgent配置文件,自动创建Swap分区。

    太繁琐了,给个简单粗暴的办法如何?还真有!

    只要别把Swap文件创建在临时盘里面,按照Ubunt的方式[手工创建Swap文件,然后修改fstab挂载]都是可以正常工作的!

    只是这么干就没法利用Windows Azure VM的临时盘了,而且,Windows Azure VM的临时盘是不收费的。

    至此,关于Windows Azure中Linux VM的Swap分区问题就告一段落啦。

  • 相关阅读:
    Linux LCD驱动(四)--驱动的实现
    Linux LCD驱动(三)--图形显示
    s3c2440的LCD字符显示
    Linux framebuffer显示bmp图片
    Linux Framebuffer编程简介
    linux 2440 LCD 应用程序编程
    嵌入式Linux下S3C2410的调色板彩色显示
    l​i​n​u​x​下​L​C​D​(​f​r​a​m​e​b​u​f​f​e​r​)​驱​动​分​析
    我的基本信息
    unity生命周期
  • 原文地址:https://www.cnblogs.com/hunterxue/p/4945932.html
Copyright © 2011-2022 走看看