Hi all! I recently built a cold storage server with three 1TB drives configured in RAID5 with LVM2. This is my first time working with LVM, so I'm a little bit overwhelmed by all its different commands. I have some questions:
- How do I verify that none of the drives are failing? This is easy in case of a catastrophic drive failure (running
lvchange -ay <volume group>
will yell at you that it can't find a drive), but what about subtler cases?
- Do I ever need to manually resync logical volumes? Will LVM ever "ask" me to resync logical volumes in cases other than drive failure?
- Is there any periodic maintenance that I should do on the array, like running some sort of health check?
- Does my setup prevent me from data rot? What happens if a random bit flips on one of the hard drives? Will LVM be able to detect and correct it? Do I need to scan manually for data rot?
- LVM keeps yelling at me that it can't find
dmeventd
. From what I understand, dmeventd
doesn't do anything by itself, it's just a framework for different plugins. This is a cold storage server, meaning that I will only boot it up every once in a while, so I would rather perform all maintenance manually instead of delegating it to a daemon. Is it okay to not install dmeventd
?
- Do I need to monitor SMART status manually, or does LVM do that automatically? If I have to do it manually, is there a command/script that will just tell me "yep, all good" or "nope, a drive is failing" as opposed to the somewhat overwhelming output of
smartctl -a
?
- Do I need to run SMART self-tests periodically? How often? Long test or short test? Offline or online?
- The boot drive is an SSD separate from the raid array. Does LVM keep any configuration on the boot drive that I should back up?
Just to be extra clear: I'm not using mdadm
. /proc/mdstat
lists no active devices. I'm using the built-in raid5 feature in lvm2. I'm running the latest version of Alpine Linux, if that makes a difference.
Anyway, any help is greatly appreciated!
How I created the array:
pvcreate /dev/sda /dev/sdb /dev/sdc
vgcreate myvg /dev/sda /dev/sdb /dev/sdc
pvresize /dev/sda
pvresize /dev/sdb
pvresize /dev/sdc
lvcreate --type raid5 -L 50G -n vol1 myvg
lvcreate --type raid5 -L 300G -n vol2 myvg
lvcreate --type raid5 -l +100%FREE -n vol3 myvg
For education purposes, I also simulated a catastrophic drive failure by zeroing out one of the drives. My procedure to repair the array was as follows, which seemed to work correctly:
pvcreate /dev/sda
vgextend myvg /dev/sda
vgreduce --remove --force myvg
lvconvert --repair myvg/vol1
lvconvert --repair myvg/vol2
lvconvert --repair myvg/vol3
...what? Insurance companies are not a "barrier" between doctors and patients. What, do you think some sort of insurance gremlin will manifest out of the ground and kick you in the nuts if you try to visit a doctor while uninsured? Doctors don't care whether you're insured or not, as long as they get paid. Insurance companies exist to soften the blow of expensive treatment. The product is not getting completely fucked over if you get very unlucky, just like with any other insurance (life insurance, car insurance, whatever). It's kind of like bitcoin mining pools, but the other way around. Now, is mandatory health insurance justified? That's a different discussion.