server upgrade

PC Dec 02, 2006

液晶の壊れたDynabook SS 3440にDebian載せてもう4年くらい家のserverに使ってた。さすがにそろそろHDDあたりがやばいんじゃないかとserverを一新する事にした。あと、Windows Desktop PCに入れてあるiTunes libraryを多少安全なdiskに移したいというのも理由の一つ。(触れないくらいの温度で24時間稼動、、、)TeraStationの様な’NAS’として売ってる製品も考えたが、Linuxとしていじる時に普通のx86 PCの方が楽な気がしたのでそれは選択肢からはずした。PCは以下の構成。

  • CPU: Intel E6300 (Core 2 Duo 1.86GHz, cache 2MB)
  • mother board: Intel DG965WH
  • memory: DDR2 5300 (667MHz) 1GB
  • HDD: Maxtor DiamondMax21 320GB (SATA2) x4

用途的には世代遅れのCPUで十分だし電気も食わないんだけど、なぜか Core 2 Duo にしてしまった。LinuxはDebian Etch amd64 (kernel 2.6.17)でdiskはmd Raid5 + LVM2。

Debian installer boot from CD-ROM

まず、install packageをダウンロード。Debian の testing netinstall(netinst CD image amd64)。PATAに繋いだCD-ROMから無事にboot。しかし、bootしてからPATAのCD-ROMをkernelが認識してくれなくて、installerを先に進めない。。。ググると、これはSATAとPATAの混在システムで起きる問題っぽく、根本的解決方法が無いっぽい。しょうがないので、USB Flash memoryからinstallする方法で行く。

create bootable USB Flash memory

USB Flashをbootable deviceにするためにはUSBにアクセスできるLinux machineが必要。DynabookはあいにくUSB portが無い。しかしこれからDebianをinstallしようとしてるmachineがCD-ROMからbootだけはするのでその環境をbootable USB Flashを作るだけのために使えた。

  1. hd-mediaのboot.img.gzをダウンロード
  2. WindowsでもMacでも、とにかくbootに使うUSB Flash(fat file system)にboot.img.gzとCD-Rを作るときに使った .iso fileを書き込む。(Flash memoryの中身は後で全部消える事に注意)
  3. CD-Rでboot
  4. bootしたらUSB Flash memoryをUSB portに刺す
  5. Alt-F2でconsoleを出す
  6. 以下の操作でbootable USB flashを作る
    # mount -t vfat /dev/sda1 /mnt
       (/dev/sd*は/var/log/syslogでどのdeviceが割り当てられたか確認)
    # cp /mnt/* /tmp (boot.img.gz と .isoを/tmpにコピー)
    # cd /tmp
    # umount /mnt
    # zcat boot.img.gz > /dev/sda (flash memoryは完全に上書きされる)
    # mount /dev/sda /mnt
    # cp /tmp/<.iso file name> /mnt
    # umount /mnt
    # reboot
  7. BIOSをUSB flashからbootするように変更
  8. USB flashからboot、そしてinstallerに従ってinstallを進める

そういえば、最初 iPod ShuffleをUSB Flashとして使ったんだけどbootしなくてだいぶ悩んでしまった。ShuffleはUSB Flashのようであって、単純なUSB Flashでは無いっぽい。。。でわざわざ新しくUSB Flashを買った。

さらにもう一つ。ICH8のEthernetは認識してくれなかったので、余ってたDECの21140 PCI cardを使ってる。(kernel 2.6.18からはICH8をサポートしてるらしい。)

Debian Installer: HDD partitioning issue

md RAID5+LVM2にroot以下、/boot以外の全部を置く方針。Debian installerもそれをサポートしてるような事が書いてあるのを見たんだがRAID5を設定するとinstallerがfailしてそれ以上は進めなくなる。妥協案として、一つのHDDに素でinstallし、そこからbootしたDebianで他の3つのHDDをRAID5+LVM2(HDDが一つ足りないdegraded arrayとして)に設定し、bootしたHDDの中身をdegraded arrayにコピーし今度はそっちをboot diskにしてbootした後、RAIDになって無いさっきの残り1つのHDDをRAID5に加える、、、という面倒な方法を取る。

こっから下はInstallerでRAID5+LVM2を作れるようになったら全くいらない作業。

  1. USB Flashからのinstallerの続きで、partitionのstep
  2. /dev/sda /dev/sdb /dev/sdc /dev/sddがある内、/dev/sddをinstallに使う。いずれにしても、後でこのdiskは消す事になるので、何も考えずにguidedの1 partitionでpartitionを切る。
  3. installを進めて、reboot
  4. cfdiskで以下の様にこれからRAIDにするdiskを切る
    sda: sda1 320GB fd,  sda2 300MB 82,  sda3 200MB 83 bootable
    sdb: sdb1 320GB fd,  sdb2 500MB 82
    sdc: sdc1 320GB fd,  sdc2 500MB 82
  5. まずHDD3個だけでRAID5 arrayを作る (sdd1 = missing)
    # mdadm -v --create /dev/md0 --chunk=128 --level=raid5 --raid-devices=4 \
        /dev/sda1 /dev/sdb1 /dev/sdc1 missing
  6. LVMでpartitionを切る
    # pvcreate /dev/md0
    # vgcreate vg00 /dev/md0
    # lvcreate vg00 -n usr -L 10G
    # lvcreate vg00 -n tmp -L 10G
    # lvcreate vg00 -n home -L 90GB
    # lvcreate vg00 -n root -L 700MB
    # vgdisplay  (Free PE を確認)
    # lvcreate vg00 -n var -l 200190
  7. partitionを切った結果を確認
    # pvdisplay
    # vgdisplay
    # lvdisplay
  8. ext3でformat (stride size = raid chunk size / fs block size)
    # mkfs.ext3 -b 4096 -R stride=32 /dev/vg00/usr
    # mkfs.ext3 -b 4096 -R stride=32 /dev/vg00/var
    # mkfs.ext3 -b 4096 -R stride=32 /dev/vg00/tmp
    # mkfs.ext3 -b 4096 -R stride=32 /dev/vg00/home
    # mkfs.ext3 -b 4096 -R stride=32 /dev/vg00/root
    # mkfs.ext3 /dev/sda3
    # mkswap /dev/sda2
    # mkswap /dev/sdb2
    # mkswap /dev/sdc2
  9. /dev/sddの中身を全部RAID5+LVM2のpartitionにコピー
    # mkdir /target
    # mount /dev/vg00/root /target
    # cd /target
    # mkdir usr home tmp var boot
    # mount /dev/vg00/usr /target/usr
    # mount /dev/vg00/home /target/home
    # mount /dev/vg00/tmp /target/tmp
    # mount /dev/vg00/var /target/var
    # mount /dev/sda3 /target/boot
    # tar clf - --preserve --same-owner --exclude=/proc/* --exclude=/sys/* / \
       | (cd /target; tar xvpf - --preserve --same-owner)
  10. chroot
    # chroot /target
  11. /etc/fstabのedit
    /dev/mapper/vg00-root  /        ext3    defaults,errors=remount-ro 0       1
    /dev/sda3              /boot    ext3    defaults        0       2
    /dev/mapper/vg00-home  /home    ext3    defaults        0       2
    /dev/mapper/vg00-tmp   /tmp     ext3    defaults        0       2
    /dev/mapper/vg00-usr   /usr     ext3    defaults        0       2
    /dev/mapper/vg00-var   /var     ext3    defaults        0       2
    /dev/sda2 none            swap    sw              0       0
    /dev/sdb2 none            swap    sw              0       0
    /dev/sdc2 none            swap    sw              0       0
    # /dev/sdd2 none            swap    sw              0       0
    /dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
  12. edit /boot/grub/menu.lst , 新しい/bootと/rootの位置に path を変更。/bootは/dev/sda3なのでroot (hd0,2), kernel root optionとして実際の/の位置 (表記が/dev/vg00/rootでは無く/dev/mapper/vg00-rootである事に注意)
    title           initrd.img-2.6.17-2-amd64
    root            (hd0,2)
    kernel          /vmlinuz-2.6.17-2-amd64 root=/dev/mapper/vg00-root ro
    initrd           /initrd.img-2.6.17-2-amd64
    savedefault
  13. boot loader を MBR へ書き込み
    # grub
    grub> device (hd0) /dev/sda
    grub> root (hd0,2)
    grub> setup (hd0)
    grub> quit
  14. rebootでRAID5+LVM2のシステムへ
    $ df
    Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/mapper/vg00-root   705512    165024    504648  25% /
    udev                     10240        68     10172   1% /dev
    devshm                  500476         0    500476   0% /dev/shm
    /dev/sda3               186671     25734    151298  15% /boot
    /dev/mapper/vg00-home 92891128   5757032 82415504    7% /home
    /dev/mapper/vg00-tmp  10321208    154240   9642680   2% /tmp
    /dev/mapper/vg00-usr  10321208   1055296   8741624  11% /usr
    /dev/mapper/vg00-var 807112304 246857180 519256212  33% /var
  15. /dev/sddのpartitionを切る (sdd1はmd0の一部になるので、sda1,sdb1,sdc1と全く同じに)
    sdd: sdd1 320GB fd,  sdd2 500MB 82
  16. reboot (rebootしないと新しいpartition tableが認識されなかった。?)
  17. RAID5 recovery
    # mdadm /dev/md0 --add /dev/sdd1
    # cat /proc/mdstat
    Personalities : [raid5] [raid4]md0
          : active raid5 sdd1[4] sda1[0] sdc1[2] sdb1[1]
          936042624 blocks level 5, 128k chunk, algorithm 2 [4/3] [UUU_]
          [===>.................]  recovery = 15.3% (47947392/312014208)
                 finish=71.0min speed=61934K/sec unused devices: <none>
  18. # mkswap /dev/sdd2
  19. /etc/fstabに追加
    /dev/sdd2 none            swap    sw              0       0

kernel compile

root-on-LVM2-on-RAID5のときのinitrdの作り方が良く分らなかったんだが、–initrdをmake-kpkgで付けてcompileした新しいkernelで問題無くbootした。

# make-kpkg --initrd --revision=custom.1.0 kernel_image
• • •
• • •

2 Comments »

  1. […] 320GB HDD x4 で RAID5 を組んでるが、2009年中には 1.5TB x3 くらいに組み替える事になるんではないかな。。 • • • […]

    Pingback by Ippei813 Nikki»Blog Archive » lvm partition shrink/extend — December 27, 2008 @ 12:27 am
  2. […] RAID、LVM2 の設定はほぼ最初と同じ。マザーボードに SATA が 6 port あるので、新しいハードディスクを […]

    Pingback by Ippei813 Nikki»Blog Archive » 2TBx3 RAID5 — July 12, 2010 @ 9:42 pm

Comments RSSTrackBack URI

Leave a comment

Ippei813 top
March 2024
S M T W T F S
 12
3456789
10111213141516
17181920212223
24252627282930
31  
Original Wordpress Themes by priss, customized by Ippei