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分区问题就告一段落啦。

  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/hunterxue/p/4945932.html
Copyright © 2011-2022 走看看