S10 x86 ZFS on VMWare - Increase root pool?

I'm running Solaris 10 x86 on VMWare.
I need more space in the zfs root pool.
I doubled the provisioned space in Hard disk 1, but it is not visible to the VM (format).
I tried creating a 2nd HD, but root pool can't have multiple VDEVs.
How can I add space to my root pool without rebuilding?

Hi,
This is what I did in single user (it may fail in multi user):
-> format -> partition -> print
Current partition table (original):
Total disk cylinders available: 1302 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 1 - 1301 9.97GB (1301/0/0) 20900565
1 unassigned wm 0 0 (0/0/0) 0
2 backup wm 0 - 1301 9.97GB (1302/0/0) 20916630
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 7.84MB (1/0/0) 16065
9 unassigned wm 0 0 (0/0/0) 0
-> format -> fdisk
Total disk size is 1566 cylinders
Cylinder size is 16065 (512 byte) blocks
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active Solaris2 1 1304 1304 83
-> format -> fdisk -> delete partition 1
-> format -> fdisk -> create SOLARIS2 partition with 100% of the disk
Total disk size is 1566 cylinders
Cylinder size is 16065 (512 byte) blocks
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active Solaris2 1 1565 1565 100
format -> partition -> print
Current partition table (original):
Total disk cylinders available: 1563 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 - 1562 11.97GB (1563/0/0) 25109595
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 7.84MB (1/0/0) 16065
9 unassigned wm 0 0 (0/0/0) 0
-> format -> partition -> 0 cyl=1 size=1562e
Current partition table (unnamed):
Total disk cylinders available: 1563 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 1 - 1562 11.97GB (1562/0/0) 25093530
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 - 1562 11.97GB (1563/0/0) 25109595
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 7.84MB (1/0/0) 16065
9 unassigned wm 0 0 (0/0/0) 0
-> format -> partition -> label
zpool set autoexpand=on rpool
zpool list
zpool scrub rpool
zpool status
Best regards,
Ibraima

