💿 Storage

Rocky Linux Storage Management

Build resilient, flexible storage on Rocky Linux 9 — LVM for live resizing, mdadm RAID for redundancy, Samba for Windows integration, and NFS for Linux network shares.

LVM2 mdadm RAID Samba 4
LVM Layer Stack
1
Physical Volume (PV)
Raw block devices: /dev/sdb, /dev/sdc
2
Volume Group (VG)
Pool of PVs — vg_data (all disks combined)
3
Logical Volume (LV)
Flexible partitions: lv_db, lv_logs, lv_backup
4
Filesystem
ext4 or XFS formatted on top of each LV
5
Mount Point
/var/lib/mysql, /var/log, /backup
Storage · LVM

LVM — Logical Volume Manager

LVM is the standard storage abstraction layer on Rocky Linux. It lets you create, resize, snapshot, and move storage without rebooting — essential for production database servers where downtime is not an option.

Create PV → VG → LV → Filesystem
# Initialise physical volumes
[root@rocky ~]$ pvcreate /dev/sdb /dev/sdc
 
# Create volume group
[root@rocky ~]$ vgcreate vg_data /dev/sdb /dev/sdc
 
# Create logical volumes
[root@rocky ~]$ lvcreate -L 100G -n lv_mysql vg_data
[root@rocky ~]$ lvcreate -L 20G -n lv_logs vg_data
 
# Format and mount
[root@rocky ~]$ mkfs.xfs /dev/vg_data/lv_mysql
[root@rocky ~]$ mount /dev/vg_data/lv_mysql /var/lib/mysql
Online resize and snapshot
# Extend an LV online (XFS grows live)
[root@rocky ~]$ lvextend -L +50G /dev/vg_data/lv_mysql
[root@rocky ~]$ xfs_growfs /var/lib/mysql
 
# Create snapshot before risky migration
[root@rocky ~]$ lvcreate -L 10G -s -n snap_mysql /dev/vg_data/lv_mysql
# Revert if something goes wrong:
[root@rocky ~]$ lvconvert --merge /dev/vg_data/snap_mysql
Storage · RAID

Software RAID with mdadm

Rocky Linux includes mdadm for Linux software RAID. For most workloads, RAID 1 (mirror) or RAID 5/6 (stripe with parity) gives the best balance of redundancy and performance — without expensive hardware RAID controllers.

Create RAID 1 mirror (2 disks)
[root@rocky ~]$ dnf install -y mdadm
 
# Create RAID 1 from /dev/sdb and /dev/sdc
[root@rocky ~]$ mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
 
# Save config and format
[root@rocky ~]$ mdadm --detail --scan >> /etc/mdadm.conf
[root@rocky ~]$ mkfs.xfs /dev/md0 && mount /dev/md0 /data
Monitor RAID health
[root@rocky ~]$ cat /proc/mdstat
md0 : active raid1 sdb[0] sdc[1]
      102400 blocks super 1.2 [2/2] [UU]
 
[root@rocky ~]$ mdadm --detail /dev/md0

RAID Level Comparison

LevelRedundancyUsable SpaceBest For
RAID 0None100%Speed only
RAID 1✔ Mirror50%Boot disks, small DBs
RAID 5✔ 1 disk~67–75%General storage
RAID 6✔ 2 disks~50–67%Large arrays
RAID 10✔ Mirror+Stripe50%High-perf databases
⚠️
RAID ≠ Backup: A RAID array protects against disk failure but not against accidental deletion, filesystem corruption, or ransomware. Always combine RAID with a separate backup strategy.

Replace a Failed Disk

Hot-replace failed drive
# Mark disk as failed
[root@rocky ~]$ mdadm /dev/md0 --fail /dev/sdc
[root@rocky ~]$ mdadm /dev/md0 --remove /dev/sdc
# (physically replace disk, then:)
[root@rocky ~]$ mdadm /dev/md0 --add /dev/sdc
# Resync begins automatically

Windows ↔ Rocky Linux File Share

Windows Client \\rocky-server\shared
SMB/CIFS protocol
Samba (smbd) Handles file/print shares
Runs on Rocky Linux
Winbind (optional) AD domain authentication
Active Directory join
SELinux samba_share_t context required
Rocky Linux security layer
Firewalld Port 445, 137-139 open
Zone-based filtering
Storage · Samba

Samba — Windows File Sharing

Samba implements SMB/CIFS protocol so Windows clients can mount Rocky Linux directories as network drives. It also supports Active Directory domain membership for centralised authentication.

Install Samba and configure share
[root@rocky ~]$ dnf install -y samba samba-common samba-client
[root@rocky ~]$ systemctl enable --now smb nmb
/etc/samba/smb.conf — share definition
[global]
  workgroup = WORKGROUP
  server string = Rocky Linux File Server
  security = user
  map to guest = bad user
 
[shared]
  path = /data/shared
  browseable = yes
  writable = yes
  valid users = @smbusers
  create mask = 0664
  directory mask = 0775
SELinux + Firewall for Samba
[root@rocky ~]$ chcon -Rt samba_share_t /data/shared
[root@rocky ~]$ setsebool -P samba_enable_home_dirs 1
[root@rocky ~]$ firewall-cmd --permanent --add-service=samba
[root@rocky ~]$ smbpasswd -a username

Need help designing your storage architecture?

Our team designs and implements resilient Rocky Linux storage solutions — LVM, RAID, Samba, and NFS — tailored to your data and performance requirements.