ZFS Unsafe shutdowns, Intel 750 SSD

Hello,

I am using a Intel 750 SSD AIC as an SLOG. Each time I poweroff the server the 'Unsafe Shutdowns' counter increments for the SSD. Is there anyway to resolve this?
SLOG is working fine and in use.

The smart data is as follows:
Code:
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)
Critical Warning:  0x00
Temperature:  37 Celsius
Available Spare:  100%
Available Spare Threshold:  10%
Percentage Used:  0%
Data Units Read:  494 [252 MB]
Data Units Written:  468,568 [239 GB]
Host Read Commands:  5,865
Host Write Commands:  6,246,687
Controller Busy Time:  0
Power Cycles:  11
Power On Hours:  352
Unsafe Shutdowns:  8
Media and Data Integrity Errors:  0
Error Information Log Entries:  0

Error Information (NVMe Log 0x01, max 64 entries)

Thanks
 
Did you use poweroff or shutdown -p now?

Using shutdown -p now is safer since it does proper shutdown, stops services, and dumps remaining caches to drives.
 
Did you use poweroff or shutdown -p now?

Using shutdown -p now is safer since it does proper shutdown, stops services, and dumps remaining caches to drives.

Both should be identical (on 10.3, at least), as it's literally the same binary which just automatically behaves as if it received -p now when argv[0] is "poweroff" (after stripping any path), in /usr/src/sbin/shutdown/shutdown.c:main():
Code:
       /*
        * Test for the special case where the utility is called as
        * "poweroff", for which it runs 'shutdown -p now'.
        */
        if ((p = strrchr(argv[0], '/')) == NULL)
                p = argv[0];
        else
                ++p;
        if (strcmp(p, "poweroff") == 0) {
                if (getopt(argc, argv, "") != -1)
                        usage((char *)NULL);
                argc -= optind;
                argv += optind;
                if (argc != 0)
                        usage((char *)NULL);
                dopower = 1;
                offset = 0;
                (void)time(&shuttime);
                goto poweroff;
        }
…
Setting dopower = 1; and offset = 0; is identical to what happens if getopt(3) finds -p and getoffset() sees "now" as the remaining element of argv. After that startup processing, the resulting behaviour will be literally identical for both cases, there cannot be any difference.

You can see that it is the same binary using ls -il /sbin/shutdown /sbin/poweroff. Same inode number, link count 2, it's a hard linked file visible under both names.
 
Back
Top