It has happened again. More info on this might make us find the bug.
This time it is a HP Proliant DL140 G2 that i am setting up as a backup node for managing a HP StorageWorks tape library.
Installed openSUSE 13.2 and made all the updates.
"uname -srvio" gives the following info:
Code:
Linux 3.16.7-24-desktop #1 SMP PREEMPT Mon Aug 3 14:37:06 UTC 2015 (ec183cc) x86_64 GNU/Linux
Disk setup is two WD Caviar Blue SATA disks of 640GB each.
/dev/sda1 = 4 GiB swap
/dev/sdb1 = 4 GiB swap
/dev/sda2,/dev/sdb2 = soft raid 1 md127, 48 GiB ext4 mounted as "/", (root fs).
/dev/sda3,/dev/sdb3 = "mkfs.btrfs -m raid1 -d raid0 /dev/sda3 /dev/sdb3"; A btrfs stripe mounted as "/share".
Share is then exported as NFS.
So far, so good.
Found out the disks, which should clock out at some 110 to 120 MB/s read rate only managed to get around 100 MB/s reads. The idea is that the tape should be able to use about 80 MB/s and NFS to get somewhere between 80 to 110 MB/s from the stripe disk. But it doesn't. The stripe is limited to some 100 MB/s bandwidth.
So i tried setting the "/share" up with software raid0 and an ext4 fs on that. But it performs similar, if not slightly worse than using a btrfs stripe.
I then found the issue being the "Intel 82801EB (ICH5) SATA Controller" in the south bridge having a serious bottleneck.
To get enough disk speed i will need to add a PCI-X SATA controller.
So i decided to stop and remove the soft raid, and setting up the btrfs stripe again. And thenafter adding a SATA controller in a PCI-X slot.
But the btrfs filesystem did not mount. No errors from "mount", nothing in the /var/log/messages except the:
Code:
2015-10-19T16:57:36.959036+02:00 dynXXX kernel: [20362.515178] BTRFS info (device sdb3): disk space caching is enabled
2015-10-19T16:57:36.959086+02:00 dynXXX kernel: [20362.515190] BTRFS: has skinny extents
Mount silently failed.
Changing mount point from "/share" to "/mnt/share" and that mounts.
Changing back to "/share" and mount fails without any errors.
Please note that i have changed from btrfs RAID0 to software RAID0 on partitions without rebooting.
(A running test on the tape library will finish in about some hours, and i don't want to interrupt that test).
Command history is something like this:
# Setting up partitions /dev/sd[ab]3 with type 83 using fdisk.
# Running partprobe on both disks. (As if fdisk would not do the job).
partprobe /dev/sda
partprobe /dev/sdb
# Creating the
mkfs.btrfs -m raid1 -d raid0 /dev/sda3 /dev/sdb3
# Adding the mount point
mkdir /share
# Adding the following to /etc/fstab:
# (blkid gives the UUID for the newly created btrfs file system).
Code:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/share btrfs noatime 0 0
# Mounting /share the first time.
mount /share
# Mounts ok. Then add the following to "/etc/exports":
Code:
/share nnn.nnn.nnn.0/24(rw,no_root_squash,sync,no_subtree_check)
# Export it:
exportfs -ra
#
This far everything works as expected.
# Now we want to take it down and reshape it as a soft RAID0 EXT4 share.
# Comment out the share in /etc/exports:
Code:
#/share nnn.nnn.nnn.0/24(rw,no_root_squash,sync,no_subtree_check)
# Unexport it, then dismount it:
exportfs -ra
umount /share
# Hm? how to wipe the btrfs UUID? Maybe something like:
dd if=/dev/zero bs=32k count=32k of=/dev/sda3 & dd if=/dev/zero bs=32k count=32k of=/dev/sdb3 & wait && sync
# "btrfs fi show -d" shows no btrfs on the system.
# Yup! It's all gone.
# Use fdisk to change type of /dev/sd[ab]3 to fd.
# Running partprobe on both disks. (As if fdisk would not do the job).
partprobe /dev/sda
partprobe /dev/sdb
# Create soft RAID0:
mdadm --create /dev/md126 --auto=yes --level=0 -c 32 --raid-devices=2 /dev/sd[ab]3
# Make a filesystem:
mkfs.ext4 -E stride=32 /dev/md126
# Modify the mount point for '/share' in /etc/fstab:
Code:
/dev/md126 /mnt/share ext4 noatime 0 0
# Mounting /share the second time. Now it is a soft striped ext4 fs.
mount /share
#
Yes, it still works as expected.
# Then i did some performance tests and found the soft stripe ext4 to be slightly inferior to the btrfs stripe. Didn't solve the problem.
# So, unmount and stop the raid. Remove it and then create a btrfs stripe again on the same partitions.
# The idea being to add a SATA adapter card and just move the disks to that controller.
umount /share
mdadm --stop /dev/md126
# Check if the raid is really stopped:
cat /proc/mdstat
# Wipe the superblocks on the raid partitions
mdadm --zero-superblock --force /dev/sda3
mdadm --zero-superblock --force /dev/sdb3
sync # Of religious reasons.
# Use fdisk to change type of /dev/sd[ab]3 to 83.
# Running partprobe on both disks. (As if fdisk would not do the job).
partprobe /dev/sda
partprobe /dev/sdb
# Create a btrfs stripe. (Use the '-f' option since we don't bother with wiping the fraglets of a ext4 filesystem in the partitions).
mkfs.btrfs -f -m raid1 -d raid0 /dev/sda3 /dev/sdb3
# Again, modify the mount point for '/share' in /etc/fstab:
# (blkid gives the UUID for the newly created btrfs file system).
Code:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/share btrfs noatime 0 0
# Mounting /share the third time.
mount /share
No errors. No mount.
Silent failure.
Moving the mount of the filesystem from '/share' to '/mnt/share' by editing '/etc/fstab'.
'mount /mnt/share' works. It mounts.
Trying to move back to the '/share' directory does not work. Mount will fail without any form of error message.
Still a mystery to me why it fails like this. If it didn't mount as expected, it should have thrown an error of some sort.