System Administration
Storage Systems
Agenda
Storage Devices
Partitioning
LVM
File Systems
STORAGE DEVICES
Single Disk
RAID?
RAID
Redundant Array of Independent Disks
Software vs. Hardware
RAID 0, 1, 3, 5, 6
Software RAID
Parity done by CPU
FakeRAID
Linux md
LVM
ZFS, btrfs
◦ Later
Hardware RAID
RAID controller card
Dedicated hardware box
Direct Attached Storage
SAS interface
Storage Area Network
Fiber Channel
iSCSI
ATA-over-Ethernet
Fiber Channel
Network Attached Storage
NFS
CIFS (think Windows File Sharing)
SAN vs. NAS
PARTITIONING
1 File System / Disk?
2 TB maybe… 2TB x 12?
2TB x 128 then?
Partitioning in Linux
fdisk
◦ No support for GPT
Parted
◦ GParted
Fdisk
Add Partition
Delete Partition
Save & Exit
Parted
Add Partition
Change Units
Delete Partition
No need to save
Any action you do is permanent
Parted will try to update system partition table
Script support
parted can also take commands from command line:
◦ parted /dev/sda mkpart pri ext2 1Mib 10Gib
Resize (Expand)
1. Edit partition table
◦ Delete and create with same start position
2. Reload partition table
◦ Reboot if needed
3. Expand filesystem
Resize (Shrink)
1. Shrink filesystem
◦ Slightly smaller than final
2. Edit partition table
◦ Delete and create with same start position
3. Reload partition table
◦ Reboot if needed
4. Expand filesystem to fit partition
No Partition Moving
LOGICAL VOLUME
MANAGER
What is LVM?
A system to manage storage devices
Volume == Disk
Why use LVM?
Storage pooling
Online resizing
Resize any way
Snapshots
Concepts
Physical Volume
◦ A disk or partition
Volume Group
◦ A group of PVs
Logical Volume
◦ A virtual disk/partition
Physical Extent
◦ Data blocks of a PV
Using a partition for LVM
Best to have a partition table
1. Create partition with LVM type
◦ Fdisk: use “t” to change type to “8e”
◦ Parted: toggle “lvm” flag
2. pvcreate /dev/XXX
Create a volume group
vgcreate <name> /dev/XXX …
Add PVs to volume groups
vgextend <name> /dev/XXX …
Create a logical volume
lvcreate --name <name> --size
<size> <volume group>
Size units:
◦ B, K, M, G, T …
Path to new volume
◦ /dev/<volume group>/<name>
More about LVM
https://wiki.archlinux.org/index.p hp/LVM
FILE SYSTEMS
What is a File System?
A file system (or filesystem) is an abstraction to store, retrieve and update a set of files.
Learn more in OS course
Linux Disk File Systems
Ext Family
◦ Ext2
◦ Ext3
◦ Ext4
ReiserFS
XFS
ZFS
Btrfs
Ext Family
Ext replaced MINIX file system
Ext2 was major overhaul
Ext3 adds
◦ Journaling
◦ Online expand
◦ Htree directory index (was linked-list)
Ext Family cont.
Ext4 adds
◦ Larger file system (> 2TB)
◦ Extents
◦ Journal Checksum
◦ Increase subdirectory limit
◦ Delayed Allocation
◦ Persistent Pre-allocation
◦ …
Ext Family cont.
Default FS in many distros
ReiserFS (Reiser3)
By Hans Reiser / NAMESYS
Earlier than ext3
Fast for huge directories and small files
Features
◦ Journaling
◦ Online resize
◦ Tail packing
XFS
By SGI
Opensourced and ported to Linux
Fast for large filesystems and large files
Features
◦ Journaling
◦ Extents
◦ …
ZFS
Filesystem + LVM
By Sun
Open-source but license not compatible with Linux
Available on
◦ Solaris
◦ FreeBSD (older/slower than Solaris)
◦ Linux using FUSE or “ZFS on Linux”
Basis for Sun Open Storage
Btrfs
Started by Oracle
Experimental
Comparable to ZFS
Recommendation
Use ext4 or XFS
See manpages for tunables
◦ Features
◦ Block size
◦ RAID stripe size / stride width
◦ Journaling level
How to create a filesystem
/sbin/mkfs.<type> /dev/XXX
◦ Type: ext2, ext3, ext4, xfs, reiserfs, …
ZFS and btrfs have special tools
Filesystem Utilities
Ext Family
◦ e2fsprogs
ReiserFS
◦ reiserfsprogs
XFS
◦ xfsprogs
How to mount a filesystem
A filesystem is mounted at a
“mount point”, a directory
◦ Contents of that directory are hidden
mount /dev/XXX /mnt
mount
◦ Shows currently mounted filesystems
How to unmount
unmount /dev/XXX
unmount /mnt
Automatic mounting
Add entry in /etc/fstab
Will mount during boot
Practice
Use a spare HDD or flat file
◦ Create a 10G flat file with dd:
◦ dd if=/dev/zero of=XXX bs=1M count=10k
Play with fdisk/parted and LVM
Go through the docs or Wikipedia
◦ Learn the features
Homework: Write a script
Given 2 HDDs /dev/sdb /dev/sdc
Use parted in script mode to create LVM partitions on both HDDs
Add them to LVM volume group
◦ Use your student ID as the name
Create a 20G LV named ID-1 and format as ext4
Create a 20G LV named ID-2 and format as XFS
Undo (delete everything)
Be sure to try it SAFELY before submitting
Do not include any useless commands