Not to discourage your learning, but here's how I build my ssd's on both my desktop and laptops now universally (assuming I can cram 2 disks in). This I've built over several years of trial and error with ssd's and various os. I made a variation for uefi booting too my asus that wouldn't do legacy, but this should work for any non-uefi/mbr build. I wouldn't mind some peer review on the process anyways, it's well notated just why I did things so I can remember later. This was for my last stab at ubuntu, never was fully successful, then just applied it to mint, and my sanity was much better for it. ## boot the ubuntu desktop cd, when at desktop, hit ctrl-alt-t and spawn a console ## if you need to wipe the disks, use a security erase on them ## you will sometimes need to unfreeze drives, a suspend and awaken works sudo hdparm -I /dev/sda | grep froz sudo hdparm -I /dev/sdb | grep froz ## make sure these are the right disks, they will be wiped. hdparm --user-master u --security-set-pass PasSWorD /dev/sda hdparm --user-master u --security-erase PasSWorD /dev/sda hdparm --user-master u --security-set-pass PasSWorD /dev/sdb hdparm --user-master u --security-erase PasSWorD /dev/sdb ## at console, issue the following to install mdadm: sudo apt-get install mdadm ## next, issue fdisk to partition the disks from terminal: ## http://askubuntu.com/questions/8592/how-do-i-align-my-partition-table-properly ## block size (file system block size, ex. 4096 or 4k) ## erase head size (usually 4096 or 4k) ## stripe size (same as mdadm chunk size, set. 128k) ## stride: stripe size / block size (ex. 128k / 4k = 32) ## stripe-width: stride * #-of-data-disks (ex. 2 disks RAID 1 is 1 data disks; 32*1 = 32) sudo fdisk -S32 -H32 -u /dev/sda n p +250M n p a 1 t 1 da t 2 da p w sudo fdisk -S32 -H32 -u /dev/sdb n p +250M n p 2 a 1 t 1 da t 2 da p w ## build the raid now using mdadm mdadm --create /dev/md0 --auto=yes --force --name=boot0 --level=1 --chunk=128 --raid-devices=2 /dev/sda1 /dev/sdb1 mdadm --create /dev/md1 --auto=yes --force --name=spv0 --level=1 --chunk=128 --raid-devices=2 /dev/sda2 /dev/sdb2 ## or if building with one missing mdadm --create /dev/md0 --auto=yes --force --name=boot0 --level=1 --chunk=128 --raid-devices=2 /dev/sda1 missing mdadm --create /dev/md0 --auto=yes --force --name=spv0 --level=1 --chunk=128 --raid-devices=2 /dev/sda2 missing ## create secure physical volume, 0, change $pw-user*. This provides slot 0-7, 0-3 admin, 4-7 user. ## we control slots 0-3, users are given 4-7 (assuming multi-user or l-user) ## http://java-hamster.blogspot.com/2012/04/aligning-partitions-lvm-and-encrypted.html ## http://newspaint.wordpress.com/2012/09/21/full-disk-encryption-on-xubuntu-precise-12-04/ ## http://security.stackexchange.com/questions/40208/recommended-options-for-luks-cryptsetup ## default, uses essiv-256, cpu-intensive ## cryptsetup --align-payload=8192 luksFormat /dev/md/spv0 ## intelni optimized, sha256, 256bit cryptsetup --align-payload=8192 -c aes-xts-plain64 -h sha256 -s 256 luksFormat /dev/md1 YES $pw-slot0-diskmaster0 ## add secondary user key, change $pw-user* cryptsetup luksAddKey --key-slot 4 /dev/md1 $pw-slot4-user0 ## confirm there are two slots, the master (0) and user (4) cryptsetup luksDump /dev/md1 ## remove a slot cryptsetup luksRemovekey --key-slot 4 /dev/md1 ## unlock the spv0 cryptsetup luksOpen /dev/md/spv0 spv0 ## create pv for lvm on spv0 ## http://java-hamster.blogspot.com/2012/04/aligning-partitions-lvm-and-encrypted.html pvcreate --dataalignment 4m /dev/mapper/spv0 ## create volgroup $hostname-vg0 on spv0 - use the hostname of the local device (tpm locked anyways in bios - theoretically) ## http://java-hamster.blogspot.com/2012/04/aligning-partitions-lvm-and-encrypted.html vgcreate $hostname-vg0 -s 4m /dev/mapper/spv0 ## create your logical volumes lvcreate --size 3G --name root0 $hostname-vg0 lvcreate --size 3G --name swap0 $hostname-vg0 lvcreate --size 9G --name usr0 $hostname-vg0 lvcreate --size 3G --name var0 $hostname-vg0 lvcreate --size 1G --name varlog0 $hostname-vg0 lvcreate --size 64G --name home0 $hostname-vg0 lvcreate --size 64G --name ext0 $hostname-vg0 ## make ext4 partitions, match stripe/stride with md chunks ## need to add bit about setting inode counts here... mkfs.ext2 -b 4096 -E stride=32,stripe-width=32 /dev/md0 mkfs.ext4 -b 4096 -E stride=32,stripe-width=32 /dev/mapper/$hostname--vg0-root0 mkfs.ext4 -b 4096 -E stride=32,stripe-width=32 /dev/mapper/$hostname--vg0-usr0 mkfs.ext4 -b 4096 -E stride=32,stripe-width=32 /dev/mapper/$hostname--vg0-var0 mkfs.ext4 -b 4096 -E stride=32,stripe-width=32 /dev/mapper/$hostname--vg0-varlog0 mkfs.ext4 -b 4096 -E stride=32,stripe-width=32 /dev/mapper/$hostname--vg0-home0 mkfs.ext4 -b 4096 -E stride=32,stripe-width=32 /dev/mapper/$hostname--vg0-ext0 tune2fs -c0 -i0 /dev/md0 tune2fs -c0 -i0 /dev/mapper/$hostname--vg0-root0 tune2fs -c0 -i0 /dev/mapper/$hostname--vg0-usr0 tune2fs -c0 -i0 /dev/mapper/$hostname--vg0-var0 tune2fs -c0 -i0 /dev/mapper/$hostname--vg0-varlog0 tune2fs -c0 -i0 /dev/mapper/$hostname--vg0-home0 tune2fs -c0 -i0 /dev/mapper/$hostname--vg0-ext0 ## mkswap mkswap /dev/mapper/vg0-swap ## make/mount target dir mkdir /target mount /dev/mapper/$hostname--vg0-root0 /target mkdir /target/boot mkdir /target/usr mkdir /target/var mkdir /target/home mkdir /target/mnt mkdir /target/mnt/ext0 mount /dev/mapper/$hostname--vg0-usr0 /target/usr mount /dev/mapper/$hostname--vg0-var0 /target/var mount /dev/mapper/$hostname--vg0-home0 /target/home mount /dev/mapper/$hostname--vg0-ext0 /target/mnt/ext0 mount /dev/md0 /target/boot mkdir /target/var/log mount /dev/mapper/$hostname--vg0-varlog0 /target/var/log ## continue the installer and get to partition, use "manual" ## enable all the partitions and set the mount structure ## set "yes" to boot failed raid ## continue installing ## at grub, use mbr to install ## before rebooting, vi the /etc/crypttab file and add contents for uuid ls -la /dev/disk/by-uuid | grep md1 | awk '{ print $9 }' >> /target/etc/crypttab <> # ## example ## spv0 UUID=5f694a41-f8c6-4da1-8679-8263e8642eb1 none luks,retry=1,discard spv0 UUID=$uuid-here none luks,retry=1,discard <> ## if you need/want to remount chroot to install or fix, add device dir's to chroot and enter mount --rbind /proc /target/proc mount --rbind /sys /target/sys mount --rbind /dev /target/dev mount --rbind /run /target/run chroot /target bash apt-get update apt-get install mdadm cryptsetup lvm2 ## make your fstab and modify the boot disk to be the correct uuid from the table ls -la /dev/disk/by-uuid | grep md0 | awk '{ print $9 }' >> /etc/fstab vi /etc/fstab <> # UNCONFIGURED FSTAB FOR BASE SYSTEM proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults,noatime,nodiratime,mode=1777 0 0 /dev/mapper/$hostname--vg0-root0 / ext4 defaults,noatime,nodiratime 0 1 UUID=218b2c98-3f7e-4008-950c-b99e3d6dabab /boot ext2 defaults,noatime,nodiratime 0 1 /dev/mapper/$hostname--vg0-usr0 /usr ext4 defaults,noatime,nodiratime 0 2 /dev/mapper/$hostname--vg0-var0 /var ext4 defaults,noatime,nodiratime 0 2 /dev/mapper/$hostname--vg0-varlog0 /var/log ext4 defaults,noatime,nodiratime 0 2 /dev/mapper/$hostname--vg0-home0 /home ext4 defaults,noatime,nodiratime 0 2 /dev/mapper/$hostname--vg0-ext0 /mnt/ext0 ext4 defaults,noatime,nodiratime,commit=600 0 2 /dev/mapper/$hostname--vg0-swap0 none swap sw,discard 0 0 <> ## ensure these are correct too vi /etc/crypttap vi /etc/mdadm/mdadm.conf update-initramfs -k all -t grub-install /dev/sda grub-install /dev/sdb update-grub grub-install /dev/sda grub-install /dev/sdb ## set and make a udev rule for setting scheduler to deadline echo deadline > /sys/block/sdb/queue/scheduler vi /etc/udev/rules.d/60-ssd-scheduler.rules <> # set deadline scheduler for non-rotating disks ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" <> ## edit lvm.conf to change discards to =1 vi /etc/lvm/lvm.conf <> issue_discards = 1 <> # issue vm.swappiness to +1 now <> sysctl -w vm.swappiness=1 <> ## add into sysctl vi /etc/sysctl.d/ssd-optimization.conf <> # Added so Linux kernel no longer attempts to enlarge the cache by paging applications out # http://rudd-o.com/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that vm.swappiness=1 <> ## test the disks, get them closed to zero sync echo 3 > /proc/sys/vm/drop_caches time dd if=/dev/zero of=/mnt/ext0/incoming/testfile count=1 bs=900M sysctl -w vm.vfs_cache_pressure=100 find / > /dev/null cp /mnt/ext0/incoming/testfile /mnt/ext0/incoming/testfile2 time find / > /dev/null sysctl -w vm.vfs_cache_pressure=50 find / > /dev/null cp /mnt/ext0/incoming/testfile2 /mnt/ext0/incoming/testfile3 time find / > /dev/null rm -f /mnt/ext0/incoming/testfile /mnt/ext0/incoming/testfile2 /mnt/ext0/incoming/testfile3 ## add permenantly cat into sysctl under prior entry vi /etc/sysctl.d/ssd-optimization.conf <> ## add for filesystem caching vm.vfs_cache_pressure=50 <> -mb On 09/04/2014 10:19 AM, Mark Phillips wrote: > Michael, > > Thanks again for your comments, they are very helpful. I have been > googling RAID1 and LVM and finding lots of good information. > > I really like your idea of a RAID1 for the two SSDs. Does it matter if > one is msata and one is not? > > I am trying to decide on the merits of using LVM with the RAID1, since > I only have 1 disk and I normally don't partition it so I don't have > to worry about running our of space until the disk is almost full. > Could you explain to me the benefit of using LVM + RAID1 for these two > drives? How would you partition the drives? My current drive has about > 420 GB of data in /home, about 9GB in /opt, and some misc stuff in > /var, all of which I need to transfer that to the new system. > > Thanks, > > Mark > > P.S. One benefit of using both LVM and RAID1 is learning something new! ;) > --------------------------------------------------- PLUG-discuss mailing list - PLUG-discuss@lists.phxlinux.org To subscribe, unsubscribe, or to change your mail settings: http://lists.phxlinux.org/mailman/listinfo/plug-discuss