Index
14-Jun-2011: initial release. 28-Dec-2011: added nodev and noexec mount options. 25-Jul-2012: updated for the 2012 installer. 28-Jul-2012: fixed /etc/fstab 02-Jan-2013: Adjusted for Slackware.
Install LVM.
In this example we have about 610 GB space in our Logical Volume Management partition. You need to make a plan how to use it. Let’s make four logical volumes:
- vg00-vserver, 40 GB for virtual servers.
- vg00-home, 80 GB for users home directories.
- vg00-users, 80 GB for users common directories.
- vg00-media, 100 GB for multimedia storage.
Because we don’t know how these partition will fill in the future, we will start with these amounts of space. Later, if a partition fills too much, you can grow that logical volume by adding unused space and grow the filesystem in that volume to make more space available for the users.
root@homsrv:~# modprobe dm-mod root@homsrv:~# pvcreate /dev/md3 Physical volume "/dev/md3" successfully created root@homsrv:~# vgcreate vg00 /dev/md3 Volume group "vg00" successfully created root@homsrv:~# lvcreate -L 40G -n vserver vg00 Logical volume "vserver" created root@homsrv:~# lvcreate -L 80G -n users vg00 Logical volume "users" created root@homsrv:~# lvcreate -L 80G -n home vg00 Logical volume "home" created root@homsrv:~# lvcreate -L 100G -n media vg00 Logical volume "media" created root@homsrv:~# vgdisplay vg00 --- Volume group --- VG Name vg00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 4 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 609.89 GiB PE Size 4.00 MiB Total PE 156127 Alloc PE / Size 76800 / 300.00 GiB Free PE / Size 79327 / 309.87 GiB VG UUID Bv0b3l-RPF9-7M3r-d5Ah-WjsU-wisZ-0J18xP root@homsrv:~#
Now we can create the filesystems and mountpoints:
root@homsrv:~# mkfs.ext4 -L VSERVER /dev/vg00/vserver
mke2fs 1.42.4 (12-June-2012)
Filesystem label=VSERVER
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@homsrv:~# mkfs.ext4 -L HOME /dev/vg00/home
mke2fs 1.42.4 (12-June-2012)
Filesystem label=HOME
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
5242880 inodes, 20971520 blocks
1048576 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
640 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@homsrv:~# mkfs.ext4 -L USERS /dev/vg00/users
mke2fs 1.42.4 (12-June-2012)
Filesystem label=USERS
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
5242880 inodes, 20971520 blocks
1048576 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
640 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@homsrv:~# mkfs.ext4 -L MEDIA /dev/vg00/media
mke2fs 1.42.4 (12-June-2012)
Filesystem label=MEDIA
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@homsrv:~# mkdir -p /mnt/{vserver,users,media}
root@homsrv:~#
Now, edit /etc/fstab so that it looks like this:
# # /etc/fstab: static file system information # #<file system> <dir> <type> <options> <dump> <pass> tmpfs /tmp tmpfs nodev,nosuid 0 0 LABEL=ROOT / ext4 defaults,acl,noatime 0 1 LABEL=SwapA swap swap defaults 0 0 LABEL=SwapB swap swap defaults 0 0 LABEL=HOME /home ext4 defaults,nodev,acl,user_xattr,noatime 1 2 LABEL=USERS /mnt/users ext4 defaults,nodev,acl,user_xattr,noatime 1 2 LABEL=MEDIA /mnt/media ext4 defaults,nodev,noexec,acl,user_xattr,noatime 1 2 LABEL=VSERVER /mnt/vserver ext4 defaults,nodev,noexec,acl,user_xattr,noatime 1 2
Then you can mount everything and check it.
root@homsrv:~# mount -a root@homsrv:~# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on rootfs rootfs 26126060 1121068 23695100 5% / dev devtmpfs 253692 0 253692 0% /dev run tmpfs 255972 232 255740 1% /run /dev/md1 ext4 26126060 1121068 23695100 5% / shm tmpfs 255972 0 255972 0% /dev/shm tmpfs tmpfs 255972 0 255972 0% /tmp /dev/mapper/vg00-users ext4 83746440 1364696 78187440 2% /mnt/users /dev/mapper/vg00-media ext4 104693300 1673096 97777324 2% /mnt/media /dev/mapper/vg00-vserver ext4 41852720 747896 39007672 2% /mnt/vserver /dev/mapper/vg00-home ext4 83746440 1364696 78187440 2% /home root@homsrv:~#
The extra acl and user_xattr mount options are useful for servers like Samba and Dovecot, and they are absolutely necessary for the future Samba-4 servers. The extra nodev and noexec options on some file systems are used to give some extra system security by preventing to create device files on that file system or to prevent to execute binaries. That’s it, check if it works after a reboot.
Grow a LVM partition.
The following commands demonstrate how to grow a filesystem on a running system:
root@homsrv:/etc# df /home Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg00-home 83746440 1364696 78187440 2% /home root@homsrv:/etc# lvextend -L +40G --resizefs /dev/vg00/home Extending logical volume home to 120.00 GiB Logical volume home successfully resized resize2fs 1.42.4 (12-June-2012) Filesystem at /dev/mapper/vg00-home is mounted on /home; on-line resizing requir ed old_desc_blocks = 5, new_desc_blocks = 8 The filesystem on /dev/mapper/vg00-home is now 31457280 blocks long. root@homsrv:/etc# df /home Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg00-home 125644260 1981496 117769808 2% /home root@homsrv:/etc#