Ansible:是否可以调整 ext4 文件系统的大小?
Ansible: is it possible to resize ext4 filesystem?
如何通过 Ansible 调整 ext4
文件系统的大小?我知道 filesystem 模块,但我没有看到“调整大小”参数或其他相关信息...
如果您查看 filesystem module 当前的源代码,您会发现似乎没有任何东西可以用来调整文件系统的大小。
幸运的是,您有以下选择:command module and the shell module。
command 模块优于 shell 模块,因为它不受用户环境的影响,所以我将向您展示如何使用以下方法进行操作:
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
其中 sda1
是您的文件系统。如果您需要首先扩大文件系统,请使用相同的方法,但改为调用 fdisk
(使用正确的命令行开关)。
查看 man resize2fs
以获取该命令的特定选项和 ansible 文档以获取更多信息,包括参数化您的命令。
为了制作任务idempotent,添加另一个任务以首先检查是否有任何未扩展的分区。例如,如果您希望根分区至少为 10 GB:
- name: Assert root partition is expanded
assert: { that: item.mount != '/' or item.size_total > 10737418240 } # 10 GB
with_items: '{{ ansible_mounts }}'
ignore_errors: yes
register: expanded
注意:如果分区 /
小于 10 GB,此任务将失败。
接下来,将扩展任务设为条件 expanded|failed
:
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
就我而言,我正在块设备 /dev/mmcblk0
上扩展分区 2(对于 Raspberry Pi)。您当然应该替换为系统上的设备名称。
最后,notify
触发文件系统扩展:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
不知道能不能帮上忙。但是,由于 Ansible 2.0
在 filesystem
模块中有 resizefs
选项,默认情况下是 false
并且支持 ext4
.
If yes, if the block device and filesystem size differ, grow the filesystem into the space.
Supported for ext2, ext3, ext4, ext4dev, f2fs, lvm, xfs, vfat, swap filesystems.
https://docs.ansible.com/ansible/latest/modules/filesystem_module.html
- name: 'Extend the FS'
filesystem:
fstype: 'ext4'
dev: '/dev/sda1'
resizefs: yes
如何通过 Ansible 调整 ext4
文件系统的大小?我知道 filesystem 模块,但我没有看到“调整大小”参数或其他相关信息...
如果您查看 filesystem module 当前的源代码,您会发现似乎没有任何东西可以用来调整文件系统的大小。
幸运的是,您有以下选择:command module and the shell module。
command 模块优于 shell 模块,因为它不受用户环境的影响,所以我将向您展示如何使用以下方法进行操作:
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
其中 sda1
是您的文件系统。如果您需要首先扩大文件系统,请使用相同的方法,但改为调用 fdisk
(使用正确的命令行开关)。
查看 man resize2fs
以获取该命令的特定选项和 ansible 文档以获取更多信息,包括参数化您的命令。
为了制作任务idempotent,添加另一个任务以首先检查是否有任何未扩展的分区。例如,如果您希望根分区至少为 10 GB:
- name: Assert root partition is expanded
assert: { that: item.mount != '/' or item.size_total > 10737418240 } # 10 GB
with_items: '{{ ansible_mounts }}'
ignore_errors: yes
register: expanded
注意:如果分区 /
小于 10 GB,此任务将失败。
接下来,将扩展任务设为条件 expanded|failed
:
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
就我而言,我正在块设备 /dev/mmcblk0
上扩展分区 2(对于 Raspberry Pi)。您当然应该替换为系统上的设备名称。
最后,notify
触发文件系统扩展:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
不知道能不能帮上忙。但是,由于 Ansible 2.0
在 filesystem
模块中有 resizefs
选项,默认情况下是 false
并且支持 ext4
.
If yes, if the block device and filesystem size differ, grow the filesystem into the space. Supported for ext2, ext3, ext4, ext4dev, f2fs, lvm, xfs, vfat, swap filesystems.
https://docs.ansible.com/ansible/latest/modules/filesystem_module.html
- name: 'Extend the FS'
filesystem:
fstype: 'ext4'
dev: '/dev/sda1'
resizefs: yes