2.2-BETA trim support?
-
I cant find anything on this topic. Does 2.2 automatically enable trim support?
-
I don't think so, check via SSH:
tunefs -p /
If not enabled follow:
https://forum.pfsense.org/index.php?topic=74576.msg408379#msg408379
-
I checked and it was not enabled. I thought that FreeBSD10 was going to check for that and enable it upon install.
-
Nope - Most OSs will let you grenade your SSD, then ask "why oh why is my expensive awesome SSD dead", then you will find how to enable it.
But yeah - you would think that since smart can see that its an SSD they would at least prompt you "Want to activate TRIM?"
But NOOOOOOOOOOO one does it seems.
-
Gonzo said on Reddit the workaround above was a gnarly hack, so I don't want to do that….
-
I do believe that setting TRIM on pfsense is simple. Its also simple on Linux.
I'm just of the opinion by this point the OS should be handling it transparent to the user.
Via SSH these guys are doing it this way (2.1):
(copied and pasted - haven't tried on 2.2)Login with SSH and open the shell.
Run /usr/local/sbin/ufslabels.sh
Add the line ahci_load="YES" to /boot/loader.conf.local
reboot the machine
Login with SSH and open the shell
touch /root/TRIM_set; /etc/rc.rebootOnce the machine has rebooted check the status with: tunefs -p /
[2.1-RELEASE][admin@pfSense.hemma]/root(1): tunefs -p /
tunefs: POSIX.1e ACLs: (-a) disabled
tunefs: NFSv4 ACLs: (-N) disabled
tunefs: MAC multilabel: (-l) disabled
tunefs: soft updates: (-n) disabled
tunefs: gjournal: (-J) disabled
tunefs: trim: (-t) enabled
tunefs: maximum blocks per file in a cylinder group: (-e) 2048
tunefs: average file size: (-f) 16384
tunefs: average number of files in a directory: (-s) 64
tunefs: minimum percentage of free space: (-m) 8%
tunefs: optimization preference: (-o) time
tunefs: volume label: (-L)All done I guess
The thread is here…
https://forum.pfsense.org/index.php?topic=66622.0
-
This is ok to do on 2.2 ?
-
I would think.
Haven't tried.
-
I am running 2.2 and I followed the steps suggested in my previous post. My Intel SSD S3500 has Trim enabled.
-
This is ok to do on 2.2 ?
Works for me. For local machines you need console access as noted above. For remote machines you have to re-apply the ugly but perfectly functional few lines of code that were removed earlier.
-
I am running 2.2 and I followed the steps suggested in my previous post. My Intel SSD S3500 has Trim enabled.
If I was running one of the data center drives, I wouldn't bother with trim. Your S3500 doesn't need it.
-
I'm bumping this because I cant see to get trim to work despite following various threads.
camcontrol identify ada0
pass0: <ts2-e63 128g="" 2.54="">ATA-8 SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)protocol ATA/ATAPI-8 SATA 3.x
device model TS2-E63 128G
firmware revision 2.54
serial number probably sensible to remove it
WWN 5000000aadf41021
cylinders 16383
heads 16
sectors/track 63
sector size logical 512, physical 512, offset 0
LBA supported 250069680 sectors
LBA48 supported 250069680 sectors
PIO supported PIO4
DMA supported WDMA2 UDMA6
media RPM non-rotatingFeature Support Enabled Value Vendor
read ahead yes yes
write cache yes yes
flush cache yes yes
overlap no
Tagged Command Queuing (TCQ) no no
Native Command Queuing (NCQ) yes 32 tags
NCQ Queue Management no
NCQ Streaming no
Receive & Send FPDMA Queued no
SMART yes yes
microcode download yes yes
security yes no
power management yes yes
advanced power management yes no 254/0xFE
automatic acoustic management no no
media status notification no no
power-up in Standby yes no
write-read-verify yes no 0/0x0
unload yes yes
general purpose logging yes yes
free-fall no no
Data Set Management (DSM/TRIM) yes
DSM - max 512byte blocks yes 1
DSM - deterministic read yes any value
Host Protected Area (HPA) yes no 250069680/250069680
HPA - Security notunefs -p /
tunefs: POSIX.1e ACLs: (-a) disabled
tunefs: NFSv4 ACLs: (-N) disabled
tunefs: MAC multilabel: (-l) disabled
tunefs: soft updates: (-n) disabled
tunefs: soft update journaling: (-j) disabled
tunefs: gjournal: (-J) disabled
tunefs: trim: (-t) disabled
tunefs: maximum blocks per file in a cylinder group: (-e) 4096
tunefs: average file size: (-f) 16384
tunefs: average number of files in a directory: (-s) 64
tunefs: minimum percentage of free space: (-m) 8%
tunefs: space to hold for metadata blocks: (-k) 6408
tunefs: optimization preference: (-o) time
tunefs: volume label: (-L)Trim_set doesnt work (diagnostics, command prompt, execute shell command touch /root/TRIM_set; /etc/rc.reboot) and when I use Diagnostics, Edit file, I cant see the file in question. Is it included in 2.2?
I've also tried dropping to single user mode, but no command is recognised when I get the # prompt up.
Plus other online sources appear to contradict some of the info given out on the forum, like this http://www.wonkity.com/~wblock/docs/html/ssd.html
I appreciate some of the info given out in the threads relate to freebsd 8.x but having tried a variety of combinations, I'm still unable to get trim enabled.
But as JohnPoz had just posted a thread link https://forum.pfsense.org/index.php?topic=85548.msg469374#msg469374 which I've tried with no success, I'm wondering if there are some missing steps or changes I'm unaware of due to now being on freebsd 10.x or a change in pf2.2?
So any suggestions?
TIA
Edit.
Having read this message https://forum.pfsense.org/index.php?topic=47650.msg251246#msg251246
about adding a trim enable option during installation, I couldnt see anything on Redmine, does anyone know if it ever got raised in the end?Edit2.
Although I downloaded pfSense-memstick-2.2-RC-amd64-20141220-0119.img.gz its showing Dec 14 on the dashboard.
2.2-RC (amd64)
built on Sun Dec 14 23:10:13 CST 2014
FreeBSD 10.1-RELEASE-p1</ts2-e63> -
Anybody have any clue how trim behaves in FreeBSD 10+ inside of a hyper-v environment VHDX?
-
Did you post the same question to here http://help.howproblemsolution.com/1027145/2-2-beta-trim-support or was it likely scraped from this forum?
-
why would you want to enable trim inside a VM? i would think the host-os should handle it.
-
Might be useful.
http://msdn.microsoft.com/en-us/library/hh848053%28v=vs.85%29.aspx
"New API allows apps to send "TRIM and Unmap" hints to storage media"
"What is TRIM?Solid state drives (SSDs) are typically flash memory based block-erased devices; this means that when data is written to the SSD, it cannot be over-written in place and must be written elsewhere until the block can be garbage collected. Since the SSD has no internal mechanism for determining that certain blocks are removed and others are needed. The only time the SSD can mark a sector ‘dirty’ is when it is over-written. In other cases, such as when a file is deleted, the SSD retains these sectors because the deletion is performed as a master file table (MFT) change only, and not as an operation to all the sectors of the file. In Windows 7, we introduced a standard way of communicating with SSDs about sectors that are not needed any more. This command is defined in the T13 specification as the TRIM command; NTFS sends the TRIM command for some normal inline operations such as “deletefile.”
Other uses of TRIM in the storage world
Like SSDs, storage area networks (SANs) and the new Windows 8 feature Software Spaces implementations consume TRIM command hints to manage their spaces in thinly provisioned environments. SANs and Software Spaces allocate regions of storage in sizes that are greater than sectors or clusters (anywhere from 1MB to 1GB). When they receive TRIM hints for its allocation size (or greater than the allocation size), the SAN/SSD can de-allocate a region to free up the space for other files. They typically pass through all TRIM hints to the underlying media (SSD or HDD) so that they can consume the freed up space as appropriate. They do not typically move data around to de-allocate regions, nor do they keep track of TRIM areas to de-allocated regions (when the region is empty).
Thinly provisioned SANs use the TRIM hints that are passed to them to help reduce the overall physical storage footprint, hence reducing cost. The T10 SCSI specification defines the ‘Unmap’ command (similar to the TRIM command); here the command is applicable to all kinds of storage including HDDs, SSDs, and others. The UnMap command helps to remove physical blocks from the SAN’s allocation. "
Obtained from here.
http://workinghardinit.wordpress.com/2012/05/23/trimunmap-support-in-windows-server-2012-hyper-vvhdx/
Edit.
Seems some bugs existed in the VHDX as well.
https://social.msdn.microsoft.com/forums/windowsapps/en-us/e5a1ff92-f584-42aa-bdbc-7db52e278035/feedback-on-the-vhdx-specificationA comment seen here http://xen-api.narkive.com/bwPFiNPv/vhdx-support
"The biggest issue with implementing VHDX is that we don't know of any
existing, open-source implementation of it, which means that we would
have to invest a lot of time to write our own from scratch. If anyone
knows of any existing VHDX implementations that we can use, I'm sure the
storage team would like to hear about it!"But further down it looks like what support exists is just read only, but you might interpret this differently to me.
"http://wiki.qemu.org/ChangeLog/1.5#Block_devices- VHDX (MS Hyper-V) image format has initial read-only support.
Dynamic and fixed sized disks are supported, but not differencing
images (e.g. VHDX images with a backing file). Read-only is strictly
enforced, and the 'readonly=on' option must be used for any VHDX images."
So I'd say based on the limited info and the dates ie July 2013, not much in the opensource world will support MS VHDX but I could be wrong based on my google results, plus its also worth bearing in mind the popular results google presents are the most popular and not always the correct answer, as I have seen with some virus/malware affecting forums, and the subsequent top results in google which is actually helping to spread the problem.
- VHDX (MS Hyper-V) image format has initial read-only support.
-
why would you want to enable trim inside a VM? i would think the host-os should handle it.
Well the host is just aware of the vhdx file, it probably trims when you compact the virtual disk but without guest support making the host aware no sectors in the file are ever 'deleted' prior too that point.
That being said pfsense has a small size compared to most ssd and I think it would have a hard time causing issues even without trim. Maybe it's a good idea to perform a compact once in a while assuming you're using thin provisioning which is the default.
I'm sure windows 8/server 2012 guests properly trim in the host but I can't find any information about freebsd guest services trim support. I know it doesn't support dynamic memory yet which is a shame considering Linux has a pretty complete guest services implementation already.
-
only these final step worked for me:
You may try this instead in single user mode: /sbin/tunefs -t enable / After that reboot and then run tunefs -p / The touch /root/TRIM_set; /etc/rc.reboot has been removed in the newer version.
from: https://forum.pfsense.org/index.php?topic=66622.msg430150#msg430150
-
I'm bumping this because I cant see to get trim to work despite following various threads.
…
I've also tried dropping to single user mode, but no command is recognised when I get the # prompt up.
...I just went down the same "rabbit-hole" as you but I finally succeeded. When you get to the single-user prompt, you won't have a path set that can find the "tunefs" command. Simply use the full path and proceed as documented (/sbin/tunefs -t enable /). After that command, I did get an error when I tried to reboot saying something about the filesystem being read-only. After a Ctrl-Alt-Del though, the system did perform an orderly shutdown/reboot. Once the system had started back up, I confirmed that my filesystem did have trim support enabled.
Try this out and be sure to let us know how it goes for you.
R/
wbedard -
/sbin/tunefs -t enable /
and
from: https://forum.pfsense.org/index.php?topic=66622.msg430150#msg430150
I'm fairly sure I tried that as well as this was one of the many threads I'd read yesterday but I'll give it another go tomorrow, just to be sure.
Edit.
Got it to work, where I believe I went wrong before was using /bin/sh instead of /sbin/.Thanks for your help.