我正在使用fallocate -l "$memory" "$swapfilename"
命令创建交换文件。
我有一些疑问:
如果存在多个文件系统,则在哪个文件系统上创建交换文件?我们可以从外部指定从哪个文件系统获取吗?
我有两个文件系统
tmpfs
和rootfs
,默认情况下交换文件是使用 rootfs 内存创建的;甚至 tmpfs 的大小也更大。什么是 tmpfs?创建交换文件之前如何检查是否有空间?
[root@rhev6 scripts]# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 3.1G 2.8G 123M 96% /
tmpfs 1.5G 76K 1.5G 1% /dev/shm
答案1
该文件在 指示的目录中创建$swapfilename
,默认为当前目录。该命令fallocate
不知道您要对该文件执行什么操作;它只是创建它并分配所请求的空间量。要将文件用作分页区域,您需要mkswap
在其上运行。
临时文件系统是一个基于内存的文件系统,用于(小)临时文件。由于它是基于内存的,因此很少有大量空间临时文件系统文件系统。根文件系统是另一个基于内存的文件系统,仅用于在安装某些内容之前保存根目录。在生产中,通常会安装一个基于磁盘的文件系统/
。
您希望将交换文件放在基于磁盘的文件系统上,例如外部4文件系统。
答案2
按顺序回答您的问题
如果存在多个文件系统,则在哪个文件系统上创建交换文件?我们可以从外部指定从哪个文件系统获取吗?
交换文件可以放置在任何本地文件系统上。这样的文件系统应该由物理磁盘支持。
我有两个文件系统
tmpfs
和rootfs
,默认情况下交换文件是使用rootfs
内存创建的;甚至 tmpfs 的大小也更大。什么是 tmpfs?
tmpfs
是直接来自物理内存的临时文件系统。如果您有 8GB 物理内存,您可能会决定使用tmpfs
2GB 的文件系统。文件系统中的可用内存量tmpfs
和运行系统的可用内存量之间存在直接的权衡。
您rootfs
是一个最小的基于内存的启动映像。通常我希望这已被真正的基于磁盘的根文件系统所取代,但这里没有发生这种情况。
不要在rootfs
或tmpfs
文件系统上创建交换文件!
创建交换文件之前如何检查是否有空间?
该df -h
命令将显示每个安装点的可用空间。您可以选择一个(任何一个)由物理磁盘支持且有足够空间的磁盘。在小屏幕截图片段中,没有显示任何合适的地方,因为您只包含了rootfs
和tmpfs
文件系统。
答案3
如果存在多个文件系统,则在哪个文件系统上创建交换文件?我们可以从外部指定从哪个文件系统获取吗?
该fallocate
命令用于创建、放大或缩小文件至指定大小。无论您告诉它做什么,它都会创建该文件。它还可以用于在文件中“挖洞”,减少它们在磁盘上使用的块数量。
我有两个文件系统 tmpfs 和 rootfs,默认情况下交换文件是使用 rootfs 内存创建的;甚至 tmpfs 的大小也更大。什么是 tmpfs?
尽管普遍认为tmpfs
,不是基于 RAM 的文件系统,而不是基于虚拟内存的文件系统。这意味着它的后端是磁盘交换区域(可能是分区或普通文件)和未使用或保留用于其他目的的 RAM 部分的总和。当然,如果没有创建任何交换区,tmpfs
则类似于基于RAM的文件系统。
创建交换文件之前如何检查是否有空间?
在创建交换文件之前,您需要找到一个有足够空间的文件系统。虚拟文件系统如rootfs
或tmpfs
不适合交换。当rootfs
由RAM(ramfs)支持时,在其上创建大量交换文件将产生灾难性的影响,否则就像在其上创建一个tmpfs
完全没有意义的交换文件一样,就像用从这个罐子中取出的液体填充一个罐子一样。