Difference between revisions of "AddExtraHardDisk"
m (Added Template:Languages) |
(Adding instructions to add another RAID array) |
||
Line 1: | Line 1: | ||
{{Languages|AddExtraHardDisk}} | {{Languages|AddExtraHardDisk}} | ||
+ | {{Level|Advanced}} | ||
+ | |||
This HowTo are based on [http://mirror.contribs.org/smeserver/contribs/mblotwijk/HowToGuides/AddExtraHardDisk.htm Michiel Blotwijk original]. | This HowTo are based on [http://mirror.contribs.org/smeserver/contribs/mblotwijk/HowToGuides/AddExtraHardDisk.htm Michiel Blotwijk original]. | ||
Line 5: | Line 7: | ||
How to add an extra hard disk to an existing (running) SME server 7.x. | How to add an extra hard disk to an existing (running) SME server 7.x. | ||
− | + | {{Warning box|Adding a Single Disk )or non-raid disks):If you are adding only a single or non-raid disk then please note that the added harddrive will NOT take part of a RAID-array and hence get no redundancy. Consider also that if this disk fails the whole system goes down. | |
− | + | It's intended for special purposes only where you can benefit from mounting a dedicated harddrive to an ibay.}} | |
− | + | ||
+ | {{Warning box|If you do a complete re-install at a later time, please recall that all available disks will be used at that time including these new additions. If you do a re-install and wish to preserve this data then ensure you remove these hard drives at that time.}} | ||
− | |||
== Assumptions == | == Assumptions == | ||
Line 26: | Line 28: | ||
*When you add a drive to a running system, it will not take part of anything unless you do something about it. This is the case in this HowTo. Note that it will NOT take part in any RAID array and hence, get no redundancy. | *When you add a drive to a running system, it will not take part of anything unless you do something about it. This is the case in this HowTo. Note that it will NOT take part in any RAID array and hence, get no redundancy. | ||
− | *If you want the new drive to be part of | + | *If you want the new drive to be part of the SME RAID array instead, get shell access, login as admin and select "5. Manage disk redundancy" and follow the instructions. The new disk should be empty and contain no partitions before doing this. |
*For more info about RAID and disk management, take a look in the [[SME_Server:Documentation]]. | *For more info about RAID and disk management, take a look in the [[SME_Server:Documentation]]. | ||
Line 37: | Line 39: | ||
1.1 Get direct shell access and login as root. | 1.1 Get direct shell access and login as root. | ||
− | 1.2 Tell init to go to single-user mode. | + | 1.2 Tell init to go to single-user mode. (Optional, if the drives are complete clean, this is not necessary) |
telinit 1 | telinit 1 | ||
Line 44: | Line 46: | ||
=== 2 Partition === | === 2 Partition === | ||
− | 2.0 Now you need to identify the device name of the new disk. | + | 2.0 Identifying the disks |
+ | |||
+ | Now you need to identify the device name of the new disk. | ||
+ | |||
+ | As a safety measure, identify and mark your disks. The following smartctl command will identify various parameters including the serial number which can be matched to the serial number on the physical package. | ||
+ | smartctl -i /dev/hdc | ||
The following command will show you all the drives on your server (including any USB drives you might have). | The following command will show you all the drives on your server (including any USB drives you might have). | ||
Line 74: | Line 81: | ||
|} | |} | ||
+ | {{Note box|If you are setting up a raid array, it is a really good idea to eliminate single points of failure. For example try to avoid putting to disks of the same raid array on the same ribbon cable. }} | ||
− | 2.1 Let's assume you installed the disk as master on the second IDE controller. | + | 2.1 Paritioning the disk |
+ | Let's assume you installed the disk as master on the second IDE controller. | ||
<br>This means you have to partition /dev/hdc | <br>This means you have to partition /dev/hdc | ||
Line 85: | Line 94: | ||
p (to make a primary partion) | p (to make a primary partion) | ||
1 (that's the number one, the number you want to assign to the partition) | 1 (that's the number one, the number you want to assign to the partition) | ||
+ | |||
+ | Only if you will be adding this disk to to a RAID set, then you will also need to change the partition type. | ||
+ | t (to change partion type) | ||
+ | L (within t's prompt to list available parition type) | ||
+ | fd (normally the parition type is fd but verify from the L command and look for "Linux raid autodetect" | ||
Accept the suggested first & last cylinder values | Accept the suggested first & last cylinder values | ||
Line 92: | Line 106: | ||
This will create the primary partition /dev/hdc1, using the entire disk space. | This will create the primary partition /dev/hdc1, using the entire disk space. | ||
− | 2.2 Format the new partition to ext3: | + | You will need to do this for each new disk you added. |
+ | |||
+ | 2.2 Formating for a non-raid disk | ||
+ | For a non-raid disk, Format the new partition to ext3: | ||
mkfs.ext3 /dev/hdc1 | mkfs.ext3 /dev/hdc1 | ||
+ | |||
+ | |||
+ | 2.3 Additional steps to create a raid array from multiple disks | ||
+ | |||
+ | When you create an array, the various disks you added will be combined and be represented as a single entity typically identified as /dev/mdxx where xx is a number. For example, the SME Raids are typically on md1, md2, and in some cased md0. | ||
+ | |||
+ | For your purposes, you will choose an available one. In this example we will use md11 in an attempt to not get in the way of future changes to SME and make it easy to identify your new set. | ||
+ | |||
+ | First we need to add the newly (and identically) partitioned disks to the raid device: | ||
+ | mdadm --create --verbose /dev/md11 --level=1 --raid-devices=1 /dev/hdc1 /dev/hdd1 | ||
+ | |||
+ | At this point the Raid will begin building. | ||
+ | |||
+ | Next you will need to format the new array: | ||
+ | mkfs.ext3 /dev/md11 | ||
+ | |||
+ | You can verify that all is good with the following commands: | ||
+ | cat /proc/mdstat | ||
+ | mdadm --detail --scan --verbose | ||
+ | |||
+ | next you will need to edit the /etc/mdadm.conf file to add your array with the following after the other ARRAY entries: | ||
+ | # added by <your name here> -- so you can identify later you did this. | ||
+ | ARRAY /dev/md11 | ||
+ | |||
+ | Alternatively you could add the output of | ||
+ | mdadm --detail --scan --verbose | ||
+ | |||
+ | to this file instead to be more specific. I have not tried this. | ||
=== 3 Mount === | === 3 Mount === | ||
Line 102: | Line 147: | ||
<br>In step 4 you will see a much better method to link your /home directory to the second disk. | <br>In step 4 you will see a much better method to link your /home directory to the second disk. | ||
− | 3. | + | 3.1 Create a directory underneath /mnt |
mkdir /mnt/newdisk | mkdir /mnt/newdisk | ||
− | 3. | + | 3.2 Automount at boot time |
<br>To automatically mount the partition at boot time, you need to add the following line to the file /etc/fstab | <br>To automatically mount the partition at boot time, you need to add the following line to the file /etc/fstab | ||
<br>It can be done in the text editor Pico | <br>It can be done in the text editor Pico | ||
pico /etc/fstab | pico /etc/fstab | ||
− | Add the following data to the file (separate columns with a hit on the space-bar): | + | Add the following data to the file for a SINGLE disk (separate columns with a hit on the space-bar): |
/dev/hdc1 /mnt/newdisk ext3 usrquota,grpquota 1 2 | /dev/hdc1 /mnt/newdisk ext3 usrquota,grpquota 1 2 | ||
+ | |||
+ | or for a RAID array: | ||
+ | /dev/md11 /mnt/newdisk ext3 usrquota,grpquota 1 2 | ||
+ | |||
Make sure you end this line with a newline (with enter). | Make sure you end this line with a newline (with enter). | ||
<br>Hit <ctrl-x> to exit the editor, y and enter to save. | <br>Hit <ctrl-x> to exit the editor, y and enter to save. | ||
− | 3. | + | 3.3 Mount manually (this time) all filesystems listed in /etc/fstab |
mount -a | mount -a | ||
− | 3. | + | 3.4 Report the amount of free disk space available on all mounted filesystems + the type of each filesystem, check if it looks OK. |
df -T | df -T | ||
Line 127: | Line 176: | ||
/dev/hdc1 ext3 38474956 27948 38447008 0% /mnt/newdisk | /dev/hdc1 ext3 38474956 27948 38447008 0% /mnt/newdisk | ||
− | If you don't see a line for /dev/hdc1, something went wrong. | + | If you don't see a line for /dev/hdc1 (or /dev/md11 if it is raid), something went wrong. |
<br>Go back to step 2 and check if you followed all instructions correctly. | <br>Go back to step 2 and check if you followed all instructions correctly. | ||
Revision as of 16:49, 7 December 2008
This HowTo are based on Michiel Blotwijk original.
Description
How to add an extra hard disk to an existing (running) SME server 7.x.
Assumptions
- It assumes adding one PATA (IDE) harddrive as master on the second IDE controller, but the process will be similar in other situations. More on that in step 2.1.
- The harddrive will be named newdisk, this name will not be visible to the user.
- You already have an ibay named IBAYNAME, this will be redirected to the new disk (together with its content). This name may be visible to the user (depending on the permissions).
- You can replace the names newdisk and IBAYNAME with whatever valid name, just keep track of the names.
Notes about RAID
- When you install SMEserver, ALL connected harddrives will be part of an RAID-array.
- When you add a drive to a running system, it will not take part of anything unless you do something about it. This is the case in this HowTo. Note that it will NOT take part in any RAID array and hence, get no redundancy.
- If you want the new drive to be part of the SME RAID array instead, get shell access, login as admin and select "5. Manage disk redundancy" and follow the instructions. The new disk should be empty and contain no partitions before doing this.
- For more info about RAID and disk management, take a look in the SME_Server:Documentation.
Step-by-step HowTo
1 Preparation
1.0 Mount the harddrive and fire up your machine.
1.1 Get direct shell access and login as root.
1.2 Tell init to go to single-user mode. (Optional, if the drives are complete clean, this is not necessary)
telinit 1
This will make you loose connection if you working through an ssh-client (like Putty). You need direct access to the shell to proceed.
2 Partition
2.0 Identifying the disks
Now you need to identify the device name of the new disk.
As a safety measure, identify and mark your disks. The following smartctl command will identify various parameters including the serial number which can be matched to the serial number on the physical package.
smartctl -i /dev/hdc
The following command will show you all the drives on your server (including any USB drives you might have).
fdisk -l | more
Role | IDE controller | Device name |
---|---|---|
Master | 1 | /dev/hda |
Slave | 1 | /dev/hdb |
Master | 2 | /dev/hdc |
Slave | 2 | /dev/hdd |
2.1 Paritioning the disk
Let's assume you installed the disk as master on the second IDE controller.
This means you have to partition /dev/hdc
fdisk /dev/hdc
and when prompted:
n (to add a new partition) p (to make a primary partion) 1 (that's the number one, the number you want to assign to the partition)
Only if you will be adding this disk to to a RAID set, then you will also need to change the partition type.
t (to change partion type) L (within t's prompt to list available parition type) fd (normally the parition type is fd but verify from the L command and look for "Linux raid autodetect"
Accept the suggested first & last cylinder values
w (write and exit)
This will create the primary partition /dev/hdc1, using the entire disk space.
You will need to do this for each new disk you added.
2.2 Formating for a non-raid disk For a non-raid disk, Format the new partition to ext3:
mkfs.ext3 /dev/hdc1
2.3 Additional steps to create a raid array from multiple disks
When you create an array, the various disks you added will be combined and be represented as a single entity typically identified as /dev/mdxx where xx is a number. For example, the SME Raids are typically on md1, md2, and in some cased md0.
For your purposes, you will choose an available one. In this example we will use md11 in an attempt to not get in the way of future changes to SME and make it easy to identify your new set.
First we need to add the newly (and identically) partitioned disks to the raid device:
mdadm --create --verbose /dev/md11 --level=1 --raid-devices=1 /dev/hdc1 /dev/hdd1
At this point the Raid will begin building.
Next you will need to format the new array:
mkfs.ext3 /dev/md11
You can verify that all is good with the following commands:
cat /proc/mdstat mdadm --detail --scan --verbose
next you will need to edit the /etc/mdadm.conf file to add your array with the following after the other ARRAY entries:
# added by <your name here> -- so you can identify later you did this. ARRAY /dev/md11
Alternatively you could add the output of
mdadm --detail --scan --verbose
to this file instead to be more specific. I have not tried this.
3 Mount
Create a mounting point for the new disk
A mounting point is just an empty directory that will link to your new disk.
This can be any valid directory on your server, but it is recommended not to use /home or one of its subdirectories.
In step 4 you will see a much better method to link your /home directory to the second disk.
3.1 Create a directory underneath /mnt
mkdir /mnt/newdisk
3.2 Automount at boot time
To automatically mount the partition at boot time, you need to add the following line to the file /etc/fstab
It can be done in the text editor Pico
pico /etc/fstab
Add the following data to the file for a SINGLE disk (separate columns with a hit on the space-bar):
/dev/hdc1 /mnt/newdisk ext3 usrquota,grpquota 1 2
or for a RAID array:
/dev/md11 /mnt/newdisk ext3 usrquota,grpquota 1 2
Make sure you end this line with a newline (with enter).
Hit <ctrl-x> to exit the editor, y and enter to save.
3.3 Mount manually (this time) all filesystems listed in /etc/fstab
mount -a
3.4 Report the amount of free disk space available on all mounted filesystems + the type of each filesystem, check if it looks OK.
df -T
Filesystem Type 1k-blocks Used Available Use% Mounted on /dev/hda3 ext3 39151724 28441348 8721532 77% / /dev/hda1 ext3 101089 8953 86917 10% /boot /dev/hdc1 ext3 38474956 27948 38447008 0% /mnt/newdisk
If you don't see a line for /dev/hdc1 (or /dev/md11 if it is raid), something went wrong.
Go back to step 2 and check if you followed all instructions correctly.
4 Mapping
4.0 Alternatives
Alternative 1: Use /home to mount the new disk
On standard Linux machines, the /home directory contains the user's directories and is therefore a popular place to mount a bigger disk.
However, on a SME server this is not a good idea:
SME stores all its configuration files in /home/e-smith/db.
If for whatever reason your disk doesn't mount, the configuration files will no longer be accessible, causing all kinds of nasty problems.
Mounting your second disk to /home or even /home/e-smith/files effectively means that your first disk will no longer be used to store user files.
In some cases that might be a good idea, but in most cases you are just wasting the remaining space of your first disk.
Alternative 2: A much better approach is to leave the second disk mounted at /mnt/newdisk and to create symlinks (symbolic links) for specific ibays or user folders.
The following example shows you how to place the IBAYNAME ibay on the second disk.
4.1 Create the necessary subdirectories on your second disk
mkdir -p /mnt/newdisk/ibays/IBAYNAME
4.2 Check the ownerships and permissions on the original directory
ls -l /home/e-smith/files/ibays/IBAYNAME
drwxrwxr-x 18 admin allstaff 4096 Sep 23 14:48 IBAYNAME
4.3 Change ownership as in the original. The "-R" (optional) means recursive, subdirectorys will be included in the command.
chown -R admin:allstaff /mnt/newdisk/ibays/IBAYNAME
4.4 Set permissions to the ibay IBAYNAME as in the original. For help on this, look at bottom of this page. The "-R" (optional) means recursive, subdirectorys will be included in the command.
chmod 775 -R /mnt/newdisk/ibays/IBAYNAME
4.5 Copy the content to your new disk
cp -rip /home/e-smith/files/ibays/IBAYNAME/* /mnt/newdisk/ibays/IBAYNAME
4.6 Check if all files have been copied correctly
diff -r /mnt/newdisk/ibays/IBAYNAME /home/e-smith/files/ibays/IBAYNAME
4.7 Remove the original files
rm -rf /home/e-smith/files/ibays/IBAYNAME
4.8 Create a symlink to the new location
ln -s /mnt/newdisk/ibays/IBAYNAME /home/e-smith/files/ibays/IBAYNAME
4.9 Test the new location
ls /home/e-smith/files/ibays/IBAYNAME
4.10 If you want the ibay to be accessible from the internet, you also need to enable "follow symlinks" in apache:
db accounts setprop IBAYNAME FollowSymLinks enabled signal-event ibay-modify IBAYNAME
5 Quota (optional)
Next you might want to activate the quota on the disk.
This will only work if you activated quota management for at least one user (Server Manager > Collaboration > Quota Management).
quotacheck -vugc /dev/hdc1
If you get "quotacheck: Old file not found" you probably haven't activated quota management.
If quotachecks comes back to the command prompt without errors, you're ready.
6 Final check
Reboot your machine
reboot
Check if the drive was mounted correctly with
df -T
and/or surf to your ibay.
If it looks fine, relax and tell the world about it, you made it!
Notes about file permissions
- For help about chmod and file permissions, look at
ss64 or oreillynet.