Wildcard Filename Match

Hello!
I'm looking for a wildcard filename match method that can work in every operating system supported by the JVM. The signature of this method would be something just like this:
public bool match(String wildcard, String fileName);The wildcard would accept *, ?, etc. (e.g.: *.java).
Thank you.
Marcos

Note the difference in whether .a.java matches *.java:
cmd.exe
C:\source\java\misc\dfs>dir *.java
Volume in drive C has no label.
Volume Serial Number is E875-69AD
Directory of C:\source\java\misc\dfs
2006.08.30  14:21                  456 .a.java
2005.11.09  11:50                2 297 a.java
2006.08.30  12:21                2 322 data.java
2005.11.09  11:49                4 239 dfs.java
2005.11.09  11:49                3 324 dfs1.java
               5 File(s)         12 638 bytes
               0 Dir(s)  39 954 014 208 bytes freeMinGW
ijbalazs@KHB-89522D0047C /c/source/java/misc/dfs
$ ls *.java
a.java  data.java  dfs.java  dfs1.java

Similar Messages

  • Is it possible to use wildcards to match cell contents in an if statement?

    I need to return a ID along with some other information on a page by page basis, so that the information comes out linked by position.  I use a couple of loops and if statements to navigate through the document.  I am able to use exact matches of cell contents which is fine when the contents doesn't vary.  But the IDs, though they have a similar pattern, are all different. In a menu driven search, I am able to find what I need with '150^9^9^9^9^9-^9^9^9' But when I try putting this (or any number of [0-9], *, ? combinations) it fails.  Is it possible to use wildcards?  The symbol used for the match (==) makes me suspect that it is not possible and that only literal, exact matches will work.  But I wanted to check with the experts before giving up.
    Thanks
    pcbaz

    Thanks for the input.  You're right, a GREP search is much more efficient.  But what I'm trying to do and the circumstances here don't allow me, I think,  to go that route. I am trying to generate a list of values coming from several textframes on a single page and have them come out so that I can tell which values belong together.
    I'm using an inherited document with masters that were created 'manually';  the index numbering for textframes and tables is random. I navigate through the pages, looping through textframe indices asking ' does this textframe exist?' If so, I ask if it is a table -- if no, it is a simple textframe and I ask about the ID, if yes, I ask if the contents of cell (0,0) (invariant position and contents) are equal to the table I want..  I am sending the ID and other pieces of information from the table to one row of a new table on a new page.  So the ID and other information from a single page are linked by being in the same row.
    I know this a little 'off-normal' -- I'm using the search to navigate through the document and find things by location the way you do with a spreadsheet.  I have devised a work-around that helps me get around the fact that the ID is not invariant.  I create a list of the (exact) IDs from another document, equating them to a variable ('a').  I then loop through the list of IDs and ask if the contents of the textframe is equal to 'a'..This works o.k, unless there happens to be an extra space, a different kind of hyphen, etc. It would be so much easier if I could use the wildcards that work in a menu-driven text or GREP search in script just to ask about the contents of the textframe.
    Thanks again
    pcbaz (Peter BIerly)
    P.S. we have since rewritten the masters so this problem will not exist in the future -- we now know exactly which textframe and/or table indices to refer to to get any particular bits of information and don't need to ask questions about the contents.

  • Using the LIKE operator with wildcards to match names

    I am using SQL in ColdFusion 9 to match names in an MS Access 2003 database table.
    The Visitors field of MyTable contains the name "Smith" in six records.
    1. Smith Jones Wilson
    2. Smith, Jones, Wilson
    3. Smith(Jr.), Jones, Wilson
    4. Jones Wilson Smith
    5. Wilson Smith Jones
    6. Smith
    7. Smithson, Jones, Wilson
    8. Jones, Wilson, Arrowsmith
    To find out which records contain the name Smith (but not Smithson or Arrowsmith) I now need to write four "OR" lines:
    WHERE MyField LIKE 'Smith[!a-zA-Z]%'  (finds only the Smiths in records 1, 2 and 3)
             OR MyField LIKE '%[!a-zA-Z]Smith'  (finds only the Smith in record 4)
           OR MyField LIKE '%[!a-zA-Z]Smith[!a-zA-Z]%' (finds only the Smith in record 5)
           OR MyField = 'Smith'   (finds only the Smith in record 6)
    I would like to know how to combine these four lines into one which would find all six records containing Smith.
    Thank you for your help.

    As this is a SQL-specific question, you might be better off asking it on a SQL forum?  Does Access even support regexes?
    For a CF the regex you'd be after "\bsmith\b".  You should read the Access regex reference to see if it supports this.  A CF regular expression is no use to you here as the comparison needs to be done on the DB,  not in CF.
    Adam
    Misread the question.  Revising.

  • How to modify Fileadapter filename with val from JMS msg using xsl?

    In my case I need to name the file based on information received in a JMS message.
    I would like to receive an xml document from a JMS queue, the document will contain content as well as the name of a file to be saved off. I found references to something similar in the BPEL and ESB documentation for the file adapter by using "ehdr:setOutboundHeader(" as a means to set the outbound header value but I cannot find the mechanics of how to accomplish getting that set with a value that is selected from an incoming message in XSL code.
    The examples shown indicate the creation of a pass through mechanism that would take a message from a request header and pass it along to the outbound header which is great but I need a snippet of code to get me through setting the outbound header with an element value that is sourced from the inbound message.
    I also found an incomplete reference in a "Oracle SOA Suite Enterprise Server Bus" powerpoint presentation that indicates JMS custom properties support for "Property[@name="Country"]/@value" but no details were provided to assist further.
    I would greatly appreciate any information you can provide.
    Thank You,
    John

    Ok I was able to get fileadapter filenames modified.
    First you cannot do this after a dbadapter query as that functionality seems to be broken. The best way to solve it for me was to simplify the problem, I started with placing the setoutbound header data after reading a simple file and ignoring the files content altogether. I do the set inside a match of the xslt using a constant value, again for simplicity. For the test just put in 'ateststring.txt' in the setoutbound header call, no need to select data from the document at this point; we will get to that. Now get that to work.
    Once you have that working take a value from the incoming document and select it into a variable named myvariable then replace the 'ateststring.txt' with $myvariable. So basically its a three step process for the final solution. Select the data of interest from the document into a variable. add a select statement to make the method call just after that. Make the method call inside the select statement and prepend the variable name with the $ symbol.
    So far I have only tested this file to file and file to ftp, I suspect that jmsadapter to file will work fine too. So the trick for me was to understand that if an incoming document is the result of a query that just wont do. My requirement was to take an input JMS request, use that to drive a query, take the data from the query and write it to a filename as defined in the JMS request. No matter what I did to set the frustrating fileadapter/ftpadapter filename in the header I was unable to do so. I used constant strings etc in every part of the document ( before select, inside select, outside select etc ). It wasnt until I went file to file that I was able to get this to work at all. And then not in the xslt header etc, it MUST be in an area of the document that resulted in a select match, which after review makes sense.
    To work around the query to file issue, I place the results of the data query into a temporary filename%SEQ%.tmp, along with the query results I add the real filename inside the document. I have a file listener that listens for the filename using wildcards filename*.tmp, it takes the file reads it in, pulls the permanent filename from the incoming document, and sets that filename in the header using the steps worked out above by selecting the filename into myvariable.
    You cannot ( to my knowlege ) store variables in ESB so I found I had to put them inside the documents to move the data around. When I am all done with the work through the routing service I strip out the variable data fields that I needed to carry along with the data.
    I hope this saves someone else a bit of frustration!
    John

  • Custom Filename for ESB FileAdapter Write

    Hi,
    I have a ESB service that monitors and deqeues from the oracle.apps.po.event.xmlpo business event via the Oracle Applications adapter. This works fine as the WF_EVENT_T schema is routed via an XSL to a custom XML which is used later.
    However, I want the file to use a custom filename with the file adapter. In principle I know how to do this using the ehdr:setOutboundHeader functionality and have got this to work when setting a static filename.
    However, I want to be able to create the filename based on the Purchase Order Number coming from the WF_EVENT_T schema. It seems that the ehdr:setOutboundHeader function has to be set before any of the XML Template matches, which means at this point the Purchase Order number is not available. Below is the main parts of the XSL.
    <xsl:variable name="CustomFilename" select="'/ns2:PONo"/>
    <xsl:variable name="AssignFilename"
    select="ehdr:setOutboundHeader('/ns1:OutboundFileHeaderType/ns1:fileName',$CustomFilename,'ns1=http://xmlns.oracle.com/pcbpel/adapter/file/Capture_PO_Event_Data/;')"/>
    <xsl:template match="/">
    <ns2:HCNPOWFEVENT>
    <xsl:for-each select="/imp1:WF_EVENT_T/PARAMETER_LIST/PARAMETER_LIST_ITEM">
    <xsl:if test='NAME = "DOCUMENT_NO"'>
    <ns2:PONo>
    <xsl:value-of select="VALUE"/>
    </ns2:PONo>
    </xsl:if>
    </xsl:for-each>
    <xsl:for-each select="/imp1:WF_EVENT_T/PARAMETER_LIST/PARAMETER_LIST_ITEM">
    <xsl:if test='NAME = "ECX_TRANSACTION_TYPE"'>
    <ns2:POType>
    <xsl:value-of select="VALUE"/>
    </ns2:POType>
    </xsl:if>
    </xsl:for-each>
    <xsl:for-each select="/imp1:WF_EVENT_T/PARAMETER_LIST/PARAMETER_LIST_ITEM">
    <xsl:if test='NAME = "ECX_TRANSACTION_SUBTYPE"'>
    <ns2:POSubType>
    <xsl:value-of select="VALUE"/>
    </ns2:POSubType>
    </xsl:if>
    </xsl:for-each>
    <xsl:for-each select="/imp1:WF_EVENT_T/PARAMETER_LIST/PARAMETER_LIST_ITEM">
    <xsl:if test='NAME = "ECX_PARAMETER5"'>
    <ns2:OrgId>
    <xsl:value-of select="VALUE"/>
    </ns2:OrgId>
    </xsl:if>
    </xsl:for-each>
    <xsl:for-each select="/imp1:WF_EVENT_T/PARAMETER_LIST/PARAMETER_LIST_ITEM">
    <xsl:if test='NAME = "ECX_PARTY_ID"'>
    <ns2:ECXPartyId>
    <xsl:value-of select="VALUE"/>
    </ns2:ECXPartyId>
    </xsl:if>
    </xsl:for-each>
    <xsl:for-each select="/imp1:WF_EVENT_T/PARAMETER_LIST/PARAMETER_LIST_ITEM">
    <xsl:if test='NAME = "ECX_PARTY_SITE_ID"'>
    <ns2:ECXPartySiteId>
    <xsl:value-of select="VALUE"/>
    </ns2:ECXPartySiteId>
    </xsl:if>
    </xsl:for-each>
    </ns2:HCNPOWFEVENT>
    </xsl:template>
    </xsl:stylesheet>
    Any ideas on how this can be achieved ?

    Ok I was able to get fileadapter filenames modified.
    First you cannot do this after a dbadapter query as that functionality seems to be broken. The best way to solve it for me was to simplify the problem, I started with placing the setoutbound header data after reading a simple file and ignoring the files content altogether. I do the set inside a match of the xslt using a constant value, again for simplicity. For the test just put in 'ateststring.txt' in the setoutbound header call, no need to select data from the document at this point; we will get to that. Now get that to work.
    Once you have that working take a value from the incoming document and select it into a variable named myvariable then replace the 'ateststring.txt' with $myvariable. So basically its a three step process for the final solution. Select the data of interest from the document into a variable. add a select statement to make the method call just after that. Make the method call inside the select statement and prepend the variable name with the $ symbol.
    So far I have only tested this file to file and file to ftp, I suspect that jmsadapter to file will work fine too. So the trick for me was to understand that if an incoming document is the result of a query that just wont do. My requirement was to take an input JMS request, use that to drive a query, take the data from the query and write it to a filename as defined in the JMS request. No matter what I did to set the frustrating fileadapter/ftpadapter filename in the header I was unable to do so. I used constant strings etc in every part of the document ( before select, inside select, outside select etc ). It wasnt until I went file to file that I was able to get this to work at all. And then not in the xslt header etc, it MUST be in an area of the document that resulted in a select match, which after review makes sense.
    To work around the query to file issue, I place the results of the data query into a temporary filename%SEQ%.tmp, along with the query results I add the real filename inside the document. I have a file listener that listens for the filename using wildcards filename*.tmp, it takes the file reads it in, pulls the permanent filename from the incoming document, and sets that filename in the header using the steps worked out above by selecting the filename into myvariable.
    You cannot ( to my knowlege ) store variables in ESB so I found I had to put them inside the documents to move the data around. When I am all done with the work through the routing service I strip out the variable data fields that I needed to carry along with the data.
    Please let me know how you are going with this, I hope this saves someone else a bit of frustration.
    Thanks again,
    John

  • Wildcard * SSL Certificates for TTA??

    Is there any way I can use a wildcard SSL certificate like:
    *.mycompany.com
    in my TTA server?
    I was able to run all the cert commands successfully using the
    *.mycompany.com cert:
    Generated the CSR (tarantella security certrequest)
    Installed the Cert File (tarantella security certuse)
    Installed the Chained CA cert (tarantella security customca)
    Review/validate certinfo (tarantella security certinfo)
    The TTA-installed Apache webserver was fine with the wildcard certificate
    since I was able to goto:
    https://subdomain.mycompany.com (FYI, the subdomain is NOT "www")
    But after I went to:
    https://subdomain.mycompany.com/tarantella/
    I got the following errors in my Java Console:
    Secure Global Desktop 4.10.903: Connecting to Secure Global Desktop
    server...
    Secure Global Desktop 4.10.903: Using secure connection to
    Secure Global Desktop server subdomain.mycompany.com:443
    Secure Global Desktop 4.10.903: Certificate (*.mycompany.com) not accepted
    for this Secure Global Desktop server (subdomain.mycompany.com) due to name
    mismatch.
    Secure Global Desktop 4.10.903: Client dropping connection.
    Secure Global Desktop 4.10.903: Unable to connect: Certificate
    (*.mycompany.com) not accepted for this Secure Global Desktop server
    (subdomain.mycompany.com) due to name mismatch.
    Secure Global Desktop 4.10.903: Missing negotiation feature cgi script
    Is there a way that I can get the applet to do a regex-ish match on the name
    for wildcard certs?
    Cyrus

    Hi Cyrus
    I was loosely referring to PKI rules e.g.
    http://www.ietf.org/proceedings/98mar/98mar-edited-110.htm
    http://www.iihe.ac.be/internal-report/1997/stc-97-19.html
    Wildcarding isn't supported. I understand what you are trying to do now
    but it won't work because the software is looking for a certificate
    matching a single server.
    The certrequest command is just a wrapper script for openssl so it won't
    stop you doing anything the openssl command believes may be valid. You don't
    actually need to use this command it's just there for convenience, you
    could do everything just using openssl.
    The current documentation doesn't explictly state that you can't use
    wildcards in certificates but it does say you need a certificate for a
    SGD server. My understanding of the wildcard issue is that it is up to
    a particular application to decide what is appropriate.
    http://www.tarantella.com/support/documentation/sgd/ee/4.1/help/en-us/tsp/gettingstarted/whatare_certs.html
    Regards
    Barrie
    On 2005-08-15, Cyrus Mehta <[email protected]> wrote:
    May I inquire as to where these rules are listed regarding SSL Certs, I
    didn't see anything to the effect in the documentation. Also why weren't
    the rules enforced at certificate generation time. Even the validation
    command (tarantella security certinfo) had no problems.
    The CSR generation/signing went through flawlessly and created a wildcard
    cert that Apache could use. It's one thing if the whole cert process
    couldn't handle a wildcard, but it seems like everything would have worked
    if only the applet accepted a wildcard regex match.
    Regards,
    Cyrus
    barrie wrote:
    Hi Cyrus
    No, sorry. The rules say you can't do that. You are required to have a
    certificate for a node not a network.
    Regards
    Barrie
    On 2005-08-05, CM <[email protected]> wrote:
    Is there any way I can use a wildcard SSL certificate like:
    *.mycompany.com
    in my TTA server?
    I was able to run all the cert commands successfully using the
    *.mycompany.com cert:
    Generated the CSR (tarantella security certrequest)
    Installed the Cert File (tarantella security certuse)
    Installed the Chained CA cert (tarantella security customca)
    Review/validate certinfo (tarantella security certinfo)
    The TTA-installed Apache webserver was fine with the wildcard certificate
    since I was able to goto:
    https://subdomain.mycompany.com (FYI, the subdomain is NOT "www")
    But after I went to:
    https://subdomain.mycompany.com/tarantella/
    I got the following errors in my Java Console:
    Secure Global Desktop 4.10.903: Connecting to Secure Global Desktop
    server...
    Secure Global Desktop 4.10.903: Using secure connection to
    Secure Global Desktop server subdomain.mycompany.com:443
    Secure Global Desktop 4.10.903: Certificate (*.mycompany.com) not accepted
    for this Secure Global Desktop server (subdomain.mycompany.com) due to
    name
    mismatch.
    Secure Global Desktop 4.10.903: Client dropping connection.
    Secure Global Desktop 4.10.903: Unable to connect: Certificate
    (*.mycompany.com) not accepted for this Secure Global Desktop server
    (subdomain.mycompany.com) due to name mismatch.
    Secure Global Desktop 4.10.903: Missing negotiation feature cgi script
    Is there a way that I can get the applet to do a regex-ish match on thename
    for wildcard certs?
    Cyrus

  • Relinking where the filename has changed but tape name is the same, can it be done?

    Should it be possible to relink to media based on matching tape name?
    So i have X files in a folder, each has a unique tape name. Then some of those files are regenerated with different filenames but the tape name remains the same. I was naively assuming that the relocate dialogue, if you had tape name checked and nothing else would then match the files name for name and find them automatically.
    That doesn't seem to be the case.
    So am i wrong? Or is there a way of relinking several hundred files where the filename may change - how can i get premiere to relink to a file other than exact filename match?
    thanks
    Paul

    Hi Fuzzy!
    I did look at that but it's a large extra step that wouldn't be ideal. The idea is that i need a timeline just changing as files are updated in the background, i don't want to have an extra workflow step in there. I can probably arrange it so the filenames don't change (not ideal) but the key is that the linking dialogue appears to suggest that i should be able to relink using tape name but it just doesn't appear to work.
    If i relink one of the files then i'd expect PPro to go off any find any other missing ones based on the tape name, but nope...
    thanks anyway
    cheers
    Paul

  • Filename autocomplete in ksh

    We're migrating from HPUX to Solaris and have gotten used to the filename completion feature (ESC-ESC) in HP's ksh. Is there a way to enable this in Sun's ksh?

    Hi,
    You can use ESC-ESC in sun's ksh also . please use M-ESC for File name completion. Replaces the current word with the longest common prefix of all filenames matching the current word with an asterisk appended.
    Please see "man ksh" for further clarifications.
    Hope this helps.
    Thanks & Regards,
    Dhanasekar.

  • Problem with regex being used to filter filenames ...

    I wrote a simple FilenameFilter that takes a regular expression (String) in it's constructor. It uses that regex to determine which files to return when a directory is read using the listFiles(FilenameFilter) syntax.
    The problem I'm having is probably with my regex. If I use a regex like ".*[.]xml", the filter appears to work as I would expect: I get only files that end in XML.
    If on the other hand I try to do a little more complex regex to get all the files that don't end in ".xml", it seems to match everything.
    In my code, I am doing the following:
                    // Only deal with files that don't end in XML
                    fileList = dir.listFiles(new RegexFilenameFilter(".*[.](?!xml).*$"));Where I'm using the regex ".*[.](?!xml).*$", which should match any string that doesn't end with .xml.
    My RegexFilenameFilter follows:
    * RegexFilenameFilter.java
    * Created on May 26, 2006, 10:27 AM
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package com.jmmdhs.util;
    import java.io.File;
    import java.io.FilenameFilter;
    import java.util.regex.Pattern;
    import org.apache.log4j.Logger;
    * Regular Expression FilenameFilter - allows filtering directory by regex.
    public class RegexFilenameFilter implements FilenameFilter {
        private static final Logger logger = Logger.getLogger(RegexFilenameFilter.class);
        private String patternString = null;
        private Pattern regexPattern; 
         * Constructor that takes a String containing the regex for matching
         * @param regexString Regular expression string.
        public RegexFilenameFilter(String regexString) {
            logger.debug("Constructing RegexFilenameFilter with expression '" + regexString + "'");
            patternString = regexString;
            regexPattern = Pattern.compile(patternString);
         * Method returns true if the pattern matches.
         * @param directory Directory to match
         * @param fileName Name of the file to match
         * @return Boolean indicating match.
        public boolean accept(File directory, String fileName) {
            return regexPattern.matcher(fileName).matches();     
    }

    public static void main(String args[])
            ArrayList<String> al = new ArrayList<String>();
            al.add( "sfsd.txt" );
            al.add( "dfde.doc" );
            al.add( "sfsd.xml" );
            al.add( "sfsd.txt" );
            al.add( "win.xml" );
            Iterator i = al.iterator();
            while ( i.hasNext() )
                String s = (String) i.next();
                if ( s.endsWith( ".xml" ) )
                    System.out.println( s );
        }

  • Regular expression containing - don't match

    Dears,
    I have some folders & files created with timestamp in their names.
    Example:
    2005-07-25-16-13-22-hello
    2005-07-15-16-13-20-name.txt
    What I want is to make a filter so that when I call File.listFile( filter ), I get the folder matching some criterion, matching prefix, as suffix, or anywere.
    I want to get folders with specific dates like i.e. starts with 2005-07-25 as example and ignore the other, so I match between the name of the folder & accepted format
    I know I can use startWith, endsWith, indexOf , but I want to use regular expression
    In my filter I use the following expression but didn't work:
    regExp = "(2005-07-25){1,}." for matching as prefix
    regExp = ".(2005-07-25){1,}" for matching as suffix
    regExp = ".(2005-07-25){1,}." for matching anywhere
    and I use:
    boolean isMatch = fileName.matches( regExp );but it never return true for valid folder or file names.
    I think the problem is that the timestamp I use contains - which is internally used by regular expression and I think causing this problem, can anyone suggest a solution?
    Thanks in advance.

    I got the * part
    regExp = "(2005-07-25){1,}*"for matching as prefix
    regExp = "*(2005-07-25){1,}"for matching as suffix
    regExp = "*(2005-07-25){1,}*"for matching anywhere
    I didn't get the () part, I just use the () for grouping that I want to match this date at least once using {1,} what I need is to match exactly "2005-07-25" which seems not working so far.
    plz clarify what u mean
    Thanks, best regards

  • Write to spreadsheet only if filename is different

    Dear all,
    I am trying to write some codes but to no avail. Basically, i have a filename coming in at every time interval (say 2 sec). I have build a small array as an example.
    The filenames in the array are repetitive and i do not want to write the data to the spreadsheet  if the filename is the same.
    Bascially, i need to write the header and array only for 1st c:\1.txt file and subequent c:\1.txt data (3 more) i only want to write the array only (no header) and append it to spreadsheet.
    That is to say for c:\1.txt file, it will consist of 1 header and 4 sets  of array.
    Then the process repeats again till a newfilename (c:\2.txt) is encountered.
    c:\2.txt will also consist of 1 header and 4 sets of data.
    Can anyone help out on this?
    Solved!
    Go to Solution.
    Attachments:
    snip.png ‏9 KB
    Untitled 2.vi ‏11 KB

    The shift register will only work if the last filename matches.  If you want to make sure it was not used before, you need to compare with all previous filenames that were used.
    See code snippet below:
    Message Edited by Ray.R on 04-15-2010 08:27 AM
    Attachments:
    writeSprdShtCdtnl.png ‏34 KB

  • Windows 7 VERY slow browsing and creating folders

    Hi!
    I'm having a rather strange problem with Windows 7 RC.  I've noticed that browsing folders is generally slower than in WinXP, but still acceptable.  But lately I'm having a lot of difficulties moving files, creating folders, renaming folders and files, and even waiting for an Explorer window to refresh after some external app has created or modified a file.  Sometimes I have to wait up to 30 seconds for a new folder to be created, and another 10 or 15 after I rename it (from "New Folder" to whatever else).
    This does not happen in every folder in my HDD, but I don't know exactly in which ones.  I thought it was the indexed folders, so I removed a few from the Windows Indexing database, and they were still slow (after system reboot and all).  Then I thought it would probably happen in folders that are part of a library, so I removed them and the problem was still there.  I can't think of another reason for this to happen in some folders and not others.  It seems to happen in my frequently used folders, which honestly sucks.
    Just for the record, here's my system's specs:
    Dell Inspiron 9400 laptop (e1705), late 2006 model
    2GB DDR2 667 ram
    320 GB 7200 rpm seagate HDD, aftermarket (really fast drive, not the problem here)
    Intel Core Duo (Centrino Duo) 2.0GHZ
    Windows 7 RC, multiboot with WinXP
    Thanks!!!

    For the benefit of those who are being driven nuts with SLLOOOWWWW Explorer 'Problems', I list the methodology which has worked for me.
    As always, 'Use at Own Risk' and 'Your Mileage May Vary'.
    Do NOT repeat NOT perform these steps unless youfully understand the ramifications and are prepared to live with the consequences.
    BACKUP FIRST !!! - Create a RESTORE POINT!
    The latest incarnations of Windows attempt to 'out-think' the user in order to provide a 'Better Computing Experience', and that is well and good for the average Joe-Blow, but NOT what the Power-User wants or expects.  There are MANY suggestions as
    to the cause and solution(s) for slow Explorer response, but we have to remember just how much work is going on behind the scenes.
    Much of that work is to provide 'pretty' screen enhancements and to make for 'simpler' Searching.  By foregoing some of these we can reclaim quite a lot of CPU cycles and Disk I/O for our own (Applications) use.
    Before you embark on any changes, carefully assess just how you use your PC. - How important are Thumbnails? - What value does Content View really provide? - Can you implement a Folder structure and File-Naming convention which makes Snippets and Content
    indexing of little use?
    You'll still be able to see local thumbnails if that's what you want, they will just be remade each time you open the folder and select Thumbnail (Large Icon) View.  This is usually less bothersome than the time loss of having a 'Master' Thumbnail
    cache maintained and updated for every file operation.
    Certainly, some 3rd Party 'add-ons' (Power Archiver for one! & similar) may cause problems, as can poorly configured A/V programs (realtime checking of Notepad for instance, every time it is opened??? Why not bring back the old innoculate method?) -
    but I digress.
    For many, the slow Explorer problem exists without any of the suspects / causes mentioned in previous Posts, or elsewhere online.
    I repeat: 'This methodology has worked for me - Your Mileage May Vary'.
    Now for the fun & games:
    Kill the time and resource hog 'Indexing Services' - Plenty of advice on how to do that is available online.
    DISALLOW Indexing on all volumes.
    To retain the ability to search for my files, I have been using the Search Everything tool from:
    http://www.voidtools.com/ which searches ONLY on local or removable NTFS volumes. (ie NOT FAT32 USB Drives!)  But that poses very little problem when I examine my real-world use of any Search Tool.
    SE needs Administrator privileges for its low-level file-system access, certainly not an issue to have a responsive Global Search at your fingertips.
    With 34.5 Gb (> 137,000 files in > 20,000 folders) on HDD, and 627 Gb (> 2,300,000 files in > 82,500 folders) on a Portable USB Drive, Search Everything has about 74Kb RAM usage and the db file is 10.5 Mb on disk - not a huge overhead.
    The initial run occupied about 10 minutes of my setting options and less than 5 minutes for the building of the database.
    The online FAQ has plenty of information including how to use wildcards, Path Matching, boolean operators and regex use.
    With a lean mean responsive search at hand, now to clobber some more of the 'features' which are supposed to 'help' us in our computing experience...
    Big Guns Time!
    Start Group Policy Editor -
    Start > Run > gpedit.msc
    Navigate to:
    Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > Windows Explorer
    Locate and ENABLE the settings as listed:
    1. Turn off the display of thumbnails and only display icons on network folders
    Disables the display of thumbnails on network folders in Windows Explorer.
    Windows Explorer displays thumbnails on network folders by default.
    If you enable this policy. Windows Explorer will only display icons and never display thumbnails on network folders.
    That gets rid of the first time-waster - Network access is slow enough without adding the extra traffic for thumbnails, and many PCs are stand-alone anyway.
    2. Turn off the caching of thumbnails in hidden thumbs.db files.
    Turns off the caching of thumbnails in hidden thumbs.db files.
    This policy setting allows you to configure Windows Explorer to cache thumbnails of items residing in network folders in hidden thumbs.db files.
    If you enable this policy setting, Windows Explorer does not create, read from, or write to thumbs.db files.
    If you disable or do not configure this policy setting, Windows Explorer creates, reads from, and writes to thumbs.db files.
    This goes hand-in hand with 1.
    3. Turn off Windows Libraries features that rely on indexed file data
    This policy setting allows you to turn off Windows Libraries features that need indexed file metadata to function properly. If you enable this policy, some Windows Libraries features will be turned off to better handle included folders that have been
    redirected to non-indexed network locations. Setting this policy will:
    * Disable all Arrangement views except for "By Folder"
    * Disable all Search filter suggestions other than "Date Modified" and "Size"
    * Disable view of file content snippets in Content mode when search results are returned
    * Disable ability to stack in the Context menu and Column headers
    * Exclude Libraries from the scope of Start search
    This policy will not enable users to add unsupported locations to Libraries.
    If you enable this policy, Windows Libraries features that rely on indexed file data will be disabled.
    If you disable or do not configure this policy, all default Window Libraries features will be enabled.
    Well, with Indexing turned OFF, this one is a real no-brainer, isn't it?
    4. Turn off the display of snippets in Content view mode
    Disables the display of snippets when Content view mode is turned on.
    Windows Explorer shows snippets in Content view mode by default.
    If you enable this policy, Windows Explorer will not display snippets in Content view mode.
    That stops peeking into every file and trying to decode the snippet - MORE time-saving.
    5. Turn off caching of thumbnail pictures
    This setting controls whether the thumbnail views are cached.
    If you enable this setting, thumbnail views are not cached.
    If you disable or do not configure this setting, thumbnail views are cached.
    Note: For shared corporate workstations or computers where security is a top concern, you should enable this setting to turn off the thumbnail view cache, because the thumbnail cache can be read by everyone.
    It (IMHO) is faster to generate the thumbnails as needed (for my usage anyway), rather than to be attempting to maintain a global cache each time a file is created, modified, deleted or moved.
    This completely cuts out the thumbnail caching overheads, and makes quite an impressive speed difference.  Even on an old 1.7 GHz Laptop with 2 Gb RAM and an Intel 915GM Graphics Card (NOT the best choice for Win 7 by any means!).
    6. Turn off numerical sorting in Windows Explorer
    This policy setting allows you to have file names sorted literally (as in Windows 2000 and earlier) rather than in numerical order.
    If you enable this policy setting, Windows Explorer will sort file names by each digit in a file name (for example, 111 < 22 < 3).
    If you disable or do not configure this policy setting, Windows Explorer will sort file names by increasing number value (for example, 3 < 22 < 111).
    Do I REALLY want to waste the time on this procedure? If I want to sequence my files, I'll prefix the filenames with 0's - 003 < 022 < 111. Not a problem!
    Subjectively, these changes make for a much more responsive system.
    Objectively, moving over 2.3 Gb (7,500+ files) via 'Drag & Drop' from HDD to USB Drive shrank from 12 Mins+ to about 8 Mins. Explorer did NOT 'freeze', and I could freely change the displayed folders in both the Source and Target Explorer windows.
    I hope that this is of use to others, it has served me well for the last several months.
    A few minor delays when wanting thumbnail views, but certainly FAR LESS DELAY than before the changes, and
    no more stalled Explorer.
    2010: - Windows? - MAC OS X? - LINUX? - UBUNTU? - 1982: - Commodore C=64? - Amiga? - BBC Micro? - Apple II? - Same old play, only the actors have changed.

  • ACE Startup-config file location

    Hello,
    I was reading the ACE docs and it sounds like the startup-config file should be listed under disk0: but I don't see it there. Can someone point out where the startup-config file is.
    Thanks
    Mike

    Hi MICHAEL,
    Upon startup, the ACE loads the startup-configuration file stored in Flash memory (nonvolatile memory) to the running-configuration file stored in RAM (volatile memory). When you partition your ACE into multiple contexts, each context contains its own startup-configuration file.
    Flash memory stores the startup-configuration files for each existing context. When you create a new context, the ACE creates a new context directory in Flash memory to store the context-specific startup-configuration files. When you copy a configuration file from the ACE, you create a copy of the configuration information of the context from where you executed the command.
    To display the directory contents of a specified file system, use the dir command in Exec mode. This command displays a detailed list of directories and files contained within the specified file system on the ACE, including names, sizes, and time created. You may optionally specify the name of a directory to list.
    The syntax for this command is:
    dir {core: | disk0:[directory/][filename] | image:[filename] | probe:[filename] | volatile:[filename]}
    The keywords and arguments are:
    •core:-Displays the contents of the core: file system.
    •disk0:-Displays the contents of the disk0: file system.
    •image:-Displays the contents of the image: file system.
    •probe:-Displays the contents of the probe: file system. This directory contains the Cisco-supplied scripts. For more information about these scripts, see the Cisco 4700 Series Application Control Engine Appliance Server Load-Balancing Configuration Guide.
    •volatile:-Displays the contents of the volatile: file system.
    •directory/-(Optional) Contents of the specified directory.
    •filename-(Optional) Information that relates to the specified file, such as the file size and the date it was created. You can use wildcards in the filename. A wildcard character (*) matches all patterns. Strings after a wildcard are ignored.
    For example, to list the files in the disk0: file system, enter:
    host1/Admin# dir disk0:
    host/Admin# dir disk0:
    7465 Jan 03 00:13:22 2007 C2_dsb
    2218 Mar 07 18:38:03 2007 ECHO_PROBE_SCRIPT4
    1024 Feb 16 12:47:24 2007 core_copies_dsb/
    1024 Jan 01 00:02:07 2007 cv/
    1024 Mar 13 13:53:08 2007 dsb_dir/
    12 Jan 30 17:54:26 2007 messages
    7843 Mar 09 22:19:56 2007 running-config
    4320 Jan 05 14:37:52 2007 startup-config
    1024 Jan 01 00:02:28 2007 www/
    Usage for disk0: filesystem
    4254720 bytes total used
    6909952 bytes free
    For example, to list the core dump files in Flash memory, enter:
    host1/Admin# dir core:
    253151 Mar 14 21:23:33 2007 0x401_vsh_log.8249.tar.gz
    262711 Mar 15 21:22:18 2007 0x401_vsh_log.15592.tar.gz
    250037 Mar 15 18:35:27 2007 0x401_vsh_log.16296.tar.gz
    Usage for core: filesystem
    1847296 bytes total used
    64142336 bytes free
    65989632 bytes available

  • LVM Volumes not available after update

    Hi All!
    I haven't updated my system for about two months and today I updated it. Now I have the problem that I cannot boot properly. I have my root partition in an LVM volume and on boot I get the message
    ERROR: device 'UUID=xxx' not found. Skipping fs
    ERROR: Unable to find root device 'UUID=xxx'
    After that I land in the recovery shell. After some research I found, that "lvm lvdisplay" showed that my volumes where not available and I had to reenable them with "lvm vgchange -a y".
    Issuing any lvm command also produced the following warning:
    WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
    Anyway, after issuing the commands and exiting the recovery shell, the system booted again. However, I would prefer being able to boot without manual actions.
    Thanks in advance!
    Further information:
    vgdisplay
    --- Volume group ---
    VG Name ArchLVM
    System ID
    Format lvm2
    Metadata Areas 1
    Metadata Sequence No 3
    VG Access read/write
    VG Status resizable
    MAX LV 0
    Cur LV 2
    Open LV 1
    Max PV 0
    Cur PV 1
    Act PV 1
    VG Size 232.69 GiB
    PE Size 4.00 MiB
    Total PE 59568
    Alloc PE / Size 59568 / 232.69 GiB
    Free PE / Size 0 / 0
    VG UUID SoB3M1-v1fD-1abI-PNJ3-6IOn-FfdI-0RoLK5
    lvdisplay (LV Status was 'not available' right after booting)
    --- Logical volume ---
    LV Path /dev/ArchLVM/Swap
    LV Name Swap
    VG Name ArchLVM
    LV UUID XRYBrz-LojR-k6SD-XIxV-wHnY-f3VG-giKL6V
    LV Write Access read/write
    LV Creation host, time archiso, 2014-05-16 14:43:06 +0200
    LV Status available
    # open 0
    LV Size 8.00 GiB
    Current LE 2048
    Segments 1
    Allocation inherit
    Read ahead sectors auto
    - currently set to 256
    Block device 254:0
    --- Logical volume ---
    LV Path /dev/ArchLVM/Root
    LV Name Root
    VG Name ArchLVM
    LV UUID lpjDl4-Jqzu-ZWkq-Uphc-IaOo-6Rzd-cIh5yv
    LV Write Access read/write
    LV Creation host, time archiso, 2014-05-16 14:43:27 +0200
    LV Status available
    # open 1
    LV Size 224.69 GiB
    Current LE 57520
    Segments 1
    Allocation inherit
    Read ahead sectors auto
    - currently set to 256
    Block device 254:1
    /etc/fstab
    # /etc/fstab: static file system information
    # <file system> <dir> <type> <options> <dump> <pass>
    # /dev/mapper/ArchLVM-Root
    UUID=2db82d1a-47a4-4e30-a819-143e8fb75199 / ext4 rw,relatime,data=ordered 0 1
    #/dev/mapper/ArchLVM-Root / ext4 rw,relatime,data=ordered 0 1
    # /dev/sda1
    UUID=72691888-a781-4cdd-a98e-2613d87925d0 /boot ext2 rw,relatime 0 2
    /etc/mkinitcpio.conf
    # vim:set ft=sh
    # MODULES
    # The following modules are loaded before any boot hooks are
    # run. Advanced users may wish to specify all system modules
    # in this array. For instance:
    # MODULES="piix ide_disk reiserfs"
    MODULES=""
    # BINARIES
    # This setting includes any additional binaries a given user may
    # wish into the CPIO image. This is run last, so it may be used to
    # override the actual binaries included by a given hook
    # BINARIES are dependency parsed, so you may safely ignore libraries
    BINARIES=""
    # FILES
    # This setting is similar to BINARIES above, however, files are added
    # as-is and are not parsed in any way. This is useful for config files.
    FILES=""
    # HOOKS
    # This is the most important setting in this file. The HOOKS control the
    # modules and scripts added to the image, and what happens at boot time.
    # Order is important, and it is recommended that you do not change the
    # order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
    # help on a given hook.
    # 'base' is _required_ unless you know precisely what you are doing.
    # 'udev' is _required_ in order to automatically load modules
    # 'filesystems' is _required_ unless you specify your fs modules in MODULES
    # Examples:
    ## This setup specifies all modules in the MODULES setting above.
    ## No raid, lvm2, or encrypted root is needed.
    # HOOKS="base"
    ## This setup will autodetect all modules for your system and should
    ## work as a sane default
    # HOOKS="base udev autodetect block filesystems"
    ## This setup will generate a 'full' image which supports most systems.
    ## No autodetection is done.
    # HOOKS="base udev block filesystems"
    ## This setup assembles a pata mdadm array with an encrypted root FS.
    ## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
    # HOOKS="base udev block mdadm encrypt filesystems"
    ## This setup loads an lvm2 volume group on a usb device.
    # HOOKS="base udev block lvm2 filesystems"
    ## NOTE: If you have /usr on a separate partition, you MUST include the
    # usr, fsck and shutdown hooks.
    HOOKS="base udev autodetect modconf block lvm2 filesystems keyboard fsck"
    # COMPRESSION
    # Use this to compress the initramfs image. By default, gzip compression
    # is used. Use 'cat' to create an uncompressed image.
    #COMPRESSION="gzip"
    #COMPRESSION="bzip2"
    #COMPRESSION="lzma"
    #COMPRESSION="xz"
    #COMPRESSION="lzop"
    #COMPRESSION="lz4"
    # COMPRESSION_OPTIONS
    # Additional options for the compressor
    #COMPRESSION_OPTIONS=""
    /boot/grub/grub.cfg
    # DO NOT EDIT THIS FILE
    # It is automatically generated by grub-mkconfig using templates
    # from /etc/grub.d and settings from /etc/default/grub
    ### BEGIN /etc/grub.d/00_header ###
    insmod part_gpt
    insmod part_msdos
    if [ -s $prefix/grubenv ]; then
    load_env
    fi
    if [ "${next_entry}" ] ; then
    set default="${next_entry}"
    set next_entry=
    save_env next_entry
    set boot_once=true
    else
    set default="0"
    fi
    if [ x"${feature_menuentry_id}" = xy ]; then
    menuentry_id_option="--id"
    else
    menuentry_id_option=""
    fi
    export menuentry_id_option
    if [ "${prev_saved_entry}" ]; then
    set saved_entry="${prev_saved_entry}"
    save_env saved_entry
    set prev_saved_entry=
    save_env prev_saved_entry
    set boot_once=true
    fi
    function savedefault {
    if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
    fi
    function load_video {
    if [ x$feature_all_video_module = xy ]; then
    insmod all_video
    else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
    fi
    if [ x$feature_default_font_path = xy ] ; then
    font=unicode
    else
    insmod part_msdos
    insmod lvm
    insmod ext2
    set root='lvmid/SoB3M1-v1fD-1abI-PNJ3-6IOn-FfdI-0RoLK5/lpjDl4-Jqzu-ZWkq-Uphc-IaOo-6Rzd-cIh5yv'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint='lvmid/SoB3M1-v1fD-1abI-PNJ3-6IOn-FfdI-0RoLK5/lpjDl4-Jqzu-ZWkq-Uphc-IaOo-6Rzd-cIh5yv' 2db82d1a-47a4-4e30-a819-143e8fb75199
    else
    search --no-floppy --fs-uuid --set=root 2db82d1a-47a4-4e30-a819-143e8fb75199
    fi
    font="/usr/share/grub/unicode.pf2"
    fi
    if loadfont $font ; then
    set gfxmode=auto
    load_video
    insmod gfxterm
    fi
    terminal_input console
    terminal_output gfxterm
    if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=5
    # Fallback normal timeout code in case the timeout_style feature is
    # unavailable.
    else
    set timeout=5
    fi
    ### END /etc/grub.d/00_header ###
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2db82d1a-47a4-4e30-a819-143e8fb75199' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 72691888-a781-4cdd-a98e-2613d87925d0
    else
    search --no-floppy --fs-uuid --set=root 72691888-a781-4cdd-a98e-2613d87925d0
    fi
    echo 'Loading Linux linux ...'
    linux /vmlinuz-linux root=UUID=2db82d1a-47a4-4e30-a819-143e8fb75199 rw quiet
    echo 'Loading initial ramdisk ...'
    initrd /initramfs-linux.img
    submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-2db82d1a-47a4-4e30-a819-143e8fb75199' {
    menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-2db82d1a-47a4-4e30-a819-143e8fb75199' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 72691888-a781-4cdd-a98e-2613d87925d0
    else
    search --no-floppy --fs-uuid --set=root 72691888-a781-4cdd-a98e-2613d87925d0
    fi
    echo 'Loading Linux linux ...'
    linux /vmlinuz-linux root=UUID=2db82d1a-47a4-4e30-a819-143e8fb75199 rw quiet
    echo 'Loading initial ramdisk ...'
    initrd /initramfs-linux.img
    menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-2db82d1a-47a4-4e30-a819-143e8fb75199' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 72691888-a781-4cdd-a98e-2613d87925d0
    else
    search --no-floppy --fs-uuid --set=root 72691888-a781-4cdd-a98e-2613d87925d0
    fi
    echo 'Loading Linux linux ...'
    linux /vmlinuz-linux root=UUID=2db82d1a-47a4-4e30-a819-143e8fb75199 rw quiet
    echo 'Loading initial ramdisk ...'
    initrd /initramfs-linux-fallback.img
    ### END /etc/grub.d/10_linux ###
    ### BEGIN /etc/grub.d/20_linux_xen ###
    ### END /etc/grub.d/20_linux_xen ###
    ### BEGIN /etc/grub.d/30_os-prober ###
    ### END /etc/grub.d/30_os-prober ###
    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries. Simply type the
    # menu entries you want to add after this comment. Be careful not to change
    # the 'exec tail' line above.
    ### END /etc/grub.d/40_custom ###
    ### BEGIN /etc/grub.d/41_custom ###
    if [ -f ${config_directory}/custom.cfg ]; then
    source ${config_directory}/custom.cfg
    elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
    source $prefix/custom.cfg;
    fi
    ### END /etc/grub.d/41_custom ###
    ### BEGIN /etc/grub.d/60_memtest86+ ###
    ### END /etc/grub.d/60_memtest86+ ###
    Last edited by Kirodema (2014-07-16 07:31:34)

    use_lvmetad = 0
    lvm2-lvmetad is not enabled or running on my system. Shall I activate it?
    # This is an example configuration file for the LVM2 system.
    # It contains the default settings that would be used if there was no
    # /etc/lvm/lvm.conf file.
    # Refer to 'man lvm.conf' for further information including the file layout.
    # To put this file in a different directory and override /etc/lvm set
    # the environment variable LVM_SYSTEM_DIR before running the tools.
    # N.B. Take care that each setting only appears once if uncommenting
    # example settings in this file.
    # This section allows you to set the way the configuration settings are handled.
    config {
    # If enabled, any LVM2 configuration mismatch is reported.
    # This implies checking that the configuration key is understood
    # by LVM2 and that the value of the key is of a proper type.
    # If disabled, any configuration mismatch is ignored and default
    # value is used instead without any warning (a message about the
    # configuration key not being found is issued in verbose mode only).
    checks = 1
    # If enabled, any configuration mismatch aborts the LVM2 process.
    abort_on_errors = 0
    # Directory where LVM looks for configuration profiles.
    profile_dir = "/etc/lvm/profile"
    # This section allows you to configure which block devices should
    # be used by the LVM system.
    devices {
    # Where do you want your volume groups to appear ?
    dir = "/dev"
    # An array of directories that contain the device nodes you wish
    # to use with LVM2.
    scan = [ "/dev" ]
    # If set, the cache of block device nodes with all associated symlinks
    # will be constructed out of the existing udev database content.
    # This avoids using and opening any inapplicable non-block devices or
    # subdirectories found in the device directory. This setting is applied
    # to udev-managed device directory only, other directories will be scanned
    # fully. LVM2 needs to be compiled with udev support for this setting to
    # take effect. N.B. Any device node or symlink not managed by udev in
    # udev directory will be ignored with this setting on.
    obtain_device_list_from_udev = 1
    # If several entries in the scanned directories correspond to the
    # same block device and the tools need to display a name for device,
    # all the pathnames are matched against each item in the following
    # list of regular expressions in turn and the first match is used.
    preferred_names = [ ]
    # Try to avoid using undescriptive /dev/dm-N names, if present.
    # preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]
    # A filter that tells LVM2 to only use a restricted set of devices.
    # The filter consists of an array of regular expressions. These
    # expressions can be delimited by a character of your choice, and
    # prefixed with either an 'a' (for accept) or 'r' (for reject).
    # The first expression found to match a device name determines if
    # the device will be accepted or rejected (ignored). Devices that
    # don't match any patterns are accepted.
    # Be careful if there there are symbolic links or multiple filesystem
    # entries for the same device as each name is checked separately against
    # the list of patterns. The effect is that if the first pattern in the
    # list to match a name is an 'a' pattern for any of the names, the device
    # is accepted; otherwise if the first pattern in the list to match a name
    # is an 'r' pattern for any of the names it is rejected; otherwise it is
    # accepted.
    # Don't have more than one filter line active at once: only one gets used.
    # Run vgscan after you change this parameter to ensure that
    # the cache file gets regenerated (see below).
    # If it doesn't do what you expect, check the output of 'vgscan -vvvv'.
    # If lvmetad is used, then see "A note about device filtering while
    # lvmetad is used" comment that is attached to global/use_lvmetad setting.
    # By default we accept every block device:
    filter = [ "a/.*/" ]
    # Exclude the cdrom drive
    # filter = [ "r|/dev/cdrom|" ]
    # When testing I like to work with just loopback devices:
    # filter = [ "a/loop/", "r/.*/" ]
    # Or maybe all loops and ide drives except hdc:
    # filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
    # Use anchors if you want to be really specific
    # filter = [ "a|^/dev/hda8$|", "r/.*/" ]
    # Since "filter" is often overridden from command line, it is not suitable
    # for system-wide device filtering (udev rules, lvmetad). To hide devices
    # from LVM-specific udev processing and/or from lvmetad, you need to set
    # global_filter. The syntax is the same as for normal "filter"
    # above. Devices that fail the global_filter are not even opened by LVM.
    # global_filter = []
    # The results of the filtering are cached on disk to avoid
    # rescanning dud devices (which can take a very long time).
    # By default this cache is stored in the /etc/lvm/cache directory
    # in a file called '.cache'.
    # It is safe to delete the contents: the tools regenerate it.
    # (The old setting 'cache' is still respected if neither of
    # these new ones is present.)
    # N.B. If obtain_device_list_from_udev is set to 1 the list of
    # devices is instead obtained from udev and any existing .cache
    # file is removed.
    cache_dir = "/etc/lvm/cache"
    cache_file_prefix = ""
    # You can turn off writing this cache file by setting this to 0.
    write_cache_state = 1
    # Advanced settings.
    # List of pairs of additional acceptable block device types found
    # in /proc/devices with maximum (non-zero) number of partitions.
    # types = [ "fd", 16 ]
    # If sysfs is mounted (2.6 kernels) restrict device scanning to
    # the block devices it believes are valid.
    # 1 enables; 0 disables.
    sysfs_scan = 1
    # By default, LVM2 will ignore devices used as component paths
    # of device-mapper multipath devices.
    # 1 enables; 0 disables.
    multipath_component_detection = 1
    # By default, LVM2 will ignore devices used as components of
    # software RAID (md) devices by looking for md superblocks.
    # 1 enables; 0 disables.
    md_component_detection = 1
    # By default, if a PV is placed directly upon an md device, LVM2
    # will align its data blocks with the md device's stripe-width.
    # 1 enables; 0 disables.
    md_chunk_alignment = 1
    # Default alignment of the start of a data area in MB. If set to 0,
    # a value of 64KB will be used. Set to 1 for 1MiB, 2 for 2MiB, etc.
    # default_data_alignment = 1
    # By default, the start of a PV's data area will be a multiple of
    # the 'minimum_io_size' or 'optimal_io_size' exposed in sysfs.
    # - minimum_io_size - the smallest request the device can perform
    # w/o incurring a read-modify-write penalty (e.g. MD's chunk size)
    # - optimal_io_size - the device's preferred unit of receiving I/O
    # (e.g. MD's stripe width)
    # minimum_io_size is used if optimal_io_size is undefined (0).
    # If md_chunk_alignment is enabled, that detects the optimal_io_size.
    # This setting takes precedence over md_chunk_alignment.
    # 1 enables; 0 disables.
    data_alignment_detection = 1
    # Alignment (in KB) of start of data area when creating a new PV.
    # md_chunk_alignment and data_alignment_detection are disabled if set.
    # Set to 0 for the default alignment (see: data_alignment_default)
    # or page size, if larger.
    data_alignment = 0
    # By default, the start of the PV's aligned data area will be shifted by
    # the 'alignment_offset' exposed in sysfs. This offset is often 0 but
    # may be non-zero; e.g.: certain 4KB sector drives that compensate for
    # windows partitioning will have an alignment_offset of 3584 bytes
    # (sector 7 is the lowest aligned logical block, the 4KB sectors start
    # at LBA -1, and consequently sector 63 is aligned on a 4KB boundary).
    # But note that pvcreate --dataalignmentoffset will skip this detection.
    # 1 enables; 0 disables.
    data_alignment_offset_detection = 1
    # If, while scanning the system for PVs, LVM2 encounters a device-mapper
    # device that has its I/O suspended, it waits for it to become accessible.
    # Set this to 1 to skip such devices. This should only be needed
    # in recovery situations.
    ignore_suspended_devices = 0
    # ignore_lvm_mirrors: Introduced in version 2.02.104
    # This setting determines whether logical volumes of "mirror" segment
    # type are scanned for LVM labels. This affects the ability of
    # mirrors to be used as physical volumes. If 'ignore_lvm_mirrors'
    # is set to '1', it becomes impossible to create volume groups on top
    # of mirror logical volumes - i.e. to stack volume groups on mirrors.
    # Allowing mirror logical volumes to be scanned (setting the value to '0')
    # can potentially cause LVM processes and I/O to the mirror to become
    # blocked. This is due to the way that the "mirror" segment type handles
    # failures. In order for the hang to manifest itself, an LVM command must
    # be run just after a failure and before the automatic LVM repair process
    # takes place OR there must be failures in multiple mirrors in the same
    # volume group at the same time with write failures occurring moments
    # before a scan of the mirror's labels.
    # Note that these scanning limitations do not apply to the LVM RAID
    # types, like "raid1". The RAID segment types handle failures in a
    # different way and are not subject to possible process or I/O blocking.
    # It is encouraged that users set 'ignore_lvm_mirrors' to 1 if they
    # are using the "mirror" segment type. Users that require volume group
    # stacking on mirrored logical volumes should consider using the "raid1"
    # segment type. The "raid1" segment type is not available for
    # active/active clustered volume groups.
    # Set to 1 to disallow stacking and thereby avoid a possible deadlock.
    ignore_lvm_mirrors = 1
    # During each LVM operation errors received from each device are counted.
    # If the counter of a particular device exceeds the limit set here, no
    # further I/O is sent to that device for the remainder of the respective
    # operation. Setting the parameter to 0 disables the counters altogether.
    disable_after_error_count = 0
    # Allow use of pvcreate --uuid without requiring --restorefile.
    require_restorefile_with_uuid = 1
    # Minimum size (in KB) of block devices which can be used as PVs.
    # In a clustered environment all nodes must use the same value.
    # Any value smaller than 512KB is ignored.
    # Ignore devices smaller than 2MB such as floppy drives.
    pv_min_size = 2048
    # The original built-in setting was 512 up to and including version 2.02.84.
    # pv_min_size = 512
    # Issue discards to a logical volumes's underlying physical volume(s) when
    # the logical volume is no longer using the physical volumes' space (e.g.
    # lvremove, lvreduce, etc). Discards inform the storage that a region is
    # no longer in use. Storage that supports discards advertise the protocol
    # specific way discards should be issued by the kernel (TRIM, UNMAP, or
    # WRITE SAME with UNMAP bit set). Not all storage will support or benefit
    # from discards but SSDs and thinly provisioned LUNs generally do. If set
    # to 1, discards will only be issued if both the storage and kernel provide
    # support.
    # 1 enables; 0 disables.
    issue_discards = 0
    # This section allows you to configure the way in which LVM selects
    # free space for its Logical Volumes.
    allocation {
    # When searching for free space to extend an LV, the "cling"
    # allocation policy will choose space on the same PVs as the last
    # segment of the existing LV. If there is insufficient space and a
    # list of tags is defined here, it will check whether any of them are
    # attached to the PVs concerned and then seek to match those PV tags
    # between existing extents and new extents.
    # Use the special tag "@*" as a wildcard to match any PV tag.
    # Example: LVs are mirrored between two sites within a single VG.
    # PVs are tagged with either @site1 or @site2 to indicate where
    # they are situated.
    # cling_tag_list = [ "@site1", "@site2" ]
    # cling_tag_list = [ "@*" ]
    # Changes made in version 2.02.85 extended the reach of the 'cling'
    # policies to detect more situations where data can be grouped
    # onto the same disks. Set this to 0 to revert to the previous
    # algorithm.
    maximise_cling = 1
    # Whether to use blkid library instead of native LVM2 code to detect
    # any existing signatures while creating new Physical Volumes and
    # Logical Volumes. LVM2 needs to be compiled with blkid wiping support
    # for this setting to take effect.
    # LVM2 native detection code is currently able to recognize these signatures:
    # - MD device signature
    # - swap signature
    # - LUKS signature
    # To see the list of signatures recognized by blkid, check the output
    # of 'blkid -k' command. The blkid can recognize more signatures than
    # LVM2 native detection code, but due to this higher number of signatures
    # to be recognized, it can take more time to complete the signature scan.
    use_blkid_wiping = 1
    # Set to 1 to wipe any signatures found on newly-created Logical Volumes
    # automatically in addition to zeroing of the first KB on the LV
    # (controlled by the -Z/--zero y option).
    # The command line option -W/--wipesignatures takes precedence over this
    # setting.
    # The default is to wipe signatures when zeroing.
    wipe_signatures_when_zeroing_new_lvs = 1
    # Set to 1 to guarantee that mirror logs will always be placed on
    # different PVs from the mirror images. This was the default
    # until version 2.02.85.
    mirror_logs_require_separate_pvs = 0
    # Set to 1 to guarantee that cache_pool metadata will always be
    # placed on different PVs from the cache_pool data.
    cache_pool_metadata_require_separate_pvs = 0
    # Specify the minimal chunk size (in kiB) for cache pool volumes.
    # Using a chunk_size that is too large can result in wasteful use of
    # the cache, where small reads and writes can cause large sections of
    # an LV to be mapped into the cache. However, choosing a chunk_size
    # that is too small can result in more overhead trying to manage the
    # numerous chunks that become mapped into the cache. The former is
    # more of a problem than the latter in most cases, so we default to
    # a value that is on the smaller end of the spectrum. Supported values
    # range from 32(kiB) to 1048576 in multiples of 32.
    # cache_pool_chunk_size = 64
    # Set to 1 to guarantee that thin pool metadata will always
    # be placed on different PVs from the pool data.
    thin_pool_metadata_require_separate_pvs = 0
    # Specify chunk size calculation policy for thin pool volumes.
    # Possible options are:
    # "generic" - if thin_pool_chunk_size is defined, use it.
    # Otherwise, calculate the chunk size based on
    # estimation and device hints exposed in sysfs:
    # the minimum_io_size. The chunk size is always
    # at least 64KiB.
    # "performance" - if thin_pool_chunk_size is defined, use it.
    # Otherwise, calculate the chunk size for
    # performance based on device hints exposed in
    # sysfs: the optimal_io_size. The chunk size is
    # always at least 512KiB.
    # thin_pool_chunk_size_policy = "generic"
    # Specify the minimal chunk size (in KB) for thin pool volumes.
    # Use of the larger chunk size may improve performance for plain
    # thin volumes, however using them for snapshot volumes is less efficient,
    # as it consumes more space and takes extra time for copying.
    # When unset, lvm tries to estimate chunk size starting from 64KB
    # Supported values are in range from 64 to 1048576.
    # thin_pool_chunk_size = 64
    # Specify discards behaviour of the thin pool volume.
    # Select one of "ignore", "nopassdown", "passdown"
    # thin_pool_discards = "passdown"
    # Set to 0, to disable zeroing of thin pool data chunks before their
    # first use.
    # N.B. zeroing larger thin pool chunk size degrades performance.
    # thin_pool_zero = 1
    # This section that allows you to configure the nature of the
    # information that LVM2 reports.
    log {
    # Controls the messages sent to stdout or stderr.
    # There are three levels of verbosity, 3 being the most verbose.
    verbose = 0
    # Set to 1 to suppress all non-essential messages from stdout.
    # This has the same effect as -qq.
    # When this is set, the following commands still produce output:
    # dumpconfig, lvdisplay, lvmdiskscan, lvs, pvck, pvdisplay,
    # pvs, version, vgcfgrestore -l, vgdisplay, vgs.
    # Non-essential messages are shifted from log level 4 to log level 5
    # for syslog and lvm2_log_fn purposes.
    # Any 'yes' or 'no' questions not overridden by other arguments
    # are suppressed and default to 'no'.
    silent = 0
    # Should we send log messages through syslog?
    # 1 is yes; 0 is no.
    syslog = 1
    # Should we log error and debug messages to a file?
    # By default there is no log file.
    #file = "/var/log/lvm2.log"
    # Should we overwrite the log file each time the program is run?
    # By default we append.
    overwrite = 0
    # What level of log messages should we send to the log file and/or syslog?
    # There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
    # 7 is the most verbose (LOG_DEBUG).
    level = 0
    # Format of output messages
    # Whether or not (1 or 0) to indent messages according to their severity
    indent = 1
    # Whether or not (1 or 0) to display the command name on each line output
    command_names = 0
    # A prefix to use before the message text (but after the command name,
    # if selected). Default is two spaces, so you can see/grep the severity
    # of each message.
    prefix = " "
    # To make the messages look similar to the original LVM tools use:
    # indent = 0
    # command_names = 1
    # prefix = " -- "
    # Set this if you want log messages during activation.
    # Don't use this in low memory situations (can deadlock).
    # activation = 0
    # Some debugging messages are assigned to a class and only appear
    # in debug output if the class is listed here.
    # Classes currently available:
    # memory, devices, activation, allocation, lvmetad, metadata, cache,
    # locking
    # Use "all" to see everything.
    debug_classes = [ "memory", "devices", "activation", "allocation",
    "lvmetad", "metadata", "cache", "locking" ]
    # Configuration of metadata backups and archiving. In LVM2 when we
    # talk about a 'backup' we mean making a copy of the metadata for the
    # *current* system. The 'archive' contains old metadata configurations.
    # Backups are stored in a human readable text format.
    backup {
    # Should we maintain a backup of the current metadata configuration ?
    # Use 1 for Yes; 0 for No.
    # Think very hard before turning this off!
    backup = 1
    # Where shall we keep it ?
    # Remember to back up this directory regularly!
    backup_dir = "/etc/lvm/backup"
    # Should we maintain an archive of old metadata configurations.
    # Use 1 for Yes; 0 for No.
    # On by default. Think very hard before turning this off.
    archive = 1
    # Where should archived files go ?
    # Remember to back up this directory regularly!
    archive_dir = "/etc/lvm/archive"
    # What is the minimum number of archive files you wish to keep ?
    retain_min = 10
    # What is the minimum time you wish to keep an archive file for ?
    retain_days = 30
    # Settings for the running LVM2 in shell (readline) mode.
    shell {
    # Number of lines of history to store in ~/.lvm_history
    history_size = 100
    # Miscellaneous global LVM2 settings
    global {
    # The file creation mask for any files and directories created.
    # Interpreted as octal if the first digit is zero.
    umask = 077
    # Allow other users to read the files
    #umask = 022
    # Enabling test mode means that no changes to the on disk metadata
    # will be made. Equivalent to having the -t option on every
    # command. Defaults to off.
    test = 0
    # Default value for --units argument
    units = "h"
    # Since version 2.02.54, the tools distinguish between powers of
    # 1024 bytes (e.g. KiB, MiB, GiB) and powers of 1000 bytes (e.g.
    # KB, MB, GB).
    # If you have scripts that depend on the old behaviour, set this to 0
    # temporarily until you update them.
    si_unit_consistency = 1
    # Whether or not to display unit suffix for sizes. This setting has
    # no effect if the units are in human-readable form (global/units="h")
    # in which case the suffix is always displayed.
    suffix = 1
    # Whether or not to communicate with the kernel device-mapper.
    # Set to 0 if you want to use the tools to manipulate LVM metadata
    # without activating any logical volumes.
    # If the device-mapper kernel driver is not present in your kernel
    # setting this to 0 should suppress the error messages.
    activation = 1
    # If we can't communicate with device-mapper, should we try running
    # the LVM1 tools?
    # This option only applies to 2.4 kernels and is provided to help you
    # switch between device-mapper kernels and LVM1 kernels.
    # The LVM1 tools need to be installed with .lvm1 suffices
    # e.g. vgscan.lvm1 and they will stop working after you start using
    # the new lvm2 on-disk metadata format.
    # The default value is set when the tools are built.
    # fallback_to_lvm1 = 0
    # The default metadata format that commands should use - "lvm1" or "lvm2".
    # The command line override is -M1 or -M2.
    # Defaults to "lvm2".
    # format = "lvm2"
    # Location of proc filesystem
    proc = "/proc"
    # Type of locking to use. Defaults to local file-based locking (1).
    # Turn locking off by setting to 0 (dangerous: risks metadata corruption
    # if LVM2 commands get run concurrently).
    # Type 2 uses the external shared library locking_library.
    # Type 3 uses built-in clustered locking.
    # Type 4 uses read-only locking which forbids any operations that might
    # change metadata.
    # N.B. Don't use lvmetad with locking type 3 as lvmetad is not yet
    # supported in clustered environment. If use_lvmetad=1 and locking_type=3
    # is set at the same time, LVM always issues a warning message about this
    # and then it automatically disables lvmetad use.
    locking_type = 1
    # Set to 0 to fail when a lock request cannot be satisfied immediately.
    wait_for_locks = 1
    # If using external locking (type 2) and initialisation fails,
    # with this set to 1 an attempt will be made to use the built-in
    # clustered locking.
    # If you are using a customised locking_library you should set this to 0.
    fallback_to_clustered_locking = 1
    # If an attempt to initialise type 2 or type 3 locking failed, perhaps
    # because cluster components such as clvmd are not running, with this set
    # to 1 an attempt will be made to use local file-based locking (type 1).
    # If this succeeds, only commands against local volume groups will proceed.
    # Volume Groups marked as clustered will be ignored.
    fallback_to_local_locking = 1
    # Local non-LV directory that holds file-based locks while commands are
    # in progress. A directory like /tmp that may get wiped on reboot is OK.
    locking_dir = "/run/lock/lvm"
    # Whenever there are competing read-only and read-write access requests for
    # a volume group's metadata, instead of always granting the read-only
    # requests immediately, delay them to allow the read-write requests to be
    # serviced. Without this setting, write access may be stalled by a high
    # volume of read-only requests.
    # NB. This option only affects locking_type = 1 viz. local file-based
    # locking.
    prioritise_write_locks = 1
    # Other entries can go here to allow you to load shared libraries
    # e.g. if support for LVM1 metadata was compiled as a shared library use
    # format_libraries = "liblvm2format1.so"
    # Full pathnames can be given.
    # Search this directory first for shared libraries.
    # library_dir = "/lib"
    # The external locking library to load if locking_type is set to 2.
    # locking_library = "liblvm2clusterlock.so"
    # Treat any internal errors as fatal errors, aborting the process that
    # encountered the internal error. Please only enable for debugging.
    abort_on_internal_errors = 0
    # Check whether CRC is matching when parsed VG is used multiple times.
    # This is useful to catch unexpected internal cached volume group
    # structure modification. Please only enable for debugging.
    detect_internal_vg_cache_corruption = 0
    # If set to 1, no operations that change on-disk metadata will be permitted.
    # Additionally, read-only commands that encounter metadata in need of repair
    # will still be allowed to proceed exactly as if the repair had been
    # performed (except for the unchanged vg_seqno).
    # Inappropriate use could mess up your system, so seek advice first!
    metadata_read_only = 0
    # 'mirror_segtype_default' defines which segtype will be used when the
    # shorthand '-m' option is used for mirroring. The possible options are:
    # "mirror" - The original RAID1 implementation provided by LVM2/DM. It is
    # characterized by a flexible log solution (core, disk, mirrored)
    # and by the necessity to block I/O while reconfiguring in the
    # event of a failure.
    # There is an inherent race in the dmeventd failure handling
    # logic with snapshots of devices using this type of RAID1 that
    # in the worst case could cause a deadlock.
    # Ref: https://bugzilla.redhat.com/show_bug.cgi?id=817130#c10
    # "raid1" - This implementation leverages MD's RAID1 personality through
    # device-mapper. It is characterized by a lack of log options.
    # (A log is always allocated for every device and they are placed
    # on the same device as the image - no separate devices are
    # required.) This mirror implementation does not require I/O
    # to be blocked in the kernel in the event of a failure.
    # This mirror implementation is not cluster-aware and cannot be
    # used in a shared (active/active) fashion in a cluster.
    # Specify the '--type <mirror|raid1>' option to override this default
    # setting.
    mirror_segtype_default = "raid1"
    # 'raid10_segtype_default' determines the segment types used by default
    # when the '--stripes/-i' and '--mirrors/-m' arguments are both specified
    # during the creation of a logical volume.
    # Possible settings include:
    # "raid10" - This implementation leverages MD's RAID10 personality through
    # device-mapper.
    # "mirror" - LVM will layer the 'mirror' and 'stripe' segment types. It
    # will do this by creating a mirror on top of striped sub-LVs;
    # effectively creating a RAID 0+1 array. This is suboptimal
    # in terms of providing redundancy and performance. Changing to
    # this setting is not advised.
    # Specify the '--type <raid10|mirror>' option to override this default
    # setting.
    raid10_segtype_default = "raid10"
    # The default format for displaying LV names in lvdisplay was changed
    # in version 2.02.89 to show the LV name and path separately.
    # Previously this was always shown as /dev/vgname/lvname even when that
    # was never a valid path in the /dev filesystem.
    # Set to 1 to reinstate the previous format.
    # lvdisplay_shows_full_device_path = 0
    # Whether to use (trust) a running instance of lvmetad. If this is set to
    # 0, all commands fall back to the usual scanning mechanisms. When set to 1
    # *and* when lvmetad is running (automatically instantiated by making use of
    # systemd's socket-based service activation or run as an initscripts service
    # or run manually), the volume group metadata and PV state flags are obtained
    # from the lvmetad instance and no scanning is done by the individual
    # commands. In a setup with lvmetad, lvmetad udev rules *must* be set up for
    # LVM to work correctly. Without proper udev rules, all changes in block
    # device configuration will be *ignored* until a manual 'pvscan --cache'
    # is performed. These rules are installed by default.
    # If lvmetad has been running while use_lvmetad was 0, it MUST be stopped
    # before changing use_lvmetad to 1 and started again afterwards.
    # If using lvmetad, the volume activation is also switched to automatic
    # event-based mode. In this mode, the volumes are activated based on
    # incoming udev events that automatically inform lvmetad about new PVs
    # that appear in the system. Once the VG is complete (all the PVs are
    # present), it is auto-activated. The activation/auto_activation_volume_list
    # setting controls which volumes are auto-activated (all by default).
    # A note about device filtering while lvmetad is used:
    # When lvmetad is updated (either automatically based on udev events
    # or directly by pvscan --cache <device> call), the devices/filter
    # is ignored and all devices are scanned by default. The lvmetad always
    # keeps unfiltered information which is then provided to LVM commands
    # and then each LVM command does the filtering based on devices/filter
    # setting itself.
    # To prevent scanning devices completely, even when using lvmetad,
    # the devices/global_filter must be used.
    # N.B. Don't use lvmetad with locking type 3 as lvmetad is not yet
    # supported in clustered environment. If use_lvmetad=1 and locking_type=3
    # is set at the same time, LVM always issues a warning message about this
    # and then it automatically disables lvmetad use.
    use_lvmetad = 0
    # Full path of the utility called to check that a thin metadata device
    # is in a state that allows it to be used.
    # Each time a thin pool needs to be activated or after it is deactivated
    # this utility is executed. The activation will only proceed if the utility
    # has an exit status of 0.
    # Set to "" to skip this check. (Not recommended.)
    # The thin tools are available as part of the device-mapper-persistent-data
    # package from https://github.com/jthornber/thin-provisioning-tools.
    # thin_check_executable = "/usr/bin/thin_check"
    # Array of string options passed with thin_check command. By default,
    # option "-q" is for quiet output.
    # With thin_check version 2.1 or newer you can add "--ignore-non-fatal-errors"
    # to let it pass through ignorable errors and fix them later.
    # thin_check_options = [ "-q" ]
    # Full path of the utility called to repair a thin metadata device
    # is in a state that allows it to be used.
    # Each time a thin pool needs repair this utility is executed.
    # See thin_check_executable how to obtain binaries.
    # thin_repair_executable = "/usr/bin/thin_repair"
    # Array of extra string options passed with thin_repair command.
    # thin_repair_options = [ "" ]
    # Full path of the utility called to dump thin metadata content.
    # See thin_check_executable how to obtain binaries.
    # thin_dump_executable = "/usr/bin/thin_dump"
    # If set, given features are not used by thin driver.
    # This can be helpful not just for testing, but i.e. allows to avoid
    # using problematic implementation of some thin feature.
    # Features:
    # block_size
    # discards
    # discards_non_power_2
    # external_origin
    # metadata_resize
    # external_origin_extend
    # thin_disabled_features = [ "discards", "block_size" ]
    activation {
    # Set to 1 to perform internal checks on the operations issued to
    # libdevmapper. Useful for debugging problems with activation.
    # Some of the checks may be expensive, so it's best to use this
    # only when there seems to be a problem.
    checks = 0
    # Set to 0 to disable udev synchronisation (if compiled into the binaries).
    # Processes will not wait for notification from udev.
    # They will continue irrespective of any possible udev processing
    # in the background. You should only use this if udev is not running
    # or has rules that ignore the devices LVM2 creates.
    # The command line argument --nodevsync takes precedence over this setting.
    # If set to 1 when udev is not running, and there are LVM2 processes
    # waiting for udev, run 'dmsetup udevcomplete_all' manually to wake them up.
    udev_sync = 1
    # Set to 0 to disable the udev rules installed by LVM2 (if built with
    # --enable-udev_rules). LVM2 will then manage the /dev nodes and symlinks
    # for active logical volumes directly itself.
    # N.B. Manual intervention may be required if this setting is changed
    # while any logical volumes are active.
    udev_rules = 1
    # Set to 1 for LVM2 to verify operations performed by udev. This turns on
    # additional checks (and if necessary, repairs) on entries in the device
    # directory after udev has completed processing its events.
    # Useful for diagnosing problems with LVM2/udev interactions.
    verify_udev_operations = 0
    # If set to 1 and if deactivation of an LV fails, perhaps because
    # a process run from a quick udev rule temporarily opened the device,
    # retry the operation for a few seconds before failing.
    retry_deactivation = 1
    # How to fill in missing stripes if activating an incomplete volume.
    # Using "error" will make inaccessible parts of the device return
    # I/O errors on access. You can instead use a device path, in which
    # case, that device will be used to in place of missing stripes.
    # But note that using anything other than "error" with mirrored
    # or snapshotted volumes is likely to result in data corruption.
    missing_stripe_filler = "error"
    # The linear target is an optimised version of the striped target
    # that only handles a single stripe. Set this to 0 to disable this
    # optimisation and always use the striped target.
    use_linear_target = 1
    # How much stack (in KB) to reserve for use while devices suspended
    # Prior to version 2.02.89 this used to be set to 256KB
    reserved_stack = 64
    # How much memory (in KB) to reserve for use while devices suspended
    reserved_memory = 8192
    # Nice value used while devices suspended
    process_priority = -18
    # If volume_list is defined, each LV is only activated if there is a
    # match against the list.
    # "vgname" and "vgname/lvname" are matched exactly.
    # "@tag" matches any tag set in the LV or VG.
    # "@*" matches if any tag defined on the host is also set in the LV or VG
    # If any host tags exist but volume_list is not defined, a default
    # single-entry list containing "@*" is assumed.
    # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
    # If auto_activation_volume_list is defined, each LV that is to be
    # activated with the autoactivation option (--activate ay/-a ay) is
    # first checked against the list. There are two scenarios in which
    # the autoactivation option is used:
    # - automatic activation of volumes based on incoming PVs. If all the
    # PVs making up a VG are present in the system, the autoactivation
    # is triggered. This requires lvmetad (global/use_lvmetad=1) and udev
    # to be running. In this case, "pvscan --cache -aay" is called
    # automatically without any user intervention while processing
    # udev events. Please, make sure you define auto_activation_volume_list
    # properly so only the volumes you want and expect are autoactivated.
    # - direct activation on command line with the autoactivation option.
    # In this case, the user calls "vgchange --activate ay/-a ay" or
    # "lvchange --activate ay/-a ay" directly.
    # By default, the auto_activation_volume_list is not defined and all
    # volumes will be activated either automatically or by using --activate ay/-a ay.
    # N.B. The "activation/volume_list" is still honoured in all cases so even
    # if the VG/LV passes the auto_activation_volume_list, it still needs to
    # pass the volume_list for it to be activated in the end.
    # If auto_activation_volume_list is defined but empty, no volumes will be
    # activated automatically and --activate ay/-a ay will do nothing.
    # auto_activation_volume_list = []
    # If auto_activation_volume_list is defined and it's not empty, only matching
    # volumes will be activated either automatically or by using --activate ay/-a ay.
    # "vgname" and "vgname/lvname" are matched exactly.
    # "@tag" matches any tag set in the LV or VG.
    # "@*" matches if any tag defined on the host is also set in the LV or VG
    # auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
    # If read_only_volume_list is defined, each LV that is to be activated
    # is checked against the list, and if it matches, it as activated
    # in read-only mode. (This overrides '--permission rw' stored in the
    # metadata.)
    # "vgname" and "vgname/lvname" are matched exactly.
    # "@tag" matches any tag set in the LV or VG.
    # "@*" matches if any tag defined on the host is also set in the LV or VG
    # read_only_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
    # Each LV can have an 'activation skip' flag stored persistently against it.
    # During activation, this flag is used to decide whether such an LV is skipped.
    # The 'activation skip' flag can be set during LV creation and by default it
    # is automatically set for thin snapshot LVs. The 'auto_set_activation_skip'
    # enables or disables this automatic setting of the flag while LVs are created.
    # auto_set_activation_skip = 1
    # For RAID or 'mirror' segment types, 'raid_region_size' is the
    # size (in KiB) of each:
    # - synchronization operation when initializing
    # - each copy operation when performing a 'pvmove' (using 'mirror' segtype)
    # This setting has replaced 'mirror_region_size' since version 2.02.99
    raid_region_size = 512
    # Setting to use when there is no readahead value stored in the metadata.
    # "none" - Disable readahead.
    # "auto" - Use default value chosen by kernel.
    readahead = "auto"
    # 'raid_fault_policy' defines how a device failure in a RAID logical
    # volume is handled. This includes logical volumes that have the following
    # segment types: raid1, raid4, raid5*, and raid6*.
    # In the event of a failure, the following policies will determine what
    # actions are performed during the automated response to failures (when
    # dmeventd is monitoring the RAID logical volume) and when 'lvconvert' is
    # called manually with the options '--repair' and '--use-policies'.
    # "warn" - Use the system log to warn the user that a device in the RAID
    # logical volume has failed. It is left to the user to run
    # 'lvconvert --repair' manually to remove or replace the failed
    # device. As long as the number of failed devices does not
    # exceed the redundancy of the logical volume (1 device for
    # raid4/5, 2 for raid6, etc) the logical volume will remain
    # usable.
    # "allocate" - Attempt to use any extra physical volumes in the volume
    # group as spares and replace faulty devices.
    raid_fault_policy = "warn"
    # 'mirror_image_fault_policy' and 'mirror_log_fault_policy' define
    # how a device failure affecting a mirror (of "mirror" segment type) is
    # handled. A mirror is composed of mirror images (copies) and a log.
    # A disk log ensures that a mirror does not need to be re-synced
    # (all copies made the same) every time a machine reboots or crashes.
    # In the event of a failure, the specified policy will be used to determine
    # what happens. This applies to automatic repairs (when the mirror is being
    # monitored by dmeventd) and to manual lvconvert --repair when
    # --use-policies is given.
    # "remove" - Simply remove the faulty device and run without it. If
    # the log device fails, the mirror would convert to using
    # an in-memory log. This means the mirror will not
    # remember its sync status across crashes/reboots and
    # the entire mirror will be re-synced. If a
    # mirror image fails, the mirror will convert to a
    # non-mirrored device if there is only one remaining good
    # copy.
    # "allocate" - Remove the faulty device and try to allocate space on
    # a new device to be a replacement for the failed device.
    # Using this policy for the log is fast and maintains the
    # ability to remember sync state through crashes/reboots.
    # Using this policy for a mirror device is slow, as it
    # requires the mirror to resynchronize the devices, but it
    # will preserve the mirror characteristic of the device.
    # This policy acts like "remove" if no suitable device and
    # space can be allocated for the replacement.
    # "allocate_anywhere" - Not yet implemented. Useful to place the log device
    # temporarily on same physical volume as one of the mirror
    # images. This policy is not recommended for mirror devices
    # since it would break the redundant nature of the mirror. This
    # policy acts like "remove" if no suitable device and space can
    # be allocated for the replacement.
    mirror_log_fault_policy = "allocate"
    mirror_image_fault_policy = "remove"
    # 'snapshot_autoextend_threshold' and 'snapshot_autoextend_percent' define
    # how to handle automatic snapshot extension. The former defines when the
    # snapshot should be extended: when its space usage exceeds this many
    # percent. The latter defines how much extra space should be allocated for
    # the snapshot, in percent of its current size.
    # For example, if you set snapshot_autoextend_threshold to 70 and
    # snapshot_autoextend_percent to 20, whenever a snapshot exceeds 70% usage,
    # it will be extended by another 20%. For a 1G snapshot, using up 700M will
    # trigger a resize to 1.2G. When the usage exceeds 840M, the snapshot will
    # be extended to 1.44G, and so on.
    # Setting snapshot_autoextend_threshold to 100 disables automatic
    # extensions. The minimum value is 50 (A setting below 50 will be treated
    # as 50).
    snapshot_autoextend_threshold = 100
    snapshot_autoextend_percent = 20
    # 'thin_pool_autoextend_threshold' and 'thin_pool_autoextend_percent' define
    # how to handle automatic pool extension. The former defines when the
    # pool should be extended: when its space usage exceeds this many
    # percent. The latter defines how much extra space should be allocated for
    # the pool, in percent of its current size.
    # For example, if you set thin_pool_autoextend_threshold to 70 and
    # thin_pool_autoextend_percent to 20, whenever a pool exceeds 70% usage,
    # it will be extended by another 20%. For a 1G pool, using up 700M will
    # trigger a resize to 1.2G. When the usage exceeds 840M, the pool will
    # be extended to 1.44G, and so on.
    # Setting thin_pool_autoextend_threshold to 100 disables automatic
    # extensions. The minimum value is 50 (A setting below 50 will be treated
    # as 50).
    thin_pool_autoextend_threshold = 100
    thin_pool_autoextend_percent = 20
    # While activating devices, I/O to devices being (re)configured is
    # suspended, and as a precaution against deadlocks, LVM2 needs to pin
    # any memory it is using so it is not paged out. Groups of pages that
    # are known not to be accessed during activation need not be pinned
    # into memory. Each string listed in this setting is compared against
    # each line in /proc/self/maps, and the pages corresponding to any
    # lines that match are not pinned. On some systems locale-archive was
    # found to make up over 80% of the memory used by the process.
    # mlock_filter = [ "locale/locale-archive", "gconv/gconv-modules.cache" ]
    # Set to 1 to revert to the default behaviour prior to version 2.02.62
    # which used mlockall() to pin the whole process's memory while activating
    # devices.
    use_mlockall = 0
    # Monitoring is enabled by default when activating logical volumes.
    # Set to 0 to disable monitoring or use the --ignoremonitoring option.
    monitoring = 1
    # When pvmove or lvconvert must wait for the kernel to finish
    # synchronising or merging data, they check and report progress
    # at intervals of this number of seconds. The default is 15 seconds.
    # If this is set to 0 and there is only one thing to wait for, there
    # are no progress reports, but the process is awoken immediately the
    # operation is complete.
    polling_interval = 15
    # Report settings.
    # report {
    # Align columns on report output.
    # aligned=1
    # When buffered reporting is used, the report's content is appended
    # incrementally to include each object being reported until the report
    # is flushed to output which normally happens at the end of command
    # execution. Otherwise, if buffering is not used, each object is
    # reported as soon as its processing is finished.
    # buffered=1
    # Show headings for columns on report.
    # headings=1
    # A separator to use on report after each field.
    # separator=" "
    # Use a field name prefix for each field reported.
    # prefixes=0
    # Quote field values when using field name prefixes.
    # quoted=1
    # Output each column as a row. If set, this also implies report/prefixes=1.
    # colums_as_rows=0
    # Comma separated list of columns to sort by when reporting 'lvm devtypes' command.
    # See 'lvm devtypes -o help' for the list of possible fields.
    # devtypes_sort="devtype_name"
    # Comma separated list of columns to report for 'lvm devtypes' command.
    # See 'lvm devtypes -o help' for the list of possible fields.
    # devtypes_cols="devtype_name,devtype_max_partitions,devtype_description"
    # Comma separated list of columns to report for 'lvm devtypes' command in verbose mode.
    # See 'lvm devtypes -o help' for the list of possible fields.
    # devtypes_cols_verbose="devtype_name,devtype_max_partitions,devtype_description"
    # Comma separated list of columns to sort by when reporting 'lvs' command.
    # See 'lvs -o help' for the list of possible fields.
    # lvs_sort="vg_name,lv_name"
    # Comma separated list of columns to report for 'lvs' command.
    # See 'lvs -o help' for the list of possible fields.
    # lvs_cols="lv_name,vg_name,lv_attr,lv_size,pool_lv,origin,data_percent,move_pv,mirror_log,copy_percent,convert_lv"
    # Comma separated list of columns to report for 'lvs' command in verbose mode.
    # See 'lvs -o help' for the list of possible fields.
    # lvs_cols_verbose="lv_name,vg_name,seg_count,lv_attr,lv_size,lv_major,lv_minor,lv_kernel_major,lv_kernel_minor,pool_lv,origin,data_percent,metadata_percent,move_pv,copy_percent,mirror_log,convert
    # Comma separated list of columns to sort by when reporting 'vgs' command.
    # See 'vgs -o help' for the list of possible fields.
    # vgs_sort="vg_name"
    # Comma separated list of columns to report for 'vgs' command.
    # See 'vgs -o help' for the list of possible fields.
    # vgs_cols="vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free"
    # Comma separated list of columns to report for 'vgs' command in verbose mode.
    # See 'vgs -o help' for the list of possible fields.
    # vgs_cols_verbose="vg_name,vg_attr,vg_extent_size,pv_count,lv_count,snap_count,vg_size,vg_free,vg_uuid,vg_profile"
    # Comma separated list of columns to sort by when reporting 'pvs' command.
    # See 'pvs -o help' for the list of possible fields.
    # pvs_sort="pv_name"
    # Comma separated list of columns to report for 'pvs' command.
    # See 'pvs -o help' for the list of possible fields.
    # pvs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free"
    # Comma separated list of columns to report for 'pvs' command in verbose mode.
    # See 'pvs -o help' for the list of possible fields.
    # pvs_cols_verbose="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,dev_size,pv_uuid"
    # Comma separated list of columns to sort by when reporting 'lvs --segments' command.
    # See 'lvs --segments -o help' for the list of possible fields.
    # segs_sort="vg_name,lv_name,seg_start"
    # Comma separated list of columns to report for 'lvs --segments' command.
    # See 'lvs --segments -o help' for the list of possible fields.
    # segs_cols="lv_name,vg_name,lv_attr,stripes,segtype,seg_size"
    # Comma separated list of columns to report for 'lvs --segments' command in verbose mode.
    # See 'lvs --segments -o help' for the list of possible fields.
    # segs_cols_verbose="lv_name,vg_name,lv_attr,seg_start,seg_size,stripes,segtype,stripesize,chunksize"
    # Comma separated list of columns to sort by when reporting 'pvs --segments' command.
    # See 'pvs --segments -o help' for the list of possible fields.
    # pvsegs_sort="pv_name,pvseg_start"
    # Comma separated list of columns to sort by when reporting 'pvs --segments' command.
    # See 'pvs --segments -o help' for the list of possible fields.
    # pvsegs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size"
    # Comma separated list of columns to sort by when reporting 'pvs --segments' command in verbose mode.
    # See 'pvs --segments -o help' for the list of possible fields.
    # pvsegs_cols_verbose="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size,lv_name,seg_start_pe,segtype,seg_pe_ranges"
    # Advanced section #
    # Metadata settings
    # metadata {
    # Default number of copies of metadata to hold on each PV. 0, 1 or 2.
    # You might want to override it from the command line with 0
    # when running pvcreate on new PVs which are to be added to large VGs.
    # pvmetadatacopies = 1
    # Default number of copies of metadata to maintain for each VG.
    # If set to a non-zero value, LVM automatically chooses which of
    # the available metadata areas to use to achieve the requested
    # number of copies of the VG metadata. If you set a value larger
    # than the the total number of metadata areas available then
    # metadata is stored in them all.
    # The default value of 0 ("unmanaged") disables this automatic
    # management and allows you to control which metadata areas
    # are used at the individual PV level using 'pvchange
    # --metadataignore y/n'.
    # vgmetadatacopies = 0
    # Approximate default size of on-disk metadata areas in sectors.
    # You should increase this if you have large volume groups or
    # you want to retain a large on-disk history of your metadata changes.
    # pvmetadatasize = 255
    # List of directories holding live copies of text format metadata.
    # These directories must not be on logical volumes!
    # It's possible to use LVM2 with a couple of directories here,
    # preferably on different (non-LV) filesystems, and with no other
    # on-disk metadata (pvmetadatacopies = 0). Or this can be in
    # addition to on-disk metadata areas.
    # The feature was originally added to simplify testing and is not
    # supported under low memory situations - the machine could lock up.
    # Never edit any files in these directories by hand unless you
    # you are absolutely sure you know what you are doing! Use
    # the supplied toolset to make changes (e.g. vgcfgrestore).
    # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
    # Event daemon
    dmeventd {
    # mirror_library is the library used when monitoring a mirror device.
    # "libdevmapper-event-lvm2mirror.so" attempts to recover from
    # failures. It removes failed devices from a volume group and
    # reconfigures a mirror as necessary. If no mirror library is
    # provided, mirrors are not monitored through dmeventd.
    mirror_library = "libdevmapper-event-lvm2mirror.so"
    # snapshot_library is the library used when monitoring a snapshot device.
    # "libdevmapper-event-lvm2snapshot.so" monitors the filling of
    # snapshots and emits a warning through syslog when the use of
    # the snapshot exceeds 80%. The warning is repeated when 85%, 90% and
    # 95% of the snapshot is filled.
    snapshot_library = "libdevmapper-event-lvm2snapshot.so"
    # thin_library is the library used when monitoring a thin device.
    # "libdevmapper-event-lvm2thin.so" monitors the filling of
    # pool and emits a warning through syslog when the use of
    # the pool exceeds 80%. The warning is repeated when 85%, 90% and
    # 95% of the pool is filled.
    thin_library = "libdevmapper-event-lvm2thin.so"
    # Full path of the dmeventd binary.
    # executable = "/usr/sbin/dmeventd"

  • Ironport Whitelist and related questions

    Hi all,
    I have recently started at a new position for a company that is utilising ironport as the email spam filtering/virus checking appliance.
    Almost immediately after starting in my position issues were being discussed, where the senderbase reputation scoring was marking a sister companies mail as spam - obviously due to a bad reputation.
    It was important that these mails were delivered and the obvious answer seemed to be to whitelist the domains, which was implemented by another support person. After the whitelist setting was applied though the mails were still be rejected due to being suspected spam - there is no quarantine setup.
    Today I logged into the boxes to see if I could syslog the mail logs to a seperate linux server and suddenly got wrapped up in this problem. I had a look and could see the domains in the whitelist section within the HAT, after doing some reading I can confirm the whitelist section was ordered as being number 1 in the list and by looking further it looks like the whitelist domains were via the 'add to sender group' button within the monitoring overview screens (this is assumed as both .sistercompany.com and sistercompany.com were appended to the whitelist).
    After a few hours of reading up I couldn't understand why the whitelist wasn't working, I even did a lookup of the domain in the monitoring overview search section for mail recieved by sistercompany.com and could see that it belonged in the whitelist group. I got further confused when reading the help and support guide - it had screenshots that looked very similar to our setup [within the HAT overview and Mail Policies], however it had an sbrs for the whitelist set between 6 and 10, where as that was blank on our system, nowhere in the document would it describe why this sbrs value was set. Bearing in mind I have only had a few hours of experience with this product, so these maybe silly questions but:
    Why would you add an sbrs value to the whitelist - I would have thought whitelists would ignore any score presented.
    If number 1 has nothing to do with why these domains were still being flagged as spam, has anyone got any suggestions as to what the issue maybe?
    For a small bit of information we have the C660 appliances installed.
    Any help would be much appreciated

    I'm taking a wild guess here since there are a lot of missing details. Forgive me if I'm covering ground you've already trod.
    Remember that the HAT controls how incoming SMTP connections are handled, so entries in the HAT must correspond to the remote SMTP servers that are connecting to you. You don't put the "domain" part of "user@domain" in the HAT ("sistercompany.com" in your case), you put in the the domain names of the actual remote SMTP servers or a wildcard that matches them all. In your case, this might be ".sistercompay.com" (note the leading "." indicating that this will match any domain name ending with ".sistercompany.com"), but only if their SMTP servers have host names in that domain.
    Whitlisting by domain name requires that the IP addresses of those remote SMTP servers have correct rDNS. If they don't, you'll have to list them in the HAT by IP address. FYI, we never put anything in the HAT by IP address unless it is unavoidable. Using domain names and requiring correct rDNS forces good DNS hygiene, and also provides a layer of abstraction. The server's address can change, but so long as the DNS is kept up to date we don't have to change our HAT entries.
    You can see from the mail logs what sender group is being applied on each SMTP connection. Find one of the rejected messages in the log and see what sender group its connection landed in. If it didn't land in the whitelist (which will almost certainly be the case, given that the message was not in fact whitelisted), then you know the HAT entry is wrong. You can also use the log to determine the actual domain name of the remote server, assuming the rDNS for its IP address is correct.
    The example screenshot in the manual showing SBRS between 6 and 10 being whitelisted is demonstrating that you can whitelist by SBRS as well as by explicit listing in the sender group. Your whitelist simply isn't doing this, which is fine. In this age of rampant spamming from stolen accounts on reputable servers, whitelisting by SBRS can let spam in. We raised the lower limit from 6 to 8 several years ago after getting hit in this exact way.
    ++Don

Maybe you are looking for

  • Open PDF in browser causes blank error box (Windows 7)

    I just freshly installed Windows 7 today. I then installed Adobe Design Premium CS4, including Adobe Acrobat Pro. I use IE8 and Firefox 3.6. FYI, this problem does not occur in Windows Vista or lower...only Windows 7. The problem is that when I click

  • OMDO - Authorization on plant

    Hello all, I am one question on OMD0 transaction. I want to secure the access per plant to this transaction. The authority check is only in the object S_TABU_DIS for today. Does everyone can help me ? Thanks !

  • Setting up a 02 pay as you go

    Hi all. i'm having real trouble trying to set up my pay as you go with o2 on the ipad. its the o2 3g card for £10 a month but the o2 wensite is no use to me of explaining how i set this account up as it would be nice to leave my house and browse the

  • Close budget for previous years

    Hi, The system Iu2019m working on has commitments management active, so when I create a purchase requisition or purchase order, the budget is affected. Iu2019ve noticed that the field that determines the year relevant for budget availability is the d

  • Location of the 'Folders' Component?

    Hi All, I'm trying to install the Folders component but I'm unable to figure out where it is. In the guide I'm using it says: Folders - You can find this component in the \extras directory of the Content Server 10gR3 distribution package. Make sure t