Monday, 18 March 2013

Как задать число inodes для файловой системы ext4/ploop/openvz вручную?

Код ploop (версия ploop 1.6) создает файловую систему следюущим образом:

int make_fs(const char *device, const char *fstype)
{
       char part_device[64];
       char *argv[8];
       if (get_partition_device_name(device, part_device, sizeof(part_device)))
               return SYSEXIT_MKFS;
       argv[0] = "/sbin/mkfs";
       argv[1] = "-t";
       argv[2] = (char*)fstype;
       argv[3] = "-j";
       argv[4] = "-b4096";
       argv[5] = part_device;
       argv[6] = NULL;
       if (run_prg(argv))
               return SYSEXIT_MKFS;
       argv[0] = "/sbin/tune2fs";
       argv[1] =  "-ouser_xattr,acl";
       argv[2] = part_device;
       argv[3] = NULL;
       if (run_prg(argv))
               return SYSEXIT_MKFS;
       return 0;
}
Легко можно понять, что передать параметр сюда нельзя, также как и сам ploop не управляет числом inodes в создаваемой фс.

Но у mkfs.ext4 есть флаг -i, которым можно задать число inodes в целовой файловой системе явно:
-N number-of-inodes  Overrides the default calculation of the number of inodes that should be reserved for the  filesystem  (which  is  based  on  the  number of blocks and the bytes-per-inode ratio).  This allows the user to specify the number of desired inodes directly.

Таким образом, внеся легкий патч в код ploop, можно подхачить систему и создать фс с нужным числом inodes без поломки openvz :)

No comments:

Post a Comment

Note: only a member of this blog may post a comment.