« 上一篇下一篇 »

新开的云服务linux系统中如何挂载新硬盘及增设SWAP交换分区

     随着大数据的越来越普及,在科技不断的进步情况下,服务器内存的大小在不断的提升,使得swap分区的用处越来越小。虽然作用越来越少,但是有时我们还是得设置swap分区,在实际生产环境中有时需要对系统的swap分区大小来进行调整,不过建议在安装系统时就定义好是否要swap分区、swap分区的大小是多少,如果是条件允许的话建议swap分区在2GB~4GB间,如果还不够建议直接加内存。使用2GB的swap是因为有一些特殊的软件可能在平时使用的时候会使用到swap分区,如高性能的Oracle。

    当然,如果后期在使用的过程中发现swap分区过大,磁盘空间又使用紧张,那么就很有必要对系统的swap分区大小做相应的缩减,反之亦然。因为有LVM的出现使得swap分区的调整方式有一点区别,在此就简单的说一说swap分区的缩减方法。
       在对swap分区大小调整前还需要注意是否还有数据正在使用swap分区,如果是有在使用需要先修改下系统的内核变量刷新下swap分区查验下,以免造成数据丢失,系统中默认使用swap时的是依靠/proc/sys/vm/swappiness中的变量来控制的,默认/proc/sys/vm/swappiness中的变量时60,当/proc/sys/vm/swappiness变量设置为0时是表示尽量不使用swap空间,其中值越大表示系统越倾向于使用swap空间,可以通过修改内核变量文件/etc/sysctl.conf来动态控制[root@localhost ~]# sysctl -q vm.swappiness#查询默认vm.swappiness变量大小 vm.swappiness = 60 [root@localhost ~]# vim /etc/sysctl.conf …略… vm.swappiness = 0 [root@localhost ~]# sysctl -p [root@localhost ~]# swapoff -a && swapon -a#刷新swap,即关了再开

    winndows即使物理内存没有用完也会去用到虚拟内存,而Linux不一样 Linux只有当物理内存用完的时候才会去动用虚拟内存(即swap分区),linux则是独立占用一个分区,方便由于内存需求不够的情况下,把一部分内容放在swap分区里,待内存有空余的情况下再继续执行,也称之为交换分区,交换空间是其中的部分
    Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果这样的话,Swap就会不堪重负),有相当一部分数据被直接交换到文件系统。

一、 Liunx添加新硬盘其实和Windows的操作一样,但一个是图形化操作,另一个是命令行操作,不过步骤是一样,下面就动手演示和讲解

Linux挂载新硬盘

1、查看硬盘信息

命令:fdisk -l

[root@center ~]# fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes                                          #第一块硬盘的信息和分区信息
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003a7b4

  Device Boot      Start        End      Blocks  Id  System
    /dev/vda1  *          1        2611    20970496  83  Linux

Disk /dev/vdb: 107.4 GB, 107374182400 bytes                                        #第二块硬盘的信息和分区信息
16 heads, 63 sectors/track, 208050 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

2、创建新硬盘分区

命令:fdisk /dev/vdb

[root@center ~]# fdisk /dev/vdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x1e694286.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
        switch off the mode (command 'c') and change display units to
        sectors (command 'u').

Command (m for help): n
Command action
  e  extended                                #e为创建扩展分区
  p  primary partition (1-4)            #p为创建逻辑分区
p
Partition number (1-4): 1          #在这里输入1,就进入划分逻辑分区阶段了;
First cylinder (1-208050, default 1): 1      #分区的Start 值,这里最好直接按回车,否则可能会造成空间浪费;
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-208050, default 208050): 208050      #分区的Over值,我就分一个区
Using default value 208050

Command (m for help): w                            #最后输入w回车保存退出。
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

fdisk可以用m命令来看fdisk命令的内部命令;
a:命令指定启动分区;
d:命令删除一个存在的分区;
l:命令显示分区ID号的列表;
m:查看fdisk命令帮助;
n:命令创建一个新分区;
p:命令显示分区列表;
t:命令修改分区的类型ID号;
w:命令是将对分区表的修改存盘让它发生作用;

3、确认新分区信息

命令:fdisk -l

[root@center ~]# fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003a7b4

  Device Boot      Start        End      Blocks  Id  System
    /dev/vda1  *          1        2611    20970496  83  Linux

Disk /dev/vdb: 107.4 GB, 107374182400 bytes
16 heads, 63 sectors/track, 208050 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1e694286

  Device Boot      Start        End      Blocks  Id  System
    /dev/vdb1              1      208050  104857168+  83  Linux          #刚创建好的分区信息

4、格式化分区

命令:mkfs.ext4 /dev/vdb1

[root@center ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=                  #文件系统标签
OS type: Linux                #操作系统类型
Block size=4096 (log=2)          #块大小
Fragment size=4096 (log=2)      #分块大小
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214292 blocks
1310714 blocks (5.00%) reserved for the super user
First data block=0          #第一个数据块
Maximum filesystem blocks=4294967296
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done                          #写入inode表
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

二、Swap分区,其实和Windows上的虚拟内存一样,Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

下面介绍两种创建swap的方法:
•新建磁盘分区作为swap分区
•用文件作为Swap分区

新建磁盘分区作为swap分区

1.用fdisk命令对磁盘进行分区,添加swap分区,新建分区,在fdisk中用“t”命令将新添的分区id改为82
(Linux swap类型)

2.格式化swap分区,这里的sdb2要看您加完后p命令显示的实际分区设备名

mkswap /dev/sdb1

3.启动新的swap分区

swapon /dev/sdb1

4.让系统启动时能自动启用这个交换分区,可以编辑/etc/fstab,加入下面一行

/dev/sdb1 swap swap defaults 0 0

用文件作为Swap分区

1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。

dd if=/dev/zero of=/root/swapfile bs=1M count=1024

2.格式化为交换分区文件,建立swap的文件系统:

mkswap /root/swapfile

3.���用交换分区文件:

swapon /root/swapfile

4.使系统开机时自启用,在文件/etc/fstab中添加一行:

/root/swapfile swap swap defaults 0 0

 

小结

    对于分配太多的Swap空间,会浪费磁盘空间,而Swap空间太少,则系统会发生错误。当系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。

    一般情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,具体配置参见各服务器产品的说明。

      此外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。
系统性能监视

   Swap空间的分配虽然重要,但是系统运行时的硬件性能监控却更加有价值。我们应该通过性能监视工具,可以检查系统的各项性能指标,找到消耗系统性能的大户,从而进行针对性的处理,这样会更加有利于服务器的长期稳定运行,提高服务器的运行速度。