Комментарии

Галерея

Опрос

Из каких стран идет больше всего спама, попыток взлома на ваши серверы?:

Подготавливаем систему для работы. SSD+RAID 1

Аватар пользователя maximum
     

Имеем 2x 60 GB SSD 2,5" и 2x 1000 GB SATA 2,5" 5.400 rpm, приступим:
Разметка SSD дисков:
после очистки на пустой таблице запускаем

fdisk -S 32 -H 32 /dev/sdc
fdisk -S 32 -H 32 /dev/sdd

и делаем

:~# fdisk -l /dev/sdc
 
Disk /dev/sdc: 60.0 GB, 60022480896 bytes
32 heads, 32 sectors/track, 114483 cylinders
Units = cylinders of 1024 * 512 = 524288 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xbbf475e5
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               2      102402    52429312   fd  Linux raid autodetect

Оставляем 12% диска на отображение свободных блоков чтобы SSD не сдох.

Подсказки тут:
http://blog.nuclex-games.com/2009/12/aligning-an-ssd-on-linux/
http://www.void.gr/kargig/blog/2012/01/11/linux-ssd-partition-alignment-tips/

Создаём RAID1:

mdadm --create /dev/md2 --level=1 --chunk=128 --raid-devices=2 /dev/sdc1 /dev/sdd1
 
Добаляем в /etc/mdadm/mdadm.conf обновление из вывода
 
mdadm --detail --scan

делаем файловую систему

mkfs.ext4 -O extent -b 4096 -E stride=128,stripe-width=128 /dev/md2

и добавляем в /etc/fstab

/dev/md2 /home ext4 discard,noatime,errors=remount-ro 0 1

В итоге массивы:

:~# cat /proc/mdstat 
Personalities : [raid1] 
md2 : active raid1 sdd1[1] sdc1[0]
      52428216 blocks super 1.2 [2/2] [UU]
 
md1 : active raid1 sdb3[0] sda3[1]
      929012672 blocks [2/2] [UU]
 
md0 : active raid1 sdb1[0] sda1[1]
      499904 blocks [2/2] [UU]
 
unused devices: <none>

Для оптимизации обращения к SSD ставим apt-get install sysfsutils и в /etc/sysfs.conf добавляем

block/sdc/queue/scheduler = noop
block/sdd/queue/scheduler = noop

За статью спасибо, xeodon!

Аватар пользователя isn

Что кажется странным:
- RAID1 на ssd зачем?
- 60Гб ssd какие? MLC?
- chunk для RAID1 - зачем? задел на будущее? (представил себе RAID10 из ssd eek)

Аватар пользователя maximum

Просто зеркалирование всего, ssd - mlc, размер chunk_size установлен таким образом в связи с использованием ssd, рекомендации из статей, которые приведены выше

Аватар пользователя isn

в RAID1 износ будет равномерным, смысла нет в райде - сдохнут практически одновременно,
chunk'и нужны в страйпах (на hdd), а не в зеркале

Аватар пользователя maximum

Мы просто последовали советам из статей, это касается chunk_size

Аватар пользователя maximum

Сарказм насчет зеркалирования ssd накопителей не уместен, когда речь идет о дата-центре, который находится далеко за бугром, а на нем живет проект, который приносит серьезный доход. Оборудование не застрахованно от наводнения, от удара молотком, от разных механических и электромагнитных воздействий, поэтому мы не считаем массив из ssd чем то незаурядным.

Аватар пользователя isn

Сарказм был про MLC 60Гб

Аватар пользователя isn

Надо бы дополнить переводом этого: https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/newmds-ssdtuning.html

Особенно бросилось в глаза:

Цитата:
In addition, keep in mind that MD (software raid) does not support discards.

Да и проверить не мешает, работает ли TRIM:

Spoiler: Highlight to view
#!/bin/bash
#
# Test if TRIM is working on your SSD. Tested only with EXT4 filesystems
# in Ubuntu 11.10 and Fedora 16. This script is simply an automation of
# the procedures described by Nicolay Doytchev here:
#
# https://sites.google.com/site/lightrush/random-1/checkiftrimonext4isenabledandworking
#
# Author: Dorian Bolivar <dbolivar@gmail.com>
# Date: 20120129
#
 
if [ $# -ne 3 ]; then
	echo
	echo "Usage: $0 <filename> <size> <device>"
	echo
	echo "<filename> is a temporary file for the test"
	echo "<size> is the file size in MB"
	echo "<device> is the device being tested, e.g. /dev/sda"
	echo
	echo "Example: $0 tempfile 5 /dev/sda"
	echo
	echo "This would run the test for /dev/sda creating a"
	echo "temporary file named \"tempfile\" with 5 MB"
	echo
	exit 1
fi
 
FILE="$1"
SIZE=$2
DEVICE="$3"
 
# Create the temporary file
dd if=/dev/urandom of="$FILE" count=1 bs=${SIZE}M oflag=direct
sync
 
# Get the address of the first sector
hdparm --fibmap "$FILE"
SECTOR=`hdparm --fibmap "$FILE" | tail -n1 | awk '{ print $2; }'`
 
# Read the first sector prior to deletion
hdparm --read-sector $SECTOR "$DEVICE"
echo
echo "This is a sector of the file. It should have been successfully read"
echo "and show a bunch of random data."
echo
read -n 1 -p "Press any key to continue..."
 
# Delete the file and re-read the sector
rm -f $FILE
sync
echo
echo "File deleted. Sleeping for 120 seconds before re-reading the sector."
echo "If TRIM is working, you should see all 0s now."
sleep 120
hdparm --read-sector $SECTOR "$DEVICE"
echo
echo "If the sector isn't filled with 0s, something is wrong with your"
echo "configuration. Try googling for \"TRIM SSD Linux\"."
echo
 
exit 0