如何使用临时存储在 Amazon EC2 上创建交换分区?

如何使用临时存储在 Amazon EC2 上创建交换分区?

这是输出df -k

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda1            10317860   7059008   2734732  73% /
none                    847584         0    847584   0% /dev/shm
/dev/xvdb            153899044    192068 145889352   1% /mnt/ephemeral

我正在使用 Centos EBS 启动映像。

我读过关于此问题的各种问题,但它们都要求安装新驱动器。但我认为该驱动器已安装在/dev/xvdb。我说得对吗?

我可以用这个吗:

mkswap -f /dev/xvdb
#add in /etc/fstab
/dev/xvdb       swap    swap    defaults        0       0
swapon /dev/xvdb

它会起作用吗?

答案1

/dev/xvdb 确实已安装,您需要检查其中是否存储了您想要保留的内容,尽管将重要内容保存在临时驱动器上是一个非常糟糕的主意。

在对 /dev/xvdb 进行任何操作之前,您需要卸载它。

虽然你可以

mkswap /dev/xvdb 

它会将整个临时驱动器用作交换空间,而您几乎肯定不需要它。此外,如果您对交换空间进行分区,则可以将临时驱动器的其余部分用于诸如 tmp 文件夹之类的用途,或存储会话(如果您的主机是 Web 服务器)。临时驱动器非常快,但遗憾的是不太持久。

无论如何,回到交换分区!

最好使用 Abhishek 提到的 sfdisk,或者使用 fdisk 手动创建交换分区:

fdisk /dev/xvdb
Press N to create a new partition
P for primary
1 for the first partition
Press Enter to accept the first location
Enter +xG where x is the size of the swapspace you want. I typically use twice the amount of RAM, but this is not a hard and fast rule
Enter T to change the type
Enter 82 for Linux Swap
Enter W to write the changes
Enter q to quit

现在可以使用以下命令创建交换空间

mkswap /dev/xvdb1

然后启用它

swapon /dev/xvdb1

不过,我要提醒一句,如果我“教奶奶吸鸡蛋”,我深表歉意。但顾名思义,临时驱动器是……嗯,临时的。如果您关闭实例,则必须重新创建交换分区并启用它。因此,不要将新创建的交换空间添加到 fstab 中。

但重新启动应该没问题。

答案2

我已经创建了一个脚本这可能有助于在临时设备上创建交换。它使用 lvm 创建交换卷,还创建一个可能用作 /tmp 的卷。您可以使用 cloud-init 来触发它。

bootcmd:
 - [ cloud-init-per, once, mk-eph, /usr/local/sbin/mk-eph.sh]

# Filesystem setup
fs_setup:
 - label: 'tmp'
   filesystem: 'xfs'
   device: '/dev/ephemeral/tmp'
   partition: 'auto'

mounts:
 - [ /dev/ephemeral/tmp, /tmp, auto, "defaults,nobootwait" ]
 - [ ephemeral0, null ]

runcmd:
 - [ chmod, 1777, /tmp ]

答案3

首先卸载永久存储并重新安装,如下所示

  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

相关内容