• Recent
  • Unsolved
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Register
  • Login
  • Recent
  • Unsolved
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Register
  • Login

Added new storage node - images getting stuck in dev directory

Scheduled Pinned Locked Moved Solved
FOG Problems
4
22
6.3k
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G
    glienhard @Wayne Workman
    last edited by Wayne Workman Jan 21, 2016, 12:36 PM Jan 21, 2016, 6:36 PM

    @Wayne-Workman

    <?php
    /** \class FOGFTP
            Globally accessible class.
            It does the FTP Taskings for us.
            Now that we're using iPXE, it's really
            only used for Image Replication and upload tasks.
    */
    class FOGFTP extends FOGGetSet
    {
            // Data
            public $data = array(
                    'host'          => '',
                    'username'      => '',
                    'password'      => '',
                    'port'          => 21,
                    'timeout'       => 10
            );
    
            // Links
            private $link;
            private $loginLink;
            private $lastConnectionHash;
            public $passiveMode = true;
            public function connect()
            {
                    // Return if - already connected && last connection is the same || details unset
                    $connectionHash = md5(serialize($this->data));
                    if (($this->link && $this->lastConnectionHash == $connectionHash) || !$this->get('host') || !$this->get('username') || !$this->get('password') || !$this->get('port'))
                            return $this;
                    // Connect
                    $this->link = @ftp_connect($this->get('host'), $this->get('port'), $this->get('timeout'));
                    if (!$this->link)
                    {
                            $error = error_get_last();
                            throw new Exception(sprintf('%s: Failed to connect. Host: %s, Error: %s', get_class($this), $this->get('host'), $error['message']));
                    }
                    // Login
                    if (!$this->loginLink = @ftp_login($this->link, $this->get('username'), $this->get('password')))
                    {
                            $error = error_get_last();
                            throw new Exception(sprintf('%s: Login failed. Host: %s, Username: %s, Password: %s, Error: %s', get_class($this), $this->get('host'), $this->get('username'), $this->get('password'), $error['message']));
                    }
                    if ($this->passiveMode)
                            ftp_pasv($this->link, true);
                    // Store connection hash
                    $this->lastConnectionHash = $connectionHash;
                    // Return
                    return $this;
            }
    
            public function close($if = true)
            {
                    // Only if connected
                    if ($this->link && $if)
                    {
                            // Disconnect
                            @ftp_close($this->link);
                            // unset connection variable
                            unset($this->link);
                    }
                    // Return
                    return $this;
            }
    
            public function put($remotePath, $localPath, $mode = FTP_ASCII)
            {
                    // Put file
                    if (!@ftp_put($this->link, $remotePath, $localPath, $mode))
                    {
                            $error = error_get_last();
                            throw new Exception(sprintf('%s: Failed to %s file. Remote Path: %s, Local Path: %s, Error: %s', get_class($this), __FUNCTION__, $remotePath, $localPath, $error['message']));
                    }
                    // Return
                    return $this;
            }
    
            public function rename($remotePath, $localPath)
            {
                    if(@ftp_nlist($this->link,$localPath))
                    {
                            if(!@ftp_rename($this->link, $localPath, $remotePath))
                            {
                                    $error = error_get_last();
                                    throw new Exception(sprintf('%s: Failed to %s file. Remote Path: %s, Local Path: %s, Error: %s', get_class($this), __FUNCTION__, $remotePath, $localPath, $error['message']));
                            }
                    }
                    return $this;
            }
            public function chdir($path)
            {
                    if (@ftp_chdir($this->link, $path))
                            return $this;
                    return false;
            }
            public function size($pathfile)
            {
                    $size = 0;
                    if (@ftp_size($this->link,$pathfile) == -1)
                    {
                            $filelist = @ftp_nlist($this->link,$pathfile);
                            if ($filelist)
                            {
                                    foreach($filelist AS $file)
                                            $size += @ftp_size($this->link,$file);
                            }
                    }
                    else
                            $size = @ftp_size($this->link, $pathfile);
                    return ($size > 0 ? $size : 0);
            }
            public function mkdir($remotePath)
            {
                    return @ftp_mkdir($this->link,$remotePath);
            }
            public function delete($path)
            {
                    if (!(@ftp_delete($this->link, $path)||@ftp_rmdir($this->link,$path)))
                    {
                            $filelist = @ftp_nlist($this->link,$path);
                            if ($filelist)
                            {
                                    foreach($filelist AS $file)
                                            $this->delete($file);
                                    $this->delete($path);
                            }
                    }
                    // Return
                    return $this;
            }
    }
    
    W 1 Reply Last reply Jan 21, 2016, 6:37 PM Reply Quote 0
    • W
      Wayne Workman @glienhard
      last edited by Jan 21, 2016, 6:37 PM

      @glienhard Oh well that couldn’t be easier. Change the timeout from 10 to something like 20 or 30.

      Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!
      Daily Clean Installation Results:
      https://fogtesting.fogproject.us/
      FOG Reporting:
      https://fog-external-reporting-results.fogproject.us/

      G 2 Replies Last reply Jan 21, 2016, 6:39 PM Reply Quote 0
      • G
        glienhard @Wayne Workman
        last edited by Jan 21, 2016, 6:39 PM

        @Wayne-Workman Yep saw that myself. Since the iscsi is going across a 1Gbit link I’m changing it to 30 and will try again. I’ll keep you posted. Thanks!

        1 Reply Last reply Reply Quote 0
        • G
          glienhard @Wayne Workman
          last edited by Jan 21, 2016, 6:55 PM

          @Wayne-Workman Still no luck…still stuck in the dev directory.

          W 1 Reply Last reply Jan 21, 2016, 7:13 PM Reply Quote 0
          • W
            Wayne Workman @glienhard
            last edited by Wayne Workman Jan 21, 2016, 1:14 PM Jan 21, 2016, 7:13 PM

            @glienhard said:

            @Wayne-Workman Still no luck…still stuck in the dev directory.

            Can you verify what the root directory is on this SAN disk? Using ftp, change directory to the “root” directory with cd / and take a look around and figure out where you are.

            also, to me, it’s just really confusing to have this new storage inside the old one. You can easily mount it to a new directory, something like /SANimages and then just copy/paste the existing entries in /etc/exports so you have a new NFS export called /SANimages, just increment the ID and change the paths.

            Just some ideas.

            @Tom-Elliott thoughts on why it isn’t working?

            Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!
            Daily Clean Installation Results:
            https://fogtesting.fogproject.us/
            FOG Reporting:
            https://fog-external-reporting-results.fogproject.us/

            G 1 Reply Last reply Jan 21, 2016, 7:22 PM Reply Quote 0
            • G
              glienhard @Wayne Workman
              last edited by Jan 21, 2016, 7:22 PM

              @Wayne-Workman Here is what I have… I have an internal RAID array mounted to /images. Then I have the SAN mounted to /images/archive. (I did this because I thought it would be more friendly to FOG that way.) I can certainly remount the SAN to a different folder and give that a try. (I had had that thought as well.)

              Here is what I have in my /etc/exports file:

              /images *(ro,sync,no_wdelay,no_subtree_check,insecure_locks,no_root_squash,insecure,fsid=0)
              /images/dev *(rw,async,no_wdelay,no_subtree_check,no_root_squash,insecure,fsid=1)
              /images/archive *(ro,sync,no_wdelay,no_subtree_check,insecure_locks,no_root_squash,insecure,fsid=2)
              /images/archive/dev *(rw,async,no_wdelay,no_subtree_check,no_root_squash,insecure,fsid=3)

              W 1 Reply Last reply Jan 21, 2016, 7:24 PM Reply Quote 0
              • W
                Wayne Workman @glienhard
                last edited by Wayne Workman Jan 21, 2016, 1:24 PM Jan 21, 2016, 7:24 PM

                @glienhard How about…

                /images *(ro,sync,no_wdelay,no_subtree_check,insecure_locks,no_root_squash,insecure,fsid=0)
                /images/dev *(rw,async,no_wdelay,no_subtree_check,no_root_squash,insecure,fsid=1)
                /archive *(ro,sync,no_wdelay,no_subtree_check,insecure_locks,no_root_squash,insecure,fsid=2)
                /archive/dev *(rw,async,no_wdelay,no_subtree_check,no_root_squash,insecure,fsid=3)
                

                Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!
                Daily Clean Installation Results:
                https://fogtesting.fogproject.us/
                FOG Reporting:
                https://fog-external-reporting-results.fogproject.us/

                G 1 Reply Last reply Jan 21, 2016, 7:44 PM Reply Quote 0
                • G
                  glienhard @Wayne Workman
                  last edited by Jan 21, 2016, 7:44 PM

                  @Wayne-Workman I did have the dev directories set to async. I have moved the mount to /img_archive, updated the export file, and trying again.

                  W 1 Reply Last reply Jan 21, 2016, 7:53 PM Reply Quote 0
                  • W
                    Wayne Workman @glienhard
                    last edited by Jan 21, 2016, 7:53 PM

                    @glienhard Update the new storage node too, in the web ui.

                    Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!
                    Daily Clean Installation Results:
                    https://fogtesting.fogproject.us/
                    FOG Reporting:
                    https://fog-external-reporting-results.fogproject.us/

                    G 1 Reply Last reply Jan 21, 2016, 8:27 PM Reply Quote 0
                    • G
                      glienhard @Wayne Workman
                      last edited by Jan 21, 2016, 8:27 PM

                      @Wayne-Workman I did update the GUI as well. Unfortunately I’m still getting the same result.

                      T 1 Reply Last reply Jan 21, 2016, 8:40 PM Reply Quote 0
                      • T
                        Tom Elliott @glienhard
                        last edited by Jan 21, 2016, 8:40 PM

                        @glienhard If you’re available, possibly, to do a teamviewer session to try to figure out why it’s not ftping, it’d be really amazing. Just hit me up in chat please (so as not to give out information on people being able to connect.)

                        Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG! Get in contact with me (chat bubble in the top right corner) if you want to join in.

                        Web GUI issue? Please check apache error (debian/ubuntu: /var/log/apache2/error.log, centos/fedora/rhel: /var/log/httpd/error_log) and php-fpm log (/var/log/php*-fpm.log)

                        Please support FOG if you like it: https://wiki.fogproject.org/wiki/index.php/Support_FOG

                        G 1 Reply Last reply Jan 21, 2016, 8:43 PM Reply Quote 1
                        • G
                          glienhard @Tom Elliott
                          last edited by Jan 21, 2016, 8:43 PM

                          @Tom-Elliott Thank Tom. Just sent you a chat

                          1 Reply Last reply Reply Quote 0
                          • S
                            Sebastian Roth Moderator
                            last edited by Sebastian Roth Jan 21, 2016, 3:12 PM Jan 21, 2016, 9:12 PM

                            @glienhard Timing could definitely be a troublemaker here. I remember having an issue with images not being properly moved because (you wouldn’t believe it) the /image partition - on a local drive - was formated with ext3!!! This filesystem does some kind of magic defragmentation foo when files are being deleted. Causes delete syscalls to wait for a long time. Is your SAN device ext3??

                            Web GUI issue? Please check apache error (debian/ubuntu: /var/log/apache2/error.log, centos/fedora/rhel: /var/log/httpd/error_log) and php-fpm log (/var/log/php*-fpm.log)

                            Please support FOG if you like it: https://wiki.fogproject.org/wiki/index.php/Support_FOG

                            1 Reply Last reply Reply Quote 1
                            • G
                              glienhard
                              last edited by glienhard Jan 22, 2016, 10:44 AM Jan 22, 2016, 4:44 PM

                              Update for this topic.

                              After remounting the SAN to a different folder the image was still getting stuck in the dev directory. With @Tom-Elliott’s help we did an in-place upgrade to the latest Trunk. After doing this the image moved properly and there were no more issues. Thanks @Tom-Elliott! 🙂

                              1 Reply Last reply Reply Quote 2
                              • 1
                              • 2
                              • 1 / 2
                              1 / 2
                              • First post
                                18/22
                                Last post

                              174

                              Online

                              12.0k

                              Users

                              17.3k

                              Topics

                              155.2k

                              Posts
                              Copyright © 2012-2024 FOG Project