雑記/2015-12-08

https://dexlab.net:443/pukiwiki/index.php?%BB%A8%B5%AD/2015-12-08
 

LVMで構成した起動用HDDを交換する

  • 状況
    • /dev/sda も4年以上可動していて古いので、東芝 MD04ACA300交換し、ブートドライブとしたい
    • ddやacronis true imageでもLVMパーティションのコピーはできるようだが、セクタ単位でデータが無い領域までコピーするため非常に遅い。rsyncで行いたい。
  • 結論
    • LVMを使うことで、UEFI非対応のマザーボードでも3TBのHDDを使えた。ただ、パーティションが少し複雑。2TBまでの方が管理は楽。
    • 514GBのコピーで95分かかった
  • 環境
    • OS: Ubuntu 12.04.5 LTS
    • HDD(交換元): /dev/sda 1TB (Hitachi HDS72101)
    • HDD(交換後): /dev/sdb 3TB (東芝 MD04ACA300)
    • マザーボード: Shuttle SA76G2 V2 BIOS。UEFI非対応

TOSHIBA-MD04ACA300.jpg

  • 現状の確認。3TB以上はpartedを使う
    df -h
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/mediacenter-root  906G  514G  346G  60% /
    udev                          1.8G   12K  1.8G   1% /dev
    tmpfs                         371M  1.3M  369M   1% /run
    none                          5.0M     0  5.0M   0% /run/lock
    none                          1.9G   76K  1.9G   1% /run/shm
    /dev/sda1                     228M   65M  152M  30% /boot
    
    sudo pvs -o+pv_used
      PV         VG          Fmt  Attr PSize   PFree   Used
      /dev/sda5  mediacenter lvm2 a-   931.27g 676.00m 930.61g
    
    LANG=C sudo parted -l
    Model: ATA Hitachi HDS72101 (scsi)
    Disk /dev/sda: 1000GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    
    Number  Start   End     Size    Type      File system  Flags
     1      1049kB  256MB   255MB   primary   ext2         boot
     2      257MB   1000GB  1000GB  extended
     5      257MB   1000GB  1000GB  logical                lvm
    
    
    Error: /dev/sdb: unrecognised disk label
    
    Model: Linux device-mapper (linear) (dm)
    Disk /dev/mapper/mediacenter-swap_1: 11.4GB
    Sector size (logical/physical): 512B/512B
    Partition Table: loop
    
    Number  Start  End     Size    File system     Flags
     1      0.00B  11.4GB  11.4GB  linux-swap(v1)
    
    
    Model: Linux device-mapper (linear) (dm)
    Disk /dev/mapper/mediacenter-root: 988GB
    Sector size (logical/physical): 512B/512B
    Partition Table: loop
    
    Number  Start  End    Size   File system  Flags
     1      0.00B  988GB  988GB  ext4
    
    LANG=C sudo fdisk -l /dev/sdb
    
    Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
    255 heads, 63 sectors/track, 364801 cylinders, total 5860533168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk identifier: 0x00000000
    
    Disk /dev/sdb doesn't contain a valid partition table
  • SELinuxが無効な事を確認。有効だと正常に起動できない
  1. 交換先( /dev/sdb )での作業。
    # 2TBを超えるので、gptラベルを作成すべきだが、マザーボードが対応してないのでmsdosを設定。4パーティションまで(primary x3, extended x1)
    sudo parted -s -a optimal /dev/sdb mklabel msdos
    
    # /boot 用に255MBを作成
    sudo parted -s -a optimal /dev/sdb mkpart primary ext2 1MB 256MB
    sudo parted -s -a optimal /dev/sdb set 1 boot on
    
    # / 用にVMパーティションを作成。MBRの最大サイズ2TBを指定
    sudo parted -s -a optimal /dev/sdb mkpart primary 256MB 2000GB
    
    # 残り容量のサイズを指定
    sudo parted -s -a optimal /dev/sdb mkpart extended 2000GB 100%
    sudo parted -s -a optimal /dev/sdb mkpart logical 2000GB 100%
    sudo parted -s -a optimal /dev/sdb set 5 lvm on
    
    # 確認
    LANG=C sudo parted -l
    
    Model: ATA TOSHIBA MD04ACA3 (scsi)
    Disk /dev/sdb: 3001GB
    Sector size (logical/physical): 512B/4096B
    Partition Table: msdos
    
    Number  Start   End     Size    Type      File system  Flags
     1      1049kB  256MB   255MB   primary   ext2         boot
     2      256MB   2000GB  2000GB  primary                lvm
     3      2000GB  3001GB  1001GB  extended               lba
     5      2000GB  3001GB  1001GB  logical                lvm
  2. LVM作成
    sudo pvcreate /dev/sdb2 /dev/sdb5
    sudo vgcreate vg01 /dev/sdb2 /dev/sdb5
    
    sudo lvcreate -L 10GB     -n swap_1 vg01
    sudo lvcreate -l 100%FREE -n root vg01
    
    sudo pvs
      PV         VG          Fmt  Attr PSize   PFree
      /dev/sda5  mediacenter lvm2 a-   931.27g 676.00m
      /dev/sdb2  vg01        lvm2 a-     1.82t      0
      /dev/sdb5  vg01        lvm2 a-   931.87g      0
    
    sudo vgs
      VG          #PV #LV #SN Attr   VSize   VFree
      mediacenter   1   2   0 wz--n- 931.27g 676.00m
      vg01          2   2   0 wz--n-   2.73t      0
    
    sudo lvs
      LV     VG          Attr   LSize   Origin Snap%  Move Log Copy%  Convert
      root   mediacenter -wi-ao 920.00g
      swap_1 mediacenter -wi-ao  10.61g
      root   vg01        -wi-a-   2.72t
      swap_1 vg01        -wi-a-  10.00g
  3. フォーマット
    # /boot
    sudo mkfs.ext2 /dev/sdb1
    
    # /
    sudo mkfs.ext4 /dev/mapper/vg01-root
    
    # 一応リサイズ
    sudo resize2fs /dev/mapper/vg01-root
    
    # swap
    sudo mkswap /dev/mapper/vg01-swap_1
  4. 既存ディスクから新ディスクへコピー。サービス(DB等)はなるべく止めておく。LiveCD/USBから起動して作業すると安心。514GBのコピーで95分かかった
    sudo mkdir -p /mnt/from-{boot,root}
    sudo mkdir -p /mnt/to-{boot,root}
    sudo mount /dev/sda1 /mnt/from-boot
    sudo mount /dev/mapper/mediacenter-root /mnt/from-root
    sudo mount /dev/sdb1 /mnt/to-boot
    sudo mount /dev/mapper/vg01-root /mnt/to-root
    time sudo rsync -auxHAX --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/lost+found/* --exclude='/*/.gvfs' /mnt/from-boot/ /mnt/to-boot/
    time sudo rsync -auxHAX --exclude=/boot --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/lost+found/* --exclude='/*/.gvfs' /mnt/from-root/ /mnt/to-root/
    sudo rmdir /mnt/to-root/boot
    umount /mnt/from-{boot,root} /mnt/to-{boot,root}
  5. ブートローダー(grub)のインストール。
    sudo mount /dev/sdb1 /mnt/to-boot
    
    sudo grub-install --boot-directory=/mnt/to-boot/ /dev/sdb
    Installation finished. No error reported.
    
    sudo umount /mnt/to-boot
  6. fstabを変更。
    • 交換元( /dev/sda )での作業。/dev/sdb構築後、交換して/dev/sdaにするため、/etc/fstabでUUIDを指定し、固定しておく
      sudo mount /dev/mapper/vg01-root /mnt/to-root
      
      sudo blkid
      /dev/sda1: UUID="b599d616-e521-449f-89a0-7f838614bc56" TYPE="ext2"
      /dev/sda5: UUID="HOiXD0-6j1h-Q3up-Et62-fvHk-mPIr-Ynglet" TYPE="LVM2_member"
      /dev/sdb1: UUID="b26fb917-37f3-4cf3-b031-fd4738226e4c" TYPE="ext2"
      /dev/sdb2: UUID="fHeCcf-Xwa9-GS6d-af6D-f06p-hRNU-lx0ff7" TYPE="LVM2_member"
      /dev/sdb5: UUID="PnuZoF-Jj7i-cZM0-wLuh-hG0s-KMdD-YGkpdA" TYPE="LVM2_member"
      /dev/mapper/mediacenter-root: UUID="e0aeadc6-742f-42b4-b0e4-de4ecd6f5abd" TYPE="ext4"
      /dev/mapper/mediacenter-swap_1: UUID="9874055b-0ddc-4910-a319-fc3c1e20ab81" TYPE="swap"
      /dev/mapper/vg01-swap_1: UUID="0a0b0a43-8ec7-49d7-bd8f-0002c3988dbf" TYPE="swap"
      /dev/mapper/vg01-root: UUID="2d16694d-f16f-415c-a72e-25f3d41af1be" TYPE="ext4"
      
      sudo vim /etc/fstab
      ----
      proc            /proc           proc    nodev,noexec,nosuid 0       0
      UUID=e0aeadc6-742f-42b4-b0e4-de4ecd6f5abd /               ext4    errors=remount-ro 0       1
      UUID=b599d616-e521-449f-89a0-7f838614bc56 /boot           ext2    defaults        0       2
      UUID=9874055b-0ddc-4910-a319-fc3c1e20ab81 none            swap    sw              0       0
    • 交換先での作業。
      sudo vim /mnt/to-root/etc/fstab
      ----
      proc            /proc           proc    nodev,noexec,nosuid 0       0
      UUID=2d16694d-f16f-415c-a72e-25f3d41af1be /               ext4    errors=remount-ro 0       1
      UUID=b26fb917-37f3-4cf3-b031-fd4738226e4c /boot           ext2    defaults        0       2
      UUID=0a0b0a43-8ec7-49d7-bd8f-0002c3988dbf none            swap    sw              0       0
      ----
      
      sudo umount /mnt/to-root
  7. grub.confを変更
    • 交換先での作業。UUIDを交換先のものにする
      sudo mount /dev/sdb1 /mnt/to-boot
      
      sudo perl -p -i -e 's/mediacenter-root/vg01-root/g' /mnt/to-boot/grub/grub.cfg
      
      # /
      sudo perl -p -i -e 's/e0aeadc6-742f-42b4-b0e4-de4ecd6f5abd/2d16694d-f16f-415c-a72e-25f3d41af1be/g' /mnt/to-boot/grub/grub.cfg
      # /boot
      sudo perl -p -i -e 's/b599d616-e521-449f-89a0-7f838614bc56/b26fb917-37f3-4cf3-b031-fd4738226e4c/g' /mnt/to-boot/grub/grub.cfg
      # swap
      sudo perl -p -i -e 's/9874055b-0ddc-4910-a319-fc3c1e20ab81/0a0b0a43-8ec7-49d7-bd8f-0002c3988dbf/g' /mnt/to-boot/grub/grub.cfg
      
      sudo umount /mnt/to-boot
  8. BIOSで交換先のHDDの優先度を上げる、またはドライブを指定(F11等)して起動。以下のように/bootが/sdb1になっており、/ボリュームサイズも増えているため、交換先のHDDで起動している。
    df -h
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/mapper/vg01-root  2.7T  509G  2.1T  20% /
    udev                   1.8G  4.0K  1.8G   1% /dev
    tmpfs                  371M  1.1M  370M   1% /run
    none                   5.0M     0  5.0M   0% /run/lock
    none                   1.9G  644K  1.9G   1% /run/shm
    /dev/sdb1              236M   67M  157M  30% /boot
  9. 起動する事がわかったので、交換元のHDDは外しても良い
  • ベンチマーク
    • HDD(交換元): /dev/sda 1TB (Hitachi HDS72101)
      sudo hdparm -t /dev/mapper/mediacenter-root
      
      /dev/mapper/mediacenter-root:
       Timing buffered disk reads: 392 MB in  3.00 seconds = 130.62 MB/sec
    • HDD(交換後): /dev/sdb 3TB (東芝 MD04ACA300)
      sudo hdparm -t /dev/mapper/vg01-root
      
      /dev/mapper/vg01-root:
       Timing buffered disk reads: 562 MB in  3.01 seconds = 186.75 MB/sec

添付ファイル: fileTOSHIBA-MD04ACA300.jpg 241件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (11d)