XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. raider600
    R
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 12
    • Groups 0

    raider600

    @raider600

    2
    Reputation
    1
    Profile views
    12
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online

    raider600 Unfollow Follow

    Best posts made by raider600

    • RE: Starting XO error

      @Danp It wasnt a VM. I dedicated a whole PC to debian and XO. But I was completely clueless as to what I was doing. I am off and running now though. Thank you

      posted in Xen Orchestra
      R
      raider600

    Latest posts made by raider600

    • RE: XCP-ng Windows PV tools 9.0.9030 Testsign released: now with Rust-based Xen Guest Agent

      @Greg_E said in XCP-ng Windows PV tools 9.0.9030 Testsign released: now with Rust-based Xen Guest Agent:

      @raider600

      Move the shared file to a NAS/SAN and map the drive letter to the clients?

      An 8TB drive size is going to be all kinds of unhappy if you want to snapshot or backup that VM.

      Exception to this might be a large database that needs fast access to the data, but even there I would expect some kind of shared storage to be at least as fast as a giant VM.

      I understand. I've been thinking about it. But the windows VM would just see the VDI as a second disk. It will host quickbooks and office files with no virtual machines on the storage drive.

      They said to test it, so I did. I may be a corner case, but its testing nonetheless. Worst case I could just do two different VDI's at 2TB each if i decide on xcp-ng.

      posted in Development
      R
      raider600
    • RE: XCP-ng Windows PV tools 9.0.9030 Testsign released: now with Rust-based Xen Guest Agent

      @dinhngtu Thank you for your help. Please see this thread. https://xcp-ng.org/forum/post/90424
      I am using windows server 2025, with the new Alpha to remove the 2TB limit with qcows. I am experiencing a significant speed degradation using your drivers here and the 'official' Xen drivers. My post include videos with details.
      My reason for testing this is, we are an SMB with a windows share of 8TB on a server. I would like to move to xcp-ng while being able to use this large volume for our file share. Any ideas?

      posted in Development
      R
      raider600
    • RE: New install - Login screen blank

      This is solved. What I ended up doing was installing ubuntu and doing the whole install as root. Thanks for the help, I hope I can use XOA in the future!

      posted in Xen Orchestra
      R
      raider600
    • RE: New install - Login screen blank

      @Danp Well I dont think I ever got to that step. haha. This is bumming me out. I want to use XOA. But I need proof of concept before we buy it.

      posted in Xen Orchestra
      R
      raider600
    • RE: New install - Login screen blank

      @ph7 Thanks for that. but it didnt work. funny when trying to restart the xo-server.service it fails and says service not found. Im only trying to get it to run with yarn start in the packages/xo-server dir. Here is a screen shot of the networking tab in the developer window of the browser. looks like its missing some stuff. hah
      66293d17-d63f-4d3f-8df7-5f68f85ab95c-image.png

      posted in Xen Orchestra
      R
      raider600
    • RE: New install - Login screen blank

      @DustinB said in New install - Login screen blank:

      @raider600 said in New install - Login screen blank:

      @DustinB Ive restarted a few times though no dice. It's almost like something isnt unpacking or running. 😞

      In the URL does it show /v6 at the tail end?

      Im just using the ip address. no https either. So no i dont think it has a v6 at the end. but im also not 100% sure i know what you mean. lol

      posted in Xen Orchestra
      R
      raider600
    • RE: New install - Login screen blank

      @DustinB Ive restarted a few times though no dice. It's almost like something isnt unpacking or running. 😞

      posted in Xen Orchestra
      R
      raider600
    • RE: New install - Login screen blank

      @olivierlambert Thank you. I believe I found the server logs... I dont know where to find the build logs.

      Node - v22.14.0
      npm - 10.9.2

      #!/usr/bin/env node
      import appConf from 'app-conf';
      import execPromise from 'exec-promise';
      import get from 'lodash/get.js';
      import highland from 'highland';
      import levelup from 'level-party';
      import ndjson from 'ndjson';
      import parseArgs from 'minimist';
      import sublevel from 'subleveldown';
      import util from 'util';
      import { forEach } from './utils.mjs';
      import globMatcher from './glob-matcher.mjs';
      const getLogs = (db, args) => {
        let stream = highland(db.createReadStream({
          reverse: true
        }));
        if (args.since) {
          stream = stream.filter(({
            value
          }) => value.time >= args.since);
        }
        if (args.until) {
          stream = stream.filter(({
            value
          }) => value.time <= args.until);
        }
        const fields = Object.keys(args.matchers);
        if (fields.length > 0) {
          stream = stream.filter(({
            value
          }) => {
            for (const field of fields) {
              const fieldValue = get(value, field);
              if (!args.matchers[field](fieldValue)) {
                return false;
              }
            }
            return true;
          });
        }
        return stream.take(args.limit);
      };
      const deleteLogs = (db, args) => new Promise(resolve => {
        let nDeleted = 0;
        let nRunning = 1;
        const cb = () => {
          if (--nRunning === 0) {
            console.log(nDeleted.toLocaleString(), 'deleted entries');
            resolve();
          }
        };
        const deleteEntry = key => {
          ++nDeleted;
          ++nRunning;
          db.del(key, cb);
        };
        getLogs(db, args).each(({
          key
        }) => {
          deleteEntry(key);
        }).done(cb);
      });
      const GC_KEEP = 2e4;
      const gc = (db, args) => new Promise((resolve, reject) => {
        let keep = GC_KEEP;
        let count = 1;
        const cb = () => {
          if (--count === 0) {
            resolve();
          }
        };
        const stream = db.createKeyStream({
          reverse: true
        });
        const deleteEntry = key => {
          ++count;
          db.del(key, cb);
        };
        let onData = keep !== 0 ? () => {
          if (--keep === 0) {
            stream.removeListener('data', onData);
            onData = deleteEntry;
            stream.on('data', onData);
          }
        } : deleteEntry;
        const onEnd = () => {
          console.log('end');
          removeListeners();
          cb();
        };
        const onError = error => {
          console.log('error');
          removeListeners();
          reject(error);
        };
        const removeListeners = () => {
          stream.removeListener('data', onData).removeListener('end', onEnd).removeListener('error', onError);
        };
        stream.on('data', onData).on('end', onEnd).on('error', onError);
      });
      async function printLogs(db, args) {
        let stream = getLogs(db, args);
        if (args.json) {
          stream = highland(stream.pipe(ndjson.stringify())).each(value => {
            process.stdout.write(value);
          });
        } else {
          stream = stream.each(value => {
            console.log(util.inspect(value, {
              depth: null
            }));
          });
        }
        return new Promise(resolve => {
          stream.done(resolve);
        });
      }
      function helper() {
        console.error(`
      xo-server-logs --help, -h
      
          Display this help message.
      
      xo-server-logs [--json] [--limit=<limit>] [--since=<date>] [--until=<date>] [<pattern>...]
      
          Prints the logs.
      
          --json
            Display the results as new line delimited JSON for consumption
            by another program.
      
          --limit=<limit>, -n <limit>
            Limit the number of results to be displayed (default 100)
      
          --since=<date>, --until=<date>
            Start showing entries on or newer than the specified date, or on
            or older than the specified date.
      
            <date> should use the format \`YYYY-MM-DD\`.
      
          <pattern>
            Patterns can be used to filter the entries.
      
            Patterns have the following format \`<field>=<value>\`, \`<field>\` or \`!<field>\`.
      
      xo-server-logs --gc
      
          Remove all but the ${GC_KEEP}th most recent log entries.
      
      xo-server-logs --delete <predicate>...
      
          Delete all logs matching the passed predicates.
      
          For more information on predicates, see the print usage.
      
      xo-server-logs --repair
      
          Repair/compact the database.
      
          This is an advanced operation and should be used only when necessary and offline (xo-server should be stopped).
      `);
      }
      function getArgs() {
        const stringArgs = ['since', 'until', 'limit'];
        const args = parseArgs(process.argv.slice(2), {
          string: stringArgs,
          boolean: ['delete', 'help', 'json', 'gc', 'repair'],
          default: {
            limit: 100,
            json: false,
            help: false
          },
          alias: {
            limit: 'n',
            help: 'h'
          }
        });
        const patterns = {};
        for (let value of args._) {
          value = String(value);
          const i = value.indexOf('=');
          if (i !== -1) {
            const field = value.slice(0, i);
            const pattern = value.slice(i + 1);
            const fieldPatterns = patterns[field];
            if (fieldPatterns === undefined) {
              patterns[field] = [pattern];
            } else if (Array.isArray(fieldPatterns)) {
              fieldPatterns.push(pattern);
            } else {
              throw new Error('cannot mix existence with equality patterns');
            }
          } else {
            const negate = value[0] === '!';
            if (negate) {
              value = value.slice(1);
            }
            if (patterns[value]) {
              throw new Error('cannot mix existence with equality patterns');
            }
            patterns[value] = !negate;
          }
        }
        const mustExists = value => value !== undefined;
        const mustNotExists = value => value === undefined;
        args.matchers = {};
        for (const field in patterns) {
          const values = patterns[field];
          args.matchers[field] = values === true ? mustExists : values === false ? mustNotExists : globMatcher(values);
        }
        forEach(stringArgs, arg => {
          if (args[arg] instanceof Array) {
            throw new Error(`error: too many values for ${arg} argument`);
          }
        });
        ['since', 'until'].forEach(arg => {
          if (args[arg] !== undefined) {
            args[arg] = Date.parse(args[arg]);
            if (isNaN(args[arg])) {
              throw new Error(`error: bad ${arg} timestamp format`);
            }
          }
        });
        if (isNaN(args.limit = +args.limit)) {
          throw new Error('error: limit is not a valid number');
        }
        return args;
      }
      execPromise(async function main() {
        const args = getArgs();
        if (args.help) {
          helper();
          return;
        }
        const config = await appConf.load('xo-server', {
          appDir: new URL('..', import.meta.url).pathname,
          ignoreUnknownFormats: true
        });
        if (args.repair) {
          const require = (await import('module')).createRequire(import.meta.url);
          const {
            repair
          } = require(require.resolve('level', {
            paths: [require.resolve('level-party')]
          }));
          await new Promise((resolve, reject) => {
            repair(`${config.datadir}/leveldb`, error => {
              if (error) {
                reject(error);
              } else {
                resolve();
              }
            });
          });
          return;
        }
        const db = sublevel(levelup(`${config.datadir}/leveldb`, {
          valueEncoding: 'json'
        }), 'logs', {
          valueEncoding: 'json'
        });
        return args.delete ? deleteLogs(db, args) : args.gc ? gc(db) : printLogs(db, args);
      });
      //# sourceMappingURL=logs-cli.mjs.map
      
      posted in Xen Orchestra
      R
      raider600
    • New install - Login screen blank

      Hello, I installed XO from source. My login page looks like this.
      7fb5f085-9912-41f7-a32e-56dfcae8a3a2-image.png

      My terminal window stops here and never completes. I let it sit here all night hoping it was doing something. But nothing happened. I know there is more to the process after you start it.
      9853ea1f-6d95-4f80-b18a-a7d4757db959-image.png

      I have tried many times

      git pull --ff-only
      yarn
      yarn build

      rm -rf node_modules
      yarn
      yarn build

      I nuked the other VM after the first time this happened. So this is the second clean VM and I'm stuck. It's definitely not started all the way but I don't know how to troubleshoot it. Any ideas?

      posted in Xen Orchestra
      R
      raider600
    • RE: Starting XO error

      @Danp It wasnt a VM. I dedicated a whole PC to debian and XO. But I was completely clueless as to what I was doing. I am off and running now though. Thank you

      posted in Xen Orchestra
      R
      raider600