安装Linux系统在分区时可以分配swap分区,而系统安装后(在运行中)如何建立或调整swap分区呢?在装完Linux系统之后,建立Swap分区有两种方法。 1.新建磁盘分区作为swap分区 2.用文件作为swap分区 (操作更简单) 下面介绍这两种方法:(都必须用root权限,操作过程应该小心谨慎)
一、新建磁盘分区作为swap分区 1.以root身份进入控制台(登录系统),输入 # swapoff -a #停止所有的swap分区 2. 用fdisk命令(例:# fdisk /dev/sdb)对磁盘进行分区,添加swap分区,新建分区,在fdisk中用“t”命令将新添的分区id改为82(Linux swap类型),最后用w将操作实际写入硬盘(没用w之前的操作是无效的)。 3. # mkswap /dev/sdb2 #格式化swap分区,这里的sdb2要看您加完后p命令显示的实际分区设备名 4. # swapon /dev/sdb2 #启动新的swap分区 5. 为了让系统启动时能自动启用这个交换分区,可以编辑/etc/fstab,加入下面一行 /dev/sdb2 swap swap defaults 0 0
二、用文件作为Swap分区 1.创建要作为swap分区的文件:增加1GB大小的交换分区,命令如下,其中的count等于想要的块的数量(bs*count=文件大小)。# dd if=/dev/zero of=/root/swapfile bs=1M count=1024 2.格式化为交换分区文件:# mkswap /root/swapfile #建立swap的文件系统 3.启用交换分区文件:# swapon /root/swapfile #启用swap文件 4.使系统开机时自启用,在文件/etc/fstab中添加一行:/root/swapfile swap swap defaults 0 0
<下面的操作命令演示了用文件作为Swap的操作过程(包括前后的一些检查)> # free -m total used free shared buffers cached Mem: 3979 3179 800 0 266 1873 Swap: 4095 0 4095 # cat /etc/fstab # 已省略与主题无关的部分输出 /dev/sda3 swap swap defaults 0 0 # dd if=/dev/zero of=/root/swapfile bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 4.09017 s, 263 MB/s # mkswap /root/swapfile Setting up swapspace version 1, size = 1048572 KiB no label, UUID=48a7ffd5-392f-4963-904c-3e67f0e5dfbe # swapon /root/swapfile # free -m total used free shared buffers cached Mem: 3979 3945 34 0 261 2628 Swap: 5119 0 5119 # swapoff /dev/sda3 # free -m total used free shared buffers cached Mem: 3979 3945 34 0 261 2629 Swap: 1023 0 1023 # swapoff /root/swapfile # free -m total used free shared buffers cached Mem: 3979 3945 34 0 261 2629 Swap: 0 0 0 # swapon /dev/sda3 # free -m total used free shared buffers cached Mem: 3979 3946 33 0 261 2629 Swap: 4095 0 4095
附1:个人Centor OS环境上建立或调整swap分区:
swap分区的扩展需要root用户权限 dd if=/dev/zero of=/.swap bs=1024M connt=12 //从分区中分出8*1024M大小的空间,挂在/.swap上 mkswap /.swap //格式化成swap格式 swapon /.swap //激活/.swap,加入到swap分区中 vim /etc/fstab //开机自启动新添加的swap分区 -->添加 /.swap swap swap default 0 0 如果不想使用需要删除,只需执行 swapoff /.swap 然后删除对应的swap文件 rm /.swap附2:dd命令的简介
(1)dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2 参数注释: 1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file > 2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file > 3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。 4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。 5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。 6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。 注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。 7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。 8. conv=conversion:用指定的参数转换文件。 ascii:转换ebcdic为ascii ebcdic:转换ascii为ebcdic ibm:转换ascii为alternate ebcdic block:把每一行转换为长度为cbs,不足部分用空格填充 unblock:使每一行的长度都为cbs,不足部分用空格填充 lcase:把大写字符转换为小写字符 ucase:把小写字符转换为大写字符 swab:交换输入的每对字节 noerror:出错时不停止 notrunc:不截短输出文件 sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。 (2)dd应用实例 1.将本地的/dev/hdb整盘备份到/dev/hdd #dd if=/dev/hdb of=/dev/hdd 2.将/dev/hdb全盘数据备份到指定路径的image文件 #dd if=/dev/hdb of=/root/image 3.将备份文件恢复到指定盘 #dd if=/root/image of=/dev/hdb 4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径 #dd if=/dev/hdb | gzip > /root/image.gz 5.将压缩的备份文件恢复到指定盘 #gzip -dc /root/image.gz | dd of=/dev/hdb 6.修复硬盘: #dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda 当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。
(3)/dev/null和/dev/zero的区别 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!/dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
//https://www.cnblogs.com/senior-engineer/p/6211247.html