Similar Messages

  • ZFS Root Pool Restore of a EFI labelled Disk

    Hi Team
    Please let me know the procedure for backup and restore of a EFI labelled root pool using zfs send/receive.
    Note - original operating system is installed on a t5 server with latest firmware,here the default disk label will be EFl instead of SMI as in the case of earlier firmware version.
    operation system is Solaris 11.1.
    Also need to know how to expand lun which is formatted with EFI labelled disk without losing its data.
    Expecting a positive response soon
    Regards
    Arun

    Hi ,
    What you need to do is very easy here is a procedure that i use:
    1)  make a snapshot off the rpool
           zfs snapshot -r rpool@<snapshotname>
    2) send that snapshot somewhere safe
           zpool destroy rpool/dump<snapshotname>
           zpool destroy rpool/swap@<snapshotname>
           zpool send -R rpool@<snapshotname | gzip > /net/<ipaddress>/<share>/<snapshotname>.gz
    3) Once the above is done you can do the following.
         Boot from DVD make sure you ahe a disk available and start creating the rpool.
         The rpool can be created with EFI or SMI label
         so for example to use EFI label zpool create c0d0
                               to use SMI label zpool create c0d0s0 => make sure that the disk is labeled and that all cylinders are in s0.
    4) create a new boot env
          zpool create rpool <disk>
    5) import the data again.
         gzcat /mnt/<snapshotname>.qz | zfs receive -Fv rpool
          zfs create -V 4G rpool/dump
         zfs create -V 4G rpool/swap
    6) check a list off bootenv
            beadm list
            beadm mount <bootenv> /tmp/mnt
            bootadm install-bootloader -P rpool
           devfsadm -Cn -r /tmp/mnt
           touch /tmp/mnt/reconfigure
           beadm umount <bootenv>
           beadm activate <bootenv>
    This is for Solaris 11 but it also works for Solaris 10 only the last part number 6 is different.
    I need to look this up again but if i remember again you need to set the following for solaris 10 bootfs that needs to be set on the rpool
    If you want i have a script that makes a backup off the rpool towards a nfs share.
    Hope this helps
    Regards
    Filip

  • Scrub ZFS root pool

    Does anyone see any issue in having a cron job that scrubs the ZFS root pool rpool periodically?
    Let's say every Sunday at midnight (00:00 of Sunday).

    Hi ,
    What you need to do is very easy here is a procedure that i use:
    1)  make a snapshot off the rpool
           zfs snapshot -r rpool@<snapshotname>
    2) send that snapshot somewhere safe
           zpool destroy rpool/dump<snapshotname>
           zpool destroy rpool/swap@<snapshotname>
           zpool send -R rpool@<snapshotname | gzip > /net/<ipaddress>/<share>/<snapshotname>.gz
    3) Once the above is done you can do the following.
         Boot from DVD make sure you ahe a disk available and start creating the rpool.
         The rpool can be created with EFI or SMI label
         so for example to use EFI label zpool create c0d0
                               to use SMI label zpool create c0d0s0 => make sure that the disk is labeled and that all cylinders are in s0.
    4) create a new boot env
          zpool create rpool <disk>
    5) import the data again.
         gzcat /mnt/<snapshotname>.qz | zfs receive -Fv rpool
          zfs create -V 4G rpool/dump
         zfs create -V 4G rpool/swap
    6) check a list off bootenv
            beadm list
            beadm mount <bootenv> /tmp/mnt
            bootadm install-bootloader -P rpool
           devfsadm -Cn -r /tmp/mnt
           touch /tmp/mnt/reconfigure
           beadm umount <bootenv>
           beadm activate <bootenv>
    This is for Solaris 11 but it also works for Solaris 10 only the last part number 6 is different.
    I need to look this up again but if i remember again you need to set the following for solaris 10 bootfs that needs to be set on the rpool
    If you want i have a script that makes a backup off the rpool towards a nfs share.
    Hope this helps
    Regards
    Filip

  • Replacing a root pool disk example

    Replacing a root pool disk has several use cases:
    1. Replace a small disk with a larger disk
    2. Replace a failed disk with a replacement disk
    3. Outright move a rpool to a different disk because you want to
    The easiest way is to attach the replacement disk to an existing root pool disk.
    I like this approach better than an outright replacement with zpool replace because
    you can ensure the new disk is bootable while both disks are still attached.
    On an x86 system running S11.1, its even easier (if you reinstall not upgrade) because your
    rpool disk contains an EFI label and you don't have to mess with any labeling.
    On a SPARC system running S11.1 or a SPARC or x86 system running S11, you'll still need to
    apply an SMI (VTOC) label and s0, if necessary.
    See the example below.
    Thanks, Cindy
    1. Create a new BE just to identify that all rpool data is available on the replacement
    disk:
    # beadm list
    BE Active Mountpoint Space Policy Created
    s11u1_24b NR / 4.02G static 2012-12-05 10:24
    # beadm create s11u1_backup
    # beadm list
    BE Active Mountpoint Space Policy Created
    s11u1_24b NR / 4.02G static 2012-12-05 10:24
    s11u1_backup - - 172.0K static 2012-12-11 08:46
    2. Identify the existing root pool disk. You can see that this disk has an EFI label because
    the device identifier is d0, not s0.
    # zpool status rpool
    pool: rpool
    state: ONLINE
    scan: none requested
    config:
    NAME STATE READ WRITE CKSUM
    rpool ONLINE 0 0 0
    c0t5000CCA012C8323Cd0 ONLINE 0 0 0
    3. Attach the replacement disk.
    # zpool attach rpool c0t5000CCA012C8323Cd0 c0t5000C500438124F3d0
    Make sure to wait until resilver is done before rebooting.
    You will see a message from FMA that the pool device is DEGRADED. This
    is because the pool data is being resilvered onto the new disk.
    4. Check the resilvering progress:
    # zpool status
    pool: rpool
    state: DEGRADED
    status: One or more devices is currently being resilvered. The pool will
    continue to function in a degraded state.
    action: Wait for the resilver to complete.
    Run 'zpool status -v' to see device specific details.
    scan: resilver in progress since Tue Dec 11 08:49:57 2012
    42.6G scanned out of 71.7G at 132M/s, 0h3m to go
    42.6G resilvered, 59.44% done
    config:
    NAME STATE READ WRITE CKSUM
    rpool DEGRADED 0 0 0
    mirror-0 DEGRADED 0 0 0
    c0t5000CCA012C8323Cd0 ONLINE 0 0 0
    c0t5000C500438124F3d0 DEGRADED 0 0 0 (resilvering)
    5. When resilvering is complete, check that you can boot from the new disk.
    You will need to boot the new disk specifically from either a SPARC boot PROM
    or an x86 BIOS.
    # zpool status
    pool: rpool
    state: ONLINE
    scan: resilvered 71.7G in 0h8m with 0 errors on Tue Dec 11 08:58:45 2012
    config:
    NAME STATE READ WRITE CKSUM
    rpool ONLINE 0 0 0
    mirror-0 ONLINE 0 0 0
    c0t5000CCA012C8323Cd0 ONLINE 0 0 0
    c0t5000C500438124F3d0 ONLINE 0 0 0
    6. If you can boot successfully from the new disk, detach the old disk.
    # zpool detach rpool c0t5000CCA012C8323Cd0
    Confirm your BE info is intact.
    # beadm list
    BE Active Mountpoint Space Policy Created
    s11u1_24b NR / 4.03G static 2012-12-05 10:24
    s11u1_backup - - 172.0K static 2012-12-11 08:46
    7. If the new disk is larger than the existing disk, you will need to do one of the following
    to see the expanded pool space.
    # zpool set autoexpand=on rpool
    # zpool online -e rpool c0t5000C500438124F3d0
    8. Set the SPARC boot PROM or the x86 BIOS to boot from the new disk.

    Where you're getting confused is that you do want to mirror, temporarily.
    Make sure that s0 on the new disk covers the whole disk.
    Then attach it the existing disk, as a mirror.
    What for it to silver.
    Then detach the old disk.
    autoexpand is use when the existing disk is getting bigger. Thats not what you want to do.
    You want to replace 1 disk with a second larger disk.

  • Trouble mirroring root pool onto larger disk

    Hi,
    I have Solaris 11 Express with a root pool installed on a 500 GB disk. I'd like to migrate it to a 2 TB disk. I've followed the instructions on the ZFS troubleshooting guide (http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide#Replacing.2FRelabeling_the_Root_Pool_Disk) and the Oracle ZFS Administration Guide (http://download.oracle.com/docs/cd/E19253-01/819-5461/ghzvx/index.html) pretty carefully. However, things still don't work: after re-silvering, I switch my BIOS to boot from the 2 TB disk and at boot, some kind of error message appears for < 1 second before the machine reboots itself. Is there any way I can view this message? I.e., is this message written to the log anywhere?
    As far as I can tell, I've set up all the partitions and slices correctly (VTOC below). The only error message I get is when I do:
    # zpool attach rpool c9t0d0s0 c13d1s0
    (c9t0d0s0 is the 500 GB original disk, c13d1s0 is the 2 TB new disk)
    I get:
    invalid vdev specification
    use '-f' to override the following errors:
    /dev/dsk/c13d1s0 overlaps with /dev/dsk.c13d1s2
    But that's a well known bug and I use "-f" to force it since the backup slice shouldn't matter. If anyone has any ideas, I really appreciate it.
    Here's my disk layout
    =============================================================
    500 GB disk
    fdisk
    Total disk size is 60801 cylinders
    Cylinder size is 16065 (512 byte) blocks
    Cylinders
    Partition Status Type Start End Length %
    ========= ====== ============ ===== === ====== ===
    1 Active Solaris2 1 60800 60800 100
    VTOC:
    partition> p
    Current partition table (original):
    Total disk cylinders available: 60798 + 2 (reserved cylinders)
    Part Tag Flag Cylinders Size Blocks
    0 root wm 1 - 60797 465.73GB (60797/0/0) 976703805
    1 unassigned wm 0 0 (0/0/0) 0
    2 backup wu 0 - 60797 465.74GB (60798/0/0) 976719870
    3 unassigned wm 0 0 (0/0/0) 0
    4 unassigned wm 0 0 (0/0/0) 0
    5 unassigned wm 0 0 (0/0/0) 0
    6 unassigned wm 0 0 (0/0/0) 0
    7 unassigned wm 0 0 (0/0/0) 0
    8 boot wu 0 - 0 7.84MB (1/0/0) 16065
    9 unassigned wm 0 0 (0/0/0) 0
    =============================================================
    2 TB disk:
    fdisk:
    Total disk size is 60799 cylinders
    Cylinder size is 64260 (512 byte) blocks
    Cylinders
    Partition Status Type Start End Length %
    ========= ====== ============ ===== === ====== ===
    1 Active Solaris2 1 60798 60798 100
    VTOC:
    partition> p
    Current partition table (original):
    Total disk cylinders available: 60796 + 2 (reserved cylinders)
    Part Tag Flag Cylinders Size Blocks
    0 root wm 1 - 60795 1.82TB (60795/0/0) 3906686700
    1 unassigned wm 0 0 (0/0/0) 0
    2 backup wu 0 - 60795 1.82TB (60796/0/0) 3906750960
    3 unassigned wm 0 0 (0/0/0) 0
    4 unassigned wm 0 0 (0/0/0) 0
    5 unassigned wm 0 0 (0/0/0) 0
    6 unassigned wm 0 0 (0/0/0) 0
    7 unassigned wm 0 0 (0/0/0) 0
    8 boot wu 0 - 0 31.38MB (1/0/0) 64260
    9 unassigned wm 0 0 (0/0/0) 0
    =============================================================

    Thanks for the suggestions! I fixed the problem. I took a video of the boot sequence using my iPhone and managed to catch the error messages. It appears that ZFS (specifically, zpools) aren't very robust to devices changing ports (i.e., names).
    My original boot device (500 GB) was on c9t0d0 (SATA port 0). My new boot device was on port c13d1 (on a PCI SATA card). The problem was a combination of devices getting renamed.
    After successfully attaching the 2TB disk to create a mirror, I of course could boot off the original 500GB disk. The problem was I didn't try to boot off the 2TB disk on the PCI card. Instead I swapped the cables, which led to the zpool freaking out about not being able to find the device (I only discovered this through the video! Automatic reboot on a kernel panic might not be such a great idea after all...). The other thing I originally tried was removing the 500 GB disk and try booting off the PCI card, but it seems that my BIOS isn't very robust to devices being removed either - it renames devices in its "list of hard drives" in such a way that it fails to boot from the default device. Manually rearranging the list, or using the boot sequence selector (F8) made it all work.
    In the end, since I really didn't want to boot off a PCI card, I simply detached the 500 GB disk, attached a different 2 TB disk to SATA port 0, and mirrored onto that. Finally, I detached the 2 TB disk on the PCI card (I don't have enough physical slots in the machine to hold that last disk!).
    Just to tie up any loose ends, does anyone know how to tell ZFS that a device has changed position (or name)? My data zpool is running pretty happily as in raid-z2. But if I take one of the disks and attach it to another SATA port, it complains that the device is missing. If I do a zpool replace, is it smart enough to recognize that the disk simply moved, and not waste a day re-silvering?
    Similarly, is there a way to change the port of a disk attached to the root pool without using an extra disk and doing two mirrors?
    Thanks!

  • How to add new increase the pool rather then trowing a error.

    Im trying to build a game and after many attempts and hours of thinking i did manage to create something that looks like a game.The problem now is that there are so many objects that are constantly creating and removing from the stage. that the game is starting to slow down(it is laggy.).So i have searched the net and understood that i will have to use a "Object pooling Method" rather than creating and removing the objects after i dont have any use of them any more, if i want to make the game more memory friendly.
    At first i didnt want to use this method (object pooling) ,but after a while i understood that i dont have a lot of options.So i started to search how and why and how.
    Yet in this example im just trying this for the bullets (for now) cause if i can do it for them, i can manage to do it for other objects and projects (it will be simple for me to understand what is happening ., what am i doing , when do i add an existing object from the pool and when im creating a new one(when there are non left, things like this)
    i did copy some part of this code from a tutorial that i found in the net but , from then i dont know how to increase the pool rather than throwing this error. I did try to create a new object or to increase the pool length but .... it is not working so im sure that im not doing something the way it must be done.
    so i have this so far :
    its a "simple" pool that calls a simple shape class (circle dot) and gives that to the main stage when the "SPACE" button is pressed
    package
              import flash.display.Sprite;
              import flash.events.Event;
              import flash.display.Bitmap;
              import flash.display.BitmapData;
              import flash.display.Shape;
              public class Bullet extends Sprite{
                        public var  rectangle:Shape = new Shape();
                        public function Bullet(){
                                  super();
                                  addEventListener(Event.ADDED_TO_STAGE, init);
                                  graphics.beginFill(0xFF0000);
                                  graphics.drawRect(-5, -5, 10,10);
                                  graphics.endFill();
                        private function init(event:Event):void{
    the SpritePool where i cant figure out how to replace the throw new error with some new code that will increase the pool
    package {
              import flash.display.DisplayObject;
              public class SpritePool {
                        private var pool:Array;
                        private var counter:int;
                        public function SpritePool(type:Class, len:int) {
                                  pool = new Array();
                                  counter = len;
                                  var i:int = len;
                                  while (--i > -1) {
                                            pool[i] = new type();
                        public function getSprite():DisplayObject {
                                  if (counter > 0) {
                                            return pool[--counter];
                                  } else {
                                            throw new Error("You exhausted the pool!");
                        public function returnSprite(s:DisplayObject):void {
                                  pool[counter++] = s;
    and the Game class (the documents class)
    package {
              import flash.ui.Keyboard;
              import flash.display.Sprite;
              import flash.events.Event;
              import flash.events.KeyboardEvent;
              import flash.display.Bitmap;
              import flash.display.BitmapData;
              import flash.display.Shape;
              public class Game extends Sprite {
                        private var ship:Shape;
                        private var bullets:Array;
                        private var pool:SpritePool;
                        public function Game() {
                                  Assets.init();
                                  addEventListener(Event.ADDED_TO_STAGE, init);
                        private function init(event:Event):void {
                                  pool = new SpritePool(Bullet,10);
                                  bullets = new Array();
                                  ship = new Shape();
                                  ship.graphics.beginFill(0xFF00FF);
                                  ship.graphics.drawRect(0,0, 60, 60);
                                  ship.graphics.endFill();
                                  ship.x = stage.stageWidth / 2 - ship.width / 2;
                                  ship.y = stage.stageHeight - ship.height;
                                  addChild(ship);
                                  stage.addEventListener(KeyboardEvent.KEY_DOWN, onDown);
                                  addEventListener(Event.ENTER_FRAME, loop);
                        private function onDown(event:KeyboardEvent):void {
                                  if (event.keyCode == Keyboard.SPACE) {
                                            var b:Bullet = pool.getSprite() as Bullet;
                                            b.x = ship.x + ship.width / 2;
                                            b.y = ship.y;
                                            addChild(b);
                                            bullets.push(b);
                                            trace("Bullet fired");
                        private function loop(event:Event):void {
                                  for (var i:int=bullets.length-1; i>=0; i--) {
                                            var b:Bullet = bullets[i];
                                            b.y -=  10;
                                            if (b.y < 0) {
                                                      bullets.splice(i, 1);
                                                      removeChild(b);
                                                      pool.returnSprite(b);
                                                      trace("Bullet disposed");
    any suggestions/help how to do it

    To put you on the path (the errors/events needs formalization), here would be a quick example. Your pool class:
    package
              import flash.display.DisplayObject;
              public class SpritePool
                        private var pool:Array;
                        private var counter:int;
                        private var classRef:Class;
                        // public get to know what's left in the pool
                        public function get availableObjects():int
                                  return counter;
                        public function SpritePool(type:Class, len:int)
                                  classRef = type;
                                  pool = new Array();
                                  counter = len;
                                  var i:int = len;
                                  while (--i > -1)
                                            pool[i] = new classRef();
                        public function getSprite():DisplayObject
                                  if (counter > 0)
                                            return pool[--counter];
                                  else
                                            throw new Error("PoolExhausted");
                        public function returnSprite(s:DisplayObject):void
                                  pool[counter++] = s;
                        public function increasePool(amount:int):void
                                  counter += amount;
                                  while (--amount > -1)
                                            pool.push(new classRef());
                        public function decreasePool(amount:int):void
                                  if (counter >= amount)
                                            counter -= amount;
                                            pool.splice(counter - amount,amount);
                                  else
                                            throw new Error("PoolDecreaseFail");
    Now you'd need to be catching those errors. Again, the errors should be formalized or you could use events by extending IEventDispatcher. I kept it simple.
    Here would be the simple Bullet class I'm using:
    package
              import flash.display.Sprite;
              public class Bullet extends Sprite
                        private var bullet:Sprite;
                        public function Bullet():void
                                  var bullet:Sprite = new Sprite();
                                  bullet.graphics.beginFill(0xFF0000,1);
                                  bullet.graphics.drawCircle(-5,-5,10);
                                  bullet.graphics.endFill();
                                  addChild(bullet);
    Just draws a red circle just to visualize it..
    Here would be a full example of using it. It will import both of these classes (saved as SpritePool.as and Bullet.as in the same folder). Paste this in the actions panel on frame 1:
    import SpritePool;
    import Bullet; // a simple red 10px circle
    import flash.display.Sprite;
    import flash.utils.setTimeout;
    // fill the pool, swim trunks optional
    var pool:SpritePool = new SpritePool(Bullet, 10);
    // grab some objects from the pool
    // array of currently held objects
    var myBullets:Array = new Array();
    while (pool.availableObjects > 0)
              myBullets.push(pool.getSprite());
    // display in random positions
    for (var i:int = 0; i < myBullets.length; i++)
              addChild(myBullets[i]);
              // position
              myBullets[i].x = int(Math.random()*stage.stageWidth);
              myBullets[i].y = int(Math.random()*stage.stageHeight);
    trace("myBullets has " + myBullets.length + " bullets! pool has " + pool.availableObjects + " left.");
    // now I want one more, but I should check for errors
    try
              // fail, none left!
              myBullets.push(pool.getSprite());
    catch (e:*)
              // this should be a custom event, but for speed, quick and dirty
              if (e == 'Error: PoolExhausted')
                        trace("D'oh no more bullets! I need more!");
                        pool.increasePool(10);
                        trace("Added 10 more, now available in pool " + pool.availableObjects);
    // try to reduce the pool by 15, which should error
    try
              pool.decreasePool(15);
    catch (e:*)
              // again should be a formal error
              if (e == 'Error: PoolDecreaseFail')
                        trace("Oops, can't reduce pool by 15! Let's trim all extras, available is " + pool.availableObjects);
                        // we know it'll work, no error checking
                        pool.decreasePool(pool.availableObjects);
                        trace("Left in pool: " + pool.availableObjects);
    // now lets wait 5 seconds and remove it all back to the pool
    setTimeout(ReturnToPool,5000);
    function ReturnToPool():void
              // now let's just return all the objects to the pool
              while (myBullets.length > 0)
                        removeChild(myBullets[myBullets.length - 1]);
                        pool.returnSprite(myBullets.pop());
              // now check the pool, should have 10
              trace("Amount of bullets in use " + myBullets.length + ", in pool " + pool.availableObjects);
    For ease you can just download my example source (saved down to CS5).
    Anything from here is just symantics. For example instead of throwing an error because the pool is too small you could simply increase the pool by a fixed amount yourself and return the objects requested.
    To keep objects as low as possible you could use a timer to measure the amount of objects in use over a duration and reduce the pool appropriately, knowing the pool will grow as it needs.
    All of this is just to avoid unnecessary object creation.
    BTW here's my trace which should match yours:
    myBullets has 10 bullets! pool has 0 left.
    D'oh no more bullets! I need more!
    Added 10 more, now available in pool 10
    Oops, can't reduce pool by 15! Let's trim all extras, available is 10
    Left in pool: 0
    (after 5 seconds)
    Amount of bullets in use 0, in pool 10

  • [LVM] Shrinking /home to increase /root failed [solved]

    Hi there,
    Before doing anything wrong and risking data loss, I will better ask for your advice. I used the following commands to shrink my /home partition in order to increase /root:
    # vgchange -a y
    # e2fsck -f /dev/VolGroup00/Home
    # resize2fs /dev/VolGroup00/Home 205G
    # lvreduce -L 206G VolGroup00/Home
    # lvextend -l +100%FREE VolGroup00/Arch
    # e2fsck -f /dev/VolGroup00/Arch
    # resize2fs /dev/VolGroup00/Arch
    The initial size of the logical volume Home was 208GB according to lvdisplay. The volume Arch corresponds to my /root.
    All commands completed successfully. However, on boot I get the following error:
    Home: The filesystem size (according to the superblock) is 54525952 blocks
    The physical size of the device is 54001664 blocks
    Either the superblock or the partition table is likely to be corrupt!
    Home: UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY
    I booted from a live disk and tried to run fsck manually. But it aborts with the same error.
    What am I advised to do now?
    Thanks!
    Last edited by orschiro (2014-05-26 06:55:30)

    Filesystems don't like it when parts of their storage go missing. You have to get the missing parts back.
    Find your LVM backups / archives ( /etc/lvm/archive ), see if there is a file that says "created *before* lvreduce -L 206G VolGroup00/Home". That file would tell you where the /home partition was allocated before you shrank it.
    You can use vgcfgrestore to get back to that state of things. At that point your /home should be accessible again - or at least fsckable. (But of course the /root is broke then - can't have both).
    1) Before doing anything else, make a backup of your /root files if you need one
    2) Free some space so you can use snapshot before you fsck. If fsck messes up you really are in trouble.
    The real interesting question is what went wrong with the shrink in the first place. Your commands look like they should have worked. Most likely the resize2fs failed somehow? since it still believes itself to be 208GiB large.
    Last edited by frostschutz (2014-05-22 15:38:19)

  • Increased Shared Pool size longer hot backup time?

    Hello,
    I have hot backup that usually took 2 hours to complete. Then we had to increase Shared pool size from 280Mb to 380Mb due to some performance issue.
    One week after increase of size the hot backup is taking 4 hours to complete. Since there was no other changes to the system I am suspecting size increase
    of Shared Pool from 280Mb to 380Mb might be is reason for such drastic increase of backup time.
    I would like to get your comments on my suspicion to the problem.
    thank you

    Paul.S wrote:
    One week after increase of size the hot backup is taking 4 hours to complete. Since there was no other changes to the system I am suspecting size increase of Shared Pool from 280Mb to 380Mb might be is reason for such drastic increase of backup time.Hmm... at first glance it does not seem that this is the problem.. but perhaps it contributes to it.
    When a SQL hits the SQL engine, the 1st thing the SQL engine does is determine if there is an existing parsed and ready-to-use copy of that SQL. If there is, that existing SQL is re-used - thus the name SQL Shared Pool. The resulting soft parse of the SQL is a lot faster (or should be) than a hard parse . A hard parse is where there is no re-usable copy, and the SQL needs to be parsed, validated and execution plan determined, etc.
    Kind of like re-using an existing compiled program (with different input data) versus compiling that program before using it. (and that is what source SQL is - a program that needs to be compiled).
    Okay, now what happens if there 100's of 1000's of SQLs in your shared pool? The scan that the SQL engine does to determine if there is a re-usable cursor, becomes pretty slow. A soft parse quickly becomes very expensive.
    The problem is typically clients that create SQLs that are not sharable (where the input data is hardcoded into the program, instead of input variables to the program). In other words, SQLs that do not use bind variables.
    Each and every hardcoded SQL that hits the SQL engine, is now a brand new SQL. And requires storage in the SQL Shared Pool. Shared Pool footprint grows and you start getting errors like insufficient shared pool memory.. and increase the shared pool which means even more space to store even more unique non-sharable SQLs and making soft and hard parses even more expensive.
    Like moving the wall a few metres further and then running even faster into it. !http://www.pprune.org/forums/images/smilies2/eusa_wall.gif!
    Now if the backup fires off a load of SQLs against the SQL engine, the fast soft/hard parses can now be a lot slower than previously, thanks to a larger shared pool that now caters for more junk than before.
    Unsure if this is the problem that you are experiencing.. but assuming that your suspicion is correct, it offers an explanation as to why there can be a degradation in performance.

  • Increase MDB pool size

    Hi.
    Is there anyway to increase the pool size for a message driven bean (ejb3) in Netweaver CE 7.1?
    Can this be done through the NWA application?
    Regards,
    Andrew

    You can do this on design-time if you specify the properties InitialSize, MaxSize & ResizeStep in ejb-j2ee-engine.xml of your application:
    <enterprise-bean>
       <bean-props>
          <property>
             <property-name>MaxSize</property-name>
             <property-value>1000</property-value>
          </property>
          <property>u2026</property>
       </bean-props>
    </enterprise-bean>
    Check also the reference about the properties: http://help.sap.com/saphelp_nwce10/helpdata/en/44/ee019ab68d27dfe10000000a1553f6/content.htm
    BR, Sergei

  • Question about using ZFS root pool for whole disk?

    I played around with the newest version of Solaris 10/08 over my vacation by loading it onto a V210 with dual 72GB drives. I used the ZFS root partition configuration and all seem to go well.
    After I was done, I wondered if using the whole disk for the zpool was a good idea or not. I did some looking around but I didn't see anything that suggested that was good or bad.
    I already know about some the flash archive issues and will be playing with those shortly, but I am curious how others are setting up their root ZFS pools.
    Would it be smarter to setup say a 9gb partition on both drives so that the root ZFS is created on that to make the zpool and then mirror it to the other drive and then create another ZFS pool from the remaining disk?

    route1 wrote:
    Just a word of caution when using ZFS as your boot disk. There are tons of bugs in ZFS boot that can make the system un-bootable and un-recoverable.Can you expand upon that statement with supporting evidence (BugIDs and such)? I have a number of local zones (sparse and full) on three Sol10u6 SPARC machines and they've been booting fine. I am having problems LiveUpgrading (lucreate) that I'm scratching my head to resolve. But I haven't had any ZFS boot/root corruption.

  • Increase root partition on ufs filesystem

    Hello
    we have a virtual solaris vm with ufs the disk has become to small..
    we have increased the vmfs but we are having problems increasing the filesystem as format only sees the old size.. fdisk does not seem to offer the possibility to expand the partition to its maximum size.. is it possible to change the label of a solaris partition so that it takes into account all the space that is available for it?
    why fdisk does not see there is unallocated space.. i could create a second partition and mount it to other directory perhaps.
    thank you.

    Hi.
    Solaris on X86 system placed on special general dos partittion.
    fdisk - used for first level.  On this level you can create one ( and only one) partition with type Solaris
              and can create some additional partitions for other OS.
    format - used for second level.  It create additional  partittions on solaris's partitions on first level.  This label also store original size of disk.
    So you need:
    1.  Increase  Solaris partition on first level, using fdisk
    2. Check that format detect new size of disk and increase/create new.
    In case mistake on any steps - you lost data.
    This problem correspond only for root fs and UFS.
    On my choice -  create addtional virtual disk and just add it  to system.
    For new disk use gpt (efi) type of label.
    Regards.

  • ZFS adding device to a pool

    Hello,
    my raidz pool reuters consists of four 73G devices.
    Is it valid to add two larger 146G disks to this pool?
    Will the new size be 340G ?
    at the moment -
    ! root@itchy:/ # zpool list
    NAME      SIZE  ALLOC   FREE    CAP  HEALTH  ALTROOT
    reuters   272G  1.50M   272G     0%  ONLINE  -
    rpool      68G  8.90G  59.1G    13%  ONLINE  -
    ! root@itchy:/ # zfs list
    NAME                            USED  AVAIL  REFER  MOUNTPOINT
    reuters                        1.04M   200G   586K  /reutersI also wonder about the difference.
    zpool shows FREE: 272G, and zfs shows AVAIL: 200G
    -- Nick

    Hi,
    You are correct that cache devices are not supported on files. The lofi driver make a file available as a block device so ZFS thinks this is a device.
    Neither a file nor a lofi device would perform well as a secondary cache device. A locally attached whole disk should be considered for a best secondary cache performance of a read workload.
    Thanks, Cindy

  • Found Posted Elsewhere-​Is This Also For S10? Does It Actually Increase Battery Performanc​e?

    Thought I read this here, but found this on another forum. Is this for the S10 or is there a specific download?
    Does this actually increase battery performance for the S10? Advice/Info appreciated, thanks.
    "Hey guys,
    like to increase your battery life under Windows XP up to 30%?
    Look what I have found
    http://www.eweekeurope.co.uk/news/lenov ... etbook-873
    Quote: "Battery life is said to be up to 6 hours, with "battery-saving software" helping the S10-2 achieve a 30 percent longer battery life than its predecessor."
    And now do the following.
    Download and install the following packages:
    - Intel Onboard Graphics Driver
    - Intel Chipset driver
    - Lenovo Energy Management Driver
    from the S10-2 driver website:
    http://consumersupport.lenovo.com/en/Dr ... ryID=35057
    I installed all 3 packages, just to make sure that the most important drivers are up to date!"
    That is the psot-thxs.

    Hi, with 3 cell and at 3-5 recharge - times reaches full capacity...   should last for 2 hours 15 mins ... constantly mid (5 lines ) brightness & wireless on...
    Did you read answer in last post ?
    http://forums.lenovo.com/t5/IdeaPad-S-series-Netbo​oks/3-Cell-S10-Battery-last-Just-Over-An-Hour/td-p​...
    sincerely KalvinKlein
    Thinkies 2x X200s/X301 8GB 256GB SSD @ Win 7 64
    Ideas Centre A520 ,Yoga 2 256GB SSD,Yoga 2 tablet @ Win 8.1

  • Increase root filesystem size with VxVM

    Hi All,
    Can i increase the root fileystem size in solaris 10 after encapsulating the root disk into VxVM.
    Thanks
    ---MGP---

    I wouldn't try it.
    If you have a mirror, I'd drop the mirror, copy everything over to the mirror disk (in normal, contiguous slices), then redo the VxVM encapsulation.
    Root filesystem cannot be discontiguous, no concats, stripes, raid5s, only mirror. So growing is difficult unless the space is already past the end.
    Easier to copy to another disk, reset the bits (/etc/system, /etc/vfstab), then boot from it.
    Darren

  • Best way to increase root and home part sizes

    Just want to check what means to increase size of root and home. Here's the drive with them now:
    Device Boot Start End Blocks Id System
    (xp) /dev/sdc1 * 1 7649 61440561 7 HPFS/NTFS
    /dev/sdc2 7650 8865 9767520 83 Linux (root)
    /dev/sdc3 8866 12512 29294527+ 83 Linux (home)
    /dev/sdc4 12513 60801 387881392+ 5 Extended
    /dev/sdc5 12513 12998 3903763+ 83 Linux (swap)
    /dev/sdc6 12999 60801 383977566 83 Linux (stuff)
    Everything is backed up and I have other drives to move the /dev/sdc6 over onto temporarily. I have burned GParted LiveCD but I have never used it, would I boot into it and basically see GParted and be able to delete/edit/etc. my partitions?
    Now here's where I get a bit confused: Will I have to delete root and/or home to increase their sizes? If so, what is the right way to copy root back over when I am done the partitioning? I have never copied a root back over onto the system. If I use something as simple as cp -pr, then from where would I do it? Would it be some console I can get into from the Arch LiveCD or something?
    Thanks for your help!

    jbromley wrote:
    If you move the sdc6 partition off of this drive to make space available, then gparted should be able to move and resize the remaining partitions to take advantage of the remaining space. This means that you shouldn't have to copy over your root and home partitions after the resize. Of course, you'll want backups of these partitions just in case.
    You second questions is good just for general knowledge. As mentioned above, you shouldn't have to do this. If you do need to copy over root/home the best way is to use some LiveCD to boot your machine. System Rescue CD and grml are two good rescue/admin type CDs, but I'll bet you can get to a console using the gparted live CD. Once your system is booted with some live CD,  mount your root/home partitions and your backup copy and copy over the root/home partitions from your backup. Something as simple as cp -pr should work here. Once you're done copying, unmount the drives and reboot. When you reboot after resizing a partition you'll probably have to run fsck, but it shouldn't be a problem.
    It's all pretty straightforward. Note that resizing big partitions might take a long time. Oh yeah, be sure to back up your partitions before doing any of this.
    jbromley, you give quality answers. Furthermore, you could use your Arch install cd as the "rescue" disk. It has all the tools you need to mount your partitions and copy files. But you shouldn't have to do that if gparted works.

Maybe you are looking for