默认Ubuntu 12.04 LTS由于某种原因不会创建交换.安装后是否有"适当"的方式添加它?
root@aux3:/root# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 8.0G 1.4G 6.3G 18% /
udev 1.9G 12K 1.9G 1% /dev
tmpfs 751M 188K 750M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.9G 0 1.9G 0% /run/shm
/dev/xvdb 394G 79G 296G 21% /mnt
root@aux3:/root# swapon -s
Filename
root@aux3:/root# free -m
total used free shared buffers cached
Mem: 3750 3730 20 0 75 3433
-/+ buffers/cache: 221 3528
Swap: 0 0 0
root@aux3:/root#
(我仍在寻找"正确"的方式)
dd if=/dev/zero of=/mnt/swap1 bs=1024 count=4M mkswap /mnt/swap1 chown root.root /mnt/swap1 chmod 600 /mnt/swap1 swapon /mnt/swap1
因为我花了大部分时间来为自己理解这个问题,并且因为拉起ayurchen的链接需要谷歌缓存搜索,我想我会发布一个稍微更详细的演练,从ayurchen非常有用的答案中提取.
交换空间是Linux(以及大多数其他操作系统)用来在真实物理内存开始变得拥挤时从内存中存储对象的磁盘空间.因为磁盘通常比内存慢,所以Linux存储首先交换最近最少使用的对象,并尽可能多地保留在内存中.如果可能的话,通常建议交换空间大小与内存相等.请参阅有关交换空间更多的细节在这里.
我也开始使用的Ubuntu 12.04 LTS AMI最初配置时没有交换空间,因为存储设备的大小和数量可能会有所不同.但大多数都会自动配备大型免费短暂存储设备.由于S3存储受成本限制,因此短暂驱动器是交换文件的好地方.我的问题中提到的设备名称相同/dev/xvdb,但您可以在实例启动期间配置它.
交换空间可以设置在单个文件中,也可以设置在设备的分区上.文件可以由磁盘上的非相邻块表示,而分区是预定义的一组相邻块.由于磁盘读写速度更快,您不必长时间保持读取头的移动,因此使用分区可以获得更好的性能.(这就是为什么上面的问题使用文件作为临时解决方案的折扣.)
Linux附带了许多程序来管理磁盘分区,包括fdisk,sfdisk,parted等.我们将使用sfdisk,因为它可以接受来自shell脚本的所有必要参数.这很重要,因为每当我们"停止"我们的实例时,短暂的存储就会丢失.因此,我们在每次启动实例时自动运行的文件中设置脚本/etc/rc.local.
# Unmount the drive in-case it is already mounted. Umount throws an error if
# it wasn't mounted, so we add || : to continue the script in that case
umount /dev/xvdb || :
# Each line below is a partition (4 maximum master partitions for this partition
# type). Can can generally use the default arguments, supplying only the amount
# of space we want in blocks (512 came out to ~4gb for me), and the partition
# type (82 for swap, 83 for general linux is default). This will create:
# dev/xvdb1 with 1024 blocks
# dev/xvdb2 with the remainder of the disk
sfdisk /dev/xvdb << EOF
,512,82
;
;
;
EOF
# Now we format the swap partition:
mkswap /dev/xvdb1
# And the remainder. You can choose amoung the various filesystem types, but
# make sure you have the necessary formatter installed. To check, ls /sbin/mk*
mkfs.ext4 /dev/xvdb2
Run Code Online (Sandbox Code Playgroud)
最后,我更喜欢,包括我的安装信息/etc/fstab,这是规定如何自动处理各种可用的设备在Ubuntu的系统文件.它也在启动时运行.
/dev/xvdb1 swap swap sw,nobootwait 0 0
/dev/xvdb2 /mnt2 ext4 defaults,nobootwait 0 0
Run Code Online (Sandbox Code Playgroud)
该nobootwait选择是确保Ubuntu的不开机挂有"为/ dev的磁盘驱动器/ xvdb(1/2)还没有准备好或不存在.继续等待,或按S键跳过安装或M手动复苏."
请确保您创建一个文件夹/mnt2或任何你计划使用的mkdir安装此.
您可以运行rc.local脚本sudo /etc/rc.local来观察它运行查找问题.sudo fdisk -l应该在运行后显示新分区.如果看起来不错,请尝试安装您的设备sudo mount /dev/xvdb1.这将使用您在fstab中保存的配置.如果失败,请尝试使用您的安装参数并相应地调整fstab.
也许您正在寻找这个:http://inprvt.com/index.php/blogs/entry/how-to-add-swap-space-on-a-linux-based-ec2-server
请参阅第二种方法。您需要对临时存储设备重新分区。我会将这些内容添加到 /etc/rc.local 中:
umount /dev/xvdb # in case it is already mounted
sfdisk /dev/xvdb << EOF
,1024,82
,
;
;
EOF
mkswap /dev/xvdb1 && swapon /dev/xvdb1
mkfs.xfs -f /dev/xvdb2 && mount /dev/xvdb2 /mnt
Run Code Online (Sandbox Code Playgroud)
有两点需要注意:
| 归档时间: |
|
| 查看次数: |
6875 次 |
| 最近记录: |