Ansible:是否可以调整ext4文件系统的大小?

时间:2015-01-22 12:13:17

标签: linux ansible

如何通过Ansible调整ext4文件系统的大小?我知道filesystem模块,但我没有看到" resize"参数,或其它关于它的东西......

3 个答案:

答案 0 :(得分:8)

如果您查看目前的filesystem module来源,您会发现似乎没有任何可用于调整文件系统大小的内容。

谢天谢地,您有以下选项:command moduleshell module

命令模块比shell模块更受欢迎,因为它不受用户环境的影响,因此我将使用该方法向您展示如何操作:

- name: "resize my ext4 filesystem, please"
  command: resize2fs /dev/sda1 
  sudo: True

其中sda1是您的文件系统。如果您需要首先扩大文件系统,请使用相同的方法,而是调用fdisk(使用正确的命令行开关)。

检查man resize2fs以获取该命令的特定选项和ansible文档以获取更多信息,包括参数化命令。

答案 1 :(得分:8)

为了完成任务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

答案 2 :(得分:1)

不知道这是否有帮助。但是,由于Ansible 2.0resizefs模块中有filesystem选项,默认情况下为false并且支持ext4

  

如果是,如果块设备和文件系统大小不同,则将文件系统扩展到该空间。   支持ext2,ext3,ext4,ext4dev,f2fs,lvm,xfs,vfat,交换文件系统。

https://docs.ansible.com/ansible/latest/modules/filesystem_module.html

- name: 'Extend the FS'
  filesystem:
    fstype: 'ext4'
    dev: '/dev/sda1'
    resizefs: yes